Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte 1
Engenharia de Software
O requisito no-funcional Prazo de entrega muitas vezes o mais importante de um projeto. Requisitos estveis?!
Muitas vezes quando o software entregue j est desatualizado.
Engenharia de Software
Histrico Modelos tradicionais que seguem a ordem Anlise de Requisitos, Projeto, Construo, Teste e Implantao no atendem aos prazos necessrios. Abordagens para acelerar o desenvolvimento surgiram ainda na dcada de 1980 com o modelo incremental da IBM. A popularizao de mtodos geis comeou no final da dcada de 1990.
Engenharia de Software
Engenharia de Software
Manifesto gil Em 2001, diversos adeptos de mtodos de desenvolvimento rpido reuniram-se, identificaram um conjunto de princpios bsicos comuns em suas prticas, e redigiram um documento para descrever estes princpios. Foi criado o Manifesto gil Alguns nomes de destaque desta reunio:
Martin Fowler Kent Beck Alistair Cockburn Dave Thomas ... e mais 13 profissionais do desenvolvimento de software
Engenharia de Software 5
Engenharia de Software
12 Princpios do Software gil 1. A prioridade satisfazer ao cliente por meio de entregas contnuas e frequentes de software de valor. 2. Mudanas de requisitos so bem-vindas, mesmo em uma fase avanada do projeto. Processos geis esperam que a mudana traga uma vantagem competitiva ao cliente. 3. Entregas com frequncia de software funcional, sempre na menor escala de tempo, de algumas semanas a alguns meses, preferindo sempre um perodo curto. 4. As equipes de negcio e de desenvolvimento devem trabalhar juntas diariamente durante o projeto.
Engenharia de Software 7
12 Princpios do Software gil 5. Construa projetos objetivando manter uma equipe motivada, fornecendo ambiente, apoio e confiana necessrios para realizar o trabalho. 6. A maneira mais eficiente da informao circular entre a equipe de desenvolvimento por uma conversa face a face. 7. Ter software funcionando a medida primria do progresso. 8. Processos geis promovem o desenvolvimento sustentvel. Patrocinadores, desenvolvedores e usurios devem ser capazes de manter um ritmo constante.
Engenharia de Software 8
12 Princpios do Software gil 9. Ateno contnua excelncia tcnica e a um bom projeto aumenta a agilidade. 10. Simplicidade essencial. 11. As melhores arquiteturas, requisitos e projetos provm de equipes organizadas. 12. Em intervalos regulares, a equipe deve refletir sobre como se tornar mais eficaz, ento sintoniza e ajusta seu comportamento. http://www.agilealliance.org/
Engenharia de Software 9
Caractersticas Importantes Baixo impacto de mudanas durante o projeto. Agilidade, pouca documentao, porm muito disciplinados objetivo: tornar o desenvolvimento previsvel e eficiente. Metodologias geis so adaptativas em vez de predeterminadas. Orientados a pessoas e no a processos.
Engenharia de Software
10
Engenharia de Software
11
Metodologia Adaptativas Requisitos mudam, relacionamentos entre usurio e desenvolvedor mudam, por que os mtodos precisam ser fixos? Metodologias previsveis no atendem situaes imprevisveis. Metodologias adaptativas procuram reagir rapidamente s mudanas em vez de rejeit-las. A disciplina contnua, as mudanas so rpidas, porm, formais.
Engenharia de Software
12
Projeto x Cdigo A Engenharia de Software tem inspirao em outras reas de engenharia que enfatizam o planejamento antes da construo. Exemplo: RUP fortemente orientado por projeto e uso de diagramas UML. Defensores dos mtodos geis questionam a eficincia da atividade de projeto para posterior transformao em cdigos fontes. O cdigo o projeto, a gerao de executveis a construo.
Engenharia de Software
13
Desenvolvimento Iterativo Muito usado em processos previsveis (orientados a planos), essencial em metodologias geis. O plano de longo prazo usado como direcionador altamente mutvel. O plano de curto prazo representa uma fundao slida para cada iterao. Dilema: muitos clientes preferem contratos de custo fixo, porm, isso exige requisitos estveis.
Engenharia de Software
14
Engenharia de Software
15
Engenharia de Software
16
Adaptabilidade do Processo Metodologia geis sugerem que ao final de cada iterao ocorra uma reunio rpida, respondendo s seguintes questes:
O que fizemos direito? O que aprendemos? O que podemos melhorar? O que nos intriga?
Engenharia de Software
17
Engenharia de Software
18
FDD Feature Driven Development Concebida como um modelo prtico para o desenvolvimento orientado a objetos. Gerenciamento da complexidade pela decomposio baseada em funcionalidades, que devem ser entregues a cada duas semanas. Enfatiza:
Comunicao verbal Inspees constantes Colaborao Uso de padres
Engenharia de Software
19
http://www.featuredrivendevelopment.com/
Engenharia de Software 20
DSDM Dynamic Systems Development Methodology Metodologia gil com foco em atender prazos crticos atravs da prototipagem incremental. Princpios em destaque:
Os requisitos essenciais so fixados no incio para estabelecer os objetivos gerais do projeto, baseada na lei de Pareto 80% da aplicao pode ser entregue em 20% do tempo total do projeto. Todas as alteraes durante uma iterao devem ser reversveis. Teste em todo o ciclo de vida principalmente o de regresso. http://www.dsdm.org/
Engenharia de Software 21
Ciclo de vida DSDM Estudo de viabilidade: estabelece requisitos bsicos e restries. Avalia viabilidade do processo DSDM. Estudo do negcio: estabelece requisitos funcionais e determina arquitetura bsica. Iterao de modelos funcionais: produz prottipos incrementais e obtm feedback dos usurios. Iterao de projeto e desenvolvimento: transformao dos prottipos em software funcional. Implementao: coloca o sistema em funcionamento no ambiente real retorna a fase de iterao de modelos funcionais.
Engenharia de Software 22
ASD Adaptative Software Development Objetivo: agilidade na construo de software complexos. Foco na colaborao e auto-organizao. Ciclo de vida composto de trs fases que se repetem a cada iterao:
Especulao Colaborao Aprendizagem http://www.adaptivesd.com/
Engenharia de Software
23
Engenharia de Software
24
Famlia Crystal Consiste em um conjunto de mtodos com princpios comuns, porm com papis, processos e produtos de trabalho diferentes, de acordo com a complexidade do projeto. (Clear, Yellow, Orange, Red) Princpios importantes:
Entregas frequentes Comunicao intensa Melhoria reflexiva Segurana pessoal Foco Fcil acesso aos usurios experientes Integrao frequente com testes automatizados e gesto de configuraes Engenharia de Software
25
http://alistair.cockburn.us/Crystal
Engenharia de Software 26
Pontos principais Metodologias geis surgiram a partir da necessidade de se acomodar mudanas mais facilmente durante o desenvolvimento de software. Principais motivadores so reduo de custos e entregas rpidas. Foco maior em comportamento e relacionamentos do que em processos. Existem diversas abordagens para se seguir os mesmos princpios bsicos da agilidade.
27
Exerccios 1. Alguns defensores dos mtodos geis afirmam que na Engenharia de Software o cdigo o projeto. O grupo concorda com esta afirmao? Justifique. 2. Como uma empresa que adote mtodos geis pode atender clientes que necessitem de oramento prvio do projeto para contratao? 3. Escolha 3 prticas ou princpios entre os modelos de processos geis que o grupo adotaria em seus processos. Justifique as escolhas. 4. Na opinio do grupo, qual a diferena mais relevante entre as metodologias geis e as tradicionais?
Engenharia de Software 28
Trabalho prtico
(este slide j estava na apresentao anterior)
29