pdf-2p - Hélia Guerra - Universidade dos Açores

Propaganda
Engenharia de Software
Processos de software
Hélia Guerra
Departamento de Matemática
Universidade dos Açores
[email protected]
Processo
• Um processo é uma série de etapas envolvendo
actividades, restrições e recursos, tendo em vista a
produção de determinado produto.
• Envolve um conjunto de técnicas e de ferramentas
2
características de um processo
• Prescreve todas as actividades principais
• Utiliza recursos, sujeitos a restrições (e.g. calendarização)
• Produz produtos intermédios e finais
• Pode ser composto por subprocessos organizados
hierarquicamente
• Cada actividade tem definidos critérios de entrada e de saída
• As actividades organizam-se sequencialmente, do ponto de
vista temporal
• Tem um conjunto de linhas orientadoras que explicam os
objectivos de cada actividade
• Pode haver restrições para cada actividade, cada
recurso e cada produto
3
ciclo de vida do software
Quando um processo envolve a construção de um produto de software, diz-se
que o processo é o ciclo de vida do software
Definição e análise de requisitos
Desenho do sistema
Desenho do programa
Escrita dos programas
Testes modulares, de integração e do sistema
Entrega do sistema
Manutenção
4
importância do processo
• Impõe consistencia e estrutura às actividades de
desenvolvimento
• Facilita a compreensão, o controlo e a verificação das
actividades
• Permite registar experiencias que poderão ser usadas em
futuros processo
5
modelo de processos
• Cria uma forma de entendimento comum das
actividades, recursos e restrições ao processo
• Ajuda a equipa a encontrar inconsistencias,
redundancias, omissões no processo em geral e nas
suas partes em particular
• Define os objectivos do desenvolvimento (detectar
faltas cedo, obter programas de elevada qualidade,
respeitar o orçamento)
• Deve ser escolhido pela equipa o modelo que melhor se
adapta aos seus objecivos 6
Modelos de processos de Software
• Modelo em Cascata (Waterfall)
• Modelo em V
• Modelo de prototipagem
• Especificação operacional
• Desenvolvimento faseado: iterativo e incremental
• Modelo em espiral
• Métodos ágeis
7
Modelo em cascata
• Foi um dos primeiros modelos propostos (Winston
Royce, 1970)
• As etapas surgem sequencialmente
• a cada etapa é associada a construção de produtos
intermédios, sendo necessário terminar uma etapa
antes de iniciar a seguinte
8
Modelo em cascata
9
Modelo em cascata
• Simples e fácil de explicar aos clientes
• Visão de alto nível do processo de desenvolvimento
• Existem marcos e produtos intermédios associados a
cada etapa, facilitando a gestão do projecto
• Funciona bem quando se percebe bem o problema ou
quando os requisitos são definitivos
10
Modelo em cascata
• Ignora a iteração
muitas vezes
presente no
desenvolvimento
de aplicações
• não descreve como é que cada actividade transforma o
produto intermédio recebido no produto intermédio
produzido
11
prototipagem no modelo em cascata
• Um protótipo é um produto parcialmente desenvolvido
• O desenho do protótipo ajuda a equipa de
desenvolvimento a encontrar estratégias de desenho
alternativas
• o protótipo da interface com o utilizador ajuda o
utilizador a perceber como ficará o sistema
• A prototipagem é útil para a verificação e validação em
diferentes etapas do processo
12
prototipagem no modelo em cascata
13
Modelo em v
• Variante do modelo em cascata
• Utiliza testes de módulos para verificar o desenho
• Utiliza testes de integração para verificar a arquitectura
do sistema
• Utiliza teste de aceitação para validar os requisitos
• Caso surjam problemas na verificação e na validação, o
lado esquerdo do V pode ser executado novamente
para serem feitas as respectivas alterações
14
Modelo em v
15
modelo de prototipagem
• A prototipagem é a base do modelo
• Reduz riscos de incerteza no desenvolvimento
16
modelo de especificação
operacional
• Os requisitos podem ser examinados e as suas
implicações avaliadas ainda na fase inicial do processo
• A funcionalidade e o desenho fundem-se
17
modelo de desenvolvimento
faseado
• Ciclo de desenvolvimento curto
• O sistema é entregue em partes
–clientes vão vendo algumas funcionalidades,
enquanto a equipa vai desenvolvendo o resto
• Há dois sistemas a funcionar em paralelo
–sistema de produção (versão n): está a ser usado pelo
cliente
–sistema de desenvolvimento (versão n+1): a versão
seguinte que está a ser preparada
18
modelo de desenvolvimento
faseado
19
modelo de desenvolvimento
faseado
• Desenvolvimento Incremental: começa com subsistema
pequeno e funcional, depois acrescenta novas funcionalidades
a cada versão
• Desenvolvimento Iterativo: começa com o sistema
completo que vai sofrendo alterações de funcionalidades em
cada versão
20
modelo de
desenvolvimento faseado
• Vantagens
–O treino e a familiarização dos utilizadores pode
decorrer cedo, mesmo que faltem algumas funções
–Clientes/utilizadores ficam motivados desde cedo para
novas funcionalidades
–Versões frequentes permitem corrigir problemas
inesperados rapidamente e globalmente
–A equipa de desenvolvimento pode focar diferentes
áreas de conhecimento nas diferentes versões
21
modelo em espiral
• Boehm, 1988
• Combina as actividades do processo com a gestão do
risco para minimizar e controlar o risco
• O modelo apresenta-se como uma espiral onde cada
iteração é representada por um circuito à volta de
quatro fases:
–Planificação
–Determinação de objectivos, alternativas e restrições
–Avaliação de alternativas e riscos
–Desenvolvimento e teste
22
modelo em espiral
23
métodos ágeis
• Apostam na produção rápida de software flexível e de
qualidade
• Manifesto Ágil (princípios alternativos)
–Valorização das pessoas e interacções em relação aos
processos e às ferramentas
–É preferível gastar tempo a programar do que a
preparar documentação
–Enfatisa a colaboração com o cliente e não o contrato
–Concentra-se em responder às alterações pedidas e não
em criar um plano e segui-lo
24
métodos ágeis (exemplos)
• Extreme programming (XP): desenvolve software com
requisitos incompletos e em constante mudança.
Efectua acompanhamento constante e pequenos ajustes
durante todo o processo de desenvolvimento
• Crystal: diversas abordagens baseadas no princípio da
unicidade de um projecto (políticas e convenções
próprias)
• Scrum: iterações de 30 dias. Várias equipas autónomas
e organizadas. Coordenação feita com breves reuniões
diárias
25
métodos ágeis: Extreme
Programming
• Princípios da XP
–Comunicação: contínua entre clientes e equipas de
desenvolvimento
–Simplicidade: escolhe desenho mais simples
–Coragem: entrega de novas funcionalidades cedo e
com frequencia
–retroalimentação: revisita rapidamente as
actividades durante o processo de desenvolvimento
26
Extreme Programming (práticas)
• Jogo do planeamento
(cliente define o valor)
• Pequenas versões
• Programação aos pares
• Posse colectiva
• Integração contínua (pequenos
• Metáfora
incrementos)
• Desenho simples
• Ritmo sustentável (40 h/
• Testes de aceitação
• Padrões de codificação
semana)
• Refactoring
27
demasiado extremo
• As práticas de XP são interdependentes
–Quando uma se altera as outras ficam vulneráveis
• Os requisitos têm que passar por testes de software
–não é para isso que o cliente paga
• Refactoring
–É difícil alterar continuamente a progamação sem
degradar a arquitectura inicial
28
resumo
• O processo de desenvolvimento envolve actividades,
recursos e produtos
• Há modelos de processos com diferentes perspectivas:
organizacional, funcional, comportamental, etc
• Um modelo de processo é útil para a execução,
colaboração e coordenação do trabalho em equipa
29
Download