U P (R U P)
Rational Unified Process
Processo Unificado de Desenvolvimento de Software
Márcia Moita Machado
Processo
• Conjunto de passos, parcialmente ordenados,
com a intenção de atingir uma meta.
• A meta da Engenharia de Software é
entregar, de modo eficiente e previsível, um
produto de software que atenda às
necessidades de seu negócio.
UML e Processo
• A UML é independente de processo.
• É possível utilizá-la, com vários processos de
Engenharia de Software.
• O RUP consiste em uma maneira de
desenvolvimento de software iterativa, centrada à
arquitetura e guiada por casos de uso, sendo
uma abordagem de ciclo de vida, especialmente
adequada à UML.
Contexto
• Necessidade de software cada vez mais
complexo:
Cliente sempre quer mais, melhor e mais rápido.
• Não era suficiente apenas a presença de
desenvolvedores altamente treinados:
Precisava-se de um guia organizacional: um processo.
Contexto
• Os métodos não evoluíam a contento:
Havia necessidade de um processo que integrasse as muitas
facetas do desenvolvimento.
• Solução apresentada:
Um processo unificado de desenvolvimento de software: UP
(Unified Process).
Histórico UP
Rational Unified Process 5.0
1998
Rational
Objectory Process 4.1
1996-1997
UML
Abordagem Rational
Objectory Process 1.0-3.8
1987-1995
Abordagem Ericsson
Teste Funcional
Teste de Desempenho
Gerência de Requisitos
Gerência de Configuração
Engenharia de Negócios
Engenharia de Dados
Processo Unificado
• UP é um framework* genérico de um processo
de desenvolvimento.
• UP é baseado em componentes.
• UP utiliza toda da definição da UML.
• UP é dirigido pelos casos de uso, centrado na
arquitetura, iterativo e incremental (conceitoschave).
* Framework: padrão de arquitetura que fornece um template extensível
para aplicações em um domínio.
Processo Unificado
O RUP é um processo de engenharia de
software bem definido e bem estruturado que
define claramente quem é responsável pelo que,
como as coisas devem ser feitas e quando fazêlas.
O RUP também provê uma estrutura bem
definida para o ciclo de vida de um projeto RUP,
articulando claramente os marcos essenciais e
pontos de decisão.
Processo Unificado
O RUP é um produto de processo que oferece uma
estrutura de processo customizável para a
Engenharia de Software.
O produto IBM RUP suporta a customização e
autoria de processos, e uma vasta variedade de
processos, ou configuração de processos, podem
ser montadas nele.
Essas configurações do RUP podem ser criadas
para suportar equipes grandes e pequenas, e
técnicas de desenvolvimento disciplinadas ou
menos formais.
Processo Unificado
O produto IBM RUP contém várias configurações e
visões de processos prontas que guiam analistas,
desenvolvedores, testadores, gerentes de projeto,
gerentes de configuração, analistas de dados, e
outros membros da equipe de desenvolvimento em
como desenvolver o software.
Processo Unificado
O RUP utiliza a Linguagem Unificada de
Modelagem (UML 2) para especificar, modelar e
documentar artefatos.
A UML é um padrão definido pelo OMG (Object
Management Group - organização internacional
que aprova padrões abertos para aplicações
orientadas a objetos). Por isso se tornou o padrão
empresarial para a
modelagem orientada a objetos.
Processo Unificado
Não existe uma maneira exata de aplicar o RUP,
pois ele pode ser aplicado de várias formas e será
diferente em cada projeto e organização.
Porém, existem alguns princípios que podem
caracterizar e diferenciar o RUP de outros
métodos iterativos:
Processo Unificado
•
•
•
•
•
•
•
•
Atacar os riscos cedo e continuamente;
Certificar-se de entregar algo de valor ao cliente;
Focar no software executável;
Acomodar mudanças cedo;
Liberar um executável da arquitetura cedo;
Construir o sistema com componentes;
Trabalhar junto como um time;
Fazer da qualidade um estilo de vida, não algo
para depois.
Processo Unificado
• Ciclo de Desenvolvimento - 4 fases:
- Concepção (define o escopo do projeto)
- Elaboração (define os requisitos e a arquitetura)
- Construção (desenvolve o sistema)
- Transição (implanta o sistema)
• UP repete vários ciclos até a aposentadoria do sistema.
Cada ciclo gera um produto liberado para uso.
• Cada ciclo possui 4 fases:
Concepção
tempo
Elaboração
Construção
Transição
Processo Unificado
• Cada fase é subdividida em iterações.
Concepção
Iteração
Preliminar
...
Elaboração
Iteração
Arquitetura
Release
...
Construção
Iteração
Desenv
Iteração
Desenv
Release Release Release Release
Transição
...
Iteração
Transição
Release
Release
- Um conjunto de artefatos (release) é gerado a cada iteração.
- Um milestone (marco) é gerado a cada fase.
...
Produto
Processo Unificado
Ciclo de Vida
Workflows: passos dentro de uma iteração
Requisitos
Análise
Projeto
Implementação
Testes
Modelo
Use Case
Modelo
Análise
Modelo
Projeto
Modelo
Implantação
Modelo
Implementação
Modelo
Teste
Conceitos Relacionados
• Pessoas:
Worker: papel representado por uma pessoa ou
grupo no processo de software.
Cada worker é responsável por um conjunto de
atividades.
• Projeto:
Possui uma seqüência de mudanças / várias
iterações / um padrão organizacional.
Conceitos Relacionados
• Produto:
Não é apenas código.
Artefato: qualquer tipo de informação criada.
Artefatos são criados pelos workers em cada uma
de suas atividades.
• Processo:
Direciona o projeto.
Template para criação de instâncias (projetos).
Conceitos-Chave
Processo Dirigido pelos Use Cases
• Benefícios: use cases associam todos os workflows
de forma conjunta.
• Dirigem várias atividades de desenvolvimento:
–
–
–
–
–
Criação e validação da arquitetura do sistema
Criação de casos de teste
Planejamento das iterações
Criação de documentação do usuário
Implantação do sistema
• Sincronizam conteúdo dos modelos criados em cada
workflow.
Conceitos-Chave
Processo Centrado na Arquitetura
• Benefícios:
– Fornecer uma base sólida para a construção do software.
– Melhor compreensão do sistema e organização do desenvolvimento.
• Descrição: arquitetura envolve elementos de modelo mais
importantes - coleção de visões dos modelos do sistema.
• UP prescreve um refinamento sucessivo à arquitetura. A
arquitetura representa a forma, enquanto que os use cases
representam funcionalidades.
• Arquitetura e use cases devem ser balanceados.
Conceitos-Chave
Processo Iterativo e Incremental
• Benefícios:
– Identificação de riscos é adiantada.
– Preparação do Sistema para requisitos que mudam.
– Integração contínua (facilita testes e aprendizado).
• Iteração: mini-projeto - transversal pelos workflows
• Modelos evoluem nas iterações.
• Resultado de uma iteração: incremento.
Precisa-se de um processo que
• Defina um guia que controle as atividades do time
de desenvolvimento.
• Direcione as tarefas para desenvolvedores
específicos.
• Especifique que artefatos precisam ser
desenvolvidos nas etapas do desenvolvimento.
• Ofereça critérios para monitorar as atividades e os
produtos de um projeto.
RUP
• Processo de Software Unificado
(Rational Unified Process)
– Processo + Métodos + Linguagem (UML)
– Framework para gerar processos
• especializar o processo para vários tipos diferentes de
sistema
• processo configurável
RUP
• Define um conjunto de atividades
– bem definidas
– com responsáveis
– com artefatos de entrada e saída
– com dependências e ordem de execução
– com modelo de ciclo de vida
– com uma descrição sistemática de como executá-las
– UML
Características Principais
O desenvolvimento de sistemas seguindo o RUP é
guiado por casos de uso (use cases)
centrado na arquitetura
iterativo e incremental
Processo Iterativo e Incremental
• O custo associado ao mini-projeto é menor, logo,
se houver erros, o custo de correção também é
menor, em relação ao custo do projeto como um
todo.
• Deadlines mais curtos e tarefas mais objetivas
tiram mais proveito do esforço de programadores
• Os requisitos são capturados e refinados durante o
desenvolvimento
– condizente com a realidade: o cliente pode não ter
condição de definir os mesmos por completo no início.
Ciclo de Desenvolvimento
• Elementos genéricos de uma iteração (workflows)
Análise de
Requisitos
Análise
Projeto
SW
Implement
Teste
Ciclo de vida de desenvolvimento de um SW
FASES / DISCIPLINAS
Fluxos de Trabalho do Processo
Modelagem de Negócio
Requisitos
Análise e Projeto
Implementação
Teste
Entrega
Fluxos de Trabalho de Suporte
Gerência de Alterações e Config
Gerenciamento de Projeto
Ambiente
Concepção
Elaboração
Construção
Transição
Concepção
• Definir
– as funções principais do sofware
• modelo de caso de uso, simplificado
– como poderia ser a arquitetura de
desenvolvimento para este software
• tentativa de propor uma arquitetura de desenvolvimento
– planejamento e estimativas de custo
• identificação de riscos
• planejamento da fase seguinte
Concepção lança o projeto
• Realizar o business case inicial
– Delimitar claramente o escopo do projeto
– Estimar custo, tempo e retorno do
investimento
• Formular a arquitetura candidata
• Identificar e eliminar riscos
• Efetuar o planejamento (cronograma, custos,
retorno)
Inicialmente
• Obter uma visão geral do projeto
– Capturar o máximo de informação
– Organiza-lá
– Verificar se algum ponto não foi contemplado
– Custo é inversamente proporcional à
originalidade do projeto
• O planejamento inicial é uma “tentativa”
– o melhor entendimento do problema pode
muda o planejamento
O Time inicial
•
•
•
•
1 gerente
1 arquiteto
1 ou 2 desenvolvedores
1 engenheiro de teste
Definindo o escopo do sistema
• O que deve ser feito está claro?
– não uma idéia, mas uma definição precisa
• Todos os atores estão definidos?
• A natureza geral das interfaces com os
atores é determinada?
• Existe uma parte do sistema que pode se
comportar como um sistema funcional
(subsistema)
Resolvendo ambigüidades
nos requisitos desta fase
• Um número limitado de use-cases de
requisitos necessários para atingir os
objetivos desta fase foram identificados
e detalhados?
• Requisitos suplementares tem sido
identificados e detalhados?
Estabelecendo uma arquitetura candidata
• A arquitetura vai ao encontro das
necessidades do usuário ou vai de
encontro às necessidades?
• A arquitetura parece funcionar
(promissora)?
– Não há um protótipo
Identificar e eliminar os riscos críticos
• Todos os riscos foram identificados?
• Todos os riscos identificados foram
eliminados, ou existe um plano para
eliminá-los?
– modificar os requisitos
– plano de cotingência
– reduzir risco, minimizar efeito caso ocorra
Julgando o business case inicial
• O business case inicial é bom o
suficiente para justificar ir adiante com o
projeto?
Papel dos workers
• Analista
– identifica os use-cases e atores
• Arquiteto
– prioriza use-cases e seleciona os relevantes
para propor a arquitetura candidata
• Desenvolvedor
– implementa o protótipo
• Engenheiro de testes
– planeja testes
Capturando os requisitos
• Listar requisitos candidatos
– requisitos de sistemas similares
– requisitos obtidos com pesquisas de
mercado (sistemas de prateleira)
• Entender o contexto do sistema
– modelo de negócio
– identificar use-cases de negócio e técnicos
que relatam que processos suportar
Capturando os requisitos
• Capturar requisitos funcionais
• Capturar requisitos não-funcionais
Capturando os requisitos como use-cases
• Encontrar atores e use-cases
– priorizar use-cases que definem o escopo
do projeto e ajudam a planejar a
arquitetura
– detalhar os use-cases e cenários
necessários para que os riscos possam
ser identificados e eliminados, e para que
uma arquitetura seja proposta
• Cerca de 10% dos use-cases é
detalhada na fase de concepção
Análise
• Analisar os requisitos para refiná-los e
estruturá-los num modelo que funciona
como um modelo de projeto inicial
• Resulta num modelo de análise inicial
– definir precisamente os use-cases
– guia a definição da arquitetura candidata
• aproximadamente 5% da análise é
executada na fase de concepção
Análise
• Priorizar os use-cases e/ou cenários
– refinar (detalhar) e entendê-los
• Refina-se aproximadamente a metade
dos use-cases detalhados na fase
anterior, ou seja 5% dos use-cases do
sistema
• Se for feita análise de classe e pacote é
feita minimamente
Projeto
• Projetar a arquitetura candidata
– se preciso desenvolver um protótipo do projeto
(utilizando alguma técnica de desenvolvimento
rápido)
• validar a os requisitos dos clientes/usuários
• Iniciar a definição do modelo de projeto
– contemplar requisitos funcionas e não-funcionais
• Projeto de use-cases, classes e pacotes é
mínimo (se existir)
Implementação e teste
• Protótipo para validar a arquitetura
– se for necessário
• novas tecnologias
• projeto sem similares
• Planejamento de testes
– que tipos de testes serão necessários para
um sistema dessa natureza
Produzindo o Business case inicial
• Transformar a visão (arquitetura
candidata, riscos) em termos
econômicos, considerando:
– recursos
– custos
– aceitação do mercado (interna)
O valor investido (custo)
• Usar fórmulas
– O tamanho do produto na fase de
concepção pode diferir em 50% do
tamanho do produto final
– estimativa de custo inicial pode diferir em
50% do custo final
Retorno de investimento
• Difícil de ser estimado
– geralmente a margem de erro é bem
grande
– sistemas de prateleira
• estimativa de cópias a serem vendidas
• valor de cada cópia
– no caso de sistemas internos
• qual a economia que o sistema trará para a
empresa?
O que fazer ao final da fase de concepção
• Baseado no entendimento do projeto,
análise de riscos, arquitetura candidata,
decidir se o projeto deve ou não
continuar
• Planejar a fase de Elaboração
– descrever de 80% dos use-cases
– analisar metade destes
– implementar 10%
Resultado da fase de concepção
• primeira versão do modelo de negócio
(descreve o contexto do sistema)
• primeira versão dos modelos de use-case
• primeira versão da arquitetura candidata
• protótipo demostrando o uso do sistema
• lista de riscos e suas prioridade
• planejamento geral das demais fases
• primeira versão do business case (estimativas e
retorno)
Elaboração
• Identificar a maioria dos casos de uso
– realizar os casos de uso mais críticos
• modelo de análise
• Projetar e validar a arquitetura do sistema
– o esqueleto do sistema com alguns
músculos
• Planejar atividades e estimar recursos
necessários para completar o projeto
Introdução
• Capturar quase todos use cases;
• Estabelecer uma arquitetura sólida para guiar as
fases de construção e transição;
• Monitorar riscos e seu impacto no caso de negócio;
• Refinar plano de projeto.
No início da elaboração
•
•
•
•
Planejando a fase de elaboração;
montando a equipe;
modificando o ambiente de implementação;
estabelecer critério de avaliação;
–
–
–
–
Estender os requisitos;
Estabelecer a linha base da arquitetura;
Atenuar riscos significativos;
Julgar o valor do Caso de Negócio
Típico workflow de iteração da Elaboração
– Atividades em paralelo: core workflows ||
planejamento das iterações || avaliação || ajuste
do ambiente de desenvolvimento;
– Capturar e refinar maior parte dos requisitos;
– Desenvolver linha base da arquitetura;
– Iterar enquanto a equipe é pequena
Executar core workflows - requisitos a teste
– Use cases representando riscos críticos e
importantes do ponto de vista da arquitetura
(80%);
– Cobertura maior dos use cases para permitir
oferta mais realista;
– Achar linha base da arquitetura, considerando
qualidade e extensibilidade de 10 % dos use
cases.
Capturar Requisitos
• Achar use cases e atores
– 80% dos use cases
• prototipar interfaces gráficas
– geralmente não necessário
• priorizar use cases
– Considerar riscos e importância a nível de arquitetura;
Capturar Requisitos
• detalhar use cases
– cenários mais relevantes
• estruturar modelo de use cases
– mais extensível e fácil de manter
• Renegociar requisitos com cliente
– pouca diferença semântica
– mais tratável pela arquitetura
– Menor custo e maior qualidade
Análise
• Análise arquitetural
– particionamento do sistema em pacotes de análise
– pode usar arquitetura em camadas
– usa use cases, glossário e conhecimento do domínio
• análise de use case
– mais relevantes para arquitetura ( 20% - 40% do total)
– descrição usando classes e responsabilidades
• análise de classe
– refinar classes identificadas
• análise de pacote
– refinar pacotes identificados na análise arquitetural
Projeto
• Projeto da arquitetura
–
–
–
–
arquitetura em camadas;
subsistemas e suas interfaces;
classes de projeto mais importantes para arquitetura;
nós e configuração de rede (se o sistema for distribuído).
• projeto de use cases mais importantes para arquitetura
• projetar classe
• projetar subsistema
Implementação
• Implementação arquitetural
– identificação dos componentes para implementar
subsistema de serviço;
– mapeamento de componentes a nós na rede de
computadores.
• implementação de classe e subsistema
• integrar sistema
– incrementalmente numa seqüência
• ferramenta controlando linha base da arquitetura
Teste
• Planejar teste
– definir objetivos
• projetar teste
– caso de teste e procedimentos
• executar teste de integração
– nível de builds (construções)
• executar teste de sistema
– linha base da arquitetura
Caso de Negócio
– Preparar a oferta
• linha base da arquitetura: estimativa mais precisa
– Atualizar o retorno sobre Investimento
• sabe-se o custo da construção e da transição
• cálculo do retorno é mais difícil
Avaliar iterações na Elaboração
– Critérios definidos no plano de iteração foram
alcançados?
– Atividades não terminadas seguem nas próximas
iterações.
Planejando a construção
• Quantidade de iterações
• planejar investigação dos riscos
• rever ordem de realização dos use cases e cenários
• identificar oportunidades de paralelismo (interfaces)
Construção
• Construir o software
– preencher o esqueleto com todos os
músculos
– implementar o sistema por completo
• Testar o sistema
• Gerar uma versão beta
• Planejar a transição
Fase de Construção em Resumo
• Início a partir do executável da base
arquitetural
• Desenvolvimento de um produto pronto
para operação inicial (beta)
• Ênfase no desenvolvimento
Logo cedo na fase de Construção...
• Gerente planejou construção ainda na fase
anterior e recebe autorização para continuar
• O plano pode ser modificado por dois fatores:
– Gap possível entre elaboração e construção
– Finanças e cronograma podem ser alterados
• Alocação de recursos
– Aumento significativo de pessoas
• Definição do critério de avaliação
Iteration Workflow - Construção
• 4 atividades principais em paralelo
–
–
–
–
5 workflows principais
Planejar iterações
Business case (acompanhamento)
Avaliação
• Agora a ênfase é em completar as realizações
dos use cases, projetar as classes e
subsistemas, implementá-los como
componentes, fazendo testes individuais ou em
builds.
Requisitos
• Achar atores e use cases
– Apenas uma pequena fração restante
• Prototipar interface com o usuário
– Agora, grande ênfase
• Priorizar use cases
– Apenas os encontrados aqui
• Detalhar use cases
– Completo (todos os use cases)
• Estruturar modelo
– Poucas mudanças
Análise (Opcional)
• Análise arquitetural
– Apenas eventuais atualizações
• Análise de use cases
– Completa com todos os use cases
• Análise de classes
– Refina todas as classes
• Análise de pacotes
– Refina todos os pacotes de análise
Projeto
• Projeto arquitetural
– Adição de poucos elementos
• Projeto use cases
– Completa com todos os use cases
• Projeto classes
– Refina todas as classes de projeto
• Projeto subsistemas
– Refina todos os subsistemas
Implementação
• Implementação Arquitetural
– Apenas atualização
• Implementar classe/subsistema
– Completo, todos os componentes
• Realizar testes de unidade
– Teste dos componentes implementados
• Integrar sistema
– Criar plano de integração em cada iteração
– Juntar componentes de acordo com o plano
Testes
• Planejar testes
– Objetivos estabelecidos para os testes de builds e do
sistema
• Projetar testes
– Criar casos e procedimentos de teste para um
conjunto de builds em cada iteração
• Executar testes de integração/sistema
– Builds/sistema a cada iteração
• Avaliar testes
– Atingiram-se os objetivos?
Controlando o business case
• Comparar progresso real com o planejado,
acompanhando cronograma, orçamento e
esforço (baseado em métricas)
• Atualizar o documento, se necessário
Avaliar as iterações
• Revisar o que foi executado, com o critério de
avaliação
• Determinar se o build está pronto para a
próxima iteração
Planejando a fase de transição
• Planejamento com menos detalhes que nas
outras fases
• Não se sabe como vai ser feedback dos
usuários
Deliverables - construção
• Plano de projeto para a transição
• Software executável - build final da construção
• Todos os artefatos (modelos)
• Descrição da arquitetura mantida e atualizada
• Business case, com mudanças refletidas
• Manual de usuário preliminar
Transição
• Evolução do produto da versão beta para a
versão final
– alguns usuários utilizam o sistema e
reportam defeitos e sugestões de
melhorias
– correção dos erros
– prover treinamento e assistência ao
usuário (help)
• Classificar os problemas que
– justificam uma versão delta imediata
– serão corrigidos na próxima versão
Fluxos de Trabalho de Processo do RUP
Modelos – tipo mais importante de artefato do
RUP
Download

Use Cases