1 / 45

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

Visão Geral sobre Ciclo de Vida de Software, Processos e RUP. Alexandre Vasconcelos (amlv@cin.ufpe.br). Ciclo de Vida e Processo de Desenvolvimento de Software. O que é um modelo de ciclo de vida de processo de software?.

gerard
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visão Geral sobre Ciclo de Vida de Software, Processos e RUP Alexandre Vasconcelos (amlv@cin.ufpe.br)

  2. Ciclo de Vida e Processo de Desenvolvimento de Software

  3. 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

  4. 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

  5. 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

  6. Definiçã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 Modelo Cascata

  7. Definiçã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 Modelo Cascata na Prática

  8. Versão Inicial Especificação Atividades Concorrentes Esboço de Descrição Desenvolvimento Versões Intermediárias Validação Versão Final Modelo de Desenvolvimento Evolucionário • Programação Exploratória • Prototipagem Descartável

  9. 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

  10. 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

  11. 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

  12. 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

  13. esp. 2 esp. 1 • implement. 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

  14. 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)

  15. 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

  16. 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 Modelo de Desenvolvimento Baseado em Reuso

  17. 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

  18. 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

  19. Determinação dos objetivos, alternativas e restrições Análise das alternativas e identificação e/ou resolução de riscos Análise de Riscos Simulações, modelos e benchmarks Planejamento Desenvolvimento e validação da versão corrente do produto Desenvolvimento Espiral

  20. 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

  21. Desenvolvimento Incremental

  22. 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

  23. 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

  24. 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

  25. 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.

  26. 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)

  27. 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

  28. 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)

  29. Exemplos de processos • Processos tradicionais (pesados) • RUP, OPEN, Catalysis • Processos ágeis (leves) • XP, Agile modeling, Crystal, pragmatic programming, Internet Speed, Scrum, ...

  30. 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

  31. 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

  32. 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

  33. Visão Geral do RUP

  34. 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

  35. 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

  36. 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

  37. elaboração construção transição concepção tempo 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)

  38. Inception Elaboration Construction Transition Preliminary iteration Architect. iteration Architect. iteration Devel.. iteration Devel.. iteration Devel.. iteration Transition iteration Transition iteration O RUP é iterativo e incremental • Cada fase é dividida em iterações: Minor Milestones: Releases

  39. 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

  40. O RUP é iterativo e incremental

  41. 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

  42. 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

  43. 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

  44. Iniciar Projeto Aprovar Projeto Estudar Viabilidade Identificar Riscos Executar Plano de Iteração Avaliar Iteração Finalizar Projeto Reavaliar Riscos Priorizar Casos de Uso Atestar Conclusão do Projeto Desenvolver Plano de Projeto Desenvolver Plano de Iteração Gerente de projeto Contratante Arquiteto Exemplo de Fluxo: Planejamento e Gerenciamento

  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.

More Related