Upload
trinhtuyen
View
218
Download
0
Embed Size (px)
Citation preview
Processo de Desenvolvimento de
Software
Unidade V – Modelagem de PDS
Luiz Leão – [email protected]
http://www.luizleao.com
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Conteúdo Programático desta aula
Unidade V – Modelagem de PDS
Modelo Cascata (Waterfall) ou TOP DOWN.
Modelo Iterativo.
Metodologia Ágil.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Introdução
Há um bom tempo busca-se um processo ou metodologia que seja
previsível e repetível, e que melhore a produtividade e a qualidade
do desenvolvimento de software
Vários modelos foram idealizados com o intuito de organizar o
processo, podendo assim alcançar a máxima eficiência pretendida,
com o menor custo relacionado.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Modelo Cascata (Waterfall)
O ciclo de vida em Cascata (Clássico ou Linear) possui uma tendência
maior para a progressão sequencial apesar de pode haver
retroalimentação.
Problemas:
Projetos reais raramente seguem o fluxo;
Presume possibilidade de declarar previamente todos os
requisitos;
A implantação fica distante da fase inicial;
Aplicabilidade:
Modelo apropriado quando se tem requisitos bem definidos
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Modelo em Fonte
Baseado no modelo de cascata
Porém, observe que a sequência
sempre contêm ciclos
Reflete o fato de que algumas fases
não podem iniciar antes de outras
E que algumas fases são
intercaladas
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Modelo em Espiral
Sugerido por Boehmen em 1988
Representação em espiral, não como sequência de tarefas
Não tem número fixo de fases
Os riscos são tratados explicitamente
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Modelo em Espiral
“O modelo espiral pode ser adaptado para ser aplicado ao
longo de todo o ciclo de vida de uma aplicação, desde o
desenvolvimento de conceitos até a sua manutenção”
[PRESSMAN, 2011]
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Modelo Iterativo / Incremental
A cada iteração:
O software é incrementado em termos de artefatos de software
A definição desses artefatos e suas iterações seguem a
necessidade do Cliente/Usuário
As primeiras devem abordar os artefatos de maior relevância
para o produto.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Metodologias Ágeis
O desenvolvimento ágil de software defende alguns pontos de vista
em detrimentos de outros:
Manifesto Ágil:
Indivíduos e interações entre eles mais que processos e
ferramentas;
Software em funcionamento mais que documentação
abrangente;
Colaboração com o cliente mais que negociação de contratos;
Responder a mudanças mais que seguir um plano.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Metodologias Ágeis - Feedback
Processos ágeis usam feedback, ao invés do planejamento como seu
mecanismo de controle primário
O feedback é orientado por testes e releases periódicos do software
envolvido
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Metodologias Ágeis - Exemplos
Scrum
eXtreme Programming (XP)
Etc.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM
Scrum é uma metodologia ágil para gestão e planejamento de
projetos de software.
Os projetos são divididos em ciclos (mensais, semanais, etc.)
chamados de Sprints. O Sprint representa um Time Box (intervalo de
tempo) dentro do qual um conjunto de atividades deve ser
executado.
Metodologias ágeis de desenvolvimento de software são iterativas,
ou seja, o trabalho é dividido em iterações, que no caso do Scrum,
são as Sprints.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM (Cont.)
As funcionalidades a serem implementadas em um projeto são
mantidas em uma lista que é conhecida como Product Backlog.
No início de cada Sprint, faz-se um Sprint Planning Meeting, ou
seja, uma reunião de planejamento na qual o Product Owner
prioriza os itens do Product Backlog e a equipe seleciona as
atividades que ela será capaz de implementar durante o Sprint que
se inicia.
As tarefas alocadas em um Sprint são transferidas do Product
Backlog para o Sprint Backlog.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM
Alguns termos serão comumente vistos ao utilizar essa metodologia:
Produt Backlog
Sprint Planning Meeting
Sprint Backlog
Daily Scrum
Release Burndown
Sprint Review
Sprint Retrospective
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Product Backlog
É uma lista contendo todas as funcionalidades desejadas para um
produto.
O conteúdo desta lista é definido pelo Product Owner.
O Product Backlog não precisa estar completo no início de um
projeto. Pode-se começar com tudo aquilo que é mais óbvio em um
primeiro momento.
Com o tempo, a lista cresce e muda à medida que se aprende mais
sobre o produto e seus usuários.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Sprint Planning Meeting
É uma reunião na qual estão presentes o Product Owner, o Scrum
Master e todo a equipe, bem como qualquer pessoa interessada que
esteja representando a gerência ou o cliente.
Durante o Sprint Planning Meeting, o Product Owner descreve as
funcionalidades de maior prioridade para a equipe.
A equipe faz perguntas durante a reunião de modo que seja capaz
de quebrar as funcionalidades em tarefas técnicas, após a reunião.
Essas tarefas irão dar origem ao Sprint Backlog.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Sprint Backlog
É uma lista de tarefas que a equipe se compromete a fazer em um
Sprint.
Os itens do Sprint Backlog são extraídos do Product Backlog, pela
equipe, com base nas prioridades definidas pelo Product Owner e a
percepção da equipe sobre o tempo que será necessário para
completar as várias funcionalidades.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Daily Scrum
A cada dia do Sprint a equipe faz uma reunião diária, chamada Daily
Scrum.
Ela tem como objetivo disseminar conhecimento sobre o que foi
feito no dia anterior, identificar impedimentos e priorizar o trabalho
a ser realizado no dia que se inicia.
É composta pelo Scrum Master e a equipe de desenvolvimento.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Release Burndown
Em um projeto Scrum, a equipe monitora seu progresso em relação
ao projeto, atualizando um gráfico chamado Release Burndown ao
final de cada Sprint (iteração).
O eixo horizontal de um Release Burndown Chart mostra os Sprints;
O eixo vertical mostra a quantidade de trabalho que ainda precisa
ser feita no início de cada Sprint.
O trabalho que ainda resta pode ser mostrado na unidade
preferencial da equipe: Pontos de função, dias de trabalho e assim
por diante.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Sprint Review Meeting
É feito ao final de cada Sprint.
Durante esta reunião, a equipe mostra o que foi alcançado durante o
Sprint.
Tipicamente, isso tem o formato de um demo das novas
funcionalidades.
Os participantes do Sprint Review tipicamente incluem o Product
Owner, a equipe, o Scrum Master, gerência, clientes e engenheiros
de outros projetos.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
SCRUM – Sprint Retrospective
Ocorre ao final de um Sprint e serve para identificar o que
funcionou bem, o que pode ser melhorado e que ações serão
tomadas para melhorar.
Pode servir também para iniciar o planejamento da nova Sprint.
Conta com a participação do Scrum Master e com a equipe de
desenvolvimento.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
eXtreme Programming (XP)
É uma metodologia de desenvolvimento de software, nascida nos
Estados Unidos ao final da década de 90.
Vem fazendo sucesso em diversos países, por ajudar a criar sistemas
de melhor qualidade, que são produzidos em menos tempo e de
forma mais econômica que o habitual.
Tais objetivos são alcançados através de um pequeno conjunto de
princípios e práticas, que diferem substancialmente da forma
tradicional de se desenvolver software.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
eXtreme Programming (XP)
Princípios
Comunicação
Coragem
Feedback
Respeito
Simplicidade
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Coragem
Única constância nos projetos de software é a mudança
A confiança nas ferramentas e nas metodologias adotadas ajudam em
tomadas de decisões corajosas, para o bem do projeto
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Feedback
Projetos de software requerem alto investimento por parte do
cliente
É preciso que o cliente tenha conhecimento do status do seu
investimento, a cada instante
Para isso, a comunicação e o respeito devem esta presente na
relação Equipe x Cliente
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Respeito
Membros de uma equipe só irão se preocupar em comunicar-se
melhor, por exemplo, se houver respeito uns com os outros
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Simplicidade
Pesquisa sobre as
funcionalidades
desenvolvidas para
um software
Muito esforço é,
geralmente,
empregado na
produção do
software, sem que
haja agregação de
valor no produto
final
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
eXtreme Programming (XP) – Práticas
Organizacionais:
Jogo de Planejamento
Pequenas Versões (Releases)
Teste de Aceitação
Time Coeso
Equipe:
Propriedade Coletiva
Padronização de Código
Ritmo Sustentável
Integração Contínua
Metáforas
Pares:
Programação em Par
Refatoração
Projeto Simples
Desenvolvimento Orientado a
Teste (TDD)
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Jogo de Planejamento
É a reunião feita no início da iteração, entre desenvolvedores e
cliente, cuja finalidade é identificar as prioridades do projeto para
que os desenvolvedores estimem o esforço das tarefas.
O cliente é essencial neste processo e assim ele fica sabendo o que
está acontecendo e o que vai acontecer no projeto.
Como o escopo é reavaliado a cada ciclo, o projeto é regido por um
contrato de escopo negociável, que difere significativamente das
formas tradicionais de contratação de projetos de software.
Ao final de cada ciclo, o cliente recebe novas funcionalidades,
completamente testadas e prontas para serem postas em produção.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Pequenas Versões (Releases)
A liberação de pequenas versões funcionais do projeto auxilia muito
no processo de aceitação por parte do cliente, que já pode testar
uma parte do sistema que está comprando.
As versões chegam a ser ainda menores que as produzidas por outras
metodologias incrementais, como o RUP.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Teste de Aceitação
São testes construídos pelo cliente e conjunto de analistas e
testadores, para aceitar um determinado requisito do sistema.
Descreve um cenário (de sucesso ou não) com uma expectativa do
cliente em relação à história ou funcionalidade.
Como o nome sugere, ele ajuda a equipe a entender quando uma
história está completa (aceita).
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Time Coeso
Deve ser formado pelo cliente, desenvolvedores e por profissionais
que contribuam para o desenvolvimento do projeto, como
consultores, por exemplo.
A equipe de desenvolvimento é formada por pessoas engajadas e de
perfis multidisciplinares, com o objetivo de termos um vasto
conjunto de habilidades necessárias para o projeto.
Um projeto bem sucedido precisa levar em conta a opinião de
diversas partes, bem como incorporar diferentes pontos de vista.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Propriedade Coletiva
O código fonte não tem dono e ninguém precisa solicitar permissão
para poder modificar o mesmo.
O objetivo com isto é fazer a equipe conhecer todas as partes do
sistema.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Padronização de Código
A equipe de desenvolvimento precisa estabelecer regras para
programar e todos devem seguir estas regras.
Desta forma parecerá que todo o código fonte foi editado pela
mesma pessoa, mesmo quando a equipe possui 10 ou 100 membros.
IDEs e Frameworks contribuem de forma significativa para implantar
essa prática.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Ritmo Sustentável
Trabalhar com qualidade, buscando ter ritmo de trabalho saudável
(40 horas/semana, 8 horas/dia), sem horas extras.
Horas extras são permitidas quando trouxerem produtividade para a
execução do projeto.
Outra prática que se verifica neste processo é a prática de trabalho
energizado, onde se busca trabalho motivado sempre.
Para isto o ambiente de trabalho e a motivação da equipe devem
estar sempre em harmonia.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Integração Contínua
Sempre que produzir uma nova funcionalidade, nunca esperar uma
semana para integrar à versão atual do sistema.
Isto só aumenta a possibilidade de conflitos e a possibilidade de
erros no código fonte.
Integrar de forma contínua permite saber o status real da
programação.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Metáforas
Procura facilitar a comunicação com o cliente, entendendo a
realidade dele.
O conceito de rápido para um cliente de um sistema jurídico é
diferente para um programador experiente em controlar
comunicação em sistemas em tempo real, como controle de tráfego
aéreo.
É preciso traduzir as palavras do cliente para o significado que ele
espera dentro do projeto.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Programação em Par
É a programação em par/dupla num único computador.
Geralmente a dupla é formada por um iniciante na linguagem e
outra pessoa funcionando como um instrutor.
Como é apenas um computador, o novato é que fica à frente
fazendo a codificação, e o instrutor acompanha ajudando a
desenvolver suas habilidades.
Desta forma o programa sempre é revisto por duas pessoas, evitando
e diminuindo assim a possibilidade de defeitos.
Com isto busca-se sempre a evolução da equipe, melhorando a
qualidade do código fonte gerado.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Refatoração
É um processo que permite a melhoria continua da programação,
com o mínimo de introdução de erros e mantendo a compatibilidade
com o código já existente.
Refatorar (ou refabricar) melhora a clareza (leitura) do código,
divide-o em módulos mais coesos e de maior reaproveitamento,
evitando a duplicação de código-fonte
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Projeto Simples
Simplicidade é um princípio da XP. Projeto simples significa dizer
que caso o cliente tenha pedido que na primeira versão apenas o
usuário "teste" possa entrar no sistema com a senha "123" e assim ter
acesso a todo o sistema, você vai fazer o código exato para que esta
funcionalidade seja implementada, sem se preocupar com sistemas
de autenticação e restrições de acesso.
Um erro comum ao adotar essa prática é a confusão por parte dos
programadores de código simples e código fácil.
Nem sempre o código mais fácil de ser desenvolvido levará a solução
mais simples por parte de projeto.
Esse entendimento é fundamental para o bom andamento do XP.
Código fácil deve ser identificado e substituído por código simples.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Desenvolvimento Orientado a Teste (TDD)
Testing Driven Development
Primeiro crie os testes unitários (Unit Tests) e depois crie o código
para que os testes funcionem.
Esta abordagem é complexa no início, pois vai contra o processo de
desenvolvimento de muitos anos.
Só que os testes unitários são essenciais para que a qualidade do
projeto seja mantida.
Unidade V – Modelagem de PDS
Processo de Desenvolvimento de Software
Variação entre os modelos
Como o processo de desenvolvimento de software se
distribui/concentra no tempo dentro de um projeto?