Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre * * * Conceitos Básicos de Engenharia de Software Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre * * * Problemas com o Desenvolvimento de Software * * * Projeto Watts Humphrey: “Um projeto é um esforço de trabalho realizado por um grupo de pessoas com um objetivo bem definido, dentro de um prazo estabelecido e com recursos limitados” * * * O que desejamos em nossos projetos? Desenvolver o produto que atenda as necessidades do cliente e seja entregue no prazo, com o custo e o nível de qualidade dese-jado. * * * O que obtemos em nossos projetos? Apresentação de Jim Johnson no XP2002 – disponível em www.xp2003.org/xp2002/index.html A crise do software: Apenas 10% dos projetos são concluídos no prazo e orçamento estimados O orçamento é ultrapassado em 60% dos projetos 25% a 30% dos projetos maiores são cancelados antes da implantação Os projetos médio tem um atraso acima de 1 ano e um custo 100% acima do orçamento Os custos de manutenção representam 80% dos recursos disponíveis * * * Primeiras Conclusões Apesar de toda evolução tecnológica, as perguntas que os primeiros programadores faziam são repetidas pelas equipes de hoje: Por que demora tanto para que o software seja terminado? Por que custa tão caro o desenvolvimento de software? Por que não podemos encontrar todos os erros antes de entregarmos o produto aos nossos clientes? Por que continuamos tendo dificuldade de medir o progresso a medida que o software é desenvolvido? * * * Desenvolver Software Desenvolver uma nova aplicação é um problema a ser resolvido como qualquer outro Fases Genéricas Definição: o que fazer Desenvolvimento: como fazer Manutenção: modificar (corrigir, adaptar, evoluir, prevenir) * * * Desenvolver Software Desenvolver software não é somente modelar e escrever código. É criar aplicações que resolvam os problemas dos usuários. É fazer isto dentro do prazo, de forma precisa e com alta qualidade. Ambler, 1998 Melhorar a qualidade do software implica na melhoria do processo pelo qual o mesmo é produzido. Processos, métodos e ferramentas usados para produzir constituem o escopo de estudo da Engenharia de Software. Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre * * * Engenharia de Software * * * Engenharia de Software Estudo e aplicação de procedimentos sistemáticos, disciplinados e quantificáveis ao desenvolvimento, operação e manutenção de software. IEEE/93 Foco na Qualidade Processo Método (Enfoque) Ferramentas * * * Método Orienta ”Como construir” um software Define padrões, notação e critérios de qualidade Define um conjunto de atividades necessárias que incluem: Modelagem de processos Engenharia de requisitos Análise e Projeto Implementação Testes Implantação Evolução e manutenção * * * Método Define também um conjunto de atividades auxiliares: * * * Ferramenta Software utilizados de apoio aos método com objetivo de aumentar e garantir a produtividade Evolução e manutenção * * * Processo Define: Quem faz o que e quando A aplicação de métodos e ferramentas Os produtos que devem ser entregues Os controles que ajudam a assegurar a qualidade e a gerenciar as mudanças Os marcos de referência que permite avaliar o progresso Processo = Métodos e Padrões + Pessoas + Ferramentas * * * Agilidade do Processo Um processo de software pode ser: Preditivo Rígido independente do projeto Burocrático Adaptativo Adaptado as necessidades de cada projeto Adaptado as características da equipe Ágil Incorpora o conceito de Framework Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre * * * Evolução dos Modelos de Processos * * * Modelo Cascata Levantamento de Requisitos Análise e Design Implementação Implantação Teste * * * Modelo Cascata Características Ainda hoje o modelo de processo mais utilizado. As atividades são executadas seqüencialmente. Uma fase só é iniciada após o final da anterior. Pressupõe requisitos estáveis. Baseado em modelos de processos de engenharia. Modelo Cascata – Prós e Contras Vantagens É simples de gerenciar. Desvantagens Difícil lidar com as mudanças. Atrasa a redução dos Riscos. * * * Prototipação Construção de protótipos baseado nas informações do cliente Adequado para quando o “negócio” não é bem conhecido, o cliente não sabe exatamente o que precisa ou como deve ser a interface do sistema Fases: Projeto Rápido * * * Prototipação : Problemas O usuário não entende que o software desenvolvido sacrifica qualidade para obter velocidade no desenvolvimento e não pode ser considerado como um produto que possa entrar em produção. O desenvolvedor muitas vezes toma decisões de projeto, ineficientes, para facilitar o desenvolvimento e acaba se acostumando com tais decisões, esquecendo o motivo que o levou a tomá-las. * * * RAD Rapid Application Development Como o modelo cascata com um ciclo de desenvolvimento muito curto Uso de componentes para acelerar a construção Razoável para projetos de escopo controlado e reduzido Aplicado a grandes projetos se for possível sua divisão em módulos independentes * * * RAD Modelagem de Negócio Modelagem de Dados Modelagem de Processo Geração da Aplicação Teste e Entrega 60 – 90 dias * * * Métodos Formais Uso de métodos matemáticos para a especificação, desenvolvimento e verificação de sistemas Ambiguidade, incompleteza e inconsistências são mais facilmente detetáveis e corrigíveis, usando-se análise matemática Quando utilizados durante o projeto permitem a derivação das verificações * * * Métodos Formais - Problemas O desenvolvimento de um modelo formal demanda muito tempo e custa caro Como a maioria dos engenheiros de software não possuem a formação necessária, demanda muito treinamento Difícil utilizar os modelos para comunicação com o cliente comum * * * Incremental Combinação do modelo cascata com o prototipação Adequado para quando a equipe disponível não é suficiente para cumprir o prazo Incrementos podem ser planejados para contemplar riscos técnicos Para cada incremento entregue é cumprida um seqüência como o cascata O primeiro incremento implementa requisitos básicos Cada novo incremento acrescenta novas funcionalidades Cada incremento tem que ser um produto operacional * * * Incremental - Fases 1o Incremento 2o Incremento * * * Modelo Espiral * * * Modelo Espiral – Características Barry Boehm - 1980 Reduz sensivelmente o risco de um projeto Permite uma maior interação com o cliente Adequado a maioria dos tipos de projetos/sistemas e metodologias existentes Incremental, Evolutivo e Iterativo Um ciclo da espiral pode produzir tanto uma especificação como versões do software * * * Modelo Espiral – Prós e Contras Vantagens Adaptabilidade a mudanças de requisitos Redução do Risco Acúmulo de Experiência Desvantagens Pode levar a software mal estruturado, difícil de manter. Dificuldade para convencer o cliente que o processo evolucionário pode ser controlável Depende da capacidade em analisar riscos * * * Modelo Iterativo e Incremental O que é uma iteração? Uma divisão do tempo do projeto, fixa em duração, durante a qual as atividades inerentes ao desenvolvimento são executadas. Por que precisamos usar iterações? Para ganhar maior controle sobre o projeto e para minimizar os riscos. * * * Metodologias de Desenvolvimento Linguagem de Modelagem Metodologia Processo de Desenvolvimento * * * Características Recomendadas Orientado a objetos Guiado por funcionalidades (caso de uso) Baseado na arquitetura Iterativo e incremental
Compartilhar