• Nenhum resultado encontrado

LAB AGILE aula Introducao RUP Manifesto XP

N/A
N/A
Protected

Academic year: 2021

Share "LAB AGILE aula Introducao RUP Manifesto XP"

Copied!
47
0
0

Texto

(1)

Laboratório de Desenvolvimento de

Aplicações com Métodos Ágeis

Aula

Introdução Processos e Métodos Ágeis

Pós-Graduação

Engenharia de Software

Prof. Dr. Rogério Augusto Rondini rarondini.paradygma@gmail.com

(2)

Aula 01

Introdução a Processos de

Desenvolvimento

Modelos Cascata e Iterativos

RUP

Manifesto Ágil

XP

(3)

Processos

Conjunto de atividades realizadas

durante o desenvolvimento de

software

Duas grandes categorias de

processos

Cascata

(4)

Cascata

Modelo sequencial linear

ENGENHARIA DE SISTEMAS/ ESPECIFICAÇÃO DE REQUISITOS ENGENHARIA DE SISTEMAS/ ESPECIFICAÇÃO DE REQUISITOS PROJETO PROJETO ANÁLISE ANÁLISE CODIFICAÇÃO CODIFICAÇÃO MANUTENÇÃO MANUTENÇÃO TESTE TESTE

(5)
(6)
(7)

Iterativos

Vantagens

Tolerância às mudanças de

requisitos

Elementos de software integrados

progressivamente

(8)

RUP

Processo Iterativo e Incremental

Conta com um conjunto de atividades

bem definidas...

com artefatos de entrada e saída

dependência em relação à ordem

de execução

Descrição de como as atividades

(9)
(10)

RUP - Fases

Fase de Iniciação (concepção)

Especifica a visão do produto final.

Objetivos Principais:

 Estabelecer o escopo do software do projeto;

 Discriminar os casos de uso críticos do sistema, os

principais cenários de operação;

 Estimar o custo do projeto inteiro;

 Estimar riscos em potencial;

(11)

RUP - Fases

Fase de Elaboração

Planeja as atividades necessárias e recursos exigidos. Especifica as características e projeta a arquitetura. Objetivos Principais:

 Assegurar que a arquitetura, os requisitos e os planos

sejam estáveis o suficiente e que os riscos sejam

suficientemente diminuídos a fim de determinar com

segurança o custo e a programação para a conclusão do desenvolvimento;

 Produzir um protótipo evolutivo dos componentes;  Estabelecer um ambiente de suporte.

(12)

RUP - Fases

Fase de Construção

Constrói o produto.

Objetivos Principais:

 Atingir a qualidade adequada com rapidez e eficiência;

 Atingir as versões úteis (alfa, beta e outros versões de

teste) com rapidez e eficiência;

 Concluir a análise, o design, o desenvolvimento e o teste

de todas as funcionalidades necessárias;

 Decidir se o software, os locais e os usuários estão prontos

(13)

RUP - Fases

Fase de Transição

Entrega, treina, apóia e mantém o produto.

Objetivos Principais:

 Testar para validar o novo sistema em confronto com as

expectativas do usuário;

 Testar em operação paralela relativa a um sistema legado

que está sendo substituído;

 Converter bancos de dados operacionais;  Treinar usuários e equipe de manutenção;

(14)

RUP - Disciplinas

Disciplina de Modelagem de Negócios

Objetivos Principais:

 Entender a estrutura e a dinâmica da organização na qual

um sistema deve ser implantado;

 Entender os problemas atuais da organização-alvo e

identificar as possibilidades de melhoria;

 Assegurar que os clientes, usuários e desenvolvedores

(15)

RUP - Disciplinas

Disciplina de Requisitos

Objetivos Principais:

 Estabelecer e manter concordância com os clientes e outros

envolvidos sobre o que o sistema deve fazer;

 Oferecer aos desenvolvedores do sistema uma compreensão

melhor dos requisitos do sistema;

 Definir as fronteiras do sistema (ou delimitar o sistema);  Fornecer uma base para planejar o conteúdo técnico das

iterações;

 Fornecer uma base para estimar o custo e o tempo de

desenvolvimento do sistema;

(16)

RUP - Disciplinas

Disciplina de Análise e Design

Objetivos Principais:

 Transformar os requisitos em um projeto do sistema a ser

criado;

(17)

RUP - Disciplinas

Disciplina de Implementação

Objetivos Principais:

 Definir a organização do código em termos de subsistemas

de implementação organizados em camadas;

 Implementar classes e objetos em termos de componentes;

(18)

RUP - Disciplinas

Disciplina de Teste

Objetivos Principais:

 Localizar e documentar defeitos na qualidade do software;

 Avisar de forma geral sobre a qualidade observada no

software;

 Validar as funções do software conforme projetadas;

 Verificar se os requisitos foram implementados de forma

(19)

RUP - Disciplinas

Disciplina de Implantação

Objetivo Principal:

 Descrever as atividades que garantem que o produto de

(20)

RUP - Disciplinas

Disciplina de Gerência de Configuração e Mudança

Objetivo Principal:

 Controlar mudanças feitas nos artefatos de um projeto e

(21)

RUP - Disciplinas

Disciplina de Gerência de Projeto

Objetivos Principais:

 Fornecer um suporte para gerenciar projetos de software

e gerenciamento de risco;

 Fornecer diretrizes práticas para planejar, montar a

(22)

RUP - Disciplinas

Disciplina de Ambiente

Objetivo Principal:

 Descrever as atividades para o desenvolvimento das

diretrizes de suporte de um projeto. A meta das atividades dessa disciplina é oferecer à organização o ambiente de desenvolvimento de software — processos e ferramentas — que dará suporte à equipe de desenvolvimento.

(23)

RUP

Benefícios

 Como todo processo iterativo, o RUP suaviza os riscos e é

maleável a mudanças que possam ocorrer;

 O processo do modelo RUP possui uma ferramenta de apoio

também chamada RUP, que pode ser configurada de acordo com a necessidade de cada empresa .

Problemas

 Complexidade de suas fases e fluxos;

 Indispensáveis para os profissionais capacitados no

(24)
(25)

Manifesto Ágil

Em 2001, Kent Beck e 16 outros notáveis da

indústria de software, conhecidos como Aliança

Ágil, assinaram o Manifesto para o

Desenvolvimento Ágil de Software (

http://agilemanifesto.org/

ou

(26)

Manifesto Ágil

1) Indivíduos e interação entre eles mais que processos e ferramentas

2) Software em funcionamento mais que documentação abrangente

3) Colaboração com o cliente mais que negociação de contratos

4) Responder a mudanças mais que seguir um plano

Estamos descobrindo maneiras melhores de desenvolver

software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:

(27)

Os 12 princípios

Satisfação do cliente por meio de entrega 

contínua

Modificação de requisitos são bem­vindas

Entrega de software funcionando 

frequentemente

Pessoal de negócio e desenvolvedores 

trabalhando juntos

Indivíduos motivados

(28)

Os 12 princípios

Conversa face a face para levantar 

informações

Software funcionando como medida de 

progresso

Ritmo constante de desenvolvimento 

sustentável

Excelência técnica

(29)

Os 12 princípios

Equipes auto­organizadas

Equipe reflete sobre como se tornar mais 

efetiva, então sintoniza e ajusta 

(30)

Alguns processos

Extreme Programing (XP)

Família Crystal

Scrum

Feature Driven Development (FDD)

(31)

XP

Valores

Comunicação

Simplicidade

Feedback

Coragem

(32)

XP

Práticas

Processo de

Planejamento

(“Planning Game”)

Releases Curtos

Metáfora

Projeto(Design)

Simples

Testes

Refactoring

Programação em Pares

Propriedade Coletiva do

Código

Integração Contínua

Semana de 40 Horas

On-Site Customer

(Cliente sempre presente)

(33)

On-Site Customer

 Um cliente deve estar sempre presente, ajudando a equipe a

responder questões, resolver disputas e colocar pequenas prioridades em tarefas.

 Pode-se dizer que um cliente é muito caro para se disponibilizar

para a equipe de desenvolvimento.

 Gerentes devem dizer o que tem mais valor: o software estar pronto

mais cedo ou o trabalho de uma ou duas pessoas.

 Segundo o Standish CHAOS Report de 1998 os principais fatores

de sucesso para um projeto são o envolvimento do usuário, suporte dos executivos e objetivos de negócio claros (50% de importância, em conjunto).

(34)

Releases Curtas

 Cada release deve ser tão curto quanto possível, contendo os

requisitos de negócio de maior valor para o cliente.

 O release deve fazer sentido como um todo. Não deve existir um

release com metade de um requisito(o que não faz sentido).

 Releases Curtos promovem o desenvolvimento iterativo e

incremental.

 Se iterações curtas são boas(como reconhecido por Fred

Brooks), elas serão feitas bem pequenas - alguns dias,

semanas ou um mês por vez é melhor que seis meses ou um ano com antecedência.

(35)

Releases Curtas

dia

(36)

Planning Game

 A XP trabalha com dois níveis de planejamento.

 Planejamento do release: Cliente propõe “user stories”(estórias) e

os desenvolvedores avaliam sua dificuldade através de semanas ideais.

 Planejamento de iteração: cada iteração irá durar de uma a três

semanas. Cada release pode ter várias iterações. Cada uma delas irá implementar algumas estórias definidas para o release.

 Cada iteração é feita como uma “timebox”. Caso não se consiga

implementar todas as funcionalidades requeridas, as que sobrarem são colocadas na próxima iteração. Nunca se atrasa um

“milestone”(marco).

 O cliente pode mudar suas prioridades de requisitos a cada

iteração que passa. Como elas são curtas(média de duas semanas) isso garante que mudanças são incorporadas tranqüilamente.

(37)

Metáfora

 A metáfora é um meio de ajudar a todos(clientes e

desenvolvedores) a compreender melhor o objetivo e propósito do produto sendo criado.

 Pode ser considerado como a arquitetura de um sistema, vista

como uma análise de domínio. Desse modo, pode-se construir entidades de software com alta coesão e baixo acoplamento entre si.

 Se arquitetura é importante, todos irão trabalhar definindo-a e

(38)

Design Simples

 Muitos projetos têm requisitos vagos e o futuro, como se sabe, é

incerto. Além disso, mudar de idéia em um produto de software é muito fácil para os clientes(e natural).

 Portanto, conclui-se que colocar funcionalidades com base em

especulações é inútil e pode causar o perigoso “feature creep”.

 Se a simplicidade está na ordem do dia, sempre teremos um

sistema com o design mais simples que possa suportar suas funcionalidades correntes.

(39)

Refactoring

 Uma prática desenvolvida por Martin Fowler. Busca melhorar o

design e a arquitetura de código OO já existente. Combate a entropia do software.

 XP prega o refactoring contínuo e constante.

 Problemas mais comuns: código duplicado, métodos longos,

lista de parâmetros longos, grandes “switches”, comentários estranhos.

 Se design é bom, ele fará parte do dia-a-dia do desenvolvimento

(40)

Testes

 Parte fundamental da XP. Aumenta a confiança dos

desenvolvedores e dos clientes. Os testes agem como uma ótima documentação do código em produção.

Test-driven development!!! Desenvolvedores criam testes de

unidade automatizados antes de codificar uma funcionalidade.

 Clientes(com o apoio de pessoal de testes) criam os testes de

aceitação para cada user story que entra numa iteração.

 Se testes são bons, os desenvolvedores vão testar sempre

(testes de unidade) e antes de criar o código. Até mesmo os clientes irão testar (testes de aceitação).

(41)

Programação em Pares

 Todo o design e código é feito sempre por duas pessoas agindo

como um par.

 Os pares são dinâmicos. Um trabalho taticamente e outro

estrategicamente. Ambos trocam de papéis regularmente.

 Os pares não são fixos. Cada membro da equipe irá com certeza

trabalhar com todos os outros pelo menos uma vez durante o projeto.

 Se revisões e inspeções de código são boas, elas serão feitas o

(42)

Prop. Coletiva Código

 Módulos não são “propriedade” de nenhum desenvolvedor.

 Todo desenvolvedor da equipe tem o direito de checar um

módulo e modificá-lo.

 O código é propriedade da equipe. Dessa maneira, todos os

(43)

Integração Contínua

 Código é integrado e testado depois de algumas horas(no

máximo no final de cada dia).

 No final de um episódio de desenvolvimento, o código é

integrado e todos os casos de teste devem rodar a 100%.

 Essa técnica já existe há tempos e foi conhecida como “daily

builds and smoke tests”, largamente utilizada na Microsoft.

 Se integração de código é importante, ela será feita várias vezes

(44)

Semana de 40 horas

 Tempo de trabalho extra é um sintoma claro de problemas em

um projeto.

 A regra da XP é simples: nunca mais de uma semana de tempo

extra de uma vez.

 Se problemas graves são detectados, a iteração ou o release

são replanejados.

 Trabalho extra é mal pois irá destruir: a equipe, o design, o

código, o produto final. Muito trabalho extra causa stress e diminui a produtividade e a qualidade do trabalho.

(45)

Padrões de Codificação

 Cada equipe deve possuir padrões de codificação que serão

usados por todos.

 Idealmente, serão decididos por consenso.

 Cada um dos padrões deve ter o claro objetivo de ajudar a

melhorar a comunicação da equipe.

(46)

Limitações

 Equipes grandes e/ou espalhadas em locais distintos. A XP

preza a comunicação como princípio fundamental. Isso se complica na situação acima.

 Projetos onde existe código legado difícil de ser modificado ou

controlado.

 Projetos aonde o feedback é lento. Por exemplo: processo de

compilação-linkagem-build-teste que demoram muito tempo; dificuldade em se criar testes de unidade e de aceitação.

 Podem ser utilizadas outras metodologias ágeis, como a FDD,

ASD ou Crystal para projetos com equipes maiores ou uma adaptação do modelo de desenvolvimento open source para equipes geograficamente distribuídas.

(47)

Contribuição dos Professores

Prof. Dra. Ana Paula Gonçalves Serra

Prof. MsC André Luiz Dias Ribeiro

Referências

Documentos relacionados

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

ocoofii Taax^co.. iSi fifeeSb

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Os doentes paliativos idosos que permanecem nas instituições privadas são encaminhados pelos hospitais em que estavam ou internados pelos próprios familiares