45
1/45 Visão Geral sobre Ciclo de Vida de Software, Processos e RUP Alexandre Vasconcelos ([email protected])

Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

  • Upload
    gerard

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

Visão Geral sobre Ciclo de Vida de Software, Processos e RUP. Alexandre Vasconcelos ([email protected]). Ciclo de Vida e Processo de Desenvolvimento de Software. O que é um modelo de ciclo de vida de processo de software?. - PowerPoint PPT Presentation

Citation preview

Page 1: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

1/45

Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

Alexandre Vasconcelos([email protected])

Page 2: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

2/45

Ciclo de Vida e Processo de Desenvolvimento de

Software

Page 3: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

3/45

O que é um modelo de ciclo de vida de processo de software? Uma representação abstrata e

simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software

Page 4: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

4/45

Principais Modelos do Ciclo de Vida de Software Cascata Modelo de Desenvolvimento

Evolucionário Programação Exploratória Prototipagem descartável

Modelo de Transformação Formal Modelos Iterativos

Espiral Incremental

Page 5: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

5/45

Modelo Cascata(ou clássico) Derivado de modelos existentes em

outras engenharias Sua estrutura é composta por várias

etapas que são executadas de forma sistemática e seqüencial

Na prática, existe uma interação entre as etapas e cada etapa pode levar a modificações nas etapas anteriores

Page 6: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

6/45

Modelo CascataDefinição de Requisitos

Projeto do Sistema e do

Software

Implementação e Testes Unitários

Integração e Teste do Sistema

Operação e Manutenção

Page 7: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

7/45

Modelo Cascata na PráticaDefinição de Requisitos

Projeto do Sistema e do

Software

Implementação e Testes Unitários

Integração e Teste do Sistema

Operação e Manutenção

          

 

Page 8: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

8/45

Modelo de Desenvolvimento Evolucionário Programação Exploratória Prototipagem Descartável

Atividades Concorrentes

Especificação

Desenvolvimento

Validação

Esboço de Descrição

Versão Inicial

Versões Intermediárias

Versão Final

Page 9: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

9/45

Programação Exploratória Idéia geral:

Desenvolvimento da primeira versão do sistema o mais rápido possível

Modificações sucessivas até que o sistema seja considerado adequado

Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários

Adequado para o desenvolvimento de sistemas onde é difícil ou impossível se fazer uma especificação detalhada do sistema

Principal diferença para os outros modelos é a ausência da noção de programa correto

Page 10: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

10/45

Programação Exploratória 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 programação exploratória foi implementada usando pequenos grupos de profissionais altamente qualificados e motivados

Page 11: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

11/45

Prototipagem Descartável Como na programação exploratória, a primeira

fase prevê o desenvolvimento de um programa para o usuário experimentar

No entanto, o objetivo aqui é estabelecer os requisitos do sistema

O software deve ser reimplementado na fase seguinte

A construção de protótipos com os quais os usuários possam brincar é uma idéia bastante atrativa:

Para sistemas grandes e complicados Quando não existe um sistema anterior ou um

sistema manual que ajude a especificar os requisitos

Page 12: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

12/45

Prototipagem Descartável Os objetivos do protótipo devem estar bem claros

antes do início da codificação. Possíveis objetivos: Entender os requisitos dos usuários Definir a interface com os usuários Demonstrar a viabilidade do sistemas para os

gerentes. Uma decisão importante a ser tomada é escolher o

que será e o que não será parte do protótipo Não é economicamente viável implementar todo

o sistema! Os objetivos do protótipo são o ponto de partida

Page 13: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

13/45

Transformação Formal Idéia geral:

Uma especificação formal (definição matemática, não ambígua) do software é desenvolvida e posteriormente “transformada” em um programa através de regras que preservam a corretude da especificação

esp. 2esp. 1 implement.

Page 14: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

14/45

Transformação Formal A grande motivação por trás da idéia de

refinamento formal é a possibilidade de gerar automaticamente programas que são corretos por construção O próprio processo de desenvolvimento deve

grantir que o programa faz exatamente o que foi especificado

Este modelo tem sido aplicado ao desenvolvimento de sistemas críticos, especialmente naqueles onde a segurança é um fator crítico (ex: sistema de controle de tráfego aéreo)

Page 15: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

15/45

Modelo de Desenvolvimento Baseado em Reuso Baseado no reuso sistemático de componentes

existentes ou sistemas COTS (Commercial-off-the-shelf)

Etapas do processo Especificação dos requisitos Análise de componentes Modificação dos requisitos Projeto de sistema com reuso Desenvolvimento e integração Validação

Esta abordagem está se tornando mais importante, mas há ainda pouca experiência com ela

Page 16: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

16/45

Modelo de Desenvolvimento Baseado em Reuso

Especificação de Requisitos

Análise de Componentes

Modificação de Requisitos

Projeto de Sistema com Reuso

Desenvolvimento e Integração

Validação do Sistema

Page 17: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

17/45

Modelos Iterativos Requisitos de sistema SEMPRE evoluem

durante curso de um projeto. Assim a iteração do processo sempre faz parte do desenvolvimento de grandes sistemas

Iterações podem ser aplicadas a quaisquer dos modelos de ciclo de vida

Duas abordagens (relacionadas) Desenvolvimento espiral Desenvolvimento incremental

Page 18: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

18/45

Desenvolvimento Espiral Acrescenta aspectos gerenciais ao processo de

desenvolvimento de software. análise de riscos em intervalos regulares do processo de

desenvolvimento de software planejamento controle tomada de decisão

O processo é representado como uma espiral em vez de uma seqüência de atividades

Cada volta na espiral representa uma fase no processo Não há fases fixas como especificação ou projeto - voltas

na espiral são escolhidas dependendo do que é requerido Riscos são avaliados explicitamente e resolvidos ao longo

do processo

Page 19: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

19/45

Desenvolvimento Espiral

Determinação dos objetivos, alternativas e restrições

Análise de Riscos

  Análise das alternativas e identificação e/ou resolução de riscos

Desenvolvimento e validação da versão corrente do produto

Simulações,modelos e benchmarks

 

Planejamento

Page 20: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

20/45

Desenvolvimento Incremental Em vez de entregar o sistema como um todo, o

desenvolvimento e a entrega são divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida

Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais

Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores

Em certos aspectos é similar à programação exploratória. No entanto, o escopo do sistema deve ser claramente entendido antes de se iniciar o desenvolvimento

Page 21: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

21/45

Definiresboço dosrequisitos

Associarrequisitos aincrementos

Projetar aarquitetura dosistema

Desenvolverumincremento

Validar oincremento

Integrar oincremento

Validar osistema

SistemaFinal

Desenvolvimento Incremental

Page 22: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

22/45

Processo Conjunto de atividades

bem definidas com responsáveis com artefatos de entrada e saída com dependências entre as mesmas

e ordem de execução com modelo de ciclo de vida

Page 23: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

23/45

Processo é uma ação regular e contínua (ou

sucessão de ações) 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

Page 24: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

24/45

Processo versus Metodologia Alguns autores consideram que

processos incluem uma metodologia pessoas tecnologia (suporte de ferramentas)

Outros consideram que uma metodologia é a especialização de um processo com um conjunto de métodos

Page 25: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

25/45

Método Descrição sistemática de como

deve-se realizar uma determinada atividade ou tarefa

A descrição é normalmente feita através de padrões e guias

Exemplos: Método para descoberta de atores e casos de uso no RUP.

Page 26: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

26/45

Modelo de Processo é uma representação de um

processo, usualmente envolvendo atividades a serem realizadas agentes que realizam as atividades artefatos (produtos) gerados recursos necessários (consumidos)

Page 27: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

27/45

Modelo de Processo Um modelo é usado para entendimento

e comunicação do processo, e como base para análise, execução, gerência e melhoria do processo

Idealmente a descrição deve ser formal e completa para permitir, por exemplo, automação

A descrição deve ser apresentada em diferentes níveis de abstração

Page 28: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

28/45

Modelo de Processo O formalismo utilizado para representar o

processo é o ingrediente mais importante da modelagem

Não parece haver consenso sobre um formalismo ideal Terminologias distintas

Fase, workflow, domínio, disciplina, Atividade Mas há esforço de padronização (SPEM e

BPMN – OMG)

Page 29: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

29/45

Exemplos de processos Processos tradicionais (pesados)

RUP, OPEN, Catalysis Processos ágeis (leves)

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

Page 30: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

30/45

Exemplos de processos Consenso em torno de

Iteratividade Participação de usuários Flexibilidade de configuração para

projetos específicos Comunicação entre membros da

equipe

Page 31: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

31/45

Exemplos de processos Divergências em torno de

Detalhamento de atividades a serem seguidas Critério de conclusão da execução das atividades

Arquitetura robusta (RUP) Arquitetura para o contexto da iteração atual (agile

modeling) Rigor na atribuição de tarefas a responsáveis

workers (RUP) alocação sob demanda e interesse (XP)

Artefatos (documentação) gerados Nível de Automação Nível de (im)pessoalidade

Page 32: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

32/45

Polêmica Se a tendência é processos leves, afinal o

desenvolvimento de software é Arte+Sociologia+Psicologia+...

ou Lógica+Modelos+Engenharia+...???

E todo o esforço de consolidação da Engenharia de Software como uma ciência exata???

Compromisso Balancing agility and discipline

Page 33: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

33/45

Visão Geral do RUP

Page 34: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

34/45

O que é o RUP? O nome é uma abreviação de

Rational Unified Process mas na verdade é

Processo + Métodos + Linguagem (UML) e os autores argumentam que é

Framework para gerar processos

Page 35: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

35/45

O que é o RUP? Conjunto de atividades

bem definidas com responsáveis com artefatos de entrada e saída com dependências entre as mesmas e ordem

de execução com modelo de ciclo de vida descrição sistemática de como devem ser

realizadas guias (de ferramentas ou não), templates utilizando diagramas de UML

Page 36: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

36/45

Características 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

Page 37: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

37/45

O RUP é iterativo e incremental O ciclo de vida de um sistema consiste

de quatro fases:

Concepção (define o escopo do projeto) Elaboração (detalha os requisitos e a

arquitetura) Construção (desenvolve o sistema) Transição (implanta o sistema)

tempo

concepção elaboração construção transição

Page 38: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

38/45

O RUP é iterativo e incremental Cada fase é dividida em iterações:

Minor Milestones: Releases

Inception Elaboration Construction Transition

Transitioniteration

Preliminaryiteration

Architect.iteration

Architect.iteration

Devel..iteration

Devel..iteration

Devel..iteration

Transitioniteration

Page 39: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

39/45

O RUP é iterativo e incremental Cada iteração

é planejada realiza uma seqüência de atividades

(de elicitação de requisitos, análise e projeto, implementação, etc.) distintas

geralmente resulta em uma versão executável do sistema

é avaliada segundo critérios de sucesso previamente definidos

Page 40: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

40/45

O RUP é iterativo e incremental

Page 41: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

41/45

O RUP é guiado por casos de uso Os casos de uso não servem apenas

para definir os requisitos do sistema Várias atividades do RUP são guiadas

pelos casos de uso: planejamento das iterações criação e validação do modelo de

projeto planejamento da integração do sistema definição dos casos de teste

Page 42: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

42/45

O RUP é centrado na arquitetura do sistema Arquitetura

visão geral do sistema em termos dos seus subsistemas e como estes se relacionam

A arquitetura é prototipada, definida e validada nas primeiras iterações da fase de elaboração

O desenvolvimento consiste em complementar a arquitetura

A arquitetura serve para definir a organização da equipe de desenvolvimento e identificar oportunidades de reuso

Page 43: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

43/45

Organização do RUP Fluxos de atividades Atividades

passos entradas e saídas guias (de ferramentas ou não),

templates Responsáveis (papel e perfil, não

pessoa) Artefatos

Page 44: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

44/45

Exemplo de Fluxo: Planejamento e Gerenciamento

Gerente de projeto

Arquiteto

Contratante

Iniciar Projeto

Aprovar Projeto

Estudar Viabilidade

Atestar Conclusão do Projeto

Identificar Riscos

Desenvolver Plano de Projeto

Desenvolver Plano de Iteração

Executar Plano de Iteração

Avaliar Iteração

Finalizar Projeto

Reavaliar Riscos

Priorizar Casos de

Uso

Page 45: Visão Geral sobre Ciclo de Vida de Software, Processos e RUP

45/45

Referências Ivar Jacobson, Grady Booch e

James Rumbaugh. The Unified Software Development Process. Capítulos 1 a 5.

Philippe Kruchten. The Rational Unified Process – an Introduction.