Os 7 Principios Do Desenvolvimento de Software

6
Padrões de Projeto - Os 7 princípios básicos do desenvolvimento de software A princípio supõe-se que todos desejam construir o melhor software possível escrevendo o melhor código possível. Mas desejar é uma coisa e por em prática é outra. Neste artigo eu apresento os 7 princípios básicos do desenvolvimento de software como descritos por David Hooker, a partir do qual realizei uma tradução livre, acrescentei alguns idéias baseado-me em minha experiência. O objetivo é fornecer um material de consulta e reflexão sobre a arte de desenvolvimento de software, sim , arte, pois programar qualquer um programa mas desenvolver software de qualidade é para poucos. Não encare estes princípios como absolutos mas medite sobre cada um deles, examine-os, e retenha o que for proveitoso para você. Primeiro Princípio - A razão pelo qual tudo existe Problema : A tomada de decisões durante o desenvolvimento de software é difícil. Um sistema de software existe por uma razão: para fornecer valor aos seus usuários. Todas as decisões devem ser tomadas com isso em mente. Antes de especificar um requisito do sistema, antes de implementar uma nova funcionalidade no sistema, antes de determinar a plataforma de hardware ou o processo de desenvolvimento a ser usado, faça para si mesmo a seguinte pergunta: "Será que isso acrescenta valor real ao sistema ? " Se a resposta for "não", não faça. Todos os outros princípios se apóiam neste princípio. Todas as decisões devem ser 'decisões corretas' , e, somente aquelas que acrescentam valor ao sistema deverão estar presentes no sistema. Obs: A questão de quais ferramentas e metodologias que devem ser usadas, estão afetadas a organização que vai desenvolver o sistema. Antes de adotar uma ferramenta ou metodologia Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm 1 de 6 02/07/2012 23:53

Transcript of Os 7 Principios Do Desenvolvimento de Software

Page 1: Os 7 Principios Do Desenvolvimento de Software

Padrões de Projeto - Os 7 princípiosbásicos do desenvolvimento de software

A princípio supõe-se que todos desejam construir o melhor software possível escrevendo omelhor código possível. Mas desejar é uma coisa e por em prática é outra.

Neste artigo eu apresento os 7 princípios básicos do desenvolvimento de software comodescritos por David Hooker, a partir do qual realizei uma tradução livre, acrescentei algunsidéias baseado-me em minha experiência.

O objetivo é fornecer um material de consulta e reflexão sobre a arte de desenvolvimento desoftware, sim , arte, pois programar qualquer um programa mas desenvolver software dequalidade é para poucos.

Não encare estes princípios como absolutos mas medite sobre cada um deles, examine-os, eretenha o que for proveitoso para você.

Primeiro Princípio - A razão pelo qual tudo existe

Problema : A tomada de decisões durante o desenvolvimento de software é difícil.

Um sistema de software existe por uma razão: para fornecer valor aos seus usuários.

Todas as decisões devem ser tomadas com isso em mente.

Antes de especificar um requisito do sistema, antes de implementar uma nova funcionalidadeno sistema, antes de determinar a plataforma de hardware ou o processo de desenvolvimentoa ser usado, faça para si mesmo a seguinte pergunta:

"Será que isso acrescenta valor real ao sistema ? "

Se a resposta for "não", não faça.

Todos os outros princípios se apóiam neste princípio.

Todas as decisões devem ser 'decisões corretas' , e, somente aquelas que acrescentam valorao sistema deverão estar presentes no sistema.

Obs: A questão de quais ferramentas e metodologias que devem ser usadas, estão afetadas aorganização que vai desenvolver o sistema. Antes de adotar uma ferramenta ou metodologia

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

1 de 6 02/07/2012 23:53

Page 2: Os 7 Principios Do Desenvolvimento de Software

talvez a pergunta que deve ser feita é : "Isso vai me ajudar a acrescentar e manter valor aosistema ?"

Segundo Princípio - Mantenha as coisas simples (KISS - KeepIt Simple ! Stupid)

Problema : Temos dificuldade em entender os sistemas quando eles se tornam maiscomplexos

O desenvolvimento de software não é um processo aleatório ou casual. Há muitos fatores aconsiderar em qualquer esforço de desenvolvimento.

Todo o projeto deve ser o mais simples possível, isso não significa ser desprovido de recursosno sentido de não usar os recursos necessários.

Um projeto simples é fácil de compreender e de manter. Isso não quer dizer que os recursosessenciais para que o projeto tenha sucesso sejam descartados em nome da simplicidade.

Os modelos mais elegantes são geralmente os mais simples. Simples também não significa"rápido e sujo." Na verdade, muitas vezes simplificar implica em muito trabalho que incluivárias iterações e muita discussão.

A recompensa é um software que é mais fácil de manter e menos suscetível a erros.

Terceiro Princípio - Mantenha a visão (Maintain the Vision)

Problema : Um sistema em construção esta se degradando em uma miscelânea deprojetos e subsistemas incompatíveis, ameaçando assim não cumprir o objetivo doprojeto.

Uma visão clara e bem definida do sistema é essencial para o sucesso de um projeto de

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

2 de 6 02/07/2012 23:53

Page 3: Os 7 Principios Do Desenvolvimento de Software

software.

Sem isso, um projeto quase infalivelmente acaba sendo concebido pela iniciativa de uma ouduas mentes restrito à sua própria visão.

Se não existir uma integridade conceitual um sistema ameaça tornar-se uma multiplicidade demodelos incompatíveis unidas pelo tipo errado de parafusos.

Comprometer a visão arquitetônica de um sistema de software enfraquece o projeto eacabará por quebrar mesmo os sistemas mais bem projetados.

Ter um arquiteto com poderes que pode manter a visão e garantir o seu cumprimento ajuda agarantir um projeto de software de sucesso.

Quarto Princípio - O que você produzir alguém vai consumir(What you produce they will consume)

Problema: Um monte de software que é produzido é difícil ou impossível de usar,compreender, manter, ampliar, etc.

De alguma forma ou de outra alguém vai usar, manter, documentar ou depender de ser capazde compreender o seu sistema.

Assim, sempre especifique, projete e implemente tendo em mente que alguém vai ter queentender o que você esta fazendo.

Especifique pensando nos usuários finais. Projete tendo em mente os desenvolvedores. Aocodificar preocupe-se com aqueles que devem manter e ampliar o sistema.

Alguém pode ter que depurar o código que você escreve, e isso faz dele um usuário de seucódigo.

Tornar mais fácil o trabalho de quem vai consumir o que você produziu agrega valor aosistema.

Quinto Princípio - Esteja aberto para o futuro (Build fortoday Design for tomorrow)

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

3 de 6 02/07/2012 23:53

Page 4: Os 7 Principios Do Desenvolvimento de Software

Problema : Como você lida com exigências atuais de forma eficiente em face dasnecessidades futuras ?

Um sistema com uma longa vida tem mais valor.

No ambiente de desenvolvimento de software atual onde as especificações mudam em umpiscar de olhos e onde as plataformas de hardware se tornam obsoletas com meses de uso, otempo de vida de um produto de software geralmente é medido em meses ao invés de anos.

Porém sistemas de softwares robustos e bem projetadas tendem a durar por mais tempo emprodução.

Para fazer um produto de software com esse perfil de sucesso um projeto deve estar apto a seadaptar às necessidades em constantes mudanças do usuários. Isso somente é possível paraprojetos que foram concebidos desde o princípio levando isso em conta.

Sempre pergunte : "O que acontece se...?"

E prepare-se para todos os tipos de respostas possíveis de forma a criar sistemas que resolvamnão um problema específico mas um problema geral.

Sempre escreva o código necessário na implementação e assegure-se sempre de que aarquitetura do projeto seja flexível e extensível de modo a ser capaz de envolver cenáriosfuturos.

Adotando essa postura um projeto de software se torna mais reutilizável.

Sexto Princípio - Planeje com antecedência paraReutilização (Plan ahead for Reuse)

A reutilização economiza tempo e esforço.

Alcançar um elevado nível de reutilização é sem dúvida o objetivo mais difícil de alcançar no

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

4 de 6 02/07/2012 23:53

Page 5: Os 7 Principios Do Desenvolvimento de Software

desenvolvimento de um sistema de software.

A reutilização de código e de projetos, foi proclamada como um dos principais benefícios douso de tecnologias orientadas a objeto. No entanto, o retorno sobre este investimento não éautomático.

Para alavancar as possibilidades de reutilização que oferece a programação Orientada aObjetos é necessário planejamento e premeditação.

Existem várias técnicas para realizar a reutilização em todos os níveis do processo dedesenvolvimento de sistemas, e , aquelas relacionadas ao projeto detalhado e ao nível decódigo são bem conhecidas e documentadas.

Embora exista uma grande quantidade de literatura que aborda a reutilização de projetos naforma de padrões de software, é preciso mais que isso; é preciso comunicar as oportunidadesde reuso para outras pessoas na organização, isso é fundamental.

Como você pode reutilizar algo que você não sabe que existe ?

Planejar adiante para reutilização reduz o custo e aumenta o valor dos componentes e dossistemas que estão incorporados.

Obs: Este princípio precisa ser examinado com cuidado pois segundo Kent Beck ele ignora aforça mais importante no projeto de software: o risco; e ainda sugere: Programe para hojepois amanhã pode nunca chegar. ( Program for Today, for Tomorrow May Never Come.)

Sétimo Princípio - Pense ! (Think!)

Este último princípio é provavelmente o mais negligenciado.

Colocando o pensamento antes da ação quase sempre se produz os melhores resultados.

Quando você pensa sobre algo, esta mais propenso a fazê-lo direito. Você também ganhaconhecimento sobre como fazê-lo.

Se você pensa em algo e ainda assim a coisa sai errado, isso é incorporado a sua base deexperiência e torna-se experiência valiosa.

Além disso pensar é aprender a reconhecer quando você não sabe algo, e a que ponto vocêpode pesquisar a resposta.

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

5 de 6 02/07/2012 23:53

Page 6: Os 7 Principios Do Desenvolvimento de Software

Quando o pensamento claro entra em um sistema, o valor sai.

Aplicar os seis primeiros princípios requer um grande esforço de pensamento, mas asrecompensas potenciais são enormes.

Com diz o ditado popular : "Bom senso e canja de galinha não fazem mal a ninguém..."

"Não se turbe o vosso coração;crede em Deus, crede também em mim." (João14:1)

Referências:

Padrões de ProjetoPadrões de Projeto - O modelo MVC - Model View ControllerO padrão SingletonVB.NET - Permitindo uma única instância da sua aplicaçãoDesign Patterns - o padrão FactoryConceitos sobre projetos - DecomposiçãoUsando o padrão Strategy

Seção Padrões de Projeto do site Macoratti.netSuper DVD .NET - A sua porta de entrada na plataforma .NETSuper DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#

José Carlos Macoratti

SRP - O princípio da responsabilidade única - Macoratti.netBoas Práticas - O padrão inversão de controle (IoC) - Macoratti.net

Os 7 Principios do desenvolvimento de software http://www.macoratti.net/11/05/sd_prnc1.htm

6 de 6 02/07/2012 23:53