Вы находитесь на странице: 1из 63

Desenvolvimento gil de

Software
Engenharia de Software 2

Introduo
Software :
-tornou-se tecnologia indispensvel para empresas,
universidades e para a cincia em geral.
- manipula o produto mais importante da era atual a
informao.
- as empresas de software possuem grande influncia
no cenrio mundial.
- presente na medicina, nas telecomunicaes, na rea
militar, na industrial, no entretenimento, nas atividades
do dia-a-dia.
- Necessidade do mercado em aumento de
produtividade e diminuio de custos.

Introduo
Software :
- Solues: projeto, implementao, tecnologias,
padres, frameworks.
- Exemplos de categorias de Software: (cf. Pressman)
a) Aplicao;
b) Cientfico;
c) Web;
d) Embutido;
e) Linhas de Produto;
f) Inteligncia Artificial;
g) Computao Ubqua;

Introduo
O processo do desenvolvimento de Software:
- Conjunto de atividades relacionadas que levam a
produo de um software. (cf. Sommerville)
- Diferentes processos => atividades fundamentais.
a) especificao;
b) Projeto;
c) Implementao;
d) Validao e Verificao;
e) Evoluo.

Introduo
- No existe um processo de desenvolvimento ideal.
-Deve-se adotar melhores prticas no
desenvolvimento.
- Utilizao de padres.
- Utilizao de um modelo de processo.
- Exemplos:
a) Desenvolvimento em Cascata;
b) Desenvolvimento Incremental;
c) Desenvolvimento Orientado a Reso;
d) Desenvolvimento Dirigido por Modelos;

Introduo
-Desenvolvimento em Cascata
Cascata:
- primeiro modelo de desenvolvimento de software;
- Dividido em 5 estgios:
a) Definio de Requisitos e Anlise;
b) Projeto de Sistema;
c) Implementao
d) Verificao e Validao
e) Implantao.

Introduo
-Desenvolvimento em Cascata:
Definio de
Requisitos

Anlise e
Projeto de
Sistema e de
Software
Implementao

Verificao
&
Validao
Implantao

Introduo
-Desenvolvimento Incremental
Incremental:
- desenvolve-se uma aplicao inicial (prottipo);
- anlise do usurio (cliente) desenvolvimento
paralelo a validao.
- desenvolvimento de novas verses;
- documentao menor em relao ao modelo em
cascata.
- Menor custo de mudanas nos requisitos.
- Maior agilidade na entrega.
- Exemplo: Desenvolvimento dirigido a planos.

Introduo
-Desenvolvimento Incremental
Incremental:
- Desvantagens:
- O processo no visvel;
- Uma verso de documento para cada verso do
sistema.
- A estrutura do sistema degrada-se com a adio de
novas funcionalidades.
- Complexidade de gerenciamento de grandes
sistemas.

Introduo
-Desenvolvimento Incremental:
Atividades Concorrentes

Especificao

Esboo de
Descrio

Desenvolvimento

Verso
Inicial

Verses
Intermedirias

Validao
Verso Final

Introduo
-Desenvolvimento Orientado a Reuso(Reutilizao)
Reuso(Reutilizao):
- O reuso acontece, na maioria das vezes,
informalmente.
- Utiliza componentes reutilizveis de software.
- Estgios do Modelo de DOR:
a) Anlise de componentes;
b) Modificao de requisitos;
c) Projeto do sistema (utilizao de framework);
d) Desenvolvimento e Integrao (dos componentes);

Introduo
-Desenvolvimento Orientado a Reuso(Reutilizao)
Reuso(Reutilizao):
Tipos de componentes utilizados:
- Web Services;
- Componentes J2EE ou .Net;
- Componentes stand-alone proprietrios.
- Plug-ins.

Introduo
-Desenvolvimento Orientado a Reuso(Reutilizao):
Especificao
de Requisitos

Anlise de
Componentes

Alterao dos
Requisitos

Desenvolvimento e
Integrao

Projeto de
Sistema com
Reutilizao

Validao do
Sistema

Introduo
-Processo de Desenvolvimento
-Coleo de padres que definem um conjunto de
atividades necessrias ao desenvolvimento de
software. (Pressman)
- Quatro atividades bsicas do processo:
a) Especificao (requisitos)
b) Desenvolvimento ( projeto, codificao)
c) Verificao e Validao ( depurao, teste,
mtricas, refatoramento)
d) Evoluo (manuteno)

Introduo
-Modelo de Processo de Desenvolvimento
-As atividades variam dependendo do modelo de
processo.
a) Especificao ou engenharia de requisitos:
- Compreenso e definio dos servios requisitados
do sistema;
- Erros nesta fase geram problemas no projeto e na
implementao;
- Produo dos documentos de requisitos;
- Estudo de viabilidade, anlise dos requisitos,
validao dos requisitos.

Introduo
-Modelo de Processo de Desenvolvimento
b) Desenvolvimento (Projeto e Implementao)
- Processo de converso das especificidades dos
requisitos em um software.
- Envolve projeto e programao.
- O projeto descreve a estrutura da aplicao, os
modelos computacionais, estruturas de dados,
componentes, algoritmos, interfaces.
- O projeto desenvolvido de forma iterativa.
- Cada atividade deve gerar um produto de sada.
- Diferentes mtodos de projeto para: Programao
Estruturada, POO, POA, Eventos, Agentes, etc.

Introduo
-Modelo de Processo de Desenvolvimento
b) Desenvolvimento (Projeto e Implementao)
- O software interage com outros softwares, com o
sistema operacional, banco de dados e middleware
formando a plataforma do software.
- A anlise da plataforma do software essencial no
processo de projeto.
- Principais tipos de projeto: de arquitetura
(estrutura), de componente, de interface, de
banco de dados.

Introduo
-Modelo de Processo de Desenvolvimento
b) Desenvolvimento (Projeto e Implementao)
- Conjunto de sadas do projeto: arquitetura,
especificao da base de dados, de componentes e
interfaces.
- Estas sadas podem ser representadas por
diagramas (no caso de MDE) ou documentos de
especificao (mtodos geis).
- Para a programao no existe um processo geral a
ser seguido(cf. Sommerville), que indique qual
componente ser o primeiro a ser desenvolvido.

Introduo
-Modelo de Processo de Desenvolvimento:
c) Validao:
- Tambm chamado de Verificao e Validao
(V&V).
- Verificar que o software atende aos requisitos
especificados e se atende s necessidades do
cliente.
- Envolve inspees e revises em cada fase do
processo de desenvolvimento.
- Compreende a atividades de Teste de Software.
- Testes de: desenvolvimento, sistema, aceitao.

Introduo
-Modelo de Processo de Desenvolvimento:
c) Validao:
- Teste de desenvolvimento: os componentes so
testados, de maneira independente, pelas pessoas
que os desenvolveram. Os componentes podem ser
funes, classes, componentes ou agrupamentos
coerentes destes.
- Teste de sistema: realizado aps a integrao dos
componentes, busca por erros resultantes das
interaes.
- Teste de aceitao: testado com dados reais, busca de
erros na definio dos requisitos, problemas de
performance.

Introduo
-Modelo de Processo de Desenvolvimento:
d) Evoluo:
- Os softwares devem ser desenvolvidos de maneira
flexvel.
- Devem garantir extensibilidade, manutenibilidade.
- Envolve a fase de manuteno do software.
- A manuteno um processo contnuo e inerente
a todo software.

Desenvolvimento gil de Software


-

Introduo
Criado para atender s exigncia do mercado
global, com rpidas mudanas.
Novos softwares devem ser desenvolvidos
rapidamente para atender as novas oportunidades
de negcios.
Segundo Sommerville, muitas empresas esto
dispostas a trocar qualidade e compromisso com
os requisitos por uma implantao mais rpida.
No h tempo para obteno de um conjunto
completo de requisitos.

Desenvolvimento gil de Software


Introduo
- Existem grandes probabilidades de mudanas nos
requisitos por causa da dificuldade de prever como
o software ir automatizar processos, interagir
com outros sistemas, afetar o trabalho do
usurio, resistir a fatores externos.
- Talvez os requisitos se tornem claros medida que
o usurio adquira experincia com o sistema.
- Os processos convencionais (e.g. cascata) no so
adaptados ao desenvolvimento rpido de
software.

Desenvolvimento gil de Software


Introduo
- Para sistemas crticos, as abordagens dirigidas a
planos so as melhores opes.
- Desenvolvimento gil tem sido a soluo mais
apropriada para softwares de negcios com
mudanas nos requisitos.
- As linguagens de quarta gerao (James Martin)
incentivaram o desenvolvimento gil. Exemplos:
SQL (banco de dados), geradores de relatrios, de
interfaces...

Desenvolvimento gil de Software


Introduo
- Surgimento das abordagens geis (principais):
- Metodologia de Desenvolvimento de Sistemas Dinmicos
DSDM (Stapleton
(Stapleton,, 1997)
-

Desenvolvimento Adaptativo de Software (Highsmith


(Highsmith,, 1999)

 Programao Extrema (Beck


(Beck,, 2000)
Test Driven Development (Beck
Beck,, 2003)

Scrum (Schwaber and Beedle


Beedle,, 2001)

Crystal Clear (Cockburn


Cockburn,, 2001)

Desenvolvimento Dirigido a Caractersticas (Palmer and


Felsing,, 2002)
Felsing

Desenvolvimento gil de Software


-

Introduo
Caracterstica fundamental das abordagens geis:
Desenvolvimento rpido;
Desenvolvimento em partes (entrega dos
incrementos);
Especificao, projeto e implementao so
intercalados (suscetvel mudanas);
Documentao minimizada;
Desenvolvimento em verses;
Usurios envolvidos na especificao e validao;
Desenvolvimento de GUIs semi-automatizado.

Desenvolvimento gil de Software


www.agilemanifesto.org

1. Individuals and interactions over processes


and tools.
2. Working software over comprehensive
documentation.
3. Customer collaboration over contract
negotiation.
4. Responding to change over following a
plan.

Desenvolvimento gil de Software


-

Introduo
Crticas aos mtodos geis:
Codificao cowboy (balbrdia) ausncia de
mtodos;
Falta de documentao,
Suscetvel a vrias mudanas (imprevisvel),
Projeto insuficiente;
Intensidade no desenvolvimento (experts);

Desenvolvimento gil de Software


-

Introduo
Dificuldades da implantao dos princpios geis
(Sommerville
Sommerville,, 2011):
Disposio do cliente a participar plenamente do
desenvolvimento do software;
Problemas de interao entre membros da equipe
de desenvolvimento;
Dificuldade na priorizao de mudanas;
Resistncia de empresas de desenvolvimento
adaptao de um modelo com processos informais
e definidos pela equipe de desenvolvimento.

Desenvolvimento gil de Software


Introduo
- Esforo para integrar mtodos geis com o UP ((Larman
Larman,,
2002)
- Utilizar um pequeno conjunto de atividades do processo
unificado, com menor nmero de diagramas ou artefatos;
-Como UP iterativo, a implementao se inicia aps o
trmino dos requisitos e projeto. Neste caso, o projeto
surge como uma srie de iteraes baseado em
feedbacks.
- No se faz necessrio um plano detalhado do projeto
por inteiro. Faz-se um plano de mais alto nvel e planos de
iterao.

Desenvolvimento gil de Software


Introduo
- Esforo para integrar mtodos geis com o UP
(Larman
Larman,, 2002)
- Planos de iterao para cada nova iterao.
-Transformando abordagem predicativa e planejada
(UP tradicional) em uma abordagem adaptativa
baseada em feedbacks.
- Os detalhes de cada prxima iterao so, a
princpio, abstrados para serem futuramente
adaptados.

Desenvolvimento gil de Software


Introduo
- Esforo para integrar mtodos geis com o UP

(adaptado de Larman
Larman,, 2002)

Desenvolvimento gil de Software


Introduo
- Esforo para integrar mtodos geis com o UP ((Larman
Larman,,
2002)
- possivel especificar requisitos e planejar o projeto e o
desenvolvimento em paralelo, atravs de uma srie de
incrementos.
- Focalizar na documentao do Sistema.
- Ainda devem existir objetivos e marcos.
- Planejamento iterativo de 2 semanas.
- Desenvolvimento paralelo (vrias equipes), organizado
por camadas e sub-sistemas (domnio, GUI, integrao)

Desenvolvimento gil de Software


Metodologia gil
- Compreende:
- Conceitos de liderana;
- Gesto de projetos;
- Prticas de engenharia;
- Tcnicas de desenvolvimento;
- Ferramentas.
- Envolve a empresa em todos os seus nveis e
disciplinas.

Desenvolvimento gil de Software


Metodologia gil
- Caractersticas:
1. Crescimento e Evoluo: no h um processo
formal. O processo se desenvolve com a
experincia da equipe.
2. Associao e Adaptao: conjunto de idias,
combinao de projetos especficos, adoo de
diferentes prticas.
3. Indivduo: gesto realizadas pela prpria equipe. O
profissional dissemina suas idias no ambiente de
trabalho dirio.

Desenvolvimento gil de Software


Metodologia gil
- Caractersticas:
4. Eliminao de Desperdcios: Exs.: foco na tecnologia
em detrimento do valor do negcio (cliente), Esforo
excessivo em administrao e gesto, detalhamento de
aspectos futuros.
5. Foco no aprendizado: prototipagem como fonte de
feedbacks e avanos. Um prottipo ajuda a validar
requisitos e projetos.
6. Construindo qualidade: se muitos defeitos so
encontrados atravs dos testes, o processo como um
todo no satisfatrio.

Desenvolvimento gil de Software


Metodologia gil
- Caractersticas:
6. Construindo qualidade (cont...): desenvolvimento
dirigido a testes cria um cdigo limpo desde o incio
do desenvolvimento.
7. Adiar o compromisso: ningum consegue planejar o
projeto inteiro, a no ser por uma especificao
completa. Comear rpido, ter uma viso clara e
detalhar o projeto com o tempo.
8. Entrega rpida: otimizao das atividades de cada
indivduo.
9. Otimizar o inteiro: concentrar-se no sucesso do
produto final.

Desenvolvimento gil de Software


Metodologia gil
- Qualidade?
- Desenvolvimento gil com CMM (Capability
Maturity Model).
- CMM e gil so compatveis cf. SEI.
- CMM focaliza em altos nveis de abstrao
respeito dos objetivos do projeto (gesto).
- gil focaliza em como desenvolver o software
(metodologia).

Desenvolvimento gil de Software


Metodologia gil x CMM
Xu et al. Texas University

Desenvolvimento gil de Software


Metodologia gil
- Caractersticas:

Desenvolvimento gil de Software


Metodologia gil
- Equipe e Liderana
- Hierarquia em trs camadas, que se diferem por suas
responsabilidades e propsitos:
- Camada de Viso
Viso: camadas mais alta responsvel pela
definio dos objetivos e estratgias. Decises de
investimentos e direo.
- Camada de Integrao
Integrao: gesto intermediria e
gerncia de projetos. Orquestrar os talentos,
competncias, conhecimentos e recursos. Garantir
que os objetivos das equipes so consistentes e sem
contradio.

Desenvolvimento gil de Software


Metodologia gil
- Equipe e Liderana
- Camada do Valor: camada operacional responsvel
pela criao do valor. Equipes multifuncionais e
interdisciplinares. Cada equipe possui a
responsabilidade e autoria de seus objetivos e
entregam um valor direto ao cliente.

Desenvolvimento gil de Software


Metodologia gil
-Indivduos
- Fatores humanos dominam o desenvolvimento de
software.
- As idias da equipe definem o sucesso e so mais
importantes que especificao formal, tecnologia
avanada, linguagens e novos processos de
desenvolvimento.
- A personalidade afeta o trabalho.

Desenvolvimento gil de Software


Extreme Programming
- O que Programao Extrema? (Kent Beck)
Beck)
- Uma metodologia leve, eficiente, de baixo risco,
flexvel e cientfica de desenvolver softwares.
- Baseia-se em um contnuo e concreto feedback de
pequenos ciclos.
- uma abordagem de planejamento incremental.
- Fornece flexibilidade no escalonamento da
implementao de funcionalidades, respondendo s
mudanas nos requisitos do domnio do negcio.

Desenvolvimento gil de Software


Extreme Programming
- O que Programao Extrema? (Kent Beck)
Beck)
- Utiliza testes automatizados como instrumento de
monitoria do progresso do desenvolvimento
(identificao prvia de erros).
- Comunicao e cdigo fonte como elo entre a
estrutura da aplicao e os objetivos.
- Prticas de trabalho baseada na experincia de
programadores .
- XP foi elaborado para desenvolvimento de
aplicaes envolvendo de 2 a 10 programadores.

Desenvolvimento gil de Software


Extreme Programming
- Resoluo de Problemas de Desenvolvimento com XP:
- Cronograma: entrega de verses em pequenos ciclos.
-Projeto: iniciar com pequenos processos que faam
sentido ao negcio.
- Cdigo: construir uma suite de testes garantia de
qualidade.
- Interpretao de requisitos: o cliente parte integral da
equipe de desenvolvimento.
- Mudanas no negcio: menor impacto. Novas
funcionalidades so definidas na entrega de uma verso.

Desenvolvimento gil de Software


Extreme Programming
- Mais famoso exemplo de mtodo gil
- Constitudo de um conjunto de prticas
interdependentes:
1. Cliente como parte da equipe de desenvolvimento.
- Cliente = pessoa ou grupo que define e prioriza
caractersticas do negcio.
- Cliente trabalhando na mesma sala de desenvolvedores.
- Se no for possvel? Buscar algum que seja capaz de
substitu-lo temporariamente (Martin, 2011).

Desenvolvimento gil de Software


Extreme Programming
2. User Stories
- Para planejar os objetivos basta ter conhecimento
sobre os requisitos.
- No necessrio conhecer detalhes especficos
sobre requisitos. Estes detalhes mudam com o tempo.
- O cliente escreve em um carto (poucas palavras)
que est de acordo com o que foi tratado na conversa.
- O desenvolvedores tambm escrevem em um carto
o que entenderam sobre os requisitos.

Desenvolvimento gil de Software


Extreme Programming
2. User Stories
- Os requisitos sero alterados medida que as
releases forem sendo visualizadas pelo cliente.
- No existe nada melhor para entender os requisitos
do que ver o sistema nascendo. (Martin, 2011).
- As histrias de usurio so escritas nas fichas atravs
de mnemnicos.
- So descritos em ordem de prioridade quanto a
importncia do que ser implementado.

Desenvolvimento gil de Software


Extreme Programming
2. User Stories
-

Desenvolvimento gil de Software


Extreme Programming
3. Short Cycles (Iteraes curtas)
- Envolve um Plano de Iterao e um Plano de
Lanamento de Verso.
Verso
- Releases a cada duas semanas.
- O sistema (a cada repetio) deve ser apresentado
ao cliente em resposta a um requisito.
- Desenvolvedores calculam os custos da interao
medida das iteraes anteriores.
- Um vez iniciada a iterao, o cliente acorda em no
modificar os requisitos da mesma.

Desenvolvimento gil de Software


Extreme Programming
3. Short Cycles (Iteraes curtas)
-O Plano de Lanamento de Verso deve prever at
seis iteraes.
- O cliente determina a ordem da implementao das
stories.
4. Testes de Aceitao
-Os testes so escritos antes ou concomitantemente
implementao das stories.
- Os testes podem ser escritos em uma linguagem que
permita uma execuo automtica e repetitiva.

Desenvolvimento gil de Software


Extreme Programming
4. Testes de Aceitao
- Os testes servem para verificar se o sistema est se
comportando de acordo com as especificaes.
- Os testes evoluem com o sistema.
- Os clientes podem solicitar um sistema baseado em
scripts de teste ou podem possuir um departamento
de garantia de qualidade (QA) que o desenvolva.
- Os testes de aceitao rodam diversas vezes ao dia,
medida que o sistema construdo.

Desenvolvimento gil de Software


Extreme Programming
4. Testes de Aceitao
- Se o teste falha, o bloco considerado falho.
5. Programao por Pares
-Trabalhando na mesma estao de trabalho.
- Um programador se responsabiliza por digitar o cdigo.
- O segundo programador visualiza o cdigo sendo digitado,
verifica se h erros e d sugestes.
- Engajamento mtuo na codificao da aplicao.
- Os papis podem ser alterados frequentemente.
- O crdito do cdigo pertence a ambos.
- Os especialiastas compartilhas suas habilidades com a equipe.

Desenvolvimento gil de Software


Extreme Programming
5. Propriedade coletiva
- Um par de programador pode checar qualquer
mdulo e alter-lo.
- Todos so igualmente responsveis.
- Todos trabalham na GUI, no middleware e na base
de dados.
- Especialistas podem optar por suas especialidades,
mas no ficam confinadas a elas e transmitem seus
conhecimentos aos outros membros da equipe.

Desenvolvimento gil de Software


Extreme Programming
5. Integrao contnua
- Cdigos podem ser integrados vrias vezes ao dia.
- Programadores XP usam controle de cdigo sem
bloqueio, i.e. a todos permitido checar qualquer
cdigo em qualquer tempo.
- Testes so realizados a cada breaking point (uma ou
duas horas de programao). Testes so realizados e o
cdigo armazenado em uma base de cdigo.
- Se h necessidade de integrao com outro cdigo,
outros programadores podem ser convocados/
consultados.

Desenvolvimento gil de Software


Extreme Programming
5. Ritmo Sustentvel
- Trabalhando a todo tempo em ritmo contnuo.
6. Planejamento da Partida (game)
- Diviso de Responsabilidades entre negcios e
desenvolvimento.
-Pessoas do negcio (cliente) decidem a importncia
da histria, desenvolvedores decidem sobre custos da
implementao.

Desenvolvimento gil de Software


Extreme Programming
5. Projeto Simples
-O projeto deve simples e expressivo.
-Ter como foco as histrias (caractersticas) que foram
planejadas.
- Normalmente em XP no se comea com
infraestrutura, base de dados ter precedncia.
6.. Desenvolvimento Dirigido por Testes
- O cdigo escrito por unidade de teste.
Primeiramente se escreve o caso de teste.

Desenvolvimento gil de Software


Extreme Programming
6.. Desenvolvimento Dirigido por Testes (cont...)
-O caso de teste ir falhar porque a funo a ser
testada ainda no foi implementada.
- A funcionalidade ser desenvolvida e o caso de teste
passar.
7. Refatoramento
-Ao adicionar novas funcionalidades, a estrutura do
software tende a degradar-se.
- Refatoramento transforma a estrutura do sistema,
sem afetar seu comportamento.

Desenvolvimento gil de Software


Extreme Programming
8. Metfora
- a viso do sistema que permite um entendimento
de todos os mdulos individuais.
- Uma das prticas mais importantes da XP.
- Um conjunto de nomes deve fornecer um
vocabulrio dos elementos do sistema que ajude a
definir seus relacionamentos.

Desenvolvimento gil de Software


Extreme Programming (Guia de Atividades)

Fonte: extremeprogramming.org

Desenvolvimento gil de Software


Extreme Programming
(Regras de Trabalho)

Fonte: extremeprogramming.org

Desenvolvimento gil de Software


Metodologia gil
- Desenvolvimento gil de banco de dados;
- Desenvolvimento gil de softwares embutidos;
- Desenvolvimento gil de softwares de larga escala;
- Desenvolvimento gil de aplicaes web;
- Desenvolvimento gil para aplicaes de IA;
- Desenvolvimento gil para aplicaes distribudas.

Вам также может понравиться