►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS
Prof. Dr. rer. nat. Daniel D. Abdala
e-mail: [email protected]
1
 Introduzir
os principais processos de
software;
 Discutir as vantagens e desvantagens de
cada um dos processos;
2
 Modelos
de Processos de Software;
Modelo em Cascata
Prototipação
Modelo Iterativo
Modelo em Espiral
Métodos Ágeis
Desenvolvimento Dirigido por Modelos
3


Um conjunto estruturado de atividades que são
necessárias para se desenvolver um sistema de
software
• Especificação;
• Projeto;
• Implementação;
• Validação;
• Evolução.
Um modelo de processo de software é uma
representação abstrata de um processo. Ele apresenta
uma descrição do processo a partir de uma dada
perspectiva
4
Definição de
Requisitos
Projeto do
Software
Implementação e
Teste de Unidades
Integração e
teste do Sistema
Implantação e
Manutenção
5
 Definição
dos Requisitos e Análise do
Problema
 Projeto do Software
 Implementação e Teste de Unidades
 Integração e Teste do Sistema
 Operação e Manutenção
A principal desvantagem do modelo em cascata é
a dificuldade em se acomodar mudanças uma vez
que o processo se iniciou. Uma fase deve terminar
antes que a fase seguinte possa se iniciar
6
 Difícil
atender a mudança de requisitos dos
usuários
 Apropriado apenas quando os requisitos
são claros desde o início do projeto
 Poucos sistemas possuem requisitos
estáveis
 O modelo em cascata é principalmente
usado em processos de engenharia onde o
sistema é desenvolvido em diversas
localidades (modularização)
 Ainda assim, cerca de 40% de todos os
projetos utilizam este modelo!
7
Descrição em
Alto Nível
Especificação
Versão Inicial
Desenvolvimento
Versão
Intermediária
Validação
Versão Final
8
 Desenvolvimento
Exploratório
• O objetivo é trabalhar com os clientes (stackholders)
para criar iterativamente um sistema final a partir de
uma especificação inicial.
• Deve-se iniciar o processo com um conjunto de
requisitos muito bem entendidos e novas
características são adicionadas a medida que vão
sendo propostas pelo usuário
 Protótipo
Descartável
• Tem como objetivo o entendimento dos requisitos do
sistema
9
 Problemas
• Falta de visibilidade;
• Sistemas possuem geralmente uma estrutura
pobre;
• Habilidades especiais (i.e. Em linguagens de
prototipação rápida) podem ser necessárias.
 Aplicabilidade
• Em projetos de pequenos e de médio tamanho;
• Em partes de sistemas mais complexos(i.e. As
interfaces do usuário);
• Em programas de curto ciclo de vida.
10
Definição de
requisitos iniciais
Desenvolvimento
do incremento
do sistema
Atribuição de
requisitos à iterações
Validação do
Incremento
Integração do
Incremento
Projeto da arquitetura
do sistema
Validação
do Sistema
Sistema
Final
11
 Uma
parte usável do sistema é entregue
ao cliente a cada iteração (incremento);
 Incrementos iniciais podem ser usados
como protótipos para clarificação de
requisitos;
 Baixo risco de falha geral do projeto;
 Os sub-sistemas de mais alta prioridade
tendem a passar por testes mais
intensos.
12
CUSTO ACUMULADO
AVANÇO
Determina objetivos
alternativas e restrições
Análise
de Riscos
Avalia alternativas,
identifica e resolve
riscos
Análise
de Riscos
Revisão
Próximas etapas
do plano
Análise
de Riscos
ProtóProtó- tipo
Análise
de Riscos
Protó- tipo 3 Operacional
tipo 2
Protótipo 1
Plano de Requisitos
Simulações, modelos, ...
Plano de Ciclo Conceito de
de Vida Operação Requisitos
de Software Projeto Projeto
do pro- DetalhaPlano de
duto de do
Validação dos
Desenvolvimento
software
Requisitos
Código
Plano de
Teste
Validação e VeriIntegração e Testes
de
ficação do Prounijeto
Inte- dade
Desenvolve e verifica
Teste gração
Produto do Próximo
Imple- de acei- e teste
Nível
menta- tação
ção
13
O
Processo é representado por meio de
uma espiral ao invés de uma sequência
de atividades com retro-alimentação;
 Não existem fases fixas tal como
especificação ou projeto – loops na
espiral são escolhidos dependendo do
que é requerido;
 Riscos são avaliados explicitamentee
resolvidos durante todo o processo;
14




Definição dos objetivos
• Especificação dos objetivos para a fase corrente são
identificados;
Avaliação e redução de riscos
• Riscos são avaliados e atividades são especificadas
para reduzir os riscos chave;
Desenvolvimento e validação
• Um modelo de desenvolvimento é escolhido para o
projeto que pode ser qualquer dos modelos vistos
anteriormente
Planejamento
• O projeto é revisto e a próxima fase da espiral é
planejada
15
 Baseado
modelo interativo, porém mais
“leve” e centrado no ponto de vista das
pessoas envolvidas
• Cada fase demora dias e não semanas
• Envolvidos ficam presentes numa mesma sala
 Enfatizam
trabalho no software como
uma medida primária de progresso
• Utiliza feedback ao invés de planejamento como
mecanismo primário de controle
• Disponibilização regular de versões do software
16
 Extreme
Programming (XP)
• Fases pequenas e rápidas (alguns dias)
• Testes são automatizados: metas p/ desenvolvimento
• Programação feita em duplas
• Projeto e arquitetura surgem por refactoring
 SCRUM
• Usado no gerenciamento de projetos de software
• Ciclos formados por várias interações (sprint)
• Breves reuniões diárias (daily scrum)
SCRUM é um termo usado no jogo de Rúgbi, que significa quando os
jogadores se amontoam
17
 Mais
adequados quando os requisitos
estão emergindo e mudando
rapidamente
 Mais adequados para projetos com
pequenos times, em torno de 20 pessoas
 Não são aplicáveis em sistemas críticos
18
 Definir
visões
abstratas para o
projeto até chegar
no código
 Modelos são
refinados através
de transformações
sucessivas
(Greenfield and Short 2003)
Modelo Específico de Domínio
(modelos em XML)
MetaCASE
DSLTools
Modelo WEB Modelo Desktop Modelo Celular
JSP+Spring+Hibe
Swing + Spring
MIDP + Burlap
Código WEB Código Desktop Código Celular
JSP+Spring+Hibe
Swing + Spring
Plataforma
(WEB + Desktop + Celular)
MIDP + Burlap
 Processos
de Software são conjuntos de
atividades envolvidas na criação de um
software;
 Modelos de processo de software são
representações abstratas destes processos;
 As atividades comuns a todos os modelos
são: especificação, projeto, implementação,
validação e evolução;
 Modelos gerais de processo descrevem a
organização do processo de software.
Exemplos incluem o modelo em cascata,
prototipagem, iterativo, modelos ágeis e
baseado em componentes;
21
 R. S. Pressman, Engenharia
de Software,
McGraw Hill, 6a Ed., 2002. Chap. 3.
 I. Sommerville. Software Engineering. 7th Ed.
Addison-Wesley, 2004. Chap. 4.
22
Download

Processo de Software..