Técnicas e Projeto de Sistemas André Mesquita Rincon andrerincon@ifto.edu.br andre.rincon@gmail.com Técnicas e Projeto de Sistemas Introdução a Engenharia de Software – Parte 2 Técnico Subsequente – Módulo III (22/02/2010)
Engenharia de Software – Modelos Definem um conjunto distinto de atividades, ações, tarefas, marcos e produtos de trabalho Engenheiros de software e seus gerentes adaptam um modelo de ciclo de vida a sua necessidades e depois o seguem Fornece estabilidade, controle e organização a uma atividade que pode, se deixada sem controle, tornar- se bastante caótica
Ciclo de vida clássico (Cascata) Engenharia de Software – Modelos Ciclo de vida clássico (Cascata) Abordagem sistemática e sequencial Paradigma mais antigo da ES
Ciclo de vida clássico (Cascata) Engenharia de Software – Modelos Ciclo de vida clássico (Cascata) Vantagens Torna o processo estruturado de forma fácil de ser visualizado e utilizado Todas as atividades identificadas nas fases do modelo são fundamentais Esta abordagem é quase que um padrão para muitas empresas
Ciclo de vida clássico (Cascata) Engenharia de Software – Modelos Ciclo de vida clássico (Cascata) Desvantagens Não fornece feedback entre as fases e não permite a atualização ou redefinição das fases anteriores Não suporta modificações nos requisitos (O cliente deveria “saber” todos os requisitos no início do projeto) Não visa a reutilização É excessivamente sincronizado, se ocorrer um atraso todo o processo é afetado O produto só é visto no final
Ciclo de vida clássico (Cascata) Engenharia de Software – Modelos Ciclo de vida clássico (Cascata) Pode ser evoluído em uma versão iterativa Chamada de modelo incremental Divide o projeto em pacotes de trabalho e aplica o modelo cascata Permite entregas mais rápidas Exige um bom planejamento de iterações Representado por um gráfico com o modelo cascata
Modelos evolucionários Engenharia de Software – Modelos Modelos evolucionários Prototipação Espiral
Modelos evolucionários – Prototipação Engenharia de Software – Modelos Modelos evolucionários – Prototipação Vantagem Construção de protótipos para aprovações das idéias e coleta de novos requisitos O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos Desvantagem Cliente insiste que o protótipo seja com ligeiras modificações, a versão final do produto
Modelos evolucionários – Espiral Engenharia de Software – Modelos Modelos evolucionários – Espiral Engloba as melhores características do ciclo de vida Clássico com o da prototipação Segue a abordagem de passos sistemáticos do Ciclo de Vida Clássico incorporando-os numa Estrutura Iterativa que reflete mais realisticamente o mundo real Modelo utilizado por métodos ágeis Representado pelo desenho de um espiral 1: Análise de requisitos e planejamento; 2: Análise de riscos (gerenciar expectativas), 3: Prototipação e avaliação do cliente; 4: Construção e testes; 5: Aprovação pelo cliente
Técnicas de Quarta Geração Engenharia de Software – Modelos Técnicas de Quarta Geração Concentra-se na capacidade de se especificar o software a uma máquina em um nível próximo à linguagem natural Engloba um conjunto de ferramentas de software que possibilitam que: O sistema seja especificado em uma linguagem de alto nível O código fonte seja gerado automaticamente a partir dessas especificações
Técnicas de Quarta Geração Engenharia de Software – Modelos Técnicas de Quarta Geração Vantagens Quanto mais alto o nível em que o software pode ser especificado em uma máquina, mais rapidamente o programa pode ser construído Obtenção de requisitos facilitada: o cliente descreve os requisitos que são traduzidos para um protótipo operacional Ciclo de vida simplificado
Técnicas de Quarta Geração – Ciclo de vida Engenharia de Software – Modelos Técnicas de Quarta Geração – Ciclo de vida
Técnicas de Quarta Geração Engenharia de Software – Modelos Técnicas de Quarta Geração Desvantagens O cliente pode estar inseguro quanto aos requisitos O cliente pode ser incapaz de especificar as informações de forma adequada Pode não ser eficiente em projetos grandes
Áreas de conhecimento da engenharia de Software (SWEBOK IEEE) Engenharia de requisitos, Design, Construção, Teste, Manutenção, Gerência de configuração, Gerência da engenharia de software, Processos da engenharia de software, Ferramentas e métodos da engenharia de software e Qualidade de Software Disciplinas relacionadas Engenharia da computação, Gerência de Projetos, Ciência da Computação, Ergonomia de Software, Matemática e Engenharia de Sistemas
Atividade (Em grupo: Máximo 3) Descreva os modelos (ou paradigmas) da engenharia de software (mínimo de 3 linhas para cada um deles): Ciclo de vida clássico (cascata): Incremental: Prototipagem: Espiral: Técnicas de quarta geração: