D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Lab. Engenharia de Software
O Processo Unificado (PU) de
Desenvolvimento de Software
Francilene Procópio Garcia,
D.Sc.
[email protected]
D
S Engenharia de Software
C
Processo Unificado para
Desenvolvimento de
Software Processo Unificado de Desenvolvimento de Software
Um processo baseado em componentes, orientado a
Casos de Uso, centrado na arquitetura, iterativo e
incremental - explicitado por uma modelagem que
faz uso de UML.
Mas, o que é de fato um Processo de
Desenovlvimento de Software?
Um processo deve definir QUEM está fazendo O
QUE QUANDO e COMO para que uma dada meta
seja alcançada...
D
S Engenharia de Software
C
Processo de
Desenvolvimento de
Software Processo Unificado de Desenvolvimento de Software
Um processo, em engenharia de software, tem como
meta a construção de artefatos de software ou a
melhoria de um produto existente, através da
participação de vários tipos de usuários (cliente,
usuário final, desenvolvedor, gerentes, etc), cujos
limites dependem de alguns elementos:
 Tecnologia - LPs, SOs, Networks, etc.
 Ferramentas - tendo os processos disseminados
amplamente, alavanca-se o desenvolvimento de
tools.
 Pessoas - algumas habilidades são necessárias.
 Organização - modelos virtuais, outsourcing,
contratos padrões, parcerias, etc.
Processo Unificado Vs.
UML
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
UML tem sido usada como a linguagem de
modelagem padrão do PU ajudando na visualização,
especificação, construção e documentação de
diferentes artefatos de software.
É um meio!
Maior ajuda … nas fases de requisitos, análise e
projeto.
D
S Engenharia de Software
C
Processo Unificado: Uma
resposta à crise do
software? Processo Unificado de Desenvolvimento de Software
O que buscamos ao desenvolver sistemas de
software nos dias de hoje?
 S/W mais flexível e adaptável às necessidades do
mercado - mudanças ...
 Um processo mais rápido - time to market é um
desafio!
 Não se admite mais o uso dos mesmos métodos já se vão mais de 25 anos!
 Um processo que integre as muitas facetas do
desenvolvimento de s/w
O Processo Unificado
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
É um processo para desenvolvimento de software
que suporta um conjunto de atividades necessárias
para se transformar “requisitos” num sistema de
software
Apresenta-se como um framework genérico para
uma ampla gama de classes de s/w
É baseado em componentes
Faz uso intenso de UML
Aspectos essenciais: orientação à Casos de Uso,
foco na arquitetura, iterativo e incremental
O que são Casos de Uso?
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
São usados para captura dos requisitos de um
sistema de software, particularmente daqueles
baseados em componentes.
Algumas definições importantes:
Usuário (humanos e outros sistemas que interagem
com o sistema em desenvolvimento);
Casos de Uso (um aspecto funcional que provê um
valor ao usuário - as interações com o sistema).
Os Casos de Uso substituem o modelo tradicional
de especificação de um sistema de software …
o que se espera que o sistema faça … para cada
usuário?
Por quê centrado na
Arquitetura?
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Para que serve a arquitetura de um sistema?
[Parábola dos homens cegos e o elefante]
Define uma estrutura, seus serviços. Ex.: sistemas
água e elétrico, etc.
Nos ajuda a: entender o sistema, organizar o seu
desenvolvimento, acompanhar a evolução do
sistema, e atuar em busca do reuso.
No caso de sistemas de s/w: procura-se definir
aspectos estáticos e dinâmicos de um produto de
s/w.
Arquitetura de S/W
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Elementos previstos na arquitetura de um s/w:
 a estrutura do sistema (sua organização)
 os componentes críticos e as interfaces entre eles
 a composição dos componentes em subsistemas a
partir do comportamento de suas funcionalidades
A soma de diferentes visões: casos de uso + análise
+ projeto + ...
Casos de Uso Vs.
Arquitetura
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Casos de Uso
(função)
Mapeia
Arquitetura
(forma)
Orientam
/ Guiam
Experiência (patterns)
Em geral, as funcionalidades críticas do s/w são
representadas por cerca de 5% a 10% dos Casos de
Uso.
D
S Engenharia de Software
C
Camadas Possíveis na
Arquitetura: os seus
SubsistemasProcesso Unificado de Desenvolvimento de Software
Aplicações Específicas
(sempre no topo)
Aplicação Geral
Dependem do
negócio
(subsistemas que podem ser reusados em diferentes aplicações)
Middleware
(frameworks, bibliotecas de classes, etc)
Independem do
negócio
Sistemas de S/W
cada Caso de Uso especificado é detalhado e transformado em
termos de subsistemas, classes e componentes.
Processo Iterativo e
Incremental? Para quê?
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Para lidar com ciclos de desenvolvimento cada vez
mais complexos e longos, onde a maturidade só é
alcançada após vários mini-ciclos - o PU prevê uma
série de mini-projetos (versões do sistema).
Cada mini-projeto é uma iteração resultante de
passos incrementais ao longo do ciclo de
desenvolvimento.
As iterações são passos ao longo do fluxo de
trabalho; os incrementos são avanços na direção do
produto final.
A eficácia do processo deve ser buscada com o
controle das várias iterações...
Processo Iterativo e
Incremental
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Como definir as iterações?
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Para se definir as versões resultantes em cada
iteração, deve-se atentar para dois fatores chaves:
(1) Cada iteração deve estar associada a um
conjunto de Casos de Uso que avançam em termos
da usabilidade do produto desenvolvido até então.
(2) Cada iteração deve considerar e atacar algum
risco crítico, de forma que, ao final, a maioria dos
riscos tenham sido atacados.
As sucessivas iterações irão resultar nos artefatos
de s/w, avançando sempre na direção do produto
final.
As representações p/ um
Produto
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Cada mini-ciclo resulta numa versão do sistema. Cada versão é
um produto pronto para entrega (algum código fonte na forma
de componentes executáveis + manuais + outros artefatos de
interesse).
Especificado
por
Transformado
por
Modelo
Caso de Uso
Modelos no PU
Distribuído
por
Implementado
por
Modelo
Análise
Modelo
Implementação
Modelo
Projeto
Modelo
Desdobramento
Verfiicado
por
OK
OK
Modelo
Teste
D
S Engenharia de Software
C
Os Quatro Ps no PU:
Pessoas, Projeto, Produto
e Processo Processo Unificado de Desenvolvimento de Software
Processo
Template
Automação
Pessoas
Projeto
Participantes
Resultado
Produto
Tools
D
Quem participa?
Engenharia de Software
S
Como é o proc. de
C
desenvolvimento? Processo Unificado de Desenvolvimento de Software
Usuários
Analista
Sistema
Define Atores Estrutura o Modelo
e Casos de Uso de Casos de Uso
Testadores
Arquiteto
Sistema
Arquiteto
Projetistas
Gerente
Projeto
Analistas
Projetista
Caso de Uso
Projetista
Interface
Prioriza
Casos de Uso
Detalha os
Casos de Uso
Protótipo da
Interface
D
Capturando os
Engenharia de Software
S
Requisitos Funcionais:
C
aplicando Casos de Processo
Uso Unificado de Desenvolvimento de Software
Requisitos: Pessoas Vs. Artefatos
Analista
Sistema
Projetista
Caso Uso
Projetista
Interface
Projetista
Caso Uso
Modelo
Caso Uso
Ator Glossário
Caso Uso
Protótipo Interface
Descrição
Arquitetura
D
Capturando os
Engenharia de Software
S
Requisitos Funcionais:
C
aplicando Casos de Processo
Uso Unificado de Desenvolvimento de Software
Requisitos: Atividades do Processo
Analista
Sistema
Arquiteto
Projetista
Caso de Uso
Projetista
Interface
Define Atores Estrutura o Modelo
e Casos de Uso de Casos de Uso
Prioriza
Casos de Uso
Detalha os
Casos de Uso
Protótipo da
Interface
Um exemplo: Modelo de
Sistema de uma ATM
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Diagrama de Caso de Uso
Retirada
Dinheiro
Cliente
Banco
Depósito
Dinheiro
Observe que os casos de uso são
projetados para atender as demandas
dos usuários do sistema - capturando
todos os requisitos funcionais.
“Um caso de uso especifica uma
sequência de ações, incluindo suas
Tranferência variantes, que o sistema pode executar
entre Contas resultando em valores para um dado
ator.”
O Projeto de uma Idéia:
Modelo de Análise
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Análise: Pessoas Vs. Artefatos
Arquiteto
Projetista
Caso Uso
Engenheiro
Componente
Modelo
Análise
Descrição
Arqitetura
Transformação
Caso Uso Análise
Análise
Classe
Análise
Pacote
D
S Engenharia de Software
C
Estabelecendo o Projeto
de uma Idéia: Modelo de
Análise Processo Unificado de Desenvolvimento de Software
Análise: Atividades do Processo
Arquiteto
Projetista
Caso de Uso
Engenheiro
Componente
Análise
Arquitetural
Analisa
Casos de Uso
Análise
Classe
Análise
Pacote
Exemplo: Modelo de
Análise
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Gaveta da
ÀTM
Cliente
Banco
Tela de
Interface
Receptor
ATM
Modelo de Análise
Retirada
Transferência
Depósito
Conta
O modelo mostra como cada caso
de uso é obtido pela estrutura de
classes da análise. Por exemplo, as
classes Interface, Retirada, Conta e
Gaveta são responsáveis pelo Caso
de Uso Retirada de Dinheiro.
D
S Engenharia de Software
C
Exemplo: Modelo de
Análise
Processo Unificado de Desenvolvimento de Software
1. Identifica
Tela de 2. Solicita retirada
Interface
Textos estruturados ou pseudocódigo podem ajudar na
documentação da interação entre
os objetos!
3. Valida a retirada
Retirada
Conta
Cliente
Banco
4. Autoriza a saída
5. Libera o dinheiro
Gaveta da
ÀTM
Diagrama de Colaboração
Este diagrama nos ajuda a descrever como
o Use Case Retirada de Dinheiro é obtido
através da participação de vários objetos da
análise. Na fase de projeto, tal combinação
deve ser refinada.
Exemplo: Subsistemas
propostos
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Interface
ATM
Gestão
Transação
Aplicações Específicas
Aplicação Geral
Gestão
Conta
Middleware
Java.
applet
Java
VM
Java. mi
Sistemas de S/W
TCP/IP
Estabelecendo o
D
Vocabulário do Problema e S Engenharia de Software
de sua Solução: Modelo de C
Processo Unificado de Desenvolvimento de Software
Projeto
Projeto: Pessoas Vs. Artefatos
Arquiteto
Projetista
Caso Uso
Modelo
Projeto
Descrição
Arqitetura
Modelo
Desdobramento
Transformação
Caso Uso Projeto
Engenheiro
Componente
Projeto
Projeto Subsistema Interface
Classe
Estabelecendo o
D
Vocabulário do Problema e S Engenharia de Software
de sua Solução: Modelo de C
Processo Unificado de Desenvolvimento de Software
Projeto
Projeto: Atividades do Processo
Arquiteto
Projetista
Caso de Uso
Engenheiro
Componente
Projeto
Arquitetural
Projeta um
Casos de Uso
Projeta
Classe
Projeta
Subsistema
Exemplo: Modelo de
Projeto
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Modelo de Análise
Interface
ATM
Gaveta
ATM
Retirada
Conta
Tela
Saque
Conta
Sensor
Gaveta
Gerente
Classe
Teclado
Enchedor
Cliente
Persistente
Gaveta
Leitor
Gerente
Gerente
Contador
Cartão
Transação
Conta
Cédulas
Modelo de Projeto
Classes ativas
Exemplo: Modelo de
Projeto
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Diagrama de Classe
Leitor
Cartão
Introduz mais detalhes que o Diagrama de
Classes do modelo de análise. Faz-se
necessário ainda mais detalhes sobre as
interações entre objetos.
Gerente
Transação
Classe
Persistente
Tela
Teclado
Gerente
Cliente
Saque
Enchedor
Gaveta
Sensor
Gaveta
Contador
Cédulas
Gerente
Conta
Conta
D
S Engenharia de Software
C
Exemplo: Modelo de
Projeto
Processo Unificado de Desenvolvimento de Software
Mostra como focar o Caso de Uso - começando da
esquerda e alcançando cada objeto envolvido,
conforme as mensagens são enviadas… (passos 1 e 2
do Diagrama de Colaboração)
Diagrama de Sequência
: Leitor
Cartão
:Cliente
Banco
Inserir cartão
:Teclado
:Tela
:Gerente
Cliente
:Contador :Gerente
Cédulas Transação
Cartão inserido (ID)
Mostra a solicitação
Solicita a senha
Insere a senha
Senha
Pergunta pela soma saque
Mostra a solicitação
Insere a quantia para saque
Valor
Solicita validação senha
...
Modelo de Projeto:
D
Organizando as Classes - S Engenharia de Software
Uma visão da estrutura estática C
Processo Unificado de Desenvolvimento de Software
subsistema
Interface
Interface ATM
Leitor
Cartão
Tela
Saque
Teclado
Gerente
Cliente
Liberação
Enchedor
Gaveta
Sensor
Gaveta
subsistema
subsistema
Gestão Transação
Gestão Conta
serviço
subsistema
Gestão Saque
Contador
Cédulas
Classe
Persistente
Gerente
Transação
Saque
Transf.
Gerente
Conta
Conta
Estabelecendo as partes D
necessárias para montar e S Engenharia de Software
C
liberar o sistema:
ImplementaçãoProcesso Unificado de Desenvolvimento de Software
Nesta fase, devemos prover o que for necessário para
obtenção do sistema executável: os componentes executáveis,
os arquivos do componente (código fonte, scripts, etc), tabela
de componentes (elementos da bases de dados), entre outros.
Um componente é a parte física e mutável de um sistema que
deve suportar a operação conjunta de um grupo de interfaces.
Isto é, o modelo de implementação deve ser composto de
componentes, incluindo todos os executáveis (ActiveX, Java
Beans, etc) para cada classe presente no Modelo de Projeto.
Estabelecendo as partes D
necessárias para montar e S Engenharia de Software
C
liberar o sistema:
ImplementaçãoProcesso Unificado de Desenvolvimento de Software
Implementação: Pessoas Vs. Artefatos
Arquiteto
Modelo
Implementação
Integrador
Sistema
Modelo
Desdobramento
Modelo
Desdobramento
Transformação
Casos Uso Plano Integração
Engenheiro
Componente
Implementação
Componente Subsistema Interface
Estabelecendo as partes D
necessárias para montar e S Engenharia de Software
C
liberar o sistema:
ImplementaçãoProcesso Unificado de Desenvolvimento de Software
Implementação: Atividades do Processo
Arquiteto
Integrador
Sistema
Engenheiro
Componente
Implementação
Arquitetural
Integração
Sistema
Implementa
Classe
Implementa
Executa
Subsistema Teste Unidade
Modelo de Desdobramento: D
Uma visão arquitetural dos S Engenharia de Software
C
nodos físicos
Processo Unificado de Desenvolvimento de Software
Três Nós Vs. Três Subsistemas
Internet
Client
ATM
Server
Application
ATM
Intranet
Data
Server
ATM
Estabelecendo as partes D
necessárias para montar e S Engenharia de Software
C
liberar o sistema:
ImplementaçãoProcesso Unificado de Desenvolvimento de Software
Modelo de Projeto
Modelo de Implementação
Gerente
Cliente
executável
Enchedor
Gaveta
compilação
cliente.exe
file
cliente.c
Sensor
Gaveta
file
Contador
Cédulas
gaveta.c
Fazendo uso de uma
LP OO, cada classe no
projeto corresponde a
uma classe na implementação - C++ ou
Java, por exemplo.
Cada arquivo de
componente deve implementar várias
classes, dependendo
da LP.
D
Estabelecendo os
Engenharia de Software
S
caminhos para validar e
C
verificar o sistema:Processo
TesteUnificado de Desenvolvimento de Software
Nesta fase, devemos verificar se o sistema implementa
corretamente suas especificações - desenvolvendo um modelo
que consiste de casos de testes e procedimentos para
acompanhamento e controle de erros.
Um caso de teste consiste de um conjunto de entradas,
condições para execução e resultados esperados num dado
teste (ex. uma dada funcionalidade do sistema definida num
caso de uso).
Os procedimentos também podem ser obtidos a partir dos
casos de uso - porém, aqui os erros encontrados devem ser
analisados e solucionados numa dada ordem de importância.
D
Estabelecendo os
Engenharia de Software
S
caminhos para validar e
C
verificar o sistema:Processo
TesteUnificado de Desenvolvimento de Software
Teste: Pessoas Vs. Artefatos
Eng. Teste
Engenheiro
Componente
Testador
Integração
Plano
Teste
Modelo
Teste
X
Caso Teste
Avaliação
Teste
Procedimento
Teste
X
Teste
Componente
Erro
Testador
Sistema
D
Estabelecendo os
Engenharia de Software
S
caminhos para validar e
C
verificar o sistema:Processo
TesteUnificado de Desenvolvimento de Software
Teste: Atividades do Processo
Eng. Teste
Plano Teste
Proj. Teste
Executa
Teste Integr.
Testador
Integração
Testador
Sistema
Engenheiro
Componente
Avaliação
Teste
Executa
Teste Sist.
Implementa
Teste
Teste: Um Exemplo do
Caso de Uso Retirada
D
S Engenharia de Software
C
Processo Unificado de Desenvolvimento de Software
Entrada:
Saída:
• Uma dada conta apresenta um
saldo de $250
• O saldo da conta dreduz para
$50
• O cliente da conta se identifica
corretamente
• O cliente da conta recebe os
$200 da ATM
• O cliente solicita um saque de
$200
Condições:
• Existe caixa suficiente na ATM
Modelo Caso Uso
Modelo Teste
X
Retirada
Fluxo Básico - Retirada
• Nenhum outro caso de uso
(instâncias) pode acessar a conta
referida durante o caso de teste
Download

PU_LabSW