Você está na página 1de 45

Viso Geral sobre Ciclo de Vida de Software, Processos e RUP

Alexandre Vasconcelos (amlv@cin.ufpe.br)

1/45

Ciclo de Vida e Processo de Desenvolvimento de Software


2/45

O que um modelo de ciclo de vida de processo de software?

Uma representao abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produo e manuteno de software

3/45

Principais Modelos do Ciclo de Vida de Software


Cascata Modelo de Desenvolvimento Evolucionrio


Programao Exploratria Prototipagem descartvel

Modelo de Transformao Formal Modelos Iterativos


Espiral Incremental
4/45

Modelo Cascata (ou clssico)

Derivado de modelos existentes em outras engenharias Sua estrutura composta por vrias etapas que so executadas de forma sistemtica e seqencial Na prtica, existe uma interao entre as etapas e cada etapa pode levar a modificaes nas etapas anteriores
5/45

Modelo Cascata
Definio de Requisitos Projeto do Sistema e do Software Implementao e Testes Unitrios

Integrao e Teste do Sistema Operao e Manuteno 6/45

Modelo Cascata na Prtica


Definio de Requisitos Projeto do Sistema e do Software Implementao e Testes Unitrios

Integrao e Teste do Sistema

Operao e Manuteno 7/45

Modelo de Desenvolvimento Evolucionrio


Programao Exploratria Prototipagem Descartvel


Atividades Concorrentes

Especificao

Verso Inicial

Esboo de Descrio

Desenvolvimento

Verses Intermedirias

Validao Verso Final


8/45

Programao Exploratria

Idia geral:

Adequado para o desenvolvimento de sistemas onde difcil ou impossvel se fazer uma especificao detalhada do sistema Principal diferena para os outros modelos a ausncia da noo de programa correto 9/45

Desenvolvimento da primeira verso do sistema o mais rpido possvel Modificaes sucessivas at que o sistema seja considerado adequado Aps o desenvolvimento de cada uma das verses do sistema ele mostrado aos usurios para comentrios

Programao Exploratria

Tem sido mais usada no desenvolvimento de sistemas especialistas - geralmente sistemas que tentam emular capacidades humanas A maioria dos sistemas desenvolvidos com sucesso usando a programao exploratria foi implementada usando pequenos grupos de profissionais altamente qualificados e motivados
10/45

Prototipagem Descartvel

Como na programao exploratria, a primeira fase prev o desenvolvimento de um programa para o usurio experimentar

A construo de prottipos com os quais os usurios possam brincar uma idia bastante atrativa:

No entanto, o objetivo aqui estabelecer os requisitos do sistema O software deve ser reimplementado na fase seguinte

Para sistemas grandes e complicados Quando no existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos
11/45

Prototipagem Descartvel

Os objetivos do prottipo devem estar bem claros antes do incio da codificao. Possveis objetivos: Entender os requisitos dos usurios Definir a interface com os usurios Demonstrar a viabilidade do sistemas para os gerentes. Uma deciso importante a ser tomada escolher o que ser e o que no ser parte do prottipo No economicamente vivel implementar todo o sistema! Os objetivos do prottipo so o ponto de partida
12/45

Transformao Formal

Idia geral:

Uma especificao formal (definio matemtica, no ambgua) do software desenvolvida e posteriormente transformada em um programa atravs de regras que preservam a corretude da especificao
esp. 2 implement.
13/45

esp. 1

Transformao Formal

A grande motivao por trs da idia de refinamento formal a possibilidade de gerar automaticamente programas que so corretos por construo

Este modelo tem sido aplicado ao desenvolvimento de sistemas crticos, especialmente naqueles onde a segurana um fator crtico (ex: sistema de controle de trfego areo) 14/45

O prprio processo de desenvolvimento deve grantir que o programa faz exatamente o que foi especificado

Modelo de Desenvolvimento Baseado em Reuso

Baseado no reuso sistemtico de componentes existentes ou sistemas COTS (Commercial-offthe-shelf) Etapas do processo

Esta abordagem est se tornando mais importante, mas h ainda pouca experincia com ela
15/45

Especificao dos requisitos Anlise de componentes Modificao dos requisitos Projeto de sistema com reuso Desenvolvimento e integrao Validao

Modelo de Desenvolvimento Baseado em Reuso


Especificao de Requisitos Anlise de Componentes Modificao de Requisitos Projeto de Sistema com Reuso

Desenvolvimento e Integrao

Validao do Sistema

16/45

Modelos Iterativos

Requisitos de sistema SEMPRE evoluem durante curso de um projeto. Assim a iterao do processo sempre faz parte do desenvolvimento de grandes sistemas Iteraes podem ser aplicadas a quaisquer dos modelos de ciclo de vida Duas abordagens (relacionadas)

Desenvolvimento espiral Desenvolvimento incremental

17/45

Desenvolvimento Espiral

Acrescenta aspectos gerenciais ao processo de desenvolvimento de software.


O processo representado como uma espiral em vez de uma seqncia de atividades Cada volta na espiral representa uma fase no processo No h fases fixas como especificao ou projeto voltas na espiral so escolhidas dependendo do que requerido Riscos so avaliados explicitamente e resolvidos ao 18/45 longo do processo

anlise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de deciso

Desenvolvimento Espiral
Determinao dos objetivos, alternativas e restries Anlise das alternativas
e identificao e/ou resoluo de riscos Anlise de Riscos

Simulaes, modelos e benchmarks Planejamento Desenvolvimento e validao da verso corrente do produto

19/45

Desenvolvimento Incremental

Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega so divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida Requisitos dos usurios so priorizados e os requisitos de mais alta prioridade so includos nas iteraes iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores Em certos aspectos similar programao exploratria. No entanto, o escopo do sistema deve ser claramente entendido antes de se iniciar o desenvolvimento
20/45

Desenvolvimento Incremental
Definir esboo dos requisitos Associar requisitos a incrementos Projetar a arquitetura do sistema

Desenvolver um incremento

Validar o incremento

Integrar o incremento

Validar o sistema Sistema Final

21/45

Processo

Conjunto de atividades

bem definidas com responsveis com artefatos de entrada e sada com dependncias entre as mesmas e ordem de execuo com modelo de ciclo de vida

22/45

Processo

uma ao regular e contnua (ou sucesso de aes) realizada de forma bem definida, levando a um resultado um conjunto parcialmente ordenado de atividades (ou passos) para se atingir um objetivo define quem est fazendo o que, quando e como para atingir um certo objetivo
23/45

Processo versus Metodologia

Alguns autores consideram que processos incluem


Outros consideram que uma metodologia a especializao de um processo com um conjunto de mtodos
24/45

uma metodologia pessoas tecnologia (suporte de ferramentas)

Mtodo

Descrio sistemtica de como devese realizar uma determinada atividade ou tarefa A descrio normalmente feita atravs de padres e guias Exemplos: Mtodo para descoberta de atores e casos de uso no RUP.
25/45

Modelo de Processo

uma representao de um processo, usualmente envolvendo


atividades a serem realizadas agentes que realizam as atividades artefatos (produtos) gerados recursos necessrios (consumidos)

26/45

Modelo de Processo

Um modelo usado para entendimento e comunicao do processo, e como base para anlise, execuo, gerncia e melhoria do processo Idealmente a descrio deve ser formal e completa para permitir, por exemplo, automao A descrio deve ser apresentada em diferentes nveis de abstrao
27/45

Modelo de Processo

O formalismo utilizado para representar o processo o ingrediente mais importante da modelagem No parece haver consenso sobre um formalismo ideal Terminologias distintas

Fase, workflow, domnio, disciplina, Atividade

Mas h esforo de padronizao (SPEM e BPMN OMG)


28/45

Exemplos de processos

Processos tradicionais (pesados)

RUP, OPEN, Catalysis

Processos geis (leves)

XP, Agile modeling, Crystal, pragmatic programming, Internet Speed, Scrum, ...

29/45

Exemplos de processos

Consenso em torno de

Iteratividade Participao de usurios Flexibilidade de configurao para projetos especficos Comunicao entre membros da equipe

30/45

Exemplos de processos

Divergncias em torno de

Detalhamento de atividades a serem seguidas Critrio de concluso da execuo das atividades


Rigor na atribuio de tarefas a responsveis

Arquitetura robusta (RUP) Arquitetura para o contexto da iterao atual (agile modeling) workers (RUP) alocao sob demanda e interesse (XP)

Artefatos (documentao) gerados Nvel de Automao Nvel de (im)pessoalidade

31/45

Polmica

Se a tendncia processos leves, afinal o desenvolvimento de software


Arte+Sociologia+Psicologia+... ou Lgica+Modelos+Engenharia+...???

E todo o esforo de consolidao da Engenharia de Software como uma cincia exata???

Compromisso

Balancing agility and discipline

32/45

Viso Geral do RUP

33/45

O que o RUP?

O nome uma abreviao de Rational Unified Process

mas na verdade

Processo + Mtodos + Linguagem (UML)

e os autores argumentam que

Framework para gerar processos

34/45

O que o RUP?

Conjunto de atividades

bem definidas com responsveis com artefatos de entrada e sada com dependncias entre as mesmas e ordem de execuo com modelo de ciclo de vida descrio sistemtica de como devem ser realizadas guias (de ferramentas ou no), templates utilizando diagramas de UML
35/45

Caractersticas Principais do RUP

O desenvolvimento de sistemas seguindo o RUP


Iterativo e incremental Guiado por casos de uso (use cases) Centrado na arquitetura do sistema

36/45

O RUP iterativo e incremental

O ciclo de vida de um sistema consiste de quatro fases:


elaborao construo transio

concepo tempo

Concepo (define o escopo do projeto) Elaborao (detalha os requisitos e a arquitetura) Construo (desenvolve o sistema) Transio (implanta o sistema)

37/45

O RUP iterativo e incremental

Cada fase dividida em iteraes:


Elaboration Construction

Inception

Transition

Preliminary iteration

Architect. Architect. Devel.. iteration iteration iteration

Devel.. iteration

Devel.. iteration

Transition iteration

Transition iteration

Minor Milestones: Releases


38/45

O RUP iterativo e incremental

Cada iterao

planejada realiza uma seqncia de atividades (de elicitao de requisitos, anlise e projeto, implementao, etc.) distintas geralmente resulta em uma verso executvel do sistema avaliada segundo critrios de sucesso previamente definidos
39/45

O RUP iterativo e incremental

40/45

O RUP guiado por casos de uso

Os casos de uso no servem apenas para definir os requisitos do sistema Vrias atividades do RUP so guiadas pelos casos de uso:

planejamento das iteraes criao e validao do modelo de projeto planejamento da integrao do sistema definio dos casos de teste
41/45

O RUP centrado na arquitetura do sistema

Arquitetura

A arquitetura prototipada, definida e validada nas primeiras iteraes da fase de elaborao O desenvolvimento consiste em complementar a arquitetura A arquitetura serve para definir a organizao da equipe de desenvolvimento e identificar oportunidades de reuso
42/45

viso geral do sistema em termos dos seus subsistemas e como estes se relacionam

Organizao do RUP

Fluxos de atividades Atividades


Responsveis (papel e perfil, no pessoa) Artefatos

passos entradas e sadas guias (de ferramentas ou no), templates

43/45

Exemplo de Fluxo: Planejamento e Gerenciamento


Iniciar Projeto Contratante Aprovar Projeto Atestar Concluso do Projeto

Identificar Riscos Estudar Viabilidade

Executar Plano de Iterao

Desenvolver Plano de Projeto Gerente de projeto

Desenvolver Plano de Iterao Reavaliar Riscos

Avaliar Iterao

Finalizar Projeto

Arquiteto

Priorizar Casos de Uso

44/45

Referncias

Ivar Jacobson, Grady Booch e James Rumbaugh. The Unified Software Development Process. Captulos 1 a 5. Philippe Kruchten. The Rational

Unified Process an Introduction.

45/45