"Este artigo aborda conceitos de orientacao a objetos que permitirao ao leitor desenvolver codigo com maior qualidade visando maior reutilizacao, menos defeitos, design mais simples e melhor separacao de responsabilidades. Para isto, sao apresentadas interpretacoes dos conceitos fundamentais da orientacao a objetos que servirao como alicerce para o aprofundamento nos conceitos de design que nortearao o desenvolvimento de aplicacoes mais robustas."Este e o resumo do artigo Orientacao a Objetos: principios de OO para arquiteturas robustas.O artigo, do qual eu e da Cristina Cerdeiral somos autores provavelmente sera do interesse de todos que utilizam orientacao a objetos foi publicado na edicao 127 da revista Java Magazine, de distribuicao nacional e nao aborda nada especifico de Java nem apresenta codigo Java algum, sendo assim bastante util a desenvolvedores de outras tecnologias (a exemplo de outros artigos deste blog).A pagina na qual assinantes podem ler online permite ler uma parte inicial:"No nosso cotidiano, usamos generalizacoes todo o tempo. A generalizacao e um mecanismo extremamente util que nos permite fazer referencia a um grupo de individuos de uma determinada populacao atraves de suas caracteristicas comuns.Por exemplo, ao referenciarmos os alunos de uma turma atraves do nome da turma, estamos utilizando a caracteristica daquelas pessoas serem alunos e a participacao em um determinado grupo como caracteristicas comuns. E muito mais simples do que enumerar todos, um a um, pelo nome.Assim, recorremos a duas generalizacoes (alunos e a participacao em uma turma especifica) para delimitar o universo de individuos a que estamos nos referindo.(...)"Tem mais em http://www.devmedia.com.br/orientacao-a-objetos-principios-de-oo-para-arquiteturas-robustas/30581.Boa leitura a todos. Desenvolvimento iterativo e incremental em ciclos curtos. So isso?Em todas as palestras que ja fui ate hoje sobre metodologias ageis, seja quais forem (XP, Scrum, FDD, etc), e sempre a mesma historia:Metodos Ageis sao melhores que cascata porque ...ouMetodos Ageis sao melhores que metodos tradicionais (ou engenharia de software tradicional) porque...Invariavelmente a frase segue comparando o modelo de ciclo de vida iterativo e incremental com o modelo cascata. Este ultimo, sempre conhecido por altissimos indices de fracasso foi introduzido a comunidade em um artigo de 1970 que dizia que segui-lo era normalmente um tiro no pe e ja falando de absorver feedback ao longo do projeto.Entao vamos a alguns pontos para melhorar o discurso Agil:Ainda estou para ver uma metodologia Agil que preconize o uso de cascata. Sao todas iterativas e incrementais. Sendo assim, dizer que metodologia A ou B e legal porque e iterativa e incremental e chover no molhado. Este e o minimo. Quando for apresentar uma metodologia, enfatize o seu diferencial.So mostrar as vantagens do uso do ciclo de vida iterativo e incremental nao e nem de longe o suficiente para dizer que uma metodologia e boa ou e agil, visto que pode-se usar o mesmo modelo de ciclo de vida associado a qualquer metodologia ou processo, ainda que totalmente "tradicional"."Metodos tradicionais" ou "Engenharia de Software tradicional" NAO sao sinonimos de cascata. Se voce teve uma pessima experiencia na empresa onde trabalhou porque usou cascata, o problema foi onde voce trabalhou ou a forma de trabalhar. Nao culpe a Engenharia de Software porque voce trabalhou