DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Lab. Engenharia de SoftwareLab. Engenharia de Software O Processo Unificado (PU) de O Processo Unificado (PU) de Desenvolvimento de SoftwareDesenvolvimento de Software
Francilene Procópio Garcia, D.Sc.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Unificado para Processo Unificado para Desenvolvimento de Desenvolvimento de
SoftwareSoftware
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...
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo de Processo de Desenvolvimento de Desenvolvimento de
SoftwareSoftwareUm 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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Unificado Vs. Processo Unificado Vs. UMLUML
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Unificado: Processo Unificado: Uma resposta à crise Uma resposta à crise
do software?do 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
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
O Processo UnificadoO Processo Unificado
É 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, iterativoiterativo e
incremental
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
O que são Casos de O que são Casos de Uso?Uso?
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?
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Por quê centrado na Por quê centrado na Arquitetura?Arquitetura?
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso 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 + ...
Arquitetura de S/WArquitetura de S/W
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Casos de Uso Vs. Casos de Uso Vs. ArquiteturaArquitetura
Casos de Uso(função)
Arquitetura(forma)
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.
Orientam/ GuiamMapeia
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Camadas Possíveis na Camadas Possíveis na Arquitetura: os seus Arquitetura: os seus
SubsistemasSubsistemasAplicações Específicas
(sempre no topo)
Aplicação Geral (subsistemas que podem ser reusados em diferentes
aplicações)
Middleware (frameworks, bibliotecas de classes, etc)
Sistemas de S/W
cada Caso de Uso especificado é detalhado e transformado em termos de subsistemas, classes e
componentes.
Dependem do negócio
Independem do negócio
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Iterativo e Processo Iterativo e Incremental? Para quê?Incremental? Para quê?
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...
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Iterativo e Processo Iterativo e IncrementalIncremental
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Como definir as Como definir as iterações?iterações?
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
As representações p/ As representações p/ um Produtoum Produto
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).
OK
OK
Modelo Caso de Uso
Modelo Análise
Modelo Projeto
Modelo Desdobramento
Modelo Implementação
Modelo Teste
Especificadopor Transformado
por Distribuídopor
Implementadopor
Verfiicadopor
Modelos no PU
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Os Quatro Ps no PU: Os Quatro Ps no PU: Pessoas, Projeto, Pessoas, Projeto,
Produto e ProcessoProduto e Processo
Processo
Pessoas Projeto
Produto
Tools
Template
Participantes
Resultado
Automação
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Quem participa? Quem participa? Como é o proc. de Como é o proc. de desenvolvimento?desenvolvimento?
Sistema
Usuários
Testadores
Projetistas
AnalistasGerenteProjeto
Arquiteto
AnalistaSistema
Arquiteto
ProjetistaCaso de Uso
ProjetistaInterface
Define Atorese Casos de Uso
Estrutura o Modelode Casos de Uso
Prioriza Casos de Uso
Detalha os Casos de Uso
Protótipo daInterface
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Capturando os Capturando os Requisitos Requisitos
Funcionais: aplicando Funcionais: aplicando Casos de UsoCasos de Uso
Requisitos: Pessoas Vs. Artefatos
AnalistaSistema
ModeloCaso Uso
Ator Glossário
ProjetistaCaso Uso
Caso Uso
ProjetistaInterface
Protótipo Interface
ProjetistaCaso Uso
DescriçãoArquitetura
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Requisitos: Atividades do Processo
AnalistaSistema
Arquiteto
ProjetistaCaso de Uso
ProjetistaInterface
Define Atorese Casos de Uso
Estrutura o Modelode Casos de Uso
Prioriza Casos de Uso
Detalha os Casos de Uso
Protótipo daInterface
Capturando os Capturando os Requisitos Requisitos
Funcionais: aplicando Funcionais: aplicando Casos de UsoCasos de Uso
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Um exemplo: Modelo Um exemplo: Modelo de Sistema de uma de Sistema de uma
ATMATM
ClienteBanco
RetiradaDinheiro
DepósitoDinheiro
Tranferênciaentre Contas
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 variantes, que o sistema pode executar resultando em valores para um dado ator.”
Diagrama de Caso de Uso
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
O Projeto de uma Idéia: O Projeto de uma Idéia: Modelo de AnáliseModelo de Análise
Análise: Pessoas Vs. Artefatos
DescriçãoArqitetura
Arquiteto
ModeloAnálise
ProjetistaCaso Uso
TransformaçãoCaso Uso -
Análise
EngenheiroComponente
AnáliseClasse
AnálisePacote
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Análise: Atividades do Processo
Arquiteto
ProjetistaCaso de Uso
EngenheiroComponente
Análise Arquitetural
Analisa Casos de Uso
AnáliseClasse
AnálisePacote
Estabelecendo o Estabelecendo o Projeto de uma Idéia: Projeto de uma Idéia:
Modelo de AnáliseModelo de Análise
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Modelo de Exemplo: Modelo de AnáliseAnálise
Modelo de Análise
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.
ClienteBanco
Gaveta daÀTM
Tela deInterface
ReceptorATM
Retirada
Transferência Conta
Depósito
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Modelo de Exemplo: Modelo de AnáliseAnálise
ClienteBanco
Gaveta daÀTM
Tela deInterface
Retirada Conta
1. Identifica 2. Solicita retirada
3. Valida a retirada
4. Autoriza a saída5. Libera o dinheiro
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.
Textos estruturados ou pseudo-código podem ajudar na
documentação da interação entre os objetos!
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Subsistemas Exemplo: Subsistemas propostospropostos
Aplicações Específicas
Aplicação Geral
Middleware
Sistemas de S/W
Interface ATM
Gestão Conta
Gestão Transação
Java. applet
TCP/IP
Java. miJavaVM
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Estabelecendo o Estabelecendo o Vocabulário do Vocabulário do
Problema e de sua Problema e de sua Solução: Modelo de Solução: Modelo de
ProjetoProjeto
Projeto: Pessoas Vs. Artefatos
ProjetistaCaso Uso
TransformaçãoCaso Uso -
Projeto
DescriçãoArqitetura
Arquiteto
ModeloProjeto
ModeloDesdobramento
EngenheiroComponente
ProjetoClasse
ProjetoSubsistema Interface
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Projeto: Atividades do Processo
Arquiteto
ProjetistaCaso de Uso
EngenheiroComponente
ProjetoArquitetural
Projeta um Casos de Uso
ProjetaClasse
ProjetaSubsistema
Estabelecendo o Estabelecendo o Vocabulário do Vocabulário do
Problema e de sua Problema e de sua Solução: Modelo de Solução: Modelo de
ProjetoProjeto
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Modelo de Exemplo: Modelo de ProjetoProjeto
Modelo de Análise
InterfaceATM
GavetaATM
Retirada Conta
Tela
Teclado
Leitor Cartão
SensorGaveta
EnchedorGaveta
ContadorCédulas
GerenteCliente
Saque
GerenteTransação
Conta
ClassePersistente
Gerente Conta
Modelo de Projeto Classes ativas
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Modelo de Exemplo: Modelo de ProjetoProjeto
Diagrama de Classe
Tela
Teclado
Leitor Cartão
SensorGaveta
EnchedorGaveta Contador
Cédulas
GerenteCliente
Saque
GerenteTransação
Conta
ClassePersistente
Gerente Conta
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Exemplo: Modelo de Exemplo: Modelo de ProjetoProjeto
Diagrama de SequênciaMostra 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)
:Tela :Teclado: Leitor Cartão
:ContadorCédulas
:GerenteCliente
:GerenteTransação:Cliente
BancoInserir cartão Cartão inserido (ID)
Solicita a senhaMostra a solicitação
Insere a senhaSenha
Solicita validação senhaPergunta pela soma saqueMostra a solicitação
Insere a quantia para saqueValor . . .
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Modelo de Projeto: Modelo de Projeto: Organizando as Classes Organizando as Classes -- Uma visão da estrutura Uma visão da estrutura
estáticaestática
Tela
Teclado
Leitor Cartão
SensorGaveta
EnchedorGaveta Contador
Cédulas
GerenteCliente
subsistemaInterface ATM
Saque
GerenteTransação
subsistemaGestão Transação
serviço subsistema
Gestão Saque
Conta
ClassePersistente
Gerente Conta
subsistemaGestão Conta
Saque
LiberaçãoTransf.
Interface
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Estabelecendo as partes Estabelecendo as partes necessárias para necessárias para montar e liberar o montar e liberar o
sistema: sistema: ImplementaçãoImplementação
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Implementação: Pessoas Vs. Artefatos
IntegradorSistema
TransformaçãoCasos Uso -
Plano Integração
ModeloDesdobramento
Arquiteto
ModeloImplementação
ModeloDesdobramento
Estabelecendo as partes Estabelecendo as partes necessárias para necessárias para montar e liberar o montar e liberar o
sistema: sistema: ImplementaçãoImplementação
EngenheiroComponente
ComponenteImplementação
Subsistema Interface
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Implementação: Atividades do Processo
Arquiteto
IntegradorSistema
EngenheiroComponente
ImplementaçãoArquitetural
IntegraçãoSistema
ImplementaSubsistema
ExecutaTeste Unidade
ImplementaClasse
Estabelecendo as partes Estabelecendo as partes necessárias para necessárias para montar e liberar o montar e liberar o
sistema: sistema: ImplementaçãoImplementação
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Modelo de Modelo de Desdobramento: Uma Desdobramento: Uma visão arquitetural dos visão arquitetural dos
nodos físicosnodos físicos
Client ATM
ServerApplication
ATM
Data Server
ATM
Internet
Intranet
Três Nós Vs. Três Subsistemas
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Modelo de Implementação
ContadorCédulas
GerenteCliente
SensorGaveta
EnchedorGaveta
Modelo de Projeto
executávelcliente.exe
filegaveta.c
filecliente.c
compilação
Fazendo uso de uma LP OO, cada classe no projeto corresponde a uma classe na imple-mentação - C++ ou Java, por exemplo.Cada arquivo de componente deve im-plementar várias classes, dependendo da LP.
Estabelecendo as partes Estabelecendo as partes necessárias para necessárias para montar e liberar o montar e liberar o
sistema: Implementaçãosistema: Implementação
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Estabelecendo os Estabelecendo os caminhos para validar e caminhos para validar e
verificar o sistema: verificar o sistema: TesteTeste
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.
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Teste: Pessoas Vs. Artefatos
TesteComponente
EngenheiroComponente
Estabelecendo os Estabelecendo os caminhos para validar e caminhos para validar e
verificar o sistema: verificar o sistema: TesteTeste
AvaliaçãoTeste
Eng. Teste
ModeloTeste
ProcedimentoTeste
XCaso Teste
PlanoTeste
TestadorIntegração
TestadorSistema
XErro
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Teste: Atividades do Processo
Estabelecendo os Estabelecendo os caminhos para validar e caminhos para validar e
verificar o sistema: verificar o sistema: TesteTeste
Eng. Teste
TestadorIntegração
Testador Sistema
Plano Teste
ImplementaTeste
ExecutaTeste Integr.
EngenheiroComponente
Proj. Teste
ExecutaTeste Sist.
AvaliaçãoTeste
DDSSCCEngenharia de SoftwareEngenharia de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Teste: Um Exemplo do Teste: Um Exemplo do Caso de Uso RetiradaCaso de Uso Retirada
Entrada:• Uma dada conta apresenta um saldo de $250• O cliente da conta se identifica corretamente• O cliente solicita um saque de $200• Existe caixa suficiente na ATM
Saída:• O saldo da conta dreduz para $50• O cliente da conta recebe os $200 da ATM
Condições:• Nenhum outro caso de uso (instâncias) pode acessar a conta referida durante o caso de teste
X
Modelo Caso Uso Modelo Teste
Retirada Fluxo Básico - Retirada
Top Related