Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Teoria de Engenharia de Software Aula 3 Processo de Desenvolvimento de Software Modelos Clássicos Prof. Rafael Targino rtargino@unicarioca.edu.br 2 Conteúdo da Aula • Processo de Desenvolvimento de Software – Cascata – Cascata com Prototipação – Modelo em V (Cascata com fases de Testes) – Iterativo e Incremental – Espiral Engenharia de Software 2 3 Modelo de Ciclo de Vida em Cascata • Método sistemático e sequencial • O resultado de uma fase se constitui na entrada da outra • Também conhecido como Modelo Clássico Modelo em Cascata (ou Sequencial) • O modelo em cascata move-se para a próxima fase somente quando a fase anterior está completa • Não há pulo para frente, para trás ou sobreposição entre as fases. Assume que o Planejamento do Projeto pode ser feito para o projeto inteiro no início do projeto! 3 5 Problemas Modelo de Ciclo de Vida em Cascata • Rigidez do processo • Projetos reais raramente seguem um fluxo seqüencial • Assume que é possível declarar detalhadamente todos os requisitos antes do início das demais fases do desenvolvimento. – propagação de erros pelas as fases do processo. • Uma versão de produção do sistema não estará pronta até que o ciclo do projeto de desenvolvimento chegue ao final. Mas Mudanças no Projeto Sempre Ocorrem • Clientes tem baixa percepção do problema no início do projeto • Nossa capacidade de planejar mais do que 2 ou 3 meses do projeto é muito limitada – Frequentes estouros de prazos e orçamentos... • O negócio muda muito rápido • A equipe não sabe a melhor maneira de executar o projeto no início Engenharia de Software Principalmente se considerarmos ambientes mais dinâmicos como desenvolvimento de software, publicidade, jornalismo, entreterimento entre outros... 4 7 Cascata com Prototipação • Tem como objetivo assegurar que os requisitos do sistema foram bem entendidos. • Técnica frequentemente aplicada quando: – há dificuldades no entendimento dos requisitos do sistema – há requisitos que precisam ser mais bem entendidos – O próprio usuário não tem compreensão completa do problema Engenharia de Software 8 Prototipação 5 9 Tipos de Protótipos • Evolutivo – Protótipo desenvolvido via programação para ser usado de base para o produto final. Terá a cara do produto final. • Descartável – Protótipo desenvolvido rapidamente via programação e com baixa qualidade de código. Só serve para validar os requisitos de usuários e depois deve ser jogado fora. • Baixa Fidelidade – Protótipo desenvolvido em papel ou em ferramentas gráficas, mas sem se preocupar com a cara final do sistema Engenharia de Software 10 Cascata com Prototipação Engenharia de Software 6 11 Modelo em V (Cascata com fases de Testes) • Apesar de adicionar uma fase de teste para cada fase do cascata, ainda possui a característica de entregar software apenas no final de todo o processo Engenharia de Software 12 Novo Modelo de Ciclo de Vida Vamos assumir nossa incompetência em planejamento a longo prazo e vamos dividir o planejamento em pequenos pedaços chamados de iteração! Ciclo de Vida Incrementa e Iterativo 7 13 Vários Mini-Cascatas • Cada cascata é uma iteração... I t e r a ç ã o 1 I t e r a ç ã o 2 I t e r a ç ã o 3 14 Modelo Iterativo e Incremental • Dividir para conquistar • O desenvolvimento ocorre em várias iterações, cada uma delas resultando em extensão de funcionamento e/ou maior conhecimento do sistema • As funcionalidades mais críticas devem ser tratadas nas primeiras iterações Engenharia de Software 8 Modelo Iterativo e Incremental Incremental Iterativo 16 Modelo Iterativo e Incremental • Vantagens – Antecipa possíveis problemas no desenvolvimento de software através de versões preliminares – Entrega acelerado dos serviços ao cliente – Engajamento do usuário do sistema com o processo de desenvolvimento – Redução do risco de lançar o projeto no mercado fora da data planejada. Identificando os riscos numa fase inicial o esforço despendido para gerenciá-los ocorre cedo, quando as pessoas estão sob menos pressão do que numa fase final de projeto. 9 17 Modelo Iterativo e Incremental • Desvantagens –Passa a ter uma camada a mais de gerenciamento, que é o controle e a ordem de cada iteração –Problemas Contratuais pois o software desenvolvido pode caminhar para um produto muito diferente do que foi contratado Engenharia de Software 18 Processo em Espiral – preocupação explícita com os riscos do projeto de desenvolvimento 10 19 Processo em Espiral: Setores da Espiral 1. Planejamento – O projeto é revisado e a próxima fase da espiral é planejada 2. Análise de Risco – Os riscos são avaliados e são adotadas as atividades para reduzir os ricos principais 3. Engenharia ou Desenvolvimento – É escolhido um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos 4. Análise do Cliente / Definição dos Objetivos – Identificam-se os objetivos específicos da próxima fase Engenharia de Software 20 Processo em Espiral • O processo é representado por uma espiral ao invés de ser representado como uma sequencia de atividades • Cada volta da espiral (loop) representa uma única fase de desenvolvimento de software • Capacita o desenvolvedor e o cliente a entender e a reagir aos riscos em cada etapa evolutiva • Engloba as melhores características do ciclo de vida Clássico como o da Prototipação adicionando um novo elemento: a Análise de Riscos Engenharia de Software 11 21 Resumo de Processos • Existem dois grandes grupos de Processo de Desenvolvimento de Software • Sequencial – Cascata e suas variações • Iterativo – Iterativo e Incremental, Espiral, RUP e Métodos Ágeis (serão vistos nas próximas) Engenharia de Software 22 Resumo dos Métodos Método Planejamento Entrega Método Sequencial Planejamento do Todo Tudo no final do projeto Método Iterativo e Incremental Planejamento do Todo Parciais ao longo do Projeto 12 23 Qual seria a melhor abordagem para esses projetos? • Método Sequencial (Cascata) ou Iterativo? – Obras do Parque Olímpico da Rio-2016 – Desenvolvimento de um software para pedir comida – Organização do Rock in Rio – Construção de uma plataforma de petróleo • Como seria o andamento (e as entregas) do projeto para os cenários abaixo em cada uma das abordagens (Sequencial e Iterativo). – Construção de uma linha férrea entre o Rio de Janeiro e Porto Alegre – Professor ministrando um curso de graduação com provas (material ainda não foi preparado) 24 Exercício – Definir o Processo de Desenvolvimento • 1ª Empresa – Tem um problema mas não sabe muito bem como resolver – Possui um tempo razoável para desenvolvimento (+ou- 1 ano) – Equipe disponível é pequena – Usuários estão disponíveis • 2ª Empresa – Empresa de Engenharia Civil que precisa executar cálculos muito bem definidos – O algoritmo de cálculo possui 3 módulos. Um módulo sozinho não traz nenhum valor para a Empresa. – Precisa do produto completo muito rápido. – Usuários (engenheiros especialistas) conhecem muito bem o problema e estão seguros da solução Engenharia de Software 13 Obras viárias e VLT no centro do Rio Abordagem Iterativa 26 Questões que determinam a escolha de um processo • Quão bem os analistas e o cliente podem conhecer os requisitos do sistema? • Quão bem é compreendida a arquitetura do sistema? • Qual o grau de confiabilidade necessário em relação ao cronograma? • Quantoplanejamento é efetivamente necessário? • Qual o grau de risco que este projeto apresenta? • Será necessário entregar partes do sistema funcionando antes de terminar o projeto todo? • Será desenvolvido um único sistema ou uma família de sistemas semelhantes? • Qual o tamanho do projeto? Engenharia de Software 14 27 Questões de Concursos Dentro da Engenharia de Software, encontramos uma gama de conceitos. Embasado nisso, analise as assertivas e assinale a alternativa que aponta a(s) correta(s) sobre Processos de Software. I. Podemos definir um processo de software como um conjunto de atividades relacionadas que levam à produção de um produto de software. II. A definição das funcionalidades do software e as restrições a seu funcionamento devem ser definidas na produção de um software. Essa atividade está incluída no processo de software. 28 Questões de Concursos III. A validação de software também é uma atividade presente no processo de software. IV. Os processos de software são complexos e, como todos os processos intelectuais e criativos, dependem de pessoas para tomar decisões e fazer julgamentos. Não existe um processo ideal, a maioria das organizações desenvolve seus próprios processos de desenvolvimento de software. a) Apenas I. b) Apenas I e III. c) Apenas I e IV. d) Apenas II, III e IV. e) I, II, III e IV.
Compartilhar