Engenharia de Software Prof. Me. Clodoaldo Brasilino clodoaldo.neto@ifpi.edu.br
Acompanhamento da Disciplina 1. Introdução à Engenharia de Software 2. Processos de Software e Projetos 3. Projeto de Software 4. Teste de Software 2
Conteúdo da Aula O que é um processo de software? Atividades de um processo de software Especificação Projeto e Implementação Validação Evolução Modelos de processo de software Modelos Genéricos - Cascata - Incremental - Baseado em Componentes Modelos Iterativos - Incremental - Espiral 3
O que é um processo de software? A engenharia de software é uma tecnologia em camadas Ferramentas Conteúdo desta aula Métodos Modelo de Processo Foco na Qualidade 4
O que é um processo de software? Pressman (2005) define processo de software como um framework para as tarefas que são necessárias para construir software de alta qualidade Já Sommerville (2008) diz que um processo de software é um conjunto de atividades que leva à produção de um produto de software 5
Atividades de um processo de software São quatro: Especificação Projeto e Implementação Validação Evolução 6
Especificação Também chamada de Engenharia de Requisitos Possui quatro estágios principais: Estudo de Viabilidade Elicitação e Análise de Requisitos Especificação de Requisitos Validação de Requisitos 7
Especificação Estudo de Viabilidade Obtenção e Análise de Requisitos Especificação de Requisitos Validação de Requisitos Relatório de Viabilidade Modelos de Sistema Requisitos de Usuário e de Sistema Documento de Requisitos 8
Projeto e Implementação Nesta atividade, podemos identificar sete estágios: Projeto de arquitetura Especificação abstrata Projeto de interface Projeto de componente Projeto de estruturas de dados Projeto de algoritmo 9
Projeto e Implementação Especificação de Requisitos Projeto de Arquitetura Especificação Abstrata Projeto de Interface Projeto de Componente Projeto de Estrutura de Dados Projeto de Algoritmo Arquitetura de Sistema Especificação de Software Especificação de interface Especificação de Componente Especificação de Estrutura de Dados Especificação de Algoritmo 10
Validação Também conhecida como Verificação e Validação (V & V) ou Testes Verifica a conformidade do software com a especificação e se o software atende as expectativas do cliente Possui três estágios: Teste de componente (ou unidade) Teste de sistema Teste de aceitação 11
Validação Teste de Componente Teste de Sistema Teste de Aceitação 12
Validação Componente Sistema Aceitação 13
Evolução Após a finalização do software, demandas adicionais podem fazer com que o software necessite de evolução no futuro São identificados quatro estágios nesta fase: Definir requisitos de sistema Avaliar sistemas existentes Propor mudanças de sistema Modificar o sistema 14
Evolução Definir requisitos de sistema Avaliar sistemas existentes Propor mudanças de sistema Modificar o sistema Sistemas Existentes Sistemas Novos 15
Modelos de processo de software O que é um modelo de processo de software? Pressman (2005) define modelos de processo de software como Modelos Prescritivos, onde as atividades de um processo de software são apresentadas através de um fluxo (workflow), mostrando como essas atividades interagem entre si. 16
Modelos de processo de software O que é um modelo de processo de software? Sommerville (2008) chama de modelo de processo de software uma versão simplificada do processo de software, apresentado sob perspectiva específica 17
Modelos de processo de software O que é um modelo de processo de software? Nos modelos, as atividades de processo apresentadas são organizadas/montadas/ esquematizadas de formas diferentes para cada modelo Os modelos trazem uma visão integrada dessas atividades 18
Modelos Genéricos Os três modelos genéricos são: Cascata (ou Clássico) Evolucionário Baseado em Componentes 19
Modelo em Cascata Dr. Winston W. Royce, em 1970, publica um artigo chamado Managing the Development of Large Software Systems, com visões pessoais do autor sobre o gerenciamento de grandes softwares Com isso, surge o primeiro modelo de processo de software, o Cascata (Clássico) 20
Modelo em Cascata 21
Modelo em Cascata 22
Modelo em Cascata Vantagens Aderência a modelos de processo de engenharia Estabilidade dos requisitos Desvantagens Iterações são onerosas e burocráticas Modificações no sistema são caras e lentas 23
Modelo Evolucionário Se baseia em duas premissas principais Desenvolvimento exploratório Prototipação throwaway 24
Modelo Evolucionário Atividades Simultâneas Versões do software Especificação Versão inicial Descrição do esboço Desenvolvimento Versões Versões intermediárias Versões intermediárias intermediárias Validação Versão final 25
Modelo Evolucionário Vantagens Especificação pode ser feita de forma incremental Comporta-se bem para sistemas de até médio porte (500.000 linhas) Desvantagens Difícil obter arquitetura estável Integração entre equipes é um desafio 26
Modelo Baseado em Componentes 27
Modelo Baseado em Componentes No comitê de ciências da OTAN, em 1968, Dr. Malcolm Douglas McIlroy deu início à ideia de software componentizado pelo artigo Mass produced software components Foco no Reuso Commercial Off-The-Shelf Systems (COTS) 28
Modelo Baseado em Componentes Especificação de Requisitos Análise de Componentes Modificação de Requisitos Projeto de Sistema com Reuso Desenvolvimento e Integração Validação 29
Modelo Baseado em Componentes Vantagens Reuso de código Entregas mais rápidas Reduz custos e riscos Desvantagens Componentes de terceiros podem prejudicar na evolução do software Modificações nos requisitos podem não atender às necessidades do usuário 30
Modelos Iterativos Foco em mudanças Modelos principais: Incremental Espiral 31
Modelo Incremental Definir Requisitos Iniciais Atribuir Requisitos aos Incrementos Projetar Arquitetura do Sistema Sistema Completo Desenvolver Incremento Validar Incremento Integrar Incremento Validar Sistema Sistema Incompleto 32
Modelo Incremental Vantagens Entregas rápidas Menor risco de insucesso do projeto Fácil priorização Desvantagens Incrementos devem ser pequenos Dificuldade de identificar requisitos comuns 33
Modelo Espiral Boehm, 1998 Análise de Riscos 34
Resumo da Aula Vimos: O que é processo de software e suas principais atividades O que é modelo de processo de software e os modelos mais difundidos - Paradigmas (Cascata, Evolucionário, ESBC) - Iterativos (Incremental, Espiral) 35
Alguma dúvida? 36
Fixação da Aula Leitura dos capítulos: Sommerville - Cap. 4 Pressman - Cap. 2 e 3 Lista de exercícios 37
Referências MCILLROY, M. D. Mass produced software components. Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Alemanha, Scientific Affairs Division, NATO. 1968. p. 79. Disponível em <http://homepages.cs.ncl.ac.uk/ brian.randell/nato/nato1968.pdf>. Acessado em 01 de Junho de 2014. PRESSMAN, R. S. Software Engineering: A Practitioner's Approach. 6 Ed. McGraw Hill, 2005. 912p. ROYCE, W. W. Managing the development of large software systems. 1970. Disponível em <http://leadinganswers.typepad.com/ leading_answers/files/original_waterfall_paper_winston_royce.pdf>. Acessado em 01 de Junho de 2014. SOMMERVILLE, I. Engenharia de Software. 8 Ed. Pearson, 2008. 552p. 38
Para Refletir 39