PROCESSO DE DESENVOLVIMENTO DE SOFTWARE
Processo
Por quê um processo Padronizar a geração de produtos e serviços Garantir a repetitividade da geração de produtos e serviços Reter o conhecimento Oferecer um guia de definição de atividades Direcionar as atividades Permitir definir critérios de monitoração e mensuração Reduzir riscos Forcecer uma visão comum Servir como um modelo para reutilização
Produto de software Um produto de software é um programa de computador combinado com os itens que o tornam inteligível, utilizável e extensível. Software é um elemento de sistema lógico, e não físico. Consistem de instruções, estruturas de dados e documentação. Constituído de itens executáveis em máquina e itens não executáveis em máquina Código, estruturas de dados, documentos (técnicos, deinstrução, normativosetc), pessoal habilitado
Paradigma Modelo Representação de um padrão a ser seguido Conceitos e preconceitos estabelecidos pela sociedade onde o individuo encontra-se inserido
Paradigma Não existe uma abordagem em particular, que seja a melhor para qualquer problema de software. O desenvolvedor deve escolher um paradigma ou combinar vários deles, de forma a obter a potencialidade de cada um.
Escolha de paradigma Natureza do projeto Área de aplicação Métodos e ferramentas disponíveis Controles necessários Produtos gerados em cada fase
Paradigmas Modelo de ciclo de vida clássico (cascata ou linear) Modelo em Prototipação Modelo em espiral Modelo RAD (Rapid Applicaton Development) Modelo incremental Modelo em espiral WINWIN Modelo dos métodos formais Desenvolvimento baseado em componentes Técnicas de 4a geração
Ciclo de vida Cascata Espiral Baseado em protótipo Processo Unificado
Cascata
Espiral
Baseado em protótipo
Processo Unificado
RUP
Características do RUP Baseado em componentes reutilizáveis Usa UML para modelar o produto Dirigido a casos de uso (Use Case) Centrado na arquitetura Iterativo e Incremental
Abordagem de desenvolvimento #1 - Desenvolver software iterativamente #2 - Gerenciar requisitos #3 - Usar arquiteturas baseadas em componentes #4 - Modelar visualmente o software #5 - Verificação contínua da qualidade #6 - Controle de mudanças
#1 - Desenvolver software Modelos Cascata Espiral
Modelo cascata Uma seqüência unidirecional de atividades transforma requisitos em um sistema
Problemas do modelo cascata Reduz flexibilidade Desestimula inovação
Modelo espiral Objetiva, de modo cíclico e incremental, aprimorar o grau de definição e implementação de um sistema, enquanto diminui o grau de risco do projeto Marcos (milestones) asseguram o compromisso de todos os envolvidos com a satisfação dos objetivos do projeto
Visão do modelo espiral (Boehm,
Visão do modelo espiral (RUP, 2000)
Características do modelo espiral Produção dos artefatos é concorrente, e não sequencial Riscos determinam o nível de esforço para próxima etapa e o nível de detalhe dos artefatos a produzir Ênfase do sistema e no ciclo de vida, em vez de código
Elementos considerados no modelo Objetivos e restrições dos envolvidos Alternativas para produtos e processos Identificação e resolução de riscos Revisão por parte dos envolvidos (stakeholders) Compromisso no prosseguimento para próxima etapa
Resultados da abordagem iterativa Erros, riscos e inconsistências se tornam evidentes mais cedo Encoraja feedback do usuário Mantém foco do time nas questões cruciais do projeto Avaliação periódica e precisa do status do projeto Carga de trabalho entre equipes é distribuída ao longo do tempo Feedback e reflexão ocorrem mais cedo Envolvidos obtém evidência concreta periódica sobre status do projeto
#2 - Gerenciar requisitos
#3 - Usar arquiteturas baseadas em componentes
#4 - Modelar visualmente o software
#5 - Verificação contínua da qualidade
#6 - Controle de mudanças