• Nenhum resultado encontrado

Ciclos de vida – Processos

N/A
N/A
Protected

Academic year: 2021

Share "Ciclos de vida – Processos"

Copied!
67
0
0

Texto

(1)

Processos de

desenvolvimento de software

– Ciclos de vida – Processos

ágeis

(2)

2

Processos ágeis

"Manifesto Para o Desenvolvimento Ágil de Software“ reunião entre Kent Beck e 16 outros gurus da comunidade de desenvolvimento em 2001. Alternativas para melhorar produtividade de desenvolvimento de

software

 Conjunto de princípios comuns em projetos de sucesso.

 Não é contrário à solida prática da engenharia de software e pode ser aplicado como uma filosofia prevalecente a todo o trabalho

 Ataca alguns pontos de deficiência dos modelos prescritivos: “a fragilidade das pessoas que

constroem o software”, grande variedade de estilos de trabalho e diferenças de habilidade,

(3)

Processos ágeis

Princípios básicos valorizados nas metodologias ágeis:



Indivíduos e interações entre eles, ao invés de processos e

ferramentas



Software funcionando ao invés de documentação

compreensiva e detalhada.



Colaboração com os clientes ao invés de negociação de

contratos.



Adaptação às mudanças ao invés de seguir um plano

inicial.

(4)

Processos ágeis

Cada vez mais empresas declaram que utilizam Processos ágeis: Será que são ágeis mesmo?

Nem todas empresas que utilizam processos realmente ágeis. Termo tem sido utilizado para qualquer projeto com iterações curtas.

Empresas têm sido pressionadas para produzir melhor e mais rápido então usam processos ágeis

Existem bons relatos sobre processos ágeis e poucos relatos de como deve ser reorganizada as equipes conforme o conceito do ágil em relação aos processo existentes anteriormente como por exemplo equipe de testes.

(5)

Quando deve ser usado o

desenvolvimento ágil?



O desenvolvimento ágil é particularmente indicado

em situações onde os requisitos são imprevisíveis ou

mudam rapidamente.



Ele funciona melhor para equipes pequenas (até 10

desenvolvedores) trabalhando no mesmo local.

(6)

Processos ágeis

Afinal o que é ágil?

Ivar Jacobson: “Uma equipe ágil é uma equipe esperta, capaz de responder adequadamente a modificações. Modificação é aquilo para o qual o desenvolvimento de software está focado,

modificações nos membros da equipe, modificações por causa de novas tecnologias, modificações de todas as especieis que podem ter impacto no produto ou no processo que cria o

produto”

Na visão de Ivar Jacobson, o acolhimento de modificações é o principal guia para a agilidade porém não só isso também engloba a filosofia apresentada no manifesto.

(7)

Processos ágeis

Manifesto com seus princípios para aqueles que querem

alcançar a agilidade:



Ter como maior prioridade satisfazer o cliente por meio

da entrega de software valioso.



Modificações de requisitos contínuas e mesmo que tardias

são bem-vindas e levam à competitividade para o cliente.



Entrega de software funcionando em períodos de duas

semanas a dois meses.

Evento ocorrido em 2001

WebSite: http://www.agilemanifesto.org

(8)

Processos ágeis

Manifesto com seus princípios para aqueles que querem alcançar a agilidade:

O pessoal de negócio e os desenvolvedores devem trabalhar

juntos diariamente durante todo o projeto.

Construção de projetos em torno de indivíduos motivados.

Forneça-lhes condições de trabalho e confie na entrega.

 O métodos mais eficiente e efetivo de levar informação para a

equipe é a conversa face a face.

Software funcionando é a principal medida de progresso.

Promover o desenvolvimento sustentável, mantendo um ritmo

de produção.

(9)

Processos ágeis

Manifesto com seus princípios para aqueles que querem

alcançar a agilidade:



Atenção contínua à excelência técnica e ao bom projeto

facilita a agilidade.



Simplicidade é essencial.



As melhores arquiteturas, requisitos e projetos surgem de

equipes auto-organizadas.



A equipe deve, em intervalos regulares, refletir sobre

como se tornar mais efetiva.

(10)

O que é um processo ágil?

É um processo que atenda a três suposições:

1- É difícil prever antecipadamente quais os requisitos que

vão persistir e quais serão modificados.

2- É difícil prever quanto o projeto é necessário antes que

a construção seja usada para comprovar o projeto

(11)

O que é um processo ágil?

É um processo que atenda a três suposições:

3- Análise, projeto, construção e testes não são tão

previsíveis como gostaríamos

Um processo ágil, portanto deve ser adaptável. Adaptado

incrementalmente requerendo o feedback do cliente de

forma contínua, influenciando as adaptações no

(12)

Fatores humanos

Características-chave de uma equipe ágil:

Competência:

• Talento inato, habilidades específicas relacionadas ao software e

conhecimento global do processo.

Foco comum

• Mesmo tendo vários papéis distintos todos devem estar focados na meta de entregar o incremento

Colaboração

• Na avaliação e analise das informações deve existir muita colaboração entre clientes, equipe e gerentes de negócio

Capacidade de tomada de decisão

(13)

Fatores humanos

Características-chave de uma equipe ágil:

Habilidade de resolver problemas vagos

• O gerente deve ter em mente que a equipe será frequentemente confrotada com problemas por modificações e ambiguidades e as lições aprendidas devem ser aproveitadas

Respeito e confiança mútua

• Uma equipe consolidada que exisge confiança e respeito

Auto-organização

• A equipe se organiza para o trabalho a ser feito, organiza o processo

para acomodar seu ambiente e organiza o cronograma de trabalho para entrega do incremento de software

(14)

•XP (eXtreme Programming)

•SCRUM

•ASD (Adaptive Software Development) ou DAS

Desenvolvimento adaptativo de software

•DSDM

( Dynamic Systems Development

Method) ou Método desenvolvimento

dinâmico de sistemas

•Família Crystal

•FDD (Feature-driven development) Desenvolvimento

guiado por características

A maioria dos autores participaram do manifesto ágil.

(15)

“Trata-se de uma metodologia ágil para

equipes pequenas e médias

desenvolvendo software com requisitos

vagos e em constante mudança”

O que é Extreme Programming

(16)

Trabalho pioneiro sobre o assunto escrito em 1999 por Kent Beck. • Usa uma abordagem orientada a objetos como seu paradigma de desenvolvimento.

Identificou o que tornava simples e o que dificultava o desenvolvimento de software

• Inclui um conjunto de regras e práticas que ocorrem no contexto de quatro atividades de arcabouço:

 Planejamento  Projeto

 Codificação  Teste

(17)

Uma das metodologias ágeis mais conhecida Produz software em pequenas iterações

Necessário a participação de um usuário com poder de decisão. Utiliza forma simples de planejamento do que entrará na próxima iteração.

Usuário define quais testes devem ser realizados para que o produto seja aceito.

Iteração dura tipicamente de 1 a 3 semanas

(18)

O desenvolvimento é dividido em liberações (toda

iteração resulta em uma liberação)

Programadores estimam o esforço

Clientes definem escopo e prazo com base nessa

estimativa

Programadores implementam apenas o que está no

escopo da iteração.

Uma iteração compreende um grupo de funções

chamadas de histórias de usuário.

(19)

Criação de um conjunto de histórias de usuário parecidas com casos de uso, mas com bem menos detalhes.

Cada estória é escrita em poucas linhas pelos clientes, que lhe

atribuem um valor, e deve poder ser implementadas em menos de três semanas.

Exemplo: “Quando a aplicação começa, o último documento em que o cliente estava trabalhando deve ser aberto automaticamente.”

(20)
(21)

A equipe XP e os clientes trabalham juntos para definir um plano que determina as estórias que serão desenvolvidas primeiro

levando em consideração valores e riscos.

Depois que o primeiro incremento é entregue, a equipe XP calcula a velocidade do projeto = número de histórias implementadas.

Ao longo do tempo, o cliente pode adicionar histórias, mudar o valor de uma história, subdividir histórias ou eliminá-las.

(22)

Segue o princípio KIS (keep it simple).

– Se restringe a implementar as histórias de usuário.

• Usa cartões CRC (Class-Responsability-Colaborator)

para identificar e organizar as classes que são

relevantes para o incremento atual.

22

(23)

• Se um problema de projeto difícil é encontrado, o XP recomenda a criação de uma solução de ponta para diminuir o risco.

– Solução de ponta = um protótipo operacional daquela parte do projeto, que depois será descartado.

• O XP encoraja a refabricação = modificar o sistema de tal modo que o comportamento externo não seja alterado, mas aperfeiçoe a estrutura interna.

– A refabricação ocorre durante a codificação.

23

(24)

Antes de partir para o código, a equipe deve desenvolver

testes unitários para verificar a funcionalidade que será

desenvolvida.

O código gerado vai sendo integrado imediatamente ao

trabalho de outros, o que ajuda a evitar problemas de

compatibilidade e interface.

24

(25)

A programação é feita em pares.

– Isso fornece um mecanismo de solução de problemas e de

garantia de qualidade em tempo real.

– Uma pessoa pensa nos detalhes do código enquanto a

outra garante as normas de codificação e que o código

gerado vai se encaixar no resto do sistema.

25

(26)

Os testes unitários são criados de tal forma que eles possam

ser automatizados, e aplicados diariamente.

• O XP usa uma estratégia de teste de regressão: testes são

aplicados de novo mesmo que anteriormente eles não tenham

apresentado problema.

– Isso permite a refabricação.

26

(27)

Testes de aceitação são especificados pelo cliente

(derivados das histórias do usuário) e focalizam nas

características e funcionalidades do sistema global.

– Devem ser automatizados e aplicados freqüentemente.

– O sistema só é considerado aceitável quando passar em

todos os testes de aceitação.

27

(28)

28

(29)

29

(30)

30

(31)

31

(32)

XP Papéis

Cliente

Define o que é o projeto e como deve ser desenvolvido, o termo de cliente pode não estar associado a uma pessoa individual, mas sim a um conjunto de pessoas que :

-> Define e dá prioridade as “user stories” -> Define requisitos do projeto

-> Descreve os testes que cada fase de desenvolvimento tem de passar antes de se passar à fase seguinte

(33)

XP Papéis

Treinador (Coach)

Orienta a equipe, tentado garantir que esta mantêm-se fiel à metodologia XP, para tal deve possuir os seguintes atributos

-> Grande compreensão da metodologia XP -> Sentido de liderança

-> Possuir grande conhecimento de programação orientada a objectos e de linguagens de programação

(34)

XP Papéis

Programador

São considerados o coração dos projetos XP, e estão presentes em todas as fases do desenvolvimento com a metodologia XP

-> Em conjunto com o cliente cria as User Stories -> Desenvolve código e testes

(35)

XP Papéis

Tester

Tem como objectivo realizar testes funcionais do projeto em

desenvolvimento, podendo esses testes serem efetuados junto do cliente, se o desenvolvimento foi efetuado corretamente existem poucas hipóteses de chegarem “bugs” graves a esta fase, pois o

código já se encontra testado a priori pelos programadores à medida que o vão escrevendo.

(36)

XP Papéis

Tracker

Cria estimativas de tempo sobre as User Stories e tarefas, verifica se o tempo gasto nas tarefas completas coincide com o previsto inicialmente, e vai atualizando o tempo total previsto para a duração do projeto. Tem ainda a responsabilidade de guardar um

histórico dos testes funcionais criando um registo dos problemas encontrados, assim como o número de classes métodos e linhas de código geradas.

Gerente

É a pessoa que lidera o projeto internamente e com o consumidor, e protege a equipe de interferências exteriores.

(37)
(38)

Muitas similaridades com o XP. O XP foca na

codificação SCRUM foca no planejamento.

Visa criar equipes auto-organizáveis

SCRUM

Definição informal:

Estratégia em um jogo de rugby onde

jogadores colocam uma bola quase perdida

novamente em jogo através de trabalho em

equipe.

(39)

Origens do SCRUM

Jeff Suttherland – jeffsutherland.com (Criador)

Ken Schwaber - www.controlchaos.com

Mike Beedle – www.mikebeedle.com (Principais

colaboradores)

Conferências

OOPSLA 96, PLoP 98

Inspiração

Desenvolvimento Iterativo e Incremental em empresas

(40)

O Scrum enfatiza o uso de padrões de processo que se mostraram efetivos para projetos com prazos apertados, requisitos mutantes e criticidade de negócio.

Backlog

Equipes

Sprints

Encontros Scrum

Revisões Scrum/Demos

(41)

Lista de todas as funcionalidades desejadas

É gerada incrementalmente

Começa pelo básico, o extra aparece com o tempo

Pode conter

Tarefas diretas, casos de uso e histórias (a la XP)

A lista é priorizada pelo dono do projeto

Cliente, depto de marketing, ...

(42)

Deve conter características que agreguem algum

valor de negócio ao produto

Novos requisitos aparecem quando o cliente vê o

produto

A arquitetura do sistema surge enquanto o projeto

surge e é refatorado

(43)

Sem nível hierárquico

Mas com várias especialidades os papéis podem se

alternar

Estão todos no mesmo barco

Geralmente equipes pequenas (até 10)

Comunicação é essencial

Encontro Scrum diário

(44)

Unidades básicas de tempo (até 30 dias)

Começa com um encontro Sprint

Tarefas do Backlog são priorizadas

A equipe seleciona tarefas que podem ser completadas durante o

Sprint

As mesmas podem ser quebradas para o Backlog do Sprint Cada tarefa recebe um responsável na equipe

Não há mudança nas tarefas durante o Sprint

(45)

Pequenos encontros diários da equipe

geralmente pela manhã

galinhas e porcos (só os porcos falam)

todos os porcos devem participar

Questões que aparecem devem ser resolvidas

durante o dia e não na reunião

Os encontros iniciais são geralmente mais

longos

(46)

Questões que devem ser respondidas por cada

porco:

1) O quê você fez ontem?

2) O quê você vai fazer hoje?

3) Quais os problemas encontrados?

Ajuda a manter as promessas

Evita: Como um projeto atrasa um ano?

Um dia por vez ...

Qualquer deslize pode ser corrigido de imediato

(47)

SCRUM – Encontro Scrum

Sempre o mesmo

local e hora

Pode ser o local de

desenvolvimento

Pessoas sentadas

ao redor de uma

mesa

A sala já deve estar

arrumada antes

Punições

(atrasos/faltas)

Todos devem

participar

Galinhas ficam na

periferia

Pode ser em pé

Sala bem equipada,

quadro branco, etc.

(48)

SCRUM – Revisão do Sprint

No final de cada Sprint é feita uma reunião com

todos os interessados

Geralmente

Na forma de demonstração

Informal (preparação rápida, sem projetor,..)

Deve ser o resultado natural de um Sprint

O projeto é comparado com os objetivos iniciais

do Sprint

(49)

SCRUM – Scrum Master

Faz com que a equipe viva os valores e

práticas de Scrum

Protege a equipe de:

Riscos e interferências externos

Excesso de otimismo

Resolve os problemas que aparecerem

logísticos

(50)

SCRUM – Scrum Master

Mantém o Backlog do Sprint

Tarefas completadas

Identifica eventuais problemas

(51)
(52)

Desenvolvimento Adaptativo de software

Adaptative software development – ASD

Foi proposto por Jim Highsmith como uma técnica para

construção de software complexos.

O apoio filosófico do ASD concentra-se na colaboração

humana e na auto-organização. A auto-organização

aparece quando agentes individuais independentes

cooperam para criar resultados emergentes. Um resultado

emergente é uma propriedade além da capacidade de

qualquer agente individual.

(53)

Ciclo de vida composto: Especulação,

colaboração e aprendizado

Especulação: iniciação do projeto e planejamento

adaptativo usndo informações como:

Declaração da missão pelo cliente

Restrições do projeto (ex. datas de entrega)

Requisitos básicos

(54)

Ciclo de vida composto: Especulação,

colaboração e aprendizado

Colaboração: pessoal motivado trabalha junto de

um modo que multiplica seus talentos e resultados

criativos.

• Abordagem colaborative recorrente

• Porem colaboração não é fácil e também não é

apenas comunicação

• Comunicar problemas e ou preocupações de um

modo que conduza a ação efetiva

(55)

Ciclo de vida composto: Especulação,

colaboração e aprendizado

Aprendizado: que pode ocorrer de três modos:

• foco nos grupos: feedback constante dos clientes

sobre os incrementos

• revisão técnicas formais: dos componentes visando a

qualidade e aprendizado

• pós-conclusão: cuidado com o desempenho e

processo para aperfeiçoar a abordagem

(56)

Método de desenvolvimento dinâmico de

sistemas

Dynamic Systems Development Method – DSDM

Originalmente baseada em "Desenvolvimento Rápido de

Aplicação" (RAD). DSDM é uma metodologia de

desenvolvimento iterativo e incremental que enfatiza o

envolvimento constante do usuário.

Seu objetivo é entregar softwares no tempo e com custo

estimados através do controle e ajuste de requisitos ao

longo do desenvolvimento.

(57)

Sugere filosofia emprestada de uma versão do

princípio de pareto: 80% de aplicação pode

ser realizada em 20% do tempo que levaria

para entregar 100% da aplicação

Sugerindo a cada iteração esse princípio

(58)

Ciclo de vida 3 ciclos iterativos diferentes

precedidos pelas atividades de “Estudo de

viabilidade” e de “Estudo de negócio”

Ciclos:

• Iteração do modelo funcional: produz protótipos incrementais que demostram a funcionalidade

• Iteração de projeto e construção: garatem que os

protótipos passaram pela engenharia e que agregam valor ao negócio

• Implementação: coloca no ambiente operacional, lembrando que o incremento pode não estar 100% Pode ser combinado com o XP combinando suas práticas

DSDM

(59)

Criado por Alistair Cockburn e Jim Highsmith a família Crystal de métodos ágeis

Conjunto de metodologias que os elementos centrais são comuns a todas, papéis, padrões de processos, produtos de trabalho e práticas.

A escolha da metodologia pode variar em relação ao tamanho do projeto (números de pessoas) e ambiente (criticidade do

projeto).

As metodologias Crystal compartilham a orientação humana tal como XP, porém é considerado menos disciplinado portando mais fácil as pessoas segui-la.

Grande importância às revisões no final das iterações, assim encorajando o processo a ser auto-melhorável

(60)

Desenvolvimento guiado por características, FDD Feature Driven Development

Concebido por Peter Coad, como modelo prático de processo OO e estendido por Stephen Palmer e John Felsing descrevendo um processo ágil e adaptativo para projetos.

No contexto do FDD uma característica “é uma função valorizada pelo cliente que pode ser implementada em duas semanas ou menos”

(61)

Ênfase na definição de características fornece benefícios:

• Pequenos blocos passíveis de entrega e mais fácil de

descrevê-las

• Mais fácil de organizar e agrupar hierárquicamente • Mais fáceis de inspecionar por ser pequenas

• O planejamento é guiado pelas características e não por

um conjunto de tarefas da ES. Gabarito para definir um característica:

<ação> o <resultado> <por|para|de|a> um <objeto> Em que objeto é “uma pessoa, lugar ou coisa”

Ex:

Adiciona o produto a um carrinho de compras Exibe as especificações técnicas de um produto

Armazena as informações de remessa para um cliente

(62)

Agile Modeling – Modelagem ágil

• Uma metodologia de modelagem ágil, pode ser utilizada dentro de

metodologias ágeis mas também em metodologias prescritivas como o Unified Process.

• AM é uma coleção de práticas com princípios e valores que podem

ser aplicados no dia a dia, segundo Scott W. Ambler.

• AM não define procedimentos detalhados de como criar um modelo

e sim dá orientações de como o modelador poderá ser mais efetivo. Motivações principais:

1. O objeto principal de um projeto de software é o próprio software e não um grande conjunto de documentação sobre ele;

2. Um artefato é feito para permitir a comunicação e a troca de

informações entre a equipe e permitir a discussão e refinamento do modelo. Então, se um artefato não esta passando informação útil ao projeto, ele não cumpre seu objetivo.

(63)

Agile Modeling – Modelagem ágil Práticas fundamentais:

• Modelagem Iterativa e Incremental:

• Aplique o artefato correto(escolha o melhor modelo); • Crie vários modelos em paralelo(a melhor visão de cada

modelo);

• Modele em pequenos incrementos. • Trabalho em Equipe:

• Modelar com outras pessoas;

• Participação ativa do Stakeholder;

• Conhecimento coletivo (nunca deixe somente uma pessoa

dominar todo o processo, pois se a mesma sair da empresa, acabou o projeto);

• Exiba modelos publicamente (colocar em painéis, parede, etc.).

(64)

Agile Modeling – Modelagem ágil Práticas fundamentais:

• Simplicidade:

• Crie conteúdo simples (melhor um modelo com erros que

consiga passar o conteúdo que o modelo sintaticamente correto);

• Descreva modelos simples;

• Use a ferramenta mais simples. • Validação:

• Considere a testabilidade; • Prove com código.

(65)

Vantagens

Equipes pequenas Auto-gerenciável Integração contínua

Desenvolvimento voltado para testes Participação do usuário.

Redução dos riscos do não entendimento de um requisito.

(66)

Desvantagens e ou críticas

Falta de processo bem definido.

Preferência de comunicação face-a-face

Usuário pode não estar disponível para ajudar o tempo todo. Pode ser difícil demonstrar progresso.

Falta de estrutura e documentação necessárias

Somente trabalhar com desenvolvedores de nível sênior Requer a adoção de muita mudança cultural

Poder levar a maiores dificuldades nas negociações contratuais

(67)

PRESSMAN, Roger S. Engenharia de Software. 6 ed.

São Paulo: McGraw-Hill, 2006.

Referências

Documentos relacionados

Os programas de erradicação devem ser dirigidos para a prevenção da transmissão vertical do VLA baseados na eliminação de aves positivas através de métodos

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

Assim sendo, a. tendência assumida pela pós - graduação em co- municação nos anos 60 contribuiu muito menos para melhorar e.. Ora, a comunicação de massa , após a Segunda Guerra

Na busca de uma resposta ao problema, que teve como questão norteadora desta pesquisa, levantamento dos gastos e despesas nos atendimentos realizados e identificar qual o custo que

aquatica em modelos de úlcera aguda induzida por etanol (efeito preventivo) e de úlcera induzida por doses repetidas de ácido acetilsalicílico (efeito curativo), além

Ao desenvolver esta pesquisa conclui-se que sendo a Contabilidade de Custos uma das áreas da Contabilidade, os princípios fundamentais de contabilidade também são válidos para ela

A fim de promover uma reflexão sobre o tema, busca-se, por meio de autores do Direito Internacional, destacando-se Costas Douzinas, adotar a teoria crítica dos Direitos Humanos, e

7º - A administração do Curso de Mestrado em Artes Visuais será exercida pelo Colegiado do Programa de Pós-Graduação em Artes Visuais, tendo um Coordenador e um