Introdução Engenharia de Software



Documentos relacionados
Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Sistemas de Informação I

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Engenharia de Software

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Engenharia de Software

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Desempenho e Segurança em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini christianezapelini@nwk.edu.br

ENG1000 Introdução à Engenharia

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

ENGENHARIA DE SOFTWARE I

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Desenvolvimento Ágil de Software

Processo de Software - Revisão

Professor: Curso: Disciplina:

Processos de Software

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Pós Graduação Engenharia de Software

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software II

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Engenharia de Software

Engenharia de Software II

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Processos de Desenvolvimento de Software

O modelo unificado de processo. O Rational Unified Process, RUP.

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

Processo Unificado (RUP)

Engenharia de Requisitos Estudo de Caso

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Engenharia de Software

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

Prototipação de Software

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho.

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

UML - Unified Modeling Language

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I Aula 3

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 10 PROFª BRUNO CALEGARO

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

Processos de gerenciamento de projetos em um projeto

Tópicos. Engenharia de Software: Uma Visão Geral

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

ISO/IEC 12207: Gerência de Configuração

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Processo de Desenvolvimento Unificado

PROFESSOR: CRISTIANO MARIOTTI

Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto

Introdução à Computação

Qualidade de Software. Anderson Belgamo

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

Introdução à Engenharia de Software

Metodologia de Gerenciamento de Projetos da Justiça Federal

Modelos de processos de desenvolvimento de software

Programa do Módulo 2. Processo Unificado: Visão Geral

Capítulo 1. Extreme Programming: visão geral

PROJETO DE FÁBRICA DE SOFTWARE

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

CHECK - LIST - ISO 9001:2000

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃO

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Engenharia de Software

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

Extração de Requisitos

5. Métodos ágeis de desenvolvimento de software

Gerenciamento de projetos.

Características do Software

A Disciplina Gerência de Projetos

Planejamento e Gerência de Projetos de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

Engenharia de Software

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Transcrição:

Introdução Engenharia de Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 1

EMENTA Parte 1 Conceitos de Engenharia de Software. Processo de desenvolvimento de software. Comparação entre os Paradigmas de Desenvolvimento Software. Levantamento, especificação e análise de requisitos. Parte 2 Verificação, validação e manutenção de software. Planejamento e gestão de projetos. Qualidade de software. Métricas de software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 2

Desafio do Desenvolvimento de Software No mercado atual, não há dúvida de que os profissionais de TI envolvidos com projetos de desenvolvimento de software e soluções corporativas têm um claro desafio: PRODUZIR soluções mais rápidas, melhores e mais baratas que antes (melhor ainda ser mais rápidas, melhores e mais baratas que a concorrência) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 3

Evolução do Software 1970s: Lower-CASE (Computer-Aided Software Engineering) ferramenta programação, depuração (ex. Jbuilder, JUnit) Ciclo de vida cascata Desenvolvimento estruturado 1980s: Ciclo de vida espiral Desenvolvimento orientado a objetos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 4

Evolução do Software 1990s: Upper-CASE ferramenta fases de planejamento, análise e projeto do programa ( Ex. JUDE, Poseidon, ArgoUML) Processos Modelagem Atualmente: Métodos ágeis Desenvolvimento dirigido por modelos Linhas de produto Experimentação Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 5

Níveis dos sistemas de informação dentro de uma organização Estratégico Gerencial Conhecimento Operacional Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 6

Engenharia de Software Métodos e Técnicas para o disciplinar o processo de desenvolvimento do software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 7

O que é Engenharia de Software? Fritz Bauer 1969 ( primeira definição) O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 8

O que é Engenharia de Software? IEEE, 1993 A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a fim de obter economicamente softwares confiáveis e que executem de forma eficiente nas máquinas reais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 9

O que é Engenharia de Software? O engenheiro de software se utiliza de recursos mais adequadas para determinar quais são os elementos necessários para resolução de um problema complexo Programador (técnicas) Engenheiro (técnicas) 1. Paradigma de tentativa e erro 1. Paradigma adaptado ao escopo do sistema 2. Estrutura de Dados 2. Análise e Projeto 3. Linguagens de Programação 3. Ferramentas CASE e SGBD s Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 10

Áreas da Engenharia de Software segundo SWEBOK SoftWare Engineering Body of Knowledge Requisitos de Software Projeto de Software Construção de Software Teste de Software Manutenção de Software Gerenciamento de Configuração de Software Gerenciamento de Engenharia de Software Processo de Engenharia de Software Ferramentas e Métodos de Engenharia de Software Qualidade de Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 11

10 Áreas da Engenharia de Software 1 - Requisitos de Software A Área do Conhecimento de Requisitos de Software está preocupada com a elicitação, análise, especificação e validação da requisitos de software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 12

10 Áreas da Engenharia de Software 2 Design(projeto) de Software É definido como o processo de definição da arquitetura, componentes, interfaces e outras características de um sistema ou componente e também o resultado desse processo. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 13

10 Áreas da Engenharia de Software? 3 - Construção de Software Criação detalhada de programas funcionais a partir de uma combinação de codificação, verificação, teste unitário, teste integrado e debugging. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 14

10 Áreas da Engenharia de Software? 4 - Teste de Software Verificação dinâmica do comportamento do programa através do uso de um conjunto finito de casos de teste adequadamente selecionados de um domínio de execuções usualmente infinito - contra o comportamento esperado deste Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 15.

10 Áreas da Engenharia de Software? 5 - Manutenção de Software Atividades de suporte custo-efetivo a um sistema de software, que pode ocorrer antes e após a entrega do software. Após a entrega do software são feitas modificações com o objetivo de corrigir falhas, melhorar seu desempenho ou adapta-lo a um ambiente modificado. Antes da entrega do software são feitas atividades de planejamento. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 16.

10 Áreas da Engenharia de Software? 6 - Gerência de Configuração de Software Identifica a configuração do sistema (características documentadas do hardware e software que o compõem) em pontos discretos no tempo, de modo a controlar sistematicamente suas mudanças e manter sua integridade e rastreabilidade durante o ciclo de vida do sistema. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 17

10 Áreas da Engenharia de Software? 7 - Gerência de Engenharia de Software a aplicação de atividades de gestão planejamento, coordenação, medição, monitoramento, controle e divulgação para garantir que o desenvolvimento e manutenção de software seja sistemática, disciplinada e quantificada. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 18

10 Áreas da Engenharia de Software? 8 - Processo de Engenharia de Software Define, implementa, mede, gerencia, modifica e aperfeiçoa o processo de desenvolvimento de software. O Processo de engenharia de software inclui atividades técnicas e de gestão dentro dos processos o ciclo de vida de software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 19

10 Áreas da Engenharia de Software? 9 - Ferramentas e Métodos Ferramentas de software automatizam o processo de engenharia de software. Métodos impõem estrutura sobre a atividade de desenvolvimento e manutenção de software com o objetivo de torná-la sistemática e mais propensa ao sucesso. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 20

10 Áreas da Engenharia de Software? 10 - Qualidade de Software Conjunto de atividades relacionadas com garantia de qualidade de software, que transcende os processos do ciclo de vida de Software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 21

Elementos da Engenharia de Software? É uma disciplina que integra métodos, ferramentas e procedimentos para o desenvolvimento de software de computador. Possibilitar ao gerente o controle do processo de desenvolvimento Oferecer ao profissional uma base para a construção de software de alta qualidade Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 22

Engenharia de Software - Método Métodos: proporcionam os detalhes de como fazer para construir o software. Envolvem um amplo conjunto de tarefas. Um método de ES é uma aproximação estruturada para o desenvolvimento de software. Objetivo: Produção de software de alta qualidade de um modo cost-effective (custo-beneficio). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 23

Engenharia de Software - Método Início na década de 70 (DeMarco e Jackson): Identificação dos componentes funcionais básicos de um sistema; Orientado à função; Bibliotecas de algoritmos. 80s-90s Métodos orientados a objeto (Booch e Rumbaugh). classes,objetos. Atualmente os diferentes métodos estão integrados numa aproximação unificada baseada em Unified Modeling Language (UML). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 24

Engenharia de Software - Método década de 70 década de 80s-90s Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 25

Engenharia de Software - Método Métodos devem incluir os seguintes componentes: Descrição gráficas Regras Recomendações Diretrizes de processo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 26

Engenharia de Software - Ferramentas Ferramentas : fornecem suporte automatizado ou semi aos métodos. Existem atualmente ferramentas para sustentar cada um dos métodos Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 27

O que é CASE (Computer-Aided Software Engineering) Sistemas de software automatizado utilizados para apoiar as atividades de processo de software. Upper-CASE - Ferramenta para dar apoio às fases iniciais do processo de software. Lower-CASE - Ferramenta para dar apoio à implementação a aos testes. Ex.(Poseidon para UML, ArgoUML...) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 28

Engenharia de Software - Procedimentos Procedimentos : constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software. Sequência em que os métodos serão aplicados. Produtos (deliverables) que se exige que sejam entregues. Controles que ajudam assegurar a qualidade e coordenar as alterações. Marcos de referência que possibilitam administrar o progresso do software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 29

Engenharia de Software - Procedimentos Métodos Procedimentos Resultados Ferramentas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 30

Princípios da Engenharia de Software Todo engenheiro de software deve desenvolver com: Rigor e Formalidade Separação de interesses Modularidade Abstração Antecipação de mudanças Generalidade Possibilidades de evolução Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 31

Engenharia de Software Visão Genérica: 3 Fases 1 - Definição - o que? Engenharia do Sistema Planejamento do Projeto Análise de Requisitos 2 - Desenvolvimento - como? Projeto Geração do Código Teste 3 - Manutenção Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 32

Modelo de Processo de Software Processo conjunto de atividades ações e tarefas realizadas na criação de algum produto definição do problema estado atual desenvolvimento técnico integração da solução Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 33

Modelo de Processo de Software Estudo de viabilidade Relatório de viabilidade Levantamento e análise de requisitos Modelos de sistemas Especificação de requisitos Validação de requisitos Requisitos do usuário e do sistema Documentação de requisitos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 34

Modelo de Processo de Software (paradigmas) Modelo Sequencial Linear (ciclo de vida clássico) Modelos Evolucionários - Prototipação - Incremental - Espiral - Métodos Ágeis Modelo de Métodos Formais Técnicas de 4a Geração Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 35

Modelo de Processo de Software (paradigmas) É escolhido com base: Na natureza do projeto e da aplicação. Nos métodos e ferramentas a serem utilizados. Nos controles e produtos que precisam ser entregues. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 36

Modelo Sequencial Linear (ciclo de vida clássico) Método sistemático e sequencial O resultado de uma fase se constitui na entrada da outra. Cada fase é estruturada como um conjunto de atividades que podem ser executadas por pessoas diferentes, simultaneamente. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 37

Modelo Sequencial Linear (ciclo de vida clássico) Engenharia de Sistemas Análise / projeto de sistema e de software Implementação e teste Integração e teste Operação e manutenção Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 38

Modelo Sequencial Linear (ciclo de vida clássico) ENGENHARIA DE SISTEMAS envolve a coleta de requisitos em nível do sistema, pequena quantidade de projeto e análise de alto nível; deve-se analisar os requisitos, recursos e restrições para: apresentar soluções; estudar a viabilidade; planejar e gerenciar o desenvolvimento a partir de estimativas e análise de riscos que se utilizam de métricas. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 39

Modelo Sequencial Linear (ciclo de vida clássico) ANÁLISE DE REQUISITOS DE SOFTWARE processo de coleta dos requisitos é intensificado e concentrado especificamente no software. deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos. os requisitos (para o sistema e para o software) são documentados e revistos com o cliente. Resultado o contrato de desenvolvimento Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 40

PROJETO Modelo Sequencial Linear (ciclo de vida clássico) É definida a solução do problema Concentra-se em: Estrutura de Dados; Arquitetura de Software; Detalhes Procedimentais e Caracterização de Interfaces. Resultado documentação de especificação de projeto Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 41

Modelo Sequencial Linear IMPLEMENTAÇÃO (ciclo de vida clássico) tradução das representações do projeto para uma linguagem artificial resultando em instruções executáveis pelo computador. O projeto é transformado em um programa, ou unidades de programa. ( Teste de Unicidade) Resultado coleção de programas implementados e testados. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 42

INTEGRAÇÃO Modelo Sequencial Linear (ciclo de vida clássico) Programas ou unidades de programas são integrados e testados como sistema. Integração incremental programas ou unidades são integradas à medida em que forem sendo desenvolvidos. Resultado produto pronto para ser entregue ao cliente. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 43

Modelo Sequencial Linear (ciclo de vida clássico) OPERAÇÃO / MANUTENÇÃO Operação Instalação e configuração Utilização inicialmente operado por um grupo de usuário Manutenção Corretiva Adaptativa Evolutiva. Resultado produto em funcionamento. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 44

Problemas com o Modelo Sequencial Linear (ciclo de vida clássico) Todo o planejamento é orientado para a entrega do produto de software em uma data única. Fornece pouca visibilidade do estado do projeto Logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 45

Modelo Evolucionário Abordagem baseada na ideia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões. As atividades de desenvolvimento e validação são desempenhadas paralelamente, com um rápido feedback entre elas. Os detalhes e extensões ainda devem ser definidos Ex: editor de texto Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 46

Modelo Evolucionário Especificação Versão inicial Descrição do esboço Desenvolvimento Versão intermediárias Validação Versão final Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 47

Modelo Evolucionário Tipos: Prototipação Incremental Espiral Métodos Ágeis Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 48

PROTOTIPAÇÃO Conversar com o Cliente Construir/Revisar protótipo Revisão e Teste pelo Cliente Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 49

PROTOTIPAÇÃO Fim Início Engenharia do produto Coleta e refinamento dos requisitos Projeto rápido Refinamento do protótipo Avaliação do protótipo pelo cliente Construção do protótipo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 50

PROTOTIPAÇÃO Início Fim Coleta e refinamento dos requisitos COLETA DOS REQUISITOS: Engenharia do produto Refinamento do protótipo Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 51

PROTOTIPAÇÃO Início Fim Engenharia do produto Refinamento do protótipo Coleta e refinamento dos requisitos Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo PROJETO RÁPIDO: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 52

PROTOTIPAÇÃO Início Fim Engenharia do produto Refinamento do protótipo Coleta e refinamento dos requisitos Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo CONSTRUÇÃO PROTÓTIPO: Implementação do projeto rápido serve como o primeiro sistema - recomendado que se jogue fora futuramente Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 53

PROTOTIPAÇÃO Início Fim Engenharia do produto Refinamento do protótipo Coleta e refinamento dos requisitos Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo AVALIAÇÃO DO PROTÓTIPO: Cliente e desenvolvedor avaliam o protótipo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 54

PROTOTIPAÇÃO Início Fim Engenharia do produto Refinamento do protótipo Coleta e refinamento dos requisitos Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo REFINAMENTO DOS REQUISITOS: Cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 55

PROTOTIPAÇÃO Início Fim Engenharia do produto Refinamento do protótipo Coleta e refinamento dos requisitos Avaliação do protótipo pelo cliente Projeto rápido Construção do protótipo CONSTRUÇÃO PRODUTO: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 56

Problemas com a Prototipação O processo não é visível. Os sistemas são freqüentemente mal-estruturados e mal-documentados. Pode exigir ferramentas e técnicas especiais. Processo não é claro, dificuldade de planejamento e gerenciamento. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 57

Modelo Incremental incremento 1 Engenharia de Sistemas / Informação Análise Projeto Codificação Testes produto liberado do incremento 1 incremento 2 Análise Projeto Codificação Testes produto liberado do incremento 2 incremento 3 Análise Projeto Codificação Testes produto liberado do incremento 3 incremento 4 Análise Projeto Codificação Testes produto liberado do incremento 4 Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 58

Um processo de desenvolvimento iterativo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 59

Vantagens do desenvolvimento incremental Entrega acelerada dos serviços de cliente. Cada incremento fornece a funcionalidade de mais alta prioridade para o cliente. Engajamento do usuário com o sistema. Os usuários têm de estar envolvidos no processo de desenvolvimento, o que significa que o sistema muito provavelmente atenderá aos seus requisitos, e que os usuários estarão mais comprometidos com ele. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 60

Problemas com desenvolvimento incremental Problemas de gerenciamento O progresso pode ser difícil de julgar e os problemas, difíceis de serem encontrados, porque não há documentação que mostre o que foi feito. Problemas contratuais O contrato normal pode incluir uma especificação; sem uma especificação, formulários diferentes de contrato têm de ser usados. Problemas de validação Sem uma especificação, contra o que o sistema está sendo testado. Problemas de manutenção Mudanças contínuas tendem a corromper a estrutura do software, o que torna mais dispendioso mudar e evoluir para atender aos novos requisitos. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 61

Desenvolvimento incremental e prototipação Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 62

Desenvolvimento Incremental x Prototipação Para alguns sistemas grandes, o desenvolvimento e a entrega incremental e iterativa pode não ser prático; isso é especialmente verdadeiro quando múltiplas equipes estão trabalhando em localidades diferentes. Prototipação, no sentido de um sistema experimental, é desenvolvido como base para a formulação de requisitos que podem ser usados. O processo de prototipação inicia com aqueles requisitos que não são bem compreendidos. Esse sistema é descartado quando a especificação do sistema for acordado. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 63

Modelo Espiral (Boehm) Planejamento Análise de Risco 1 2 Planejamento: determinação dos objetivos, alternativas e restrições Análise dos riscos: análise de alternativas e identificação /resolução dos riscos Engenharia: desenvolvimento do produto no nível seguinte 4 3 Avaliação do cliente Engenharia Avaliação feita pelo cliente: avaliação dos resultados da engenharia Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 64

Modelo Espiral São identificados objetivos específicos, tais como desempenho e funcionalidade. São determinadas alternativas para atingir estes objetivos. São identificadas restrições do processo e do produto e é elaborado um relatório de gestão detalhado. Coleta inicial dos requisitos e planejamento do projeto Planejamento baseado nos comentários do cliente Planejamento Análise de risco Estratégias alternativas, dependendo dos riscos detectados, podem ser planejados. Avaliação do cliente Engenharia Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 65

Modelo Espiral Planejamento Avaliação do cliente Análise de risco Engenharia Para cada risco do projeto identificado em Planejamento é levada a cabo uma análise detalhada. Decisão de prosseguir/não prosseguir Riscos: Riscos de projeto Riscos técnicos Riscos de produto Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 66

Modelo Espiral Planejamento Análise de risco Na direção de um sistema concluído Protótipo de software inicial Avaliação do cliente Engenharia Sistema construído pela engenharia Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 67

Modelo Espiral tarefas requeridas para obter um feedback do cliente baseado na avaliação da representação do software criado durante a fase de engenharia e implementado durante a fase de instalação Planejamento Análise de risco Avaliação do cliente Engenharia Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 68

Técnicas de 4 a Geração Obtenção dos Requisitos Estratégia de Projeto Implementação usando 4GL Testes Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 69

Técnicas de 4 a Geração Concentra-se na capacidade de se especificar o software a uma máquina em um nível que esteja 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 e o código fonte seja gerado automaticamente a partir dessas especificações. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 70

Técnicas de 4 a Geração O ambiente de desenvolvimento inclui as ferramentas: linguagens não procedimentais para consulta de banco de dados geração de relatórios manipulação de dados interação e definição de telas geração de códigos capacidade gráfica de alto nível capacidade de planilhas eletrônicas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 71

Combinando Paradigmas obtenção preliminar dos requisitos análise dos requisitos prototipação técnicas 4G modelo espiral projeto prototipação enésima interação técnicas 4G codificação técnicas 4G modelo espiral: enésima interação testes Sistema Completo Manutenção Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 72

Qual Modelo Escolher Escolher um modelo de desenvolvimento para o sistema Riscos significativos na interface com o utilizador desenvolvimento evolutivo. Riscos de segurança Desenvolvimento Formal Riscos na integração dos sub-sistemas Modelo Cascata Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 73

Métodos Ágeis A insatisfação com os overheads envolvidos nos métodos de projeto levou à criação dos métodos ágeis. Esses métodos: Enfocam o código ao invés do projeto; São baseados na abordagem iterativa para desenvolvimento de software; São destinados a entregar software de trabalho e evoluí-lo rapidamente para atender aos requisitos que se alteram. Os métodos ágeis são, provavelmente, os mais adequados para sistemas de negócio de pequeno/médioporte. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 74

Métodos Ágeis Devido à rápida mudança dos ambientes de negócio, os negócios devem responder às novas oportunidades e à competição. Isso requer software e desenvolvimento rápido, e a entrega é, frequentemente, o requisito mais crítico para sistemas de software. Os negócios podem estar dispostos a aceitar um software de baixa qualidade se a entrega rápida e a funcionalidade essencial for possível. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 75

Princípios dos Métodos Ágeis Envolvimento do cliente Entrega incremental Clientes devem ser profundamente envolvidos no processo de desenvolvimento. Seu papel é fornecer e priorizar novos requisitos do sistema e avaliar as iterações do sistema. O software é desenvolvido em incrementos e o cliente especifica os requisitos a serem incluídos em cada incremento. Pessoas, não processo Aceite as mudanças Mantenha a simplicidade As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Os membros da equipe devem desenvolver suas próprias maneiras de trabalhar sem processos prescritivos. Projete o sistema para acomodar mudanças. Elimine a complexidade do sistema. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 76

Problemas com Métodos Ágeis Difícil manter o interesse dos clientes que estão envolvidos no processo. Os membros da equipe podem ser inadequados para o intenso envolvimento que caracteriza os métodos ágeis. A priorização de mudanças pode ser difícil onde existem múltiplos stakeholders. A manutenção da simplicidade requer trabalho extra. Problemas nos contratos. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 77

XP - extreme Programming É talvez o mais conhecido e mais amplamente usado dos métodos ágeis. A extreme programming (XP) leva uma abordagem extrema para desenvolvimento iterativo. Novas versões podem ser compiladas várias vezes por dia. Os incrementos são entregues para os clientes a cada 2 semanas. Todos os testes devem ser realizados para cada nova versão. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 79

extreme Programming A quem se destina Grupos de 2 a 10 programadores Projetos de 1 a 36 meses (calendário) De 1000 a 250 000 linhas de código Papéis: Programadores (foco central)(sem hierarquia) Treinador ou Técnico (coach) Acompanhador (tracker) Cliente Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 80

Os 4 valores de XP Comunicação Simplicidade. Retorno (feedback) Coragem Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 81

Práticas do extreme Programming Planejamento Incremental Pequenos releases Projeto simples consiste em decidir o que é necessário ser feito e o que pode ser adiado no projeto. Conjunto mínimo útil de funcionalidade é desenvolvido Projeto suficiente para atender aos requisitos atuais. Desenvolvimento test-first Uso um framework automatizado. Refactoring Programação em pares Propriedade coletiva Integração contínua Ritmo sustentável Cliente on-site Espera-se que todos os desenvolvedores recriem o código continuamente. Os desenvolvedores trabalham em pares. Os pares trabalham em todas as áreas do sistema. Tarefa concluída é automaticamente integrada ao sistema. Não aceitar grande quantidade de horas extras. Um usuário do sistema deve estar disponível em tempo integral. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 82

Cenários de requisitos Em um processo XP, os requisitos de usuários são expressos como cenários ou histórias de usuários. Essas histórias são escritas em cartões, e a equipe de desenvolvimento quebra-os em tarefas de implementação. Essas tarefas são as bases das estimativas de cronograma e de custo. O cliente escolhe as histórias para inclusão no próximo release, baseado nas suas prioridades e nas estimativas de cronograma. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 83

Cartão de estória para baixar documentos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 84

Programação Pareada Erro de um detectado imediatamente pelo outro (grande economia de tempo). Maior diversidade de idéias, técnicas, algoritmos. Enquanto um escreve, o outro pensa em contra exemplos, problemas de eficiência, etc. Vergonha de escrever código feio (gambiarras) na frente do seu par. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 85

Quando XP Não Deve Ser Experimentada? Quando o cliente não aceita as regras do jogo. Quando o cliente quer uma especificação detalhada do sistema antes de começar. Quando os programadores não estão dispostos a seguir (todas) as regras. Se (quase) todos os programadores do time não são experientes. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 86

Quando XP Não Deve Ser Experimentada? Grupos grandes (>10 programadores). Quando feedback rápido não é possível: sistema demora 6h para compilar. testes demoram 12h para rodar. exigência de certificação que demora meses. Quando o custo de mudanças é essencialmente exponencial. Quando não é possível realizar testes (muito raro). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2007 Slide 87