CUSC - ES 30 de maio de 2009 Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 1 / 17 Sumario Sumario Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 2 / 17 Introdu cao Introducao Tradicionalmente, software e contrudo de maneira linear, seguindo uma seq uencia de fases: Analise: a equipe faz o levantamento dos requisitos e busca compreende-los detalhadamente. Design: com base na analise a equipe projeta a arquitetura do sistema. Implementa cao: a equipe se baseia na arquitetura e na analise para implementar as diversas partes do software. Teste: para vericar se o sistema atende `as necessidades especicadas pelo usuario, a equipe testa o software e faz as corre coes necessarias. Implanta cao: o sistema e colocado em produ cao e os usuarios nais passam a utiliza-lo. Manuten cao: ate o m da sua vida, o software podera sofrer altera coes por diversas razoes, tais como correcao e inclusao de novas funcionalidades. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 3 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Introducao O desenvolvimento tradicional e eminentemente seq uencial. A equipe deve construir o sistema avancando gradualmente nas fases de desenvolvimento, o que permite que ela lide com nveis de complexidade cada vez mais elevados. Alem da linearidade, existem outras caractersticas impirtantes que costumam estar presente no desenvolvimento tradicional: Determinismo; Especializa cao; Foco na execu cao. Todas essas carctersticas sao faceis de compreender quando fazemos uma anologia da constru cao de um software `a montagem de um veculo, por exemplo. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 4 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Introducao Metafora: 1 Para montar um automovel, a ind ustria recebe um conjunto de materias-primas que alimenta um processo de fabricacao. 2 A materias-primas sao trasnformadas ao longo do processo de modo que, ao nal, se tenha o automovel desejado. Reexoes: O deternimismo e a especializacao pavimentam o caminho para o foco na execucao. Quando as tarefas sao sucientemente especializadas para que sejam simples e determinsticas, nao ha o que pensar, basta executar. O desenvolvimento tradicional, assim como a ind ustria, tambem procura fazer com que as atividades sejam as mais determinsticas possveis com o objetivo de diminuir erros e perdas de tempo. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 5 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional As Inuencias do Modelo de Fabricacao Industrial no Desenvolvimento Tradicional Nao e difcil notar que existe uma forte apelo no sentido de utilizar as praticas industriais em qualquer processo de fabricacao, inclusive o desenvolvimento de software. Ao longo do seculo XX, a industrializa cao, iniciada na Revolucao Industrial, atingiu seu auge e inuenciou o pensamento e a formacao dos mais diversos tipos de prossionais. Fazendo uma analise, e facil compreender as motiva coes que levaram e continuam levando diversas equipes de desenvolvimento a adotarem praticas semelhantes `as encontradas na produ cao industrial. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 6 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Estatsticas Desde 1994, o Standish Group International publica a cada dois anos im estudo intitulado Chaos Research que consolida informa coes de uma grande pesquisa sobre sucessos e fracassos dos projetos de software. Os resultados de um projeto pode ser classicado em uma das seguintes categorias: Tipo 1 ou Projeto Bem Sucedido: o projeto e nalizado no prazo, dentro do orcamento e contendo todas as funcionalidades especicadas. Tipo 2 ou Projeto Desaado: o projeto e nalizado e entrega um software operacional, mas ultrapassa o orcamento e o prazo, alem de disponibilizar menos funcionalidades que o especicado. Tipo 3 ou Projeto Fracassado: o projeto e cancelado em algum momento durante o ciclo de desenvolvimento. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 7 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Estatsticas Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 8 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Estatsticas Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 9 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Problemas nas Premissas do Desenvolvimento Tradicional Peter Drucker dene duas categorias de trabalhadores: Trabalhador Manual: e aquele que exerce atividades que dependem basicamente de suas habilidades manuais e nao se baseiam no uso intensivo do conhecimento. Trabalhador do Conhecimento: e aquele que produz com base no uso intensivo de conhecimento e criatividade. O desenvolvimento de software e um trabalho executado basicamente por trabalhadores do conhecimento. Entretanto, as premissas em que se baseiam o desenvolvimento tradicional somente sao validas para o trabalhador manual. Logo, existe um problema: o desenvolvimento tradicional se baseia em premissas que nao sao validas para o trabalho que ele envolve. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 10 / 17 Modelos de Desenvolvimento de Software Desenvolvimento Tradicional Problemas nas Premissas do Desenvolvimento Tradicional Nutrir uma atmosfera que nao permita erros simplesmente torna as pessoas defensivas. Elas nao tentam coisas que podem se revelar incorretas. Voce encoraja esta atitude defensiva quando voce tenta sistematizar o processo, quando voce impoe metodologias rgidas de modo que os membros da equipe nao possam tomar nenhuma das decisoes estrategicas com o temor de que elas sejam tomada incorretamente. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 11 / 17 Modelos de Desenvolvimento de Software Desenvolvimento
Agil Introducao Os processos de desenvolvimento de software que sao chamados de ageis compartilham um conjunto de premissas fundamentais que diferem daquelas adotadas pelos processos tradicionais de desenvolvimento. Metafora: Imagine que voce esta na escola e a professora solicita que voce faca uma redacao. Que procedimento voce adotaria para escrever um bom texto? Provavelmente, voce comecaria explorando o assunto mentalmente, tentando encontrar os topicos a serem tratados, a ordenacao e a forma. Em seguida, comecaria a escrever as primeiras linhas. Apos alguns paragrafos, voce provavelmente faria algumas altera coes em trechos ja escritos, de modo a aprimora-los. Ao nal, voce faria uma re-leitura, corrigiria algumas partes, retocaria alguns trechos, ate que o texto nal estivesse adequado. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 12 / 17 Modelos de Desenvolvimento de Software Desenvolvimento
Agil Introducao Reexao: Criar um software, como se pode observar, e uma atividade intelectual extremamente intensa. Sendo assim, e importtante que o seu processo de criacao leve em consideracao caractersticas que estao presentes na elabora caode obras intelectuais. O desenvolvimento agil de software segue esta linha de atuacao e abandona a linha tradicional de desenvolvimento que sugere lienaridade, padronizacao e determinismo. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 13 / 17 Modelos de Desenvolvimento de Software Desenvolvimento
Agil Premissas do Desenvolvimento
Agil O desenvolvimento agil se baseia na premissa de que o cliente aprende ao longo do desenvolvimento, `a medida que e capaz de manipular o sistema. O cliente percebe os detalhes, compreende as diculdades tecnicas, visualiza novas possibilidades e, conseq uentemente solicita altera coes para que o software se aproxime ao maximo daquilo que ele acredita que podera resolver seus problemas. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 14 / 17 Modelos de Desenvolvimento de Software Desenvolvimento
Agil Desenvolvimento Iterativo Os processos ageis utilizam o desenvolvimento interativo para permitir que o cliente aprenda ao longo do projeto e, com isso, possa gerar feedback para a equipe de desenvolvimento. Trabalhar com o desenvolvimento iterativo signica considerar que a curva proposta por Barry Bohem ha algumas decadas nao e valida em determinados casos, os quais podem utilizar a abordagem do desenvolvimento iterativo. O XP parte do princpio que o custo de mudanca e praticamente linear ao longo do tempo, independente do ponto em que o projeto esteja. O XP nao apenas se baseia nesta curva, como sugere praticas que direcionam o software de modo que o mesmo seja simples de alterar a qualquer momento. Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 15 / 17 Modelos de Desenvolvimento de Software Custo de uma Alteracao nos Modelos de Desenvolvimento Custo de uma Alteracao nos Modelos de Desenvolvimento Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 16 / 17 Modelos de Desenvolvimento de Software O Caos do Desenvolvimento de Software Conducao de um Projeto de Software Prof. Fabrcio Barros (CUSC - ES) Desaos do Desenvolvimento de Software 30 de maio de 2009 17 / 17