Engenharia de Software



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

Processo de Software

SOFTWARE PROCESSES. Ian Sommerville, 8º edição Capítulo 4 Aula de Luiz Eduardo Guarino de Vasconcelos

Processos de Software

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

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

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

Engenharia de Software I CURSO DE INFORMÁTICA. 3O SEMESTRE PROF.: LUIS AUGUSTO MACHADO MORETTO. ESP.

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

ENG1000 Introdução à Engenharia

Professor: Curso: Disciplina:

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

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

O que é um processo de software?

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

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

Engenharia de Software

Sistemas de Informação I

Tópicos Especiais em Engenharia de Software

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

Especialização em Engenharia de Software e Banco de Dados

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

Engenharia de Requisitos

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Processos de Desenvolvimento de Software

Engenharia de Software II

PLANOS DE CONTINGÊNCIAS

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

Modelos de processos de desenvolvimento de software

Gerenciamento de Requisitos

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

Capítulo 10. Especificações Formais

Introdução à Engenharia de Software

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

Prototipação de Software

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

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

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

5. Métodos ágeis de desenvolvimento de software

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

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

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

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

Engenharia de Software II

PROFESSOR: CRISTIANO MARIOTTI

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

Teste de Software. Ricardo Argenton Ramos Engenharia de Software I

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

Ciclo de vida: fases x atividades

Projeto de Arquitetura

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

Feature-Driven Development

Projeto de Arquitetura

Engenharia de Software Processo de Desenvolvimento de Software

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

Gerenciamento de Problemas

Requisitos de Software

Modelos de Processo (métodos)

APOO Análise e Projeto Orientado a Objetos. Requisitos

Projeto de Sistemas I

Engenharia de Software II

RUP Rational Unified Process

Processo de Criação de Cronogramas Prazo

Uma Introdução à Engenharia de Software

Engenharia de Software I. Curso de Sistemas de Informação. Karla Donato Fook DESU / DAI. Ferramentas

O Impacto da Engenharia de Requisitos no Processo de Métricas. Fátima Cesarino CAIXA

Programação Extrema. Luis Fernando Machado. Engenharia de Software

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

O Processo Unificado: Captura de requisitos

Processos de Design de IHC (Parte II)

Capítulo X. Gerenciar Mudanças dos Requisitos. Aluizio Saiter, M. Sc.

Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF

Engenharia de Software

ENGENHARIA DE SOFTWARE I

Concepção e Elaboração

GARANTIA DA QUALIDADE DE SOFTWARE

Pós Graduação Engenharia de Software

Fundamentos de Engenharia de Software. Josino Rodrigues

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

Engenharia de Software

Introdução ao Processo Unificado (PU)

O Processo de Desenvolvimento de Software

PLANEJAMENTO E PROJETOS. Lílian Simão Oliveira

Levantamento, Análise e Gestão Requisitos. Aula 12

Gerenciamento de Níveis de Serviço

Introdução à Computação

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA

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

Verificação é um processo para se determinar se os produtos, (executáveis ou

Boas Práticas em Gerenciamento de Projetos Material utilizado nas aulas de Pós-graduação do Centro de Informática

Transcrição:

Engenharia de Software Capítulo 3 Processos de Software Slides do Livro do Sommerville, 2000 Disponíveis em inglês em www.software-engin.com Traduzidos por Jacinta Pereira Graduando do Curso de Letras da UFC Apresentados por Lara Popov Zambiasi IFSC Câmpus Chapecó lara.popov@ifsc.edu.br http://professores.chapeco.ifsc.edu.br/lara/eng/ Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 1

Processos de Software Conjuntos de atividades coerentes para especificar, projetar, implementar e testar sistemas de software Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 2

Objetivos Introduzir modelos de processo de software Descrever uma variedade de modelos de processo e quando eles podem ser usados Descrever esboços de modelos de processo para engenharia de requisitos, desenvolvimento de software, teste e evolução Apresentar a tecnologia CASE para dar suporte às atividades de processo de software Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 3

Tópicos abordados Modelos de processo de software Iteração do Processo Especificação de Software Projeto e implementação do Software Validação do Software Evolução do Software Suporte de processo automatizado Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 4

O processo de software Um conjunto estruturado de atividades requeridas para desenvolver um sistema de software Especificação Projeto Validação Evolução Um modelo de processo de software é uma representação abstrata de um processo. Apresenta uma descrição de um processo de alguma perspectiva particular Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 5

Modelos genéricos de processo de software O modelo cascata Separa e distingue fases de especificação e desenvolvimento Desenvolvimento incremental Especificação, desenvolvimento e validação são entrelaçados Desenvolvimento baseado na reutilização O sistema é montado a partir de componentes existentes Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 6

Modelo Cascata Definição de Requisitos Projeto de sistema e software Implementação e teste unitário Integração e teste de sistema Operação e manutenção Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 7

Fases do modelo cascata Análise e definição de requisitos Projeto do sistema e do software Implementação e teste da unidade Integração e teste do sistema Operação e manutenção A desvantagem do modelo cascata é a dificuldade de acomodar mudanças depois que o processo está em andamento Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 8

Problemas do modelo cascata Partição inflexível do projeto em diferentes estágios Isto faz com que seja difícil responder aos requisitos mutáveis dos clientes Portanto, este modelo só é apropriado quando os requisitos são bem entendidos Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 9

Desenvolvimento incremental Desenvolvimento incremental O objetivo é trabalhar com clientes e evoluir o sistema final de um esboço de especificação inicial (versões). Deve começar com os requisitos que estão bem entendidos Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 10

Desenvolvimento incremental. Especificação. Versão inicial. Descrição do esboço Desenvolvimento Versões intermediárias Validação Versão final Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 11

Desenvolvimento incremental Problemas Falta de visibilidade do processo Sistemas são, em geral, pobremente estruturados Habilidades especiais (ex. em línguas para rápida preparação de protótipos ) podem ser requeridas Aplicabilidade Para sistemas interativos pequenos ou médios Para partes de sistemas grandes (ex. a interface de usuário) Para sistemas de curto-prazo Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 12

Desenvolvimento orientado ao reuso Baseado no reuso sistemático, onde os sistemas são integrados de componentes existentes ou sistemas padronizados Estágios do Processo Análise do componente Modificação dos requisitos Projeto do sistema com reuso Desenvolvimento e integração Esta abordagem está se tornando mais importante, mas a experiência ainda é limitada com ela Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 13

Desenvolvimento orientado ao reuso Especificação de requisitos Análise de componentes Alterações nos requisitos Projeto de sistema com reuso Desenvolvimento e Integração Validação de sistema Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 14

Iteração do Processo Requisitos do sistema SEMPRE evoluem no decorrer de um projeto, então a iteração do processo, onde estágios anteriores são retrabalhados, é sempre parte de um processo para sistemas maiores Iteração pode ser aplicada para qualquer modelo de processo genérico Duas abordagens (relacionadas) Desenvolvimento incremental Desenvolvimento espiral Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 15

Desenvolvimento incremental Ao invés de entregar o sistema de uma única vez, o desenvolvimento e a entrega é dividida em incrementos com cada incremento entregando parte da funcionalidade requerida Os requisitos dos usuários são priorizados e os requisitos de maior prioridade são incluídos em incrementos iniciais Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados embora requisitos para incrementos posteriores possam continuar a evoluir Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 16

Vantagens do desenvolvimento incremental O valor agregado ao Cliente está na entrega em cada incremento de modo que a funcionalidade do sistema estará disponível mais cedo Incrementos iniciais funcionam como protótipos para ajudar a evocar requisitos para incrementos posteriores Menores riscos de falha no projeto em geral Os serviços do sistema de alta prioridade tendem a receber a maioria dos testes Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 17

Programação extrema Nova abordagem para o desenvolvimento de software baseado no desenvolvimento e entrega de incrementos de funcionalidade bem pequenos Conta com melhoramento constante do código, envolvimento do usuário no time de desenvolvimento e programação em pares Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 18

Desenvolvimento espiral Processo é representado como uma espiral ao invés de uma seqüência de atividades com retorno Cada volta na espiral representa uma fase no processo. Não existem fases fixas como especificação ou projeto as voltas na espiral são escolhidas de acordo com o que é requerido Os riscos são explicitamente cotados e resolvidos durante todo o processo Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 19

Modelo espiral do processo de software Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 20

Setores do modelo espiral Estabelecimento de objetivos Objetivos específicos para a fase são identificados Avaliação e redução de riscos Os riscos são avaliados e atividades postas em prática para reduzir os riscos principias Desenvolvimento e validação Um modelo de desenvolvimento para o sistema é escolhido, podendo ser qualquer um dos modelos genéricos Planejamento O projeto é revisado e a fase seguinte da espiral é planejada Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 21

Especificação do Software O processo de estabelecer que serviços são requisitados e quais as restrições na operação e desenvolvimento do sistema Processo de engenharia de requisitos Estudo de viabilidade Elicitação e análise dos requisitos Especificação dos requisitos Validação dos requisitos Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 22

O processo de engenharia de requisitos Feasibility study Feasibility report Requirements elicitation and analysis System models Requirements specification User and system requirements Requirements validation Requirements document Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 23

Projeto e implementação de Software O processo de converter a especificação do sistema em um sistema executável Projeto de Software Projeto de uma estrutura de software que perceba a especificação Implementação Transformar esta estrutura em um programa executável As atividades de projeto e implementação são intimamente relacionadas e podem ser entrelaçadas Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 24

Atividades de processo de projeto Projeto arquitetural Especificação abstrata Projeto de interface Projeto de componente Projeto de estrutura de dados Projeto de algoritmo Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 25

O processo do projeto de software Requirements specification Design activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design System architecture Software specification Interface specification Component specification Data structure specification Algorithm specification Design products Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 26

Métodos do Projeto Abordagens sistemáticas para desenvolver um projeto de software O projeto é geralmente documentado como uma série de modelos gráficos Modelos possíveis Modelo de fluxo de dados Modelo de atributos relacionados à entidade Modelo Estrutural Modelos de objetos Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 27

Programando e Depurando Transformar um projeto em um programa e remover erros do programa Programação é uma atividade pessoal não existe processo de programação genérico Programadores realizam alguns testes de programa para detectar falhas no programa e remover tais falhas no processo de depuração Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 28

O processo de depuração Locate error Design error repair Repair error Re-test program Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 29

Validação do Software Verificação e validação pretendem mostrar que um sistema está de acordo com sua especificação e cumpre os requisitos do cliente do sistema Envolve a verificação e a revisão de processos e teste do sistema Teste de sistema envolve a execução do sistema com cases de teste que são derivados da especificação dos dados reais a serem processados pelo sistema Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 30

O processo de teste Unit testing Module testing Sub-system testing System testing Acceptance testing Component testing Integration testing User testing Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 31

Etapas de teste Teste da Unidade Os componentes individuais são testados Teste do Módulo Conjuntos de componentes dependentes relacionados são testados Teste do Sub-sistema Os módulos são integrados em sub-sistemas e testados. O foco aqui deve ser no teste da interface Teste do Sistema Teste do sistema como um todo. Teste das propriedades emergentes Teste de Aceitação Teste com dados do consumidor para verificar que é aceitável Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 32

Fases de teste Requirements specification System specification System design Detailed design Acceptance test plan System integration test plan Sub-system integration test plan Module and unit code and tess Service Acceptance test System integration test Sub-system integration test Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 33

Evolução do Software Software é hereditariamente flexível e pode ser mudado. Como os requisitos mudam ao se alterar as circunstâncias de negócios, o software que suporta o negócio também deve evoluir e mudar Embora tenha havido uma demarcação entre desenvolvimento e evolução (manutenção), este é cada vez mais irrelevante na medida que menos e menos sistemas são totalmente novos Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 34

Evolução do sistema Define system requirements Assess existing systems Propose system changes Modify systems Existing systems New system Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 35

Suporte ao processo automatizado (CASE) Engenharia de software auxiliada por computador (CASE) é um software para dar suporte aos processos de desenvolvimento e evolução do software Automação da atividade Editores gráficos para o desenvolvimento de modelos de sistema Dicionário de dados para gerenciar entidades de projeto Construtor Gráfico UI para a construção de interface para usuário Depuradores para suportar detecção de falhas no sistema Tradutores automáticos para gerar novas versões de um programa Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 36

Tecnologia Case Tecnologia Case tem levado a melhorias significantes no processo de software embora não na ordem de magnitude de melhorias que foram antes previstos A engenharia de software requer pensamento criativo isto não é prontamente automatizável A engenharia de software é uma atividade de grupo e, para grandes projetos, muito tempo é utilizado em interações do grupo. A tecnologia CASE não os suporta de fato Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 37

CASE classificação A classificação nos ajuda a entender os diferentes tipos de ferramentas de CASE e seu suporte para atividades do processo Perspectiva Funcional As ferramentas são classificadas de acordo com suas funções específicas Perspectiva do Processo As ferramentas são classificadas de acordo com as atividades do processo que suportam Perspectiva da Integração As ferramentas são classificadas de acordo com sua organização em unidades integradas Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 38

Classificação das Ferramentas Funcionais Tool type Planning tools Editing tools Change management tools Configuration management tools Prototyping tools Method-support tools Language-processing tools Program analysis tools Testing tools Debugging tools Documentation tools Re-engineering tools Examples PERT tools, estimation tools, spreadsheets Text editors, diagram editors, word processors Requirements traceability tools, change control systems Version management systems, system building tools Very high-level languages, user interface generators Design editors, data dictionaries, code generators Compilers, interpreters Cross reference generators, static analysers, dynamic analysers Test data generators, file comparators Interactive debugging systems Page layout programs, image editors Cross-reference systems, program restructuring systems Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 39

Classificação baseada em atividades (Funcional vs. Processo) Reengineering tools Testing tools Debugging tools Program analysis tools Language-processing tools Method support tools Prototyping tools Configuration management tools Change management tools Documentation tools Editing tools Planning tools Specification Design Implementation Verification and Validation

Perspectiva de Integração CASE Ferramentas Suporta tarefas individuais do processo como verificação da consistência de um projeto, edição de texto, etc. Áreas de trabalho (workbenches) Suporte a fases do processo como especificação ou projeto. Normalmente inclui uma variedade de ferramentas integradas Ambientes Suporta tudo ou uma parte substancial de todo um processo de software. Normalmente inclui várias áreas de trabalho integradas Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 41

Ferramentas, áreas de trabalho e ambientes CASE technology Tools Workbenches Environments Editors Compilers File comparators Integrated environments Process-centred environments Analysis and design Programming Testing Multi-method workbenches Single-method workbenches General-purpose workbenches Language-specific workbenches Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 42

Pontos chave Processos de software são as atividades envolvidas na produção e evolução de um sistema de software. Eles são representados em um modelo de processo de software As atividades gerais são especificação, projeto e implementação, validação e evolução Modelos genéricos de processo descrevem a organização processos de software Modelos iterativos de processo descrevem o processo de software como um de atividades Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 43

Pontos chave Engenharia de requisitos é o processo de desenvolver uma especificação de software Os processos de projeto e implementação transformam a especificação em um programa executável A Validação envolve verificar que o sistema cumpre com as especificações e as necessidades do usuário Evolução se preocupa em modificar o sistema depois que ele está em uso Tecnologia CASE suporta atividades de processo de software Ian Sommerville 2000 Software Engineering, 6th edição. Cápítulo 3 Slide 44