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

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto Orientado a Objetos
Advertisements

RUP – Rational Unified Process
Introdução a Algoritmos
Engenharia de Software
Engenharia de Software
Rational Unified Process
O Processo Praxis 3.0 Processos de Software 25/03/2017
Engenharia de Software
Prototipação de Software
Engenharia de Software
Engenharia de Software
Rational Unified Process(RUP)
Valéria Maria Lauande Março/2010
Engenharia de Software Professor Sandro de Paiva Carvalho.
FACULDADE DOS GUARARAPES
Metodologia de Desenvolvimento de Software
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
Análise e Projeto de Sistemas
Introdução ao RUP Rational Unified Process
Modelos de Processos de Software
Classes e objetos Modelagem
RUP Prof.ª Elaine B. Figueiredo.
1/22 Introdução aos Processos de Software © Alexandre Vasconcelos Centro de Informática da UFPE/ Qualiti Software.
Rational Unified Process
RUP - Cap. 2 – Os 4 P’s (Pessoas, Projeto, Produto e Processo)
RUPinho Qualidade de Software
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Desafios do desenvolvimento de software
Visão Geral PRO.NET.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Processos de Desenvolvimento de Software – Parte 2
Processo Praxis – Fase de Concepção
Processos de Software Profa. Cintia Carvalho Oliveira
Engenharia de Software
Planejamento e Gerenciamento
Engenharia de Software
Introdução aos Processos de Software. Processo n Uma ação regular e contínua (ou sucessão de ações) realizada de forma bem definida, levando a um resultado.
Modelos de Processo de Software
Análise e Desenvolvimento de Software
PSBD II Projeto de Sistemas de Banco de Dados II
Análise e Projeto Orientados a Objetos
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
Processo de Desenvolvimento de Software
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Processos de Software.
Processos de Software.
Técnicas e Projeto de Sistemas
Gestão de projetos de Software GTI-16
UML e a Ferramenta Astah
CIn-UFPE1 © 2003, Alexandre Vasconcelos Visão Geral do RUP.
Engenharia de Software
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Processos conceitos, modelos, ciclo de vida, ambientes (PSEE), exemplos Augusto Sampaio.
Análise e Projeto de Sistemas Unified Modeling Language Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores.
Engenharia de Software e Sistemas
Engenharia de Software
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Apresentação Leonardo Brussolo de Paula
Desenvolvimento de Software I
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Visão Geral do RUP.
Transcrição da apresentação:

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

Ciclo de Vida e Processo de Desenvolvimento de Software

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

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

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

Modelo Cascata 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 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 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

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

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

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

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

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

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)

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

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

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

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

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

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

Desenvolvimento Incremental

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

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

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

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.

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)

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

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 Mas há esforço de padronização (SPEM – OMG)

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

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

Exemplos de processos Divergências 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

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???

Visão Geral do RUP

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

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

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

O RUP é iterativo e incremental O ciclo de vida de um sistema consiste de quatro fases: tempo concepção elaboração construção transição 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)

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

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

O RUP é iterativo e incremental

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

O RUP é baseado na arquitetura do sistema visão geral do sistema em termos dos seus subsistemas e como estes se relacionam A arquitetura é prototipada e definida logo nas primeiras iterações O desenvolvimento consiste em complementar a arquitetura A arquitetura serve para definir a organização da equipe de desenvolvimento e identificar oportunidades de reuso

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

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

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.