jorge@dimap.ufrn - CIC/UnBjhcf/MyBooks/iess/RUP/IntroducaoaEngenhariade... · tarefa contínua e...

Post on 23-May-2020

5 views 0 download

Transcript of jorge@dimap.ufrn - CIC/UnBjhcf/MyBooks/iess/RUP/IntroducaoaEngenhariade... · tarefa contínua e...

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Introdução À Engenharia De Software Com Foco No RUP -

Rational Unified Process

Prof. Dr. Jorge Henrique C Fernandes (jorge@dimap.ufrn.br)

POTI – Pólo De Tecnologia Da InformaçãoDepartamento De Informática E Mat. AplicadaUniversidade Federal Do Rio Grande Do Norte

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Introdução à Engenharia de Software com Foco no RUP: Rational Unified Process• Copyright © 2003, por Jorge Henrique C

Fernandes• A estrutura deste curso é baseada, mas não

substitui, o uso nos seguintes materiais– Livro:

• [Kruchten, 2000] Introduction to the Rational Unified Process, de Philippe Kruchten, Addison-Wesley, 2000

– Software: • [Rational, 2000] Rational Unified Process – RUP. Rational

Software Corporation. 2000

• Rational e Rational Unified Process são marcas comerciais da Rational Software Corporation

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Outras Referências• [Kruchten, 2000] Introduction to the Rational Unified Process, de

Philippe Kruchten, Addison-Wesley, 2000.• [Clements et alli, 1998] Software Architecture in Practice. Len Bass,

Paul Clements and Rick Kazman. Addison-Wesley, 1998.• [J2EE, 2002] Designing Enterprise Applications with the J2EETM

Platform, Second Edition. Inderjeet Singh, Beth Stearns, MarkJohnson, and the Enterprise Team. Addison-Wesley. 2002.

• [Sun, 2002] Designing Wireless Enterprise Applications Using Java™Technology; A Java BluePrints for Wireless White Paper. Sun Microsystems, Inc. 2002.

• [SPEM, 2002] Software Process Engineering Metamodel Specification.November 2002. Version 1.0. formal/02-11-14

• [Kobryn, 2001] Introduction to UML: Structural and Use CaseModeling. Cris Kobryn. OMG UML Tutorial Series.2001

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Características do Treinamento• Introdutório• Carga de 30 (trinta) horas-aula• Pré-requisitos

– Conhecimentos básicos de desenvolvimento de software

• Conhecimentos desejáveis– Orientação a objetos– UML – Unified Modeling Language– Gerencia de projetos de software

• Audiência– Gerentes de projetos, desenvolvedores de software, engenheiros

de qualidade, de processos e sistemas, analistas de negócios e estudantes de cursos profissionalizantes de informática, computação, sistemas de informação e engenharia de software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Objetivos do treinamento

• Apresentar e discutir abordagens efetivas para desenvolvimento de software

• Entender o que é o RUP, seus vocabulário e conceitos

• Entender como as disciplinas do RUP colaboram para a estruturação efetiva e eficaz de tarefas e fluxos de trabalho de profissionais, atuando em equipes de desenvolvimento de software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Conteúdo: RUP – Módulo IntrodutórioParte I

A1. Abordagens Efetivas Para Desenvolvimento De Software

A2. O Que é o Rational Unified Process - RUP?

A3. Conceitos e OrganizaçãoA4. Estágios, Fases,

Iterações, Disciplinas e Ciclo de Vida

A5. Foco em ArquiteturaA6. Foco em Casos de Uso

Parte IIA7. Gestão de projetosA8. Modelagem de NegóciosA9. RequisitosA10. Análise e ProjetoA11. ImplementaçãoA12. TestesA13. Gestão de

Configuração e Mudanças

A14. Gestão de AmbienteA15. Instalação

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Introdução À Engenharia De Software Com Foco No RUP: Rational

Unified Process

Parte IConceitos para Entendimento do RUP

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 1Abordagens Efetivas Para

Desenvolvimento De Software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagens Efetivas Para Desenvolvimento De Software

• Objetivos desta aula– Compreender o valor do software na

sociedade em que vivemos– Compreender e discutir os sintomas e causas

de problemas no desenvolvimento de software– Compreender e discutir abordagens efetivas

para desenvolvimento de software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Valor Do Software Na Sociedade

• Atividades econômicas e o software• Expansão do software e sistemas

computacionais em complexidade e tamanho

• O Estado da prática em Desenvolvimento de Software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Atividades Econômicas E O Software

• Empresas e o software• Indivíduos e o software• Sociedade e o software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Expansão Do Software E Sistemas Computacionais Em Complexidade E Tamanho

• O custo do software para a sociedade– Governo

• Educação• Saúde• Infra-estrutura

– Indivíduos• Casa, trabalho

– Indústrias– Comércio– Serviços– Bancos– Telecom

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

O Estado Da Prática Em Desenvolvimento De Software

• Sem software é difícil aumentar a produtividade e qualidade da economia

• Software está se tornando cada vez mais complexo e difícil de produzir e manter

• Reproducibilidade de resultados e previsibilidade da qualidade• metas difíceis de implantar numa organização

produtora e mantenedora de software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Sintomas E Causas De Problemas No Desenvolvimento De Software [Booch, 1999]1.Sintomas

1.O que dá errado em projetos de software?2.Causas

1.Porque dão errado?

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Sintomas De Falhas Em Projetos De Software

• Compreensão inadequada das necessidades dos usuários

• Inabilidade para tratar mudanças de requisitos • Módulos incompatíveis entre si• Software difícil de manter (corrigir, adaptar e evoluir)• Descoberta de falhas em fases adiantadas do projeto• Baixa qualidade da solução entregue ao usuário• Desempenho inaceitável• Não dá para saber quem fez o quê, como e porque• Falhas no empacotamento e entrega do produto

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Causas Fundamentais De Falhas De Projetos De Software (1 De 2)

• Gestão de requisitos é feita ‘nas coxas’• Informações trocadas entre os envolvidos

(stakeholders) são ambíguas e imprecisas• Arquiteturas concebidas são frágeis• Complexidade do software é absurda e

desnecessária• Não se investigam as inconsistências

existentes entre requisitos, design e implementação

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Causas Fundamentais De Falhas De Projetos De Software (2 De 2)

• Teste insuficiente dos módulos, subsistemas e do sistema

• Avaliação de status do projeto feita de forma subjetiva

• Falha no ataque aos riscos• “Se você não atacar os riscos, eles atacarão

você!” (Tom Gilb)• Controle inadequado da propagação das

mudanças• Nível insuficiente de automação

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagens Efetivas Para Desenvolvimento De Software [Booch, 1999]

#1: desenvolver software iterativamente#2: gerenciar requisitos#3: usar arquiteturas baseadas em

componentes#4: modelar visualmente o software#5: verificação contínua da qualidade#6: controle de mudanças

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #1: Desenvolver Software Iterativamente

Modelo Cascata Versus

Modelo Espiral

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo Cascata (Waterfall)

• Intenção: Uma seqüência unidirecional de atividades transforma requisitos em um sistema

• Realidade– Reduz flexibilidade: é difícil saber onde se vai chegar

quando os caminhos são vários– Desestimula inovação: software em execução constrói

uma máquina (sistema), em muitos casos uma novidade

• Evita-se experimentar novos conceitos porque o sistema pode não se adequar às necessidades reais de seus usuários

requisitosdesign

implementaçãotestes

implantação

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo Espiral (Spiral)

• Modelo Espiral [Boehm, 2000]• “De modo cíclico e incremental, aprimorar

o grau de definição e implementação de um sistema, enquanto diminui o grau de risco do projeto”

• Milestones (marcos de ancoragem) asseguram compromisso de todos os envolvidos com a satisfação dos objetivos do projeto

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo Espiral Original [Boehm, 1989]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Um Ciclo na Espiral do RUP [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Espiral de Iterações

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Invariantes De Processos Baseados No Modelo Espiral (1 De 2)

• Produção dos artefatos é concorrente, e não seqüencial

• Elementos fundamentais considerados em um ciclo espiral– Objetivos e restrições dos envolvidos – Alternativas para produtos e processos– Identificação e resolução de riscos– Revisão por parte dos envolvidos (stakeholders)– Compromisso no prosseguimento para próxima etapa

• Riscos determinam:– Nível de esforço para próxima etapa– Nível de detalhe dos artefatos a produzir

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Invariantes De Processos Baseados No Modelo Espiral (2 De 2)

• Três grandes milestones– Objetivos (LCO), arquitetura (LCA) e capacidade

operacional inicial (IOC)

• Ênfase do sistema e no ciclo de vida, em vez de código

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Resultados De Uma Abordagem Iterativa Incremental

• Erros, riscos e inconsistências se tornam evidentes mais cedo

• Encoraja feedback do usuário • Mantém foco do time nas questões cruciais do

projeto• Avaliação periódica e precisa do status do projeto• Carga de trabalho entre equipes é distribuída ao

longo do tempo• Feedback e reflexão ocorrem mais cedo• Envolvidos obtém evidência concreta periódica

sobre status do projeto

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #2: Gerenciar Requisitos

• Requisitos – Capacidades, propriedades e restrições que devem

estar presentes em um sistema• O problema dos requisitos:

– Mudança constante:• Sistemas são máquinas, máquinas se comunicam através de

linguagens, e quanto mais complexas maior sua necessidade de evolução

• Determinar requisitos reais do sistema é uma tarefa contínua e constante– Elicitação, especificação, rastreamento, negociação e

evolução

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #3: Usar Arquiteturas Baseadas Em

Componentes

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

O Que É Arquitetura De Um Software Ou Sistema?

• Arquitetura é a estrutura, ou as estruturas, do software ou sistema, composta por:– Seus componentes– As propriedades externamente visíveis destes

componentes– Os relacionamentos entre estes

• Todo sistema de software possui uma arquitetura– Que pode não ser conhecida pelos usuários do

sistema, pelos responsáveis pela sua operação– O comportamento externo de cada componente é

parte integrante da arquitetura

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Componentes e Abstrações

• Componentes de software– São unidades de software fisicamente identificáveis– Possuem uma interface bem definida, – Encapsulam detalhes privados de implementação

• Quais abstrações são componentes?– Objetos? Processos? Processadores? Bibliotecas? Bases

de dados? Produtos comerciais?• São omitidas de uma descrição arquitetural as

informações sobre componentes que não são pertinentes às interações entre eles

• Detalhes privados dos componentes nãopertencem à arquitetura

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Propriedades Externamente Visíveis Dos Componentes

Dependem da abstração que se está observando, como:

• Métodos que provê (objetos, classes);• Características de desempenho

(processador, rede);• Tratamento de erros (módulos);• Uso de recursos compartilhados (funções);• Etc.

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Visão 4+1 [Kruchten, 1996]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #4: Modelar Visualmente O Software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelagem Visual De Software

• Modelos são abstrações da realidade– Estruturam solução de problemas– Permite experimentar com várias soluções– Reduzem complexidade e incrementam compreensão– Reduzem custo e tempo para desenvolvimento de

conceitos e produtos– Reduz riscos

• UML – Linguagem visual para• Visualizar, Especificar, Construir e documentar

estrutura e comportamento de um sistema de software• Modelos estruturais e comportamentais

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Alguns Modelos Estruturais [Kobryn, 2000]

Diagrama de Classes

Diagrama de Objetos

“Uma Moléculade Etano (C2H6)”

“Classes de átomos e Suas ligações”

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Diagrama De Componentes Ilustrando Evolução De UML [Kobryn, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo Estrutural De Um Site [Conallen, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Diagramas De Interação: Seqüência E Colaboração [Övergaard, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Diagrama De Seqüência(Elementos) [Övergaard, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Diagrama De Estados Ligando Uma Lâmpada [Övergaard, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Diagrama de Atividades (construindo uma casa) [Övergaard, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #5: Verificação Contínua Da Qualidade

• Evolução do custo de correção no software

• É importante avaliar continuamente, e de forma objetiva, a satisfação dos requisitos:– externos (funcionalidades) – Internos (qualidade interna)

Tempo

Custos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Verificação Da Qualidade

• Avaliação objetiva de status do projeto• Busca de inconsistências entre requisitos,

design e implementação• Testes unitários, de integração e de

sistema– Eliminação de defeitos, se possível ainda na

`bancada’

• Testes automatizados

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Abordagem Efetiva #6: Controle De Mudanças

• Realidade numa organização de engenharia de software– Vários times– Vários artefatos– Várias estações de trabalho (workspaces)– Vários produtos– Várias plataformas de execução– Várias iterações e ‘releases’– Vários meses e anos– Vários sistemas legados

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Controlar Mudanças: Fundamental Para Garantir reproducibilidade E Previsibilidade

• Atividades bem definidas• Controle na

– Solicitação, encaminhamento e rastreamento de mudanças

– Propagação de mudanças

• Isolamento de workspaces• Medidas e métricas de alteração

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 2O Que É O Rational Unified Process

- RUP?

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

O Que É O RUP?

• RUP: processo de engenharia de software• A Base de Conhecimento do RUP (site) É

um produto comercializado pela IBM/Rational

• A IBM/Rational comercializa ferramentas que podem ser empregadas para agilizar o uso produtivo do RUP

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

O Que É O RUP?

• RUP: processo de engenharia de software• RUP: produto comercializado pela IBM/Rational• RUP: integra-se com ferramentas da

IBM/Rational

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Um Processo De Engenharia De Software

• RUP: framework metodológico para organização do processo (de produção) de software

• Aplica princípios do processo unificado[Booch]– Baseado do modelo de processo espiral

• Processo adaptável, permitindo ajustes para domínios e aspectos específicos como:– Software de tempo real– Teste de software– Maturidade de processos– Manutenção de software legado

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Produto Comercializado Pela IBM/Rational

• Base de conhecimento do RUP: Site web, contendo:– Páginas HTML– Mapas– Applets

• Browser• Engenho de busca

– Figuras– Hiperlinks– Mentores sobre ferramentas– Templates e exemplos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Site Web [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Produto Comercializado Pela IBM/Rational

• Possibilita ajustes (customizações) em vários escopos– indivíduo– projeto– organização

• Como uma mídia digital, pode receber manutenção regular

• Como um produto de software, pode integrar workflow com outros produtos e ferramentas

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Para Que Serve O RUP?• RUP: captura e descreve abordagens reconhecidamente

efetivas pela comunidade de engenharia de software:– Meta Fundamental da Engenharia de Software:

• Desenvolver e adotar métodos, técnicas, ferramentas e processos para produzir software com prazo, custo e qualidade previsíveis

• RUP: estimula adoção de uma abordagem disciplinada (fluxos ou disciplinas) na atribuição e gerenciamento de papéis e tarefas em uma organização que desenvolve software– Existem outras, como a Praxis, de Wilson de Pádua Filho

• RUP: bastante reconhecido e utilizando por organizações que desenvolvem software no mundo inteiro– O vocabulário do RUP tornou-se vocabulário comum

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Para Que Serve O RUP?• RUP: captura e descreve abordagens reconhecidamente

efetivas pela comunidade de engenharia de software:– Meta Fundamental da Engenharia de Software:

• Desenvolver e adotar métodos, técnicas, ferramentas e processos para produzir software com prazo, custo e qualidade previsíveis

• RUP: estimula adoção de uma abordagem disciplinada (fluxos ou disciplinas) na atribuição e gerenciamento de papéis e tarefas em uma organização que desenvolve software– Existem outras, como a Praxis, de Wilson de Pádua Filho

• RUP: bastante reconhecido e utilizando por organizações que desenvolvem software no mundo inteiro– O vocabulário do RUP tornou-se vocabulário comum

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Princípios do RUP

• Além dos seis + importantes:– #1: desenvolver software iterativamente– #2: gerenciar requisitos– #3: usar arquiteturas baseadas em componentes– #4: modelar visualmente o software– #5: verificação contínua da qualidade– #6: controle de mudanças

• Pode-se ainda destacar– Desenvolvimento baseado em casos de uso– Processo configurável– Suporte a ferramentas (tool mentors)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 3RUP: Conceitos e Organização

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Conceitos [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Conceitos e Organização

• Role (Papel)• Artifact (Artefato) ou WorkProduct• Activity (Atividade)• WorkflowDetail (Detalhe de Fluxo)• Workflow (Fluxo)• Discipline (Disciplina)• Phases (Fases) e Iterations (Iterações)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: (Role) Papel, Artifact (Artefato) e Activity(Atividade) [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Papel ou Role ou ProcessRole

• Anteriormente chamado de “Worker”• No SPEM[OMG, 2002] chamado de ProcessRole• Conjunto de atividades coerentemente

desempenhadas por uma pessoa (recurso), atuando em um time de pessoas com múltiplas competências

• Um recurso (pessoa) pode desempenhar muitos papéis, conforme suas habilidades individuais

• Papéis são agregados em 5 conjuntos chamados de RoleSets: Analistas, Desenvolvedores, Testadores, Gerentes e Outros

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Alguns Exemplos de Papéis• Analistas

– System Analyst – Business Designer– Business-Model Reviewer – Business-Process Analyst

• Desenvolvedores– Capsule Designer– Code Reviewer – Database Designer– Implementer – Integrator – Software Architect– Architecture Reviewer – Design Reviewer

• Gerentes– Process Engineer – Project Manager – Change Control

Manager – Configuration Manager – Deployment Manager – Project Reviewer – Test Manager

• Outros

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Artefato ou Artifact ou WorkProduct

• Resulta de uma atividade executada por um recurso, desempenhando um papel

• É qualquer coisa produzida, consumida ou modificada por um processo

• Pode ser uma peça de informação, um documento, um modelo UML, um código fonte, etc.

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Principais Artefatos [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Atividade Ou Activity

• Unidade de trabalho a ser realizada por um recurso desempenhando um papel, produzindo resultados tangíveis para um projeto, normalmente representados por artefatos

AtividadePapel

Resultados

Resultados

Resultados

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Atividade Ou Activity

• Atividades utilizam um ou mais artefatospreviamente existentes

• Atividades em geral criam, atualizam ou refinam um ou mais artefatos

Artefato #O1

Artefato #O2

Artefato #On

Artefato #I1

Artefato #I2

Artefato #In

Atividade

Artefato #IO1

Artefato #IO2

Artefato #IOn

input output

Input/output

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Atividade Ou Activity

• Uma atividade é um elemento atômico de planejamento de projeto

Inicio -> Fim Inicio -> Fim Inicio -> Fim

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Atividade Ou Activity

• Uma atividade é realizada em poucos minutos, horas ou dias

• Atividades são compostas por uma seqüência de passos a executar

• Passos para realização de uma atividade são organizados em três categorias: planejamento, execução e revisão

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Exemplos de Atividades• Papel: Analista de

Sistemas– Elicitar necessidades de

stakeholders– Capturar vocabulário– Desenvolver Plano de

Gestão de Requisitos– Desenvolver guias de

construção de casos de uso– Encontrar atores e casos de

uso– Desenvolver Visão– Gerenciar (rastrear)

dependências– Estruturar modelo de casos

de uso

• Papel : Implementador– Implementar

componentes– Implementar teste de

componentes e subsistemas

– Executar testes unitários

– Corrigir defeitos– Desenvolver artefatos

de instalação

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Detalhe De Workflow (Workflow Detail)

• Conjunto de atividades, artefatos e papéis realizadas de forma interdependente por um indivíduo ou pequeno grupo

• Sem prescrição de controle interno do fluxo de atividades

• Cria um foco local (individual) de execução de atividades que produz resultados tangíveis e mensuráveis

• Orienta na gestão individual das atividades

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Workflow Detail: Analisar o Problema [Rational, 2002]

Atividades

Artefatos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Workflow (Fluxo ou Core Workflow)

• Fluxo macroscópico de controle de execução das atividades de uma disciplina

• Controle descrito na forma de diagrama de atividades, que agrega vários Detalhes de Workflow

• Orienta na gestão grupal das atividades

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Workflow (Fluxo) Típico daDisciplina de Requisitos [Rational, 2002]

Detalhes de

workflow

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Disciplina ou Domínio

• Particiona atividades, artefatos e papéis em um tema ou subárea comum

• Disciplinas de Engenharia– Business Modeling – Requirements – Analysis & Design– Implementation – Test – Deployment

• Disciplinas de Suporte– Environment – Project Management – Configuration & Change Management

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Outros Elementos do Processo

• Guia de Trabalho– Orienta sobre como desempenhar uma

atividade

• Guia de Artefato– Descreve como construir um artefato

• Guia de Ferramenta (Tool Mentor)– Descreve como usar uma ferramenta para

construir um artefato

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Outros Elementos do Processo

• Checkpoints– Auxiliar na verificação da qualidade de um

artefato

• Template– Protótipos ou modelos de artefatos

• Report– Informação extraída automaticamente de

alguns artefatos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Tool Mentors (Mentores) [Rational, 2000]

• Guias especializados em uso de ferramentas

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 4RUP: Estágios, Fases, Iterações,

Disciplinas e Ciclo de Vida

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Estágios, Fases E Iterações

• 2 Estágios: engenharia e produção• 4 Fases: Iniciação, elaboração, construção

e transição• Várias iterações em cada fase

– Viabilidade– Arquitetura– Uso– “Release”

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Estágios do Ciclo de Vida

• Engenharia– Demonstrar a viabilidade econômica-técnica do

produto (software)– Inovação e Propriedade intelectual– Criar uma arquitetura que facilite a produção

• Produção– Realizar o produto– Processo de manufatura, onde se busca a melhor

qualidade, no menor tempo e com o consumo de recursos

– Propriedade Industrial

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Metas de Cada Fase• Iniciação

– Obter uma visão do produto acabado, e concordância acerca dos objetivos e resultados finais do projeto

– Marco de conclusão: definição dos objetivos do ciclo de vida (lifecycle objective milestone)

• Elaboração– Obter uma arquitetura viável,

através da especificação de todas as características do produto, com Iniciação e validação de uma arquitetura que às atenda

– Marco de conclusão : arquitetura do ciclo de vida (lifecycle architecture milestone)

• Construção– Construir o produto, evoluindo

sua visão, arquitetura, até que esteja pronto para release

– Marco de conclusão: capacidade operacional inicial (initial operational capability)

• Transição– Concluir a entrega do produto

para clientes e usuários até plena satisfação dos objetivos e resultados estabelecidos, incluindo atividades de (entrega, treinamento, suporte e manutenção)

– Marco de conclusão: release do produto (product release milestone)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Iniciação [Kruchten, 2000] (1 de 5)

• Meta– Obter uma visão do produto acabado, e

concordância acerca dos objetivos e resultados finais do projeto

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Iniciação [Kruchten, 2000] (2 de 5)

• Objetivos– Estabelecer o escopo do projeto de software– Estabelecer condições de contorno, incluindo

documento de conceitos de operações, critérios de aceitação, descrição do escopo positivo e negativo

– Descrever casos de uso críticos, que irão direcionar as linhas mestras do sistema

– Exibir ou demonstrar uma arquitetura candidata, validada com alguns cenários confrontados

– Estimativa de custo global e cronograma do projeto– Prover estimativas detalhadas da fase de elaboração– Estimar riscos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Iniciação [Kruchten, 2000] (3 de 5)

• Atividades– Formular escopo do projeto, de modo a

permitir especificação de critérios objetivos de sucesso

– de projeto, riscos, recursos necessários e data de realização das principais etapas

– Delimitar o escopo do projeto– Identificar os atores que interagem com o

sistema– Identificar as interações dos atores com o

sistema (casos de uso)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Iniciação [Kruchten, 2000] (4 de 5)

• Artefatos produzidos– Documento de visão: visão geral dos requisitos,

características e restrições essenciais do projeto– Modelo inicial de casos de uso (10%-20%)– Glossário do projeto (opcionalmente um modelo de

domínio)– Definição de objetivos e viabilidade do projeto incluído

contexto, critérios de sucesso, projeção de ROI (retorno sobre investimentos) e prognóstico financeiro

– Avaliação inicial de riscos– Plano de projeto, com fases e interações– Modelo de negócios, se necessário– Um ou vários protótipos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Iniciação [Kruchten, 2000] (5 de 5)

• Marco de conclusão– definição dos objetivos do ciclo de vida

(lifecycle objective milestone)– Critérios de Satisfação

• Concordância quanto à definição de escopo e estimativas de custo e cronograma

• Compreensão dos requisitos funcionais• Credibilidade das estimativas de custo, cronograma,

prioridades, riscos, e processo de desenvolvimento• Profundidade e amplitude dos protótipos

desenvolvidos• Custos planejados versus realizados

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Elaboração [Kruchten, 2000] (1 de 5)

• Meta– Obter uma arquitetura viável, através da

especificação de todas as características do produto, com Iniciação e validação de uma arquitetura que às atenda

– Preparação para decisão (vai/não-vai), frente à escalada de custos nas fases posteriores

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Elaboração [Kruchten, 2000](2 de 5)

• Objetivos– Definir, validar e criar uma linha de base para

a arquitetura – Criar uma linha de base para o documento de

visão– Criar uma linha de base para o plano de

execução da fase de construção, com alto grau de fidelidade

– Demonstrar que a arquitetura da linha de base suportará a visão de linha de base, dentro de custo e prazo razoáveis

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Elaboração [Kruchten, 2000](3 de 5)

• Atividades– Refinar a visão, até que o entendimento pleno dos

casos de uso críticos– Montar a estrutura de suporte para o desenvolvimento– Construir protótipos executáveis, em uma ou mais

interações– Atacar os casos de uso críticos, que expõe os maiores

riscos técnicos– Construir protótipos evolucionários ou descartáveis,

com objetivo de analisar custos-benefícios, demonstrar para investidores, clientes e usuários

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Elaboração [Kruchten, 2000](4 de 5)

• Resultados (artefatos)– Modelo de casos de uso (80% ou mais)– Requisitos não funcionais– Descrição da arquitetura do software– Protótipos arquiteturais executáveis– Revisão da visão de negócios e lista de riscos– Plano detalhado de desenvolvimento do

projeto, com interações e critérios de avaliação– Plano de processo de desenvolvimento– Manual de usuário preliminar

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Detalhes da Fase de Elaboração [Kruchten, 2000](5 de 5)

• Marco de conclusão– arquitetura do ciclo de vida (lifecycle architecture

milestone)– Critérios de Satisfação (para suporte à decisão sobre

continuar ou não com o projeto)• A visão do produto é estável?• A arquitetura é estável frente os requisitos?• A demonstração executável mostrou que os elementos de

maior risco foram abordados satisfatoriamente?• O plano de desenvolvimento está suficientemente detalhado e

preciso? O plano é consistente e coerente?• Todos os interessados concordam quando à coerência entre

visão, plano e arquitetura?• Os custos planejados e executados estão aceitáveis?

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Construção [Kruchten, 2000](1 de 2)

• Meta– Construir o produto, evoluindo sua visão,

arquitetura, até que esteja pronto para release

• Objetivos– Minimizar custos e prazo, enquanto maximiza

qualidade– Concluir desenvolvimento e testes dos

componentes– Validar produto com relação aos requisitos

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Construção [Kruchten, 2000] (2 de 2)

• Resultados (artefatos)– A release do produto, descrito e integrado nas

plataformas adequadas– Manual do usuário

• Marco de conclusão: capacidade operacional inicial (initial operational capability)– Critérios de Satisfação

• A release do produto é suficientemente estável e amadurecida para ser entregue ao usuário?

• Todos os envolvidos estão preparados para a fase de transição?

• O consumo de recursos executado e planejado é ainda aceitável?

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Transição

• Meta– Concluir a entrega do produto para clientes e

usuários até plena satisfação dos objetivos e resultados estabelecidos, incluindo atividades de (entrega, treinamento, suporte e manutenção)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Transição

• Objetivos– Permitir que o usuário possa usar o produto

independentemente– Obter concordância de todos os envolvidos

acerca do alcance das metas do ciclo de vida– Obter um release final do produto da forma

mais custo-efetiva possível

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Transição

• Atividades– Correção de defeitos– “beta teste” – Operações paralelas com sistema legado– Conversão de bases de dados– Treinamento de usuários a mantenedores– Roll-out para setores de marketing,

distribuição e vendas

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Fase de Transição

• Resultados (artefatos)– Em conformidade com atividades

• Marco de conclusão– Release do produto (product release

milestone)– Critérios de Satisfação

• O usuário está satisfeito?• Os custos de manutenção ainda são aceitáveis?

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Fases e Iterações Usuais

• Fase de Iniciação– 1 iteração

• Fase de Elaboração– 1 a 2 iterações

• Fase de Construção– 2 a 3 iterações

• Fase de Transição– 1 a 2 iterações

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Disciplinas

• Disciplinas de Engenharia– Business Modeling – Requirements – Analysis & Design– Implementation – Test – Deployment

• Disciplinas de Suporte– Environment – Project Management – Configuration & Change Management

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Exercício de Disciplinas Numa Iteração [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Fases, Disciplinas e Iterações [Rational, 2000]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

RUP: Ciclos de Vida de um Produto

Software XGeração 2

Software XGeração 1

Software XGeração n

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Invariantes De Processos Baseados No Modelo Espiral (1 De 2)

• Produção dos artefatos é concorrente, e não seqüencial

• Elementos fundamentais considerados em um ciclo espiral– Objetivos e restrições dos envolvidos – Alternativas para produtos e processos– Identificação e resolução de riscos– Revisão por parte dos envolvidos (stakeholders)– Compromisso no prosseguimento para próxima etapa

• Riscos determinam:– Nível de esforço para próxima etapa– Nível de detalhe dos artefatos a produzir

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Invariantes De Processos Baseados No Modelo Espiral (2 De 2)

• Três grandes milestones– Objetivos (LCO), arquitetura (LCA) e capacidade

operacional inicial (IOC)

• Ênfase do sistema e no ciclo de vida, em vez de código

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Resultados De Uma Abordagem Iterativa Incremental

• Erros, riscos e inconsistências se tornam evidentes mais cedo

• Encoraja feedback do usuário • Mantém foco do time nas questões cruciais do

projeto• Avaliação periódica e precisa do status do projeto• Carga de trabalho entre equipes é distribuída ao

longo do tempo• Feedback e reflexão ocorrem mais cedo• Envolvidos obtém evidência concreta periódica

sobre status do projeto

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 5RUP:

Foco em Arquitetura

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquiteturas Baseadas Em Componentes• O Que É Arquitetura De Um Software Ou

Sistema?• Componentes São Abstrações• Propriedades Externamente Visíveis Dos

Componentes• Arquitetura De Software é uma das Primeiras

Decisões De Projeto• Arquitetura Versus Design• Sistemas possuem mais de uma Estrutura• Visões (Ou Estruturas) Arquiteturais Mais Comuns• Visão 4+1 [Kruchten, 1996]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

O Que É Arquitetura De Um Software Ou Sistema?

• Arquitetura é a estrutura, ou as estruturas, do software ou sistema, composta por:– Seus componentes– As propriedades externamente visíveis destes

componentes– Os relacionamentos entre estes

• Todo sistema de software possui uma arquitetura– Que pode não ser conhecida pelos usuários do

sistema, pelos responsáveis pela sua operação– O comportamento externo de cada componente é

parte integrante da arquitetura

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Visão 4+1 [Kruchten, 1996]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Componentes e Abstrações

• Componentes de software– São unidades de software fisicamente identificáveis– Possuem uma interface bem definida, – Encapsulam detalhes privados de implementação

• Quais abstrações são componentes?– Objetos? Processos? Processadores? Bibliotecas? Bases

de dados? Produtos comerciais?• São omitidas de uma descrição arquitetural as

informações sobre componentes que não são pertinentes às interações entre eles

• Detalhes privados dos componentes nãopertencem à arquitetura

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Propriedades Externamente Visíveis Dos Componentes

Dependem da abstração que se está observando, como:

• Métodos que provê (objetos, classes);• Características de desempenho

(processador, rede);• Tratamento de erros (módulos);• Uso de recursos compartilhados (funções);• Etc.

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquitetura Versus Design

• Design– Objetiva a realização do sistema como uma entidade

funcional– Faz parte do software life-cycle – Resulta dos requisitos técnicos que o sistema deve

satisfazer• Arquitetura

– Considera um maior escopo de requisitos • Confiabilidade, baixo custo, modificabilidade, segurança,

turnover de pessoal, time-to-market• Horizonte de tempo que extrapola a vida de um sistema em

particular– Representa a organização que a co-produz

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Iniciação Da Arquitetura De Software ÉUma Das Primeiras Decisões De Projeto• Restringe a implementação• Direciona estrutura organizacional• Inibe e estimula atributos de qualidade do

sistema• Permitem predições sobre qualidade dos

sistemas• Facilita análise e gerência de mudanças• Auxilia prototipagem evolucionária

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Sistemas Possuem Mais De Uma Arquitetura

• Diversos pontos de vista ou visões arquiteturais– Times e sub-times de programação– Processos e sincronizações– Módulos e processos– Subdivisão e sincronização– Desenvolvimento versus runtime

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Visões (Ou Estruturas) Arquiteturais Mais Comuns

• Estrutura de módulos• Estrutura lógica ou conceitual• Estrutura de processo ou de coordenação• Estrutura física• Estrutura de usos• Estrutura de chamadas• Fluxo de dados• Fluxo de controle• Estrutura de classes

Unidade

Unidade

Unidade

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Conceitos Usados Em Arquitetura E Design

• Estilos Arquiteturais• Modelos de Referência• Arquiteturas de Referência• Arquitetura de Software• Arquitetura de Sistema

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Relacionamentos Entre Conceitos

Modelo de Referência

EstiloArquitetural

Arquiteturade Referência

Arquiteturade Software

Arquiteturade Sistema

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Estilos Arquiteturais

• Descrição dos tipos de componentes• Padrões de

– Controle de execução– Transferência de dados

• Restrições sobre uma arquitetura– cliente-servidor, pipes-e-filtros, camadas, etc

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Estilos Arquiteturais Mais Comuns [Shaw, 96]

• Data flow– Batch– Pipes e filtros

• Chamada e retorno– Programa principal e

subrotinas– Remote Procedure Call– Orientado a objetos/TAD– Camadas

• Componentes Independentes– Processos comunicantes

• Cliente/Servidor

– Sistemas de eventos • Invocação Implícita

• Centrado em Dados– Repositório– Blackboard

• Máquina virtual– Interpretador

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo De Referência

• Divisão de funcionalidade em partes, juntamente com o fluxo de dados entre estas

• Características de domínios amadurecidos• Compiladores, DBMS, WWW, etc

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo de Referência J2EE [J2EE, 2002]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Modelo de Referência J2EE [J2EE, 2002]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquitetura de Referência

Modelo de referência mapeado em:– Componentes de software (os quais irão

cooperativamente implementar a funcionalidade definida no modelo de referência)

– Fluxos de dados entre os componentes

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquitetura de Referência da Aplicação Smart Ticket [Sun, 2002]

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquitetura De Sistema

É o que está sendo executado– Processos– Processadores

• CPU• Memória

– Configuração atual da rede (backbone, routers, bridges, etc)

– Mapeamento de processos para servidores

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Vantagens do Desenvolvimento Baseado em Arquiteturas

• Gerenciamento da Complexidade– Manutenção de integridade– Instrumento de comunicação

• Controle do Projeto– Arquitetura de um software tende a mimetizar

a arquitetura da organização que o desenvolve, e vice-versa

– Arquitetura do código deve espelhar arquitetura do software

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Arquiteturas e Componentes Reusáveis

• Componentes de Software– Runtime– Componentes genéricos, incorporados durante

o desenvolvimento– Componentes de domínios específicos

• Estilos, modelos, arquiteturas de referência• Padrões de projeto

Uma Linguagem de Padrões de Projeto para Programas OO[Gamma, Helm, Vlissides, Johnson 1994]

State

Memento Adapter Proxy

Bridge

Command

Chain of Responsibility

Singleton

Abstract Factory

Prototype

Template Method

Facade

Factory Method

Observer

MediatorStrategy

Decorator

Flyweight

Composite

Interpreter

Visitor

Iterator

Builder

AdicionandoOperações

AdicionandoOperações

EnumerandoFilhos

SalvandoEstado da Operação

CriandoComposições

AdicionandoResponsabilidades

a Objetos

Modificando Peleversus Entranhas

CompartilhandoComposições

DefinindoGramática

DefinindoTravessias

Definindoa Cadeia

CompostoUsando

EvitandoHisterese

CompartilhandoEstratégias

CompartilhandoEstados Compartilhando

Terminais

ConfigurarFábrica

Dinamicamente

ÚnicaInstância

ÚnicaInstância

ImplementadaUsando

GerenciamentoComplexo deDependências

Freqüentemente Usa

DefinindoPassos doAlgoritmo

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Parte I - Aula 6RUP

Foco em Casos de Uso

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Foco em Casos de Uso• Ator e sistema

• Caso de Uso– Seqüência de ações que um sistema executa sob

estímulo de um ator, produzindo um resultado útil e externamente observável pelo ator

• Sistema– Interage com o usuário – Executa ações (internas)– Produz resultados

Ator Sistema

Caso de Uso

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Outros Elementos de um Caso de Uso

• Sinal ou estímulo– Produzido pelo ator

• Ação– Procedimento computacional internamente realizado pelo sistema

• Fluxo de eventos – Seqüência de ações (internas) que ocorre em resposta à ativação

do caso de uso

• Resultado observável– Externamente visível (fora do sistema)

Ator

Sistema

Caso de Uso

Sinal

Resultado Ações

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Especificação de Casos de Uso s

• Modelo de Casos de Uso– Diagrama com o conjunto de casos de uso de um

sistema

• Diagrama de Caso de Uso– Facilita a visualização de um caso de uso específico

• Fluxo de eventos– Descrição textual das ações que ocorrem durante a

ativação de um caso de uso

• Cenários– Variações do fluxo de eventos básico de um caso de

uso

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Identificação, Evolução e Organização de Casos de Uso

• Identificação– Cada caso de uso tem que produzir um resultado

significativo para o usuário• Evolução

– Identificar primeiro os casos de uso de alto nível. Refinar posteriormente.

• Organização– Inclusão (similar à noção de subrotina)– Extensão (refinamento de uma ação do fluxo original

de eventos)– Especialização (refinamento de várias ações do fluxo

original de eventos)

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Exemplo de Modelo de Casos de Uso: Sistema de Recursos Humanos [

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Exemplo de Diagrama de Caso de Uso: Detalhe de Atualização de Benefícios

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Exemplo de Descrição de um Caso de Uso

• Actors: employee, employee account db, healthcare plan system, insurance plan system

• Preconditions– Employee has logged on to the system and selected ‘update

benefits’ option• Basic course

– System retrieves employee account from employee account db– System asks employee to select medical plan type; include

Update Medical Plan– System asks employee to select dental plan type; include Update

Dental Plan ...

• Alternative courses– If health plan is not available in the employee’s area the employee

is informed and asked to select another plan

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Casos de Uso no RUP• Modelo de casos de uso de negócios

– Descrever casos de uso da organização que usa o sistema

• Modelo de objetos de negócios– Realiza modelo de casos de uso de negócios

• Modelo de casos de uso– Descreve casos de uso do sistema a desenvolver

• Modelo de design– Realiza modelo de casos de uso

• Modelo de implementação– Implementa modelo de casos de uso

• Modelo de testes– Testa modelo de casos de uso

Introdução à Engenharia de Software com foco no RUP – Rational Unified Process © 2004 por Jorge H C Fernandes

Introdução À Engenharia De Software Com Foco No RUP: Rational

Unified Process

Parte IConceitos para Entendimento do RUP