Engenharia de Software I



Documentos relacionados
Engenharia de Software II

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

Desenvolvimento Ágil de Software

Metodologias Ágeis de Desenvolvimento de Software

ENGENHARIA DE SOFTWARE I

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

Com metodologias de desenvolvimento

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

Prof. Me. Marcos Echevarria

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

Scrum How it works. Há quatro grupos com papéis bem definidos:

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Desenvolvimento Ágil de Software em Larga Escala

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

ISO/IEC 12207: Gerência de Configuração

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Após completar este módulo você deverá ter absorvido o seguinte conhecimento: Uma ampla visão do framework Scrum e suas peculiaridades

Daniel Wildt

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Sistemas de Informação I

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

Professor: Curso: Disciplina:

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA-UFES Departamento de Computação

Metodologias Ágeis. Aécio Costa

CHECK - LIST - ISO 9001:2000

Desenvolvimento Ágil. O Manifesto para o Desenvolvimento de Software Ágil

METODOLOGIA ÁGIL. Lílian Simão Oliveira

PLANEJAMENTO E PROJETOS. Lílian Simão Oliveira

Projeto de Sistemas I

ENG1000 Introdução à Engenharia

Engenharia de Software

Capítulo X. Gerenciar Mudanças dos Requisitos. Aluizio Saiter, M. Sc.

Processos de Desenvolvimento de Software

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

5. Métodos ágeis de desenvolvimento de software

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

Sistemas de Informação I

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Planejamento - 7. Planejamento do Gerenciamento do Risco Identificação dos riscos. Mauricio Lyra, PMP

Comparativo entre Processos Ágeis. Daniel Ferreira

Gerenciamento da Integração (PMBoK 5ª ed.)

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Programa de Pós-Graduação em Informática

O IMPACTO DA UTILIZAÇÃO DE UM SOFTWARE DE GERENCIAMENTO ELETRÔNICO DE PROJETOS NAS EMPRESAS

Jonas de Souza H2W SYSTEMS

Capítulo 1. Extreme Programming: visão geral

Manifesto Ágil - Princípios

Desenvolvimento ágil de software

Engenharia de Software

MASTER IN PROJECT MANAGEMENT

Resumo artigo Agile Modeling- Overview

SCRUM. Fabrício Sousa

Expresso Livre Módulo de Projetos Ágeis

Ágil. Rápido. Métodos Ágeis em Engenharia de Software. Introdução. Thiago do Nascimento Ferreira. Introdução. Introdução. Introdução.

INTRODUÇÃO AOS MÉTODOS ÁGEIS

A Evolução de XP segundo Kent Beck Parte 2

PROFESSOR: CRISTIANO MARIOTTI

Programação Extrema. Luis Fernando Machado. Engenharia de Software

SCRUM Gerência de Projetos Ágil. Prof. Elias Ferreira

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Engenharia de Software

Engenharia de Software II

APLICACAÇÃO DE METRICAS E INDICADORES NO MODELO DE REFERENCIA CMMI-Dev NIVEL 2

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

EXIN Agile Scrum Fundamentos

CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Engenharia de Software Questionário sobre Engenharia de Requisitos Resolvido Prof. MSc Wagner Siqueira Cavalcante

Extração de Requisitos

Scrum e CMMI no C.E.S.A.R Relato de Experiência

ATO Nº 91/2015/GP/TRT 19ª, DE 1º DE JUNHO DE 2015

SCRUM. Otimizando projetos. Adilson Taub Júnior tecproit.com.br

Engenharia de Software II

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Termo de Abertura Sistema de Vendas de Pizzas Online (PizzaWeb) - Versão 1.0

Feature-Driven Development

Requisitos para Gestão de Requisitos no Desenvolvimento de Software que Utilizam Prática Ágeis

O Processo Unificado

Introdução a Métodos Ágeis de Desenvolvimento de Software

Transcrição:

Engenharia de Software I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2015 Desenvolvimento Rápido de Software 2 1

Para quê o Desenvolvimento Rápido de Software? Os negócios atualmente operam em um ambiente global sujeito a rápidas mudanças Novas oportunidades Novos mercados Mudanças de condições econômicas Surgimento de novos produtos e concorrentes O software é parte de quase todas as operações de negócios 3 Para quê o Desenvolvimento Rápido de Software? Em geral, os negócios operam em um ambiente de mudanças constantes Dificuldade de propor um conjunto completo de requisitos de software estável Clientes mudam os requisitos inevitavelmente Identificação dos reais requisitos Após a entrega do sistema Experiência inicial dos usuários 4 2

Como funciona o Processo? Engenharia de software ágil = filosofia + princípios de desenvolvimento Priorizam a entrega mais que análise e projeto (mas não desencorajam as atividades); a comunicação ativa e contínua entre desenvolvedores e clientes Defende a satisfação do cliente e a entrega de incremental prévio; equipes de projeto pequenas e altamente motivadas; métodos informais; artefatos mínimos e simplicidade no desenvolvimento 5 Como funciona o Processo? Processos de desenvolvimento rápido são projetados para criar um software útil rapidamente São processos iterativos Intercala a especificação, projeto, desenvolvimento e testes Software entregue em partes Cada parte inclui uma nova funcionalidade 6 3

Como funciona o Processo? 7 Quais são as características? Os processos de especificação, projeto e implementação são concorrentes Não há detalhamento Minimização da documentação ou gerada automaticamente O sistema é desenvolvido em uma série de incrementos Usuários finais e stakeholders participam da especificação e avaliação de cada incremento 8 4

Quais são as Vantagens? Entrega acelerada Clientes vêem seus requisitos na prática Especificação de novas mudanças Engajamento do usuário com o sistema Envolvimento dos usuários Feedback à equipe desenvolvedora Melhor entendimento dos requisitos 9 Quais são as Desvantagens? Problemas de gerenciamento Grandes sistemas exigem modelos mais estruturados Produção em grandes quantidades não compensa Problemas de contrato Contrato baseado em especificações de sistema Cliente paga por tempo despendido no projeto Desenvolvedores não aceitam contratos com preço fixo 10 5

Quais são as Desvantagens? Problemas de validação Minimizar documentação Intercalar especificação e desenvolvimento Problemas de Manutenção As alterações contínuas corrompem a estrutura dos sistemas Dificuldade de compreensão do software 11 Onde o desenvolvimento rápido de software NÃO é recomendado? Em grandes sistemas, nos quais o desenvolvimento pode envolver equipes que trabalham em locais diferentes Em sistemas embarcados, nos quais o software depende do desenvolvimento de hardware Em sistemas críticos, nos quais todos os requisitos devem ser analisados para segurança 12 6

Métodos Ágeis 13 Métodos Ágeis Em 2001, Kent Beck e mais 16 desenvolvedores, produtores e consultores de software, que formavam a Aliança Ágil, assinaram o Manifesto de Desenvolvimento Ágil de Software. 14 7

Métodos Ágeis Estamos descobrindo melhores modos de desenvolvimento de software fazendo-o e ajudando outros a fazê-lo. Por meio desse trabalho, passamos a valorizar: Indivíduos e interações ao invés de processos e ferramentas. Software funcionando ao invés de uma documentação abrangente. Colaboração do cliente ao invés de negociação de contratos. Resposta a modificações ao invés de seguir um plano. Isto é, ainda que haja valor nos itens à direita, valorizamos mais os itens à esquerda. 15 Métodos Ágeis Família de metodologias de desenvolvimento que produzem software em pequenas iterações e permitem mudanças maiores em design 16 8

Características Iterações e versões curtas Design incremental Envolvimento do usuário Documentação mínima Comunicação informal Mudanças 17 Características Iterações e versões curtas Design incremental Envolvimento Divisão do trabalho do usuário em pequenas partes. Liberação do software para o usuário com a Documentação maior frequência mínima possível Comunicação informal Mudanças 18 9

Características Iterações e versões curtas Design incremental Envolvimento do usuário Documentação Não tentar concluir mínima o design com muita rapidez (de qualquer modo não se sabe o suficiente acerca do Comunicação sistema no momento). informal Adiar o máximo possível decisões sobre o design. Mudanças Aprimorar o máximo o design existente quando maiores informações forem obtidas. 19 Características Iterações e versões curtas Design incremental Envolvimento do usuário Documentação mínima Não tentar produzir padrões formais, completos e Comunicação imutáveis logo informal no início Solicitar informações de feedback (retroinformação) Mudanças aos usuários. Em geral, isso resulta em um sistema melhor ajustado. 20 10

Características Iterações Gerar somente e versões a quantidade curtas mínima de documentação. Design incremental Código-fonte corresponde a grande parte da Envolvimento documentação. do usuário Documentação mínima Comunicação informal Mudanças 21 Características Iterações e versões curtas Design incremental Manter comunicação constante e não necessariamente Envolvimento através de documentação usuário formal (as pessoas se comunicam melhor informalmente) Documentação mínima Comunicação informal Mudanças 22 11

Características Iterações e versões curtas Design incremental Envolvimento do usuário Partir do princípio de que os requisitos e o ambiente Documentação sofrerão mudanças mínimae tentar encontrar formas apropriadas de lidar com isso. Comunicação informal Mudanças 23 Características É importante assegurar que não haja abuso da metodologia, principalmente associada à documentação. Se o software liberado precisar ser mantido por um grupo diferente dos desenvolvedores iniciais, uma documentação suficientemente detalhada será indispensável. 24 12

Algumas metodologias dos Métodos Ágeis Extreme Programming (Beck, 1999; Beck 2000) Scrum (Schwaber e Beedle, 2001) Crystal (Cockburn, 2001) Adaptive Software Development (Highsmith, 2000) Feature Driven Development (Palmer e Felsing, 2002) 25 Extreme Programming - XP Utiliza OO como paradigma de desenvolvimento; Inclui um conjunto de regras e práticas com base nas atividades Planejamento Projeto Codificação Teste 26 13

XP: Planejamento Criação de um conjunto de histórias de usuários descrevendo as características e funcionalidades requeridas pelo software que será construído; As histórias (semelhantes aos casos de uso) são escritas pelos clientes e colocadas em cartões de indexação; O cliente atribui uma prioridade à cada história; Os desenvolvedores analisam cada história e atribuem um custo a cada uma delas, com base em número de semanas necessárias para o seu desenvolvimento; 27 XP: Planejamento Se a história precisar de mais de 3 semanas para desenvolvimento, é solicitado ao cliente que ela seja dividida em histórias menores; Histórias desenvolvidas em 3 modos 1) Todas as histórias serão implementadas imediatamente (dentro de poucas semanas) 2) As histórias com valor mais alto serão antecipadas no cronograma e implementadas primeiro 3) As histórias de maior risco serão antecipadas no cronograma e implementadas primeiro. Com o avanço do projeto, o cliente pode adicionar novas histórias, mudar a sua prioridade, subdividi-la e eliminálas. 28 14

XP: Projeto Segue rigorosamente o KIS (keep it simple) Estimula o uso de cartões CRC (Classe, Responsabilidade e Colaboração) para a identificação e organização das classes OO relevantes para o incremento do software Cartões CRC permitem a descrição dos conceitos identificados na metáfora na forma de classes. Responsabilidades são identificadas para cada classe. As colaborações determinam as interações entre classes. Os cartões permitem que o todo o time possa colaborar com o 29 design. XP: Projeto Os cartões CRC são o único produto de trabalho do projeto; 30 15

XP: Projeto Caso seja identificado um problema difícil na história, recomenda-se a criação imediata de um protótipo operacional daquela parte do projeto. Denominado Solução de Ponta; Encoraja a refatoração. Técnica que altera a estrutura do sistema sem modificar o comportamento externo. 31 XP: Projeto 32 16

XP: Codificação Depois que as histórias forem desenvolvidas e o início do projeto for feito, recomenda-se não iniciar a programação; Elemento chave da XP. É recomendado realizar testes unitários sobre cada uma das histórias que serão incluídas na versão atual; Depois de os testes unitários terem sido criados, o desenvolvedor está focado no que deve ser implementado. 33 XP: Codificação Programação em pares Duas pessoas trabalhando juntas na mesma máquina; Cada pessoa fica encarregada de uma atividade; Quando o trabalho dos programadores é completado, é feita uma integração com o trabalho de outros; Existe uma equipe responsável pela integração. 34 17

XP: Teste São aplicados os testes unitários. Os testes de aceitação (ou teste de cliente) são especificados sob a ótica do cliente e abrangem as características e as funcionalidades do sistema global visíveis e passíveis de revisão; Resolver pequenos problemas a cada intervalo de umas poucas horas leva menos tempo do que resolver grandes problemas perto da data de entrega. Wells (1999) apud Pressman(2010). 35 Scrum Tem como objetivo fornecer um processo conveniente para projeto e desenvolvimento orientado a objeto; Abordagem empírica Aplica ideias da teoria de controle de processos industriais para o desenvolvimento de software 36 18

Scrum Ideias de Flexibilidade Adaptabilidade Produtividade Visa tratar mudanças frequentes de requisitos de software e outras situações Troca de equipes Adaptações de cronogramas e orçamento Troca de ferramentas de desenvolvimento 37 Scrum Baseada em princípios semelhantes da XP; Divide o desenvolvimento em ciclos iterativos (sprints) de até 30 dias; Equipes pequenas, até 10 pessoas Analistas Programadores Engenheiros Gerentes de qualidade 38 19

Scrum Equipes trabalham nas funcionalidades definidas no início de cada sprint; Reuniões diárias de acompanhamento Curta duração: 15 minutos 39 Scrum: ciclo de vida Pré-planejamento (pre-game phase) Desenvolvimento (game phase) Pós-planejamento (post-game phase) 40 20

Scrum: ciclo de vida 41 Scrum: ciclo de vida Pré-planejamento (pre-game phase) Documento backlog com requisitos Estabelece prioridade dos requisitos Definição da equipe e ferramentas Identificação de riscos e necessidades de treinamento 42 21

Scrum: ciclo de vida Desenvolvimento (game phase) Observação e controle dos riscos Desenvolvimento do software em sprints Novas funcionalidades são adicionadas Cada ciclo é desenvolvido de forma tradicional Análise Projeto Implementação Testes Duração do ciclo: entre 1 semana e 1 mês 43 Scrum: ciclo de vida Pós-planejamento (post-game phase) Integração do software Testes finais Documentação do usuário Reunião da equipe para Analisar o progresso do projeto Demonstrar o software atual para o cliente 44 22

Crystal Família de Metodologias Crystal Clear Crystal Orange Crystal Orange Web Cada uma é indicada para projetos conforme algumas classificações gama 45 Tamanho Crystal: Cockburn classifica projetos conforme fatores Medido pelo número máximo de desenvolvedores Não pelo número de linhas de código ou pontos de função Criticalidade Medida pelas perdas que um mau funcionamento causaria Há níveis de criticalidade... Próximo slide... Prioridade Medida pela pressão do tempo sobre o projeto Projetos com alta pressão requerem metodologias otimizadas para produtividade, enquanto outros projetos podem preferir a otimização para rastreabilidade, em detrimento da produtividade 46 23

Crystal: Níveis de criticalidade Vida Problema de mau funcionamento pode causar dano físico a uma pessoa ou perda de vida Dinheiro essencial Problema de mau funcionamento pode causar perda de dinheiro essencial para a sobrevivência da Organização Dinheiro excedente Problema de mau funcionamento pode causar perda de dinheiro não essencial para a sobrevivência da Organização Conforto Problema de mau funcionamento não causam perda monetária mensurável, mas não proporcionam conforto e prazer aos 47 usuários. Crystal Cada uma é indicada para projetos conforme algumas classificações Não cobrem a gama completa de projetos Deixa de fora projetos em larga escala e críticos para a vida Crystal Clear Projetos não críticos e nível dinheiro excedente Requerem equipes de seis a oito pessoas 48 24

Crystal Crystal Clear: Adequada para Projetos não críticos e nível dinheiro excedente Requerem equipes de seis a oito pessoas Crystal Orange: Adequada para Projetos Críticos, mas não para a vida Requerem equipes de até 40 pessoas Crystal Orange Web Web 49 Crystal: Métodos básicos Empregue metodologias mais abrangentes para equipes maiores Empregue metodologias mais pesadas para projetos mais críticos Dê preferência às metodologias mais leves, pois o peso é dispendioso Dê preferência à comunicação interativa, face a face, em vez de documentação formal, escrita 50 25

Crystal: Métodos básicos Entenda que o comportamento das pessoas varia dentro de uma equipe e ao longo do tempo As pessoas tendem a ser inconsistentes Processos de alta disciplina são mais difíceis de adotar e têm maior probabilidade de abandono Parta do princípio de que as pessoas desejam ser boas cidadãs Elas podem tomar iniciativa e se comunicar informalmente Use estas características em seu projeto 51 Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico 52 26

Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Liberar código testado e funcional para usuários com a maior frequência possível. Intervalo de poucos meses Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico 53 Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Antes, durante e depois do projeto, refletir sobre o processo, no que ele pode ser melhorado Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico 54 27

Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico Encorajar a comunicação entre membros da equipe. Na Metodologia Crystal, há a comunicação osmótica, que significando que a informação flui nas conversas de fundo entre os membros da equipe 55 Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico Encorajar os membros da equipe a se manifestarem sem medo de represálias Inclui Manifestação de insatisfação com alguma prática Reconhecimento da ignorância, erro ou incapacidade de concluir tarefa 56 28

Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Minimizar interrupções e se concentrar na tarefa em mãos Muitas vezes, o melhor designer, codificador ou depurador é também a pessoa mais acessível da equipe. Acabam soterrados pelos problemas de outras pessoas e não são capazes de desempenhar seu próprio trabalho Fácil acesso a funcionários experientes Bom ambiente técnico 57 Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Tornar possível para a equipe obter feedback rápido de usuários experientes a respeito do produto, do design, dos requisitos e de quaisquer mudanças Fácil acesso a funcionários experientes Bom ambiente técnico 58 29

Crystal: Princípios complementares Liberações frequentes Aprimoramento reflexivo Comunicação estreita Segurança pessoal Foco Fácil acesso a funcionários experientes Bom ambiente técnico Estabelecer um ambiente com testes automatizados e gestão de configuração, por exemplo 59 Manifesto para o desenvolvimento ágil de software http://manifestoagil.com.br/index.html 60 30