Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ENGENHARIA DE SOFTWARE
DESENVOLVIMENTO ÁGIL
· O desenvolvimento e a entrega rápida do software são frequentemente os requisitos mais críticos para os sistemas de software 
· CARACTERÍSTICAS GERAIS
· Os processos de especificação, projeto e implementação são intercalados >> DESENVOLVIMENTO INCREMENTAL
· Um sistema é desenvolvido em uma série de versões com os stakeholders envolvidos na avaliação da versão e feedback 
· Muitas vezes, as interfaces de usuário são desenvolvidas usando um sistema de desenvolvimento interativo e permitindo o desenvolvimento GUI rápido, através de um IDE 
· MÉTODOS ÁGEIS 
· Surgiu devido à insatisfação com os overheads envolvidos nos métodos de desenvolvimento tradicionais 
· OBJETIVOS
· Foco sobre o software em si, ao invés do projeto e documentação 
· Baseia-se em uma abordagem iterativa para o desenvolvimento de software
· Procura entregar rapidamente um software de trabalho e que possa evoluir para atender a novos requisitos, em iterações posteriores 
· Redução da burocracia, evitando trabalho desnecessário e sobrecarga 
· Procura reduzir os overheads no processo de software e ser capaz de responder rapidamente às mudanças nos requisitos sem trabalho excessivo 
· DESENVOLVIMENTO ORIENTADO A PLANO x DESENVOLVIMENTO ÁGIL 
· Especificação, projeto, implementação e testes são intercalados e as saídas do desenvolvimento são decididas através de uma negociação durante o processo de desenvolvimento de software 
· Recomendado para casos em que o software deve ser entregue rapidamente para os clientes e se obtêm feedbacks a partir deles 
· Mais eficazes quando o sistema pode ser desenvolvido com uma equipe pequena cujos membros podem se comunicar informalmente
· Plan-driven
· Baseado em estágios de desenvolvimento separados, com os produtos a serem produzidos em cada uma dessas etapas, planejados com antecedência 
· Não precisa ser, necessariamente, o modelo em cascata 
· É possível aplicar o desenvolvimento incremental >> A ITERAÇÃO OCORRE DENTRO DAS ATIVIDADES
· Recomendado para casos em que é necessário ter uma especificação e um projeto detalhado antes de iniciar a implementação
· EXTREME PROGRAMMING (XP)
· Método ágil mais conhecido e utilizado 
· Novas versões podem ser construídas várias vezes por dia 
· Os incrementos são entregues aos clientes a cada 2 semanas 
· Todos os testes devem ser executados para cada código novo, que só será aceito se os testes forem executados com sucesso 
· CENÁRIO – CARTÃO DE HISTÓRIAS
· Expressa os requisitos do usuário
· A equipe de desenvolvimento é responsável por descrevê-lo em tarefas (>> CONSTITUEM AS BASES DAS ESTIMATIVAS DE PRAZO E CUSTO) para implementação 
· O cliente escolhe as histórias para inclusão na próxima versão com base em suas prioridades e as estimativas do cronograma
· Considera inútil gastar tempo e esforço na antecipação de mudanças futuras, propondo a melhoria constante do código (>> REFACTORING)
· REFATORAÇÃO
· A equipe verifica as possíveis melhorias no software e as realiza, mesmo que não haja uma necessidade imediata para isso
· Melhora a capacidade de compreensão do software e assim reduz a necessidade de documentação
· Mudanças são mais fáceis de serem realizadas porque o código é mais bem estruturado e claro 
· ATENÇÃO!! Mudanças que requerem refatoração da arquitetura são mais onerosas 
· EXEMPLOS
· Reorganizar hierarquias de classe para remover código duplicado
· Organizar e renomear atributos e métodos para torná-los mais fáceis de entender 
· Substituir linhas de código com chamadas para métodos que foram incluídos em uma biblioteca de programas 
· TESTES
· DESENVOLVIMENTO TEST-FIRST
· Primeiro o teste
· Desenvolvimento incremental de teste a partir de cenários
· Envolvimento do usuário no desenvolvimento e validação de testes 
· Ferramentas de teste automatizadas para testes de componentes 
· Escrever testes antes do código facilita o entendimento dos requisitos a serem implementados 
· Os testes são escritos como componentes executáveis, de modo que possam ser executados automaticamente 
· O teste deve ser independente, deve simular o envio da entrada a ser testada e verificar se o resultado atende à especificação de saída 
· Todos os testes são executados automaticamente quando uma nova funcionalidade é adicionada 
· PROGRAMAÇÃO EM PARES
· Ajuda no desenvolvimento da propriedade coletiva de código e difunde conhecimento por toda a equipe 
· Serve como um processo de revisão informal à medida que cada linha de código é vista por mais de 1 pessoa 
· Incentiva a refatoração, uma vez que toda a equipe irá se beneficiar com essa prática 
· GERENCIAMENTO DE PROJETO ÁGIL
· A principal responsabilidade do gerenciamento de projetos de software é garantir que o software seja entregue no prazo e dentro do orçamento previsto 
· PLAN-DRIVEN
· Abordagem padrão
· Os gerentes determinam o que deve ser entregue, quando deve ser entregue e quem irá trabalhar nos produtos a serem entregues
· Requer uma abordagem que se adapte ao desenvolvimento incremental e aos pontos fortes dos métodos ágeis 
· SCRUM
· Foca no gerenciamento do desenvolvimento iterativo
· FASES
· PLANEJAMENTO: Estabelece os objetivos gerais para o projeto e a arquitetura do software
· SPRINT / DESENVOLVIMENTO
· Série de “ciclos de sprint”, onde cada ciclo produz um incremento do sistema 
· Possui duração fixa de 2 a 4 semanas
· Corresponde ao desenvolvimento de um novo sistema de liberação 
· BACKLOG DO PRODUTO
· Ponto de partida de cada sprint 
· Lista de trabalho a ser feita no projeto 
· A equipe do projeto trabalha com o cliente para selecionar as características (estáveis) e funcionalidades para serem desenvolvidas durante o sprint 
· No final do sprint, o trabalho de desenvolvimento é revisto e apresentado às partes interessadas 
· SCRUM MASTER 
· Líder de equipe 
· Canaliza todas as comunicações equipe – cliente
· Facilitador, que organiza as reuniões diárias, acompanha o backlog, registra as decisões, mede o progresso e faz a comunicação com os clientes e gerentes 
· ENCERRAMENTO
· Preparação para a entrega do produto
· ATIVIDADES
· Teste
· Documentação do usuário
· Treinamento
· Avaliação das lições aprendidas com o projeto 
· VANTAGENS
· O produto é dividido em um conjunto de partes gerenciáveis e compreensíveis 
· Em teoria, requisitos instáveis não dificultam o progresso
· Toda a equipe tem visibilidade de tudo, o que melhora a comunicação 
· Os clientes veem regularmente a entrega de incrementos no prazo e aprendem sobre o funcionamento do produto 
· Estabelece uma confiança entre clientes e desenvolvedores e cria uma cultura positiva onde todos contribuem para o êxito do projeto 
image7.png
image8.png
image9.png
image10.png
image11.png
image12.png
image2.png
image3.png
image4.png
image5.png
image6.png

Mais conteúdos dessa disciplina