Metodologia de Desenvolvimento de Software Contexto de Análise e Projeto Orientados a Objeto © Nabor C. Mendonça 2001
Importância de Software Dependência generalizada da vida moderna em sistemas de computação O software é parte cada vez maior dos custos e do sucesso desses sistemas Produzir software é um atividade inerentemente complexa: independe de leis físicas, restrições de materiais e processos de manufatura Requer métodos disciplinados de desenvolvimento
O que é Software? Programas Dados de configuração Documentação Arquivos de código Dados de configuração Arquivos de instalação e reconstrução Documentação Manuais do usuário Manuais do sistema Web sites Produto da Engenharia de Software
O que é Engenharia de Software? Uma disciplina de engenharia voltada para todos os aspectos da produção de software de qualidade Processos, modelos e metodologias de desenvolvimento Gerência de projeto Investigação de novos métodos, ferramentas e teorias
O que é Engenharia de Software? (2) Envolve a escolha seletiva de metodologias e ferramentas adequadas ao contexto (restrições) de um sistema Abrange desde a especificação inicial do sistema até sua operação e manutenção
Atributos de Qualidade de um Software Dependem do domínio da aplicação Relacionados com o comportamento (execução) do sistema e a organização de seus documentos e código fonte Atributos essenciais Manutenibilidade Confiabilidade Eficiência Usabilidade
Processo de Desenvolvimento de Software Um processo de desenvolvimento de software é um conjunto estruturado de atividades necessárias para produzir um produto de software Critérios de avaliação de um processo Em que medida garante os atributos essenciais de um produto de software? As atividades de um processo são distribuídas em fases
Atividade Tipos de atividade Análise Projeto Implementação Testes Manutenção/Evolução As atividades são organizadas segundo diferentes Modelos de Desenvolvimento
Modelo de Desenvolvimento Representação abstrata das atividades de um processo de software e suas interdependências Modelos genéricos Cascata (ou Clássico) Iterativo (ou Evolucionário)
Fase Fase Unidade de decomposição de um processo Engloba uma ou mais atividades Ortogonal ao modelo de desenvolvimento
Atividades e Fases Atividades e Fases Fases nunca são entrelaçadas seqüência Atividades podem ser entrelaçadas, dependendo do modelo de desenvolvimento interação
O Modelo Cascata Análise Projeto Implementação Testes Manutenção
Características do Modelo Cascata Abordagem sistemática e seqüencial Como todo processo, é organizado em fases distintas e separadas Relacionamento 1:1 entre Atividade e Fase Baseado nos processo convencionais de engenharia Requer especificação completa e bem entendida Dificulta a introdução de mudanças após o início do processo
Atividades Interativas O Modelo Iterativo Atividades Interativas Iterações ou Incrementos Versão Inicial Especificação Descrição Inicial Versões Intermediárias Desenvolvimento Versão Final Validação
Características do Modelo Iterativo Iteração Um ciclo de desenvolvimento, dentro de um intervalo de tempo. Ex: 2 a 4 semanas Atividades entrelaçadas Cada fase é composta de uma seqüência de iterações Especificação evolui junto com o sistema Suporta requisitos parcialmente definidos
Características do Modelo Iterativo (2) Cada iteração produz uma “release” do software milestone A última “release” de uma fase deve marcar um “tournant” no desenvolvimento do software major milestone Que “tournant” é esse? Depende do processo de desenvolvimento escolhido. Veremos, em detalhes, o processo padrão (R)UP
Distribuição das Atividades de Desenvolvimento nos Modelos Cascata e Iterativo Modelo Cascata Modelo Iterativo Análise Implementação Validação Design
Exemplos de Processos de Desenvolvimento APE: Análise e Projeto Estruturados DeMarco, Page-Jones, Gane-Sarson APOD: Análise e Projeto Orientados a Dados Jackson, Warnier-Orr APOO: Análise e Projeto Orientados a Objeto Modelo Iterativo Booch, OMT, OOSE (R)UP: (Rational) Unified Process
Metodologia de Desenvolvimento Metodologia = Processo + Linguagem A linguagem define formalmente os artefatos produzidos ao longo do processo UML: Unified Modeling Language UML é uma linguagem orientada a objeto e unificada Cobre as atividades de análise e design Unificação é uma grande vantagem Evita problemas de “impedance mismatch” Metodologia de Desenvolvimento Adotada na Disciplina (R)UP + UML