Prévia do material em texto
PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE Aula 8 – Processos de Desenvolvimento de Software Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE CONCEITO DE PROCESSO DE DESENVOLVIMENTO • Segundo o IEEE é uma “sequência de passos executados com determinado objetivo” • Segundo CMMI é “um conjunto de ações e atividades interrelacionadas realizadas para obter um conjunto especificado de produtos, serviços ou resultados.” • Segundo a UML, processo é “ um conjunto de diretrizes e procedimentos para o desenvolvimento de um produto.” • Um processo é uma receita a ser seguida em um projeto. Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE CONCEITO DE PROCESSO DE DESENVOLVIMENTO • Segundo o CMMI um processo é definido: • Quando “tem uma descrição que é mantida”, ou seja tem um documentação que detalha: • O que é feito (produto) • Quando é feito (etapas) • Por quem é feito (papéis) • As coisas que usa (insumos) • As coisas que produz (resultados) • Processos podem ser descritos com mais ou menos detalhes. • As etapas podem ser em sequencia, em paralelo e até iterativas Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA • Em desenvolvimento de SW, as atividades do processão são as fases que vimos até então: Concepção, Análise, Projeto (ou design), Implementação, Testes e Implantação. • O ponto de partida para definir a arquitetura do processo que a empresa vai usar é escolher o modelo de Ciclo de Vida de desenvolvimento. • Os modelos de ciclo de vida que veremos são: • Codifica-remenda • Cascata • Cascata com retroalimentação • Espiral Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: CODIFICA-REMENDA • Anos: 60/70 e início dos anos 80 • Programadores baseavam-se nas próprias experiências. • Não havia forma definida e estruturada • Não haviam testes • Os erros eram corrigidos após implantação, geralmente em caráter de urgência insatisfação dos clientes • Apenas 2 fases: • Implementação e Correção • Confiabilidade e qualidade começam a ser contestadas • Vantagem: simples, pois não exigia técnica • Desvantagem: Impossível de gerir, pois não se pode assumir compromissos com prazos. Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: CASCATA • As fases são executadas em sequência, iniciando uma após o término da anterior (sequencial para frente, ou linear). Concepção Testes Desenho Implementação Análise Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Vantagens • Permite demarcar as fases com pontos de controle bem definidos facilita a gestão do projeto • Em tese confiável e útil em projetos de qualquer escala na prática, útil em projetos pequenos • De fácil entendimento. • Requer documentação MODELO DE CICLO DE VIDA: EM CASCATA Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Desvantagens • Rígido, já que não prevê correção posterior de problemas de fases anteriores. • Exemplo: no projeto, não se corrige falha de análise • Projeto raramente segue fluxo sequencial • Baixa visibilidade para o cliente, que só vê o produto pronto, ao final da última fase. • Requer que os requisitos sejam todos identificados e modelados nas fases iniciais (concepção e análise) • Se uma fase atrasa, todas sofrerão também • Dificulta a visão de reutilização • Só o gestor tem a visão do todo (e analistas que iniciam com o projeto e seguem até o final). • O modelo inicial não previa manutenção MODELO DE CICLO DE VIDA: EM CASCATA Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: EM CASCATA • Na prática • É necessário que possam ser revistos e corrigidos resultados das fases anteriores Requisitos Mudam • Modelo útil em pequenos projetos. • Em função da complexidade dos modelos usados (análise estruturada e essencial) e da dificuldade em manter a documentação, pouco se documentou em sistemas desenvolvidos nessa fase. Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: EM CASCATA Concepção Testes Desenho Implementação Análise D O C U M E N T A Ç Ã O Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Variante do modelo “Cascata Tradicional” que permite a retroalimentação, ou seja retroceder a fases anteriores para revisões e ajustes necessários. • Por exemplo: modelos da fase de Projeto (ou design) podem ser alterados na fase de Implementação, a medida que problemas e necessidades são detectados. • Permite a superposição de fases (exemplo acima) e a realimentação de correções. • Modelo mais realista e condizendo com as necessidades do processo de desenvolvimento. • Porem deve-se atentar ao custo da correção, dependendo da fase atual e até que fase será necessário retroceder. MODELO DE CICLO DE VIDA:CASCATA C/RETROALIMENTAÇÃO Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA:CASCATA C/ RETROALIMENTAÇÃO Requisitos Testes Desenho Implementação Análise Manutenção Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Vantagens • Possibilita a superposição de fases • Possibilita a revisão, ajustes e correção de problemas identificados, advindos de fases anteriores. • Desvantagem • Dependendo da quantidade de revisões e retroalimentações, o processo pode se tornar difícil de gerenciar. • O custo das revisões e ajustes pode ser alto, dependendo da fase em que se esteja e do quanto se precisa retroceder. MODELO DE CICLO DE VIDA: CASCATA C/ RETROALIMENTAÇÃO Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Seleção de uma parte do projeto • Identifica, especifica, implementa, testa e implanta a iteração • Se atender as especificações, passa-se a próxima iteração MODELO DE CICLO DE VIDA:ITERATIVO Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA:ITERATIVO Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Modelo que baseado na ideia de aumento do âmbito do sistema. • Desenvolvimento em partes • Ou seja, na criação de novas versões para o modelo proposto. • As partes podem ser desenvolvidas em paralelo e integradas quando completas. MODELO DE CICLO DE VIDA: INCREMENTAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA:INCREMENTAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Processo de desenvolvimento de softwareque define: • um subconjunto de requisitos e • utiliza o modelo em cascata para sua realização. • Cada porção do ciclo segue o projeto de arquitetura inicial como guia, mas com uma abordagem bem menor. • Uma vez satisfeitos os requisitos e os objetivos da iteração forem completos, o desenvolvimento segue para a próxima iteração. MODELO DE CICLO DE VIDA: ITERATIVO E INCREMENTAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA:ITERATIVO E INCREMENTAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: ESPIRAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Nesse modelo o produto é desenvolvido em uma série de iterações (repetição) • Cada iteração representa uma volta na espiral e pode-se decidir entre continuar o desenvolvimento ou não. • A Etapa de ENGENHARIA, compreendem todas ou algumas das fases dos modelos anteriores: Concepção, Análise, Projeto, Design, Implementação e Testes • Nesse modelo o sistema é desenvolvido em incrementos (pequenas partes do sistema) e os requisitos definidos progressivamente • Permite a avaliação do usuário ao final de cada iteração • Requer muita disciplina e experiência MODELO DE CICLO DE VIDA: ESPIRAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • O Modelo e suas etapas • Planejamento: Definição de objetivos, alternativas e restrições • Análise de riscos: análise das alternativas e identificação dos riscos sob ponto de vista técnico e de gerência. • Engenharia: Desenvolvimento do produto, e sub dividido em fases; • Avaliação do cliente: Avaliação do produto e feedback das decisões tomadas pelo desenvolvimento. MODELO DE CICLO DE VIDA: ESPIRAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Vantagens • Modelo evolutivo, possibilita uma maior integração entre as fases e facilita a depuração e a manutenção do sistema. • Permite que o projetista e cliente possam entender e reagir aos riscos em cada etapa evolutiva. • Desvantagens • Avaliação dos riscos exige muita experiência. • O modelo é relativamente novo e tem sido aplicados em processos ditos “ágeis”, como o XP MODELO DE CICLO DE VIDA: ESPIRAL Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE MODELO DE CICLO DE VIDA: PROTOTIPAÇÃO (EVOLUTIVA) Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • Uma VARIANTE do modelo espiral • Nesse modelo a espiral não visa a construção do produto completo, mas sim construir versões provisórias. Chamadas de protótipos. • Os protótipos cobre cada vez mais requisitos (incremental) até que atinja a totalidade e estejamos diante do produto desejado. • Útil quando não se sabe ao certo a especificação do produto final. • O cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes • O desenvolvedor não tem certeza da eficiência de um algoritmo ou forma da interação MODELO DE CICLO DE VIDA: PROTOTIPAÇÃO (EVOLUTIVA) Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • 1- Obtenção dos Requisitos • O desenvolvedor e o cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais. • 2- Projeto Rápido • É a representação dos aspectos do software que são visíveis ao usuário (entrada e formatos de saída). • 3- Construção do Protótipo • É a implementação do projeto rápido. Serve como o “primeiro sistema” - recomendado que não seja usado como produto final. MODELO DE CICLO DE VIDA: PROTOTIPAÇÃO (EVOLUTIVA) Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE • 4 – Avaliação do protótipo • Cliente e desenvolvedor avaliam o protótipo. • 5- Refinamento de Requisitos: • Com base na avaliação, refinam o produto • Ocorre neste ponto um processo de iteração que pode conduzir à atividade 1 até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito. • 6- Construção do Produto: • A versão de produção deve ser construída considerando os critérios de qualidade. • Protótipo deve ser descartado MODELO DE CICLO DE VIDA: PROTOTIPAÇÃO (EVOLUTIVA) Processos de Desenvolvimento de Software – Aula 8 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE PRINCIPAIS CONCEITOS APRESENTADOS NA AULA. • Conceito de Processo, Processo de desenvolvimento • Modelo de Ciclo de Vida • Codifica - remenda • Cascata • Cascata com Retroalimentação • Iterativo e Incremental • Espiral • Prototipação (evolutiva).