Vida de Software, Processos e RUP Alexandre Monteiro
2/45 Ciclo de Vida e Processo de Desenvolvimento de Software 3/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 4/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 5/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 6/45 Modelo Cascata Definio de Requisitos
Projeto do Sistema e do Software
Implementao e Testes Unitrios
Integrao e Teste do Sistema
Operao e Manuteno
7/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
8/45 Modelo de Desenvolvimento Evolucionrio Programao Exploratria Prototipagem Descartvel Atividades Concorrentes
Especificao
Desenvolvimento
Validao
Esboo de Descrio
Verso Inicial
Verses Intermedirias
Verso Final
9/45 Programao Exploratria Idia geral: 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 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 10/45 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 11/45 Prototipagem Descartvel Como na programao exploratria, a primeira fase prev o desenvolvimento de um programa para o usurio experimentar No entanto, o objetivo aqui estabelecer os requisitos do sistema O software deve ser reimplementado na fase seguinte A construo de prottipos com os quais os usurios possam brincar uma idia bastante atrativa: Para sistemas grandes e complicados Quando no existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos 12/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 13/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 esp. 1 implement. 14/45 Transformao Formal A grande motivao por trs da idia de refinamento formal a possibilidade de gerar automaticamente programas que so corretos por construo O prprio processo de desenvolvimento deve grantir que o programa faz exatamente o que foi especificado 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) 15/45 Modelo de Desenvolvimento Baseado em Reuso Baseado no reuso sistemtico de componentes existentes ou sistemas COTS (Commercial-off- the-shelf) Etapas do processo Especificao dos requisitos Anlise de componentes Modificao dos requisitos Projeto de sistema com reuso Desenvolvimento e integrao Validao Esta abordagem est se tornando mais importante, mas h ainda pouca experincia com ela 16/45 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
17/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 18/45 Desenvolvimento Espiral Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. anlise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de deciso 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 longo do processo 19/45 Desenvolvimento Espiral
Determinao dos objetivos, alternativas e restries Anlise de Riscos
Anlise das alternativas e identificao e/ou resoluo de riscos Desenvolvimento e validao da verso corrente do produto
Simulaes, modelos e benchmarks
Planejamento 20/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 21/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 22/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 23/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 24/45 Processo versus Metodologia Alguns autores consideram que processos incluem uma metodologia pessoas tecnologia (suporte de ferramentas) Outros consideram que uma metodologia a especializao de um processo com um conjunto de mtodos
25/45 Mtodo Descrio sistemtica de como deve- se 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.
26/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)
27/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
28/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 Mas h esforo de padronizao (SPEM OMG) 29/45 Exemplos de processos Processos tradicionais (pesados) RUP, OPEN, Catalysis Processos geis (leves) XP, Agile modeling, Crystal, pragmatic programming, Internet Speed, Scrum, ...
30/45 Exemplos de processos Consenso em torno de Iteratividade Participao de usurios Flexibilidade de configurao para projetos especficos Comunicao entre membros da equipe
31/45 Exemplos de processos Divergncias Detalhamento de atividades a serem seguidas Critrio de concluso da execuo das atividades Arquitetura robusta (RUP) Arquitetura para o contexto da iterao atual (agile modeling) Rigor na atribuio de tarefas a responsveis workers (RUP) alocao sob demanda e interesse (XP) Artefatos (documentao) gerados Nvel de Automao Nvel de (im)pessoalidade 32/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??? 33/45 Viso Geral do RUP 34/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 35/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 36/45 Caractersticas Principais do RUP O desenvolvimento de sistemas seguindo o RUP Iterativo e incremental Guiado por casos de uso (use cases) Baseado na arquitetura do sistema
37/45 O RUP iterativo e incremental O ciclo de vida de um sistema consiste de quatro fases:
Concepo (define o escopo do projeto) Elaborao (detalha os requisitos e a arquitetura) Construo (desenvolve o sistema) Transio (implanta o sistema) tempo concepo elaborao construo transio 38/45 O RUP iterativo e incremental Cada fase dividida em iteraes: Minor Milestones: Releases Inception Elaboration Construction Transition Transition iteration Preliminary iteration Architect. iteration Architect. iteration Devel.. iteration Devel.. iteration Devel.. iteration Transition iteration 39/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 40/45 O RUP iterativo e incremental 41/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
42/45 O RUP baseado na arquitetura do sistema Arquitetura viso geral do sistema em termos dos seus subsistemas e como estes se relacionam A arquitetura prototipada e definida logo nas primeiras iteraes O desenvolvimento consiste em complementar a arquitetura A arquitetura serve para definir a organizao da equipe de desenvolvimento e identificar oportunidades de reuso
43/45 Organizao do RUP Fluxos de atividades Atividades passos entradas e sadas guias (de ferramentas ou no), templates Responsveis (papel e perfil, no pessoa) Artefatos
44/45 Exemplo de Fluxo: Planejamento e Gerenciamento Gerente de projeto Arquiteto Contratante Iniciar Projeto Aprovar Projeto Estudar Viabilidade Atestar Concluso do Projeto Identificar Riscos Desenvolver Plano de Projeto Desenvolver Plano de Iterao Executar Plano de Iterao Avaliar Iterao Finalizar Projeto Reavaliar Riscos Priorizar Casos de Uso 45/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.