39
MC 426 IC Unicamp – M. Cecilia C. Baranauskas Processos e Modelos de Processos de Software Natureza, Categorias, Atividades…

Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

  • Upload
    hathuy

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Processos e Modelos de Processos de Software

l Natureza, Categorias, Atividades…

Page 2: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

O Processo de Software

l Conjunto coerente de atividades requeridas paradesenvolver um sistema de software • Especificação• Design/Projeto• Validação• Evolução

l O Modelo de Processo de Software é umarepresentação abstrata de um processo• descrição de um processo de uma perspectiva particular

Page 3: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Categorias de Desenvolvimento de Software

l Desenvolvimento clássico/genérico (ex. ModeloCascata, o Modelo Espiral, outros)• Especificação e desenvolvimento são fases distintas e

separadas

l Desenvolvimento Evolucionário• Especificação e desenvolvimento são interligadas

l Desenvolvimento Formal • Um modelo matemático de sistema é formalmente

transformado até a implementação

Page 4: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

O Modelo Waterfall (Cascata)

l Relaciona a forma e função do sistema àestrutura do processo

l É difíciI entender e expressar os requisitosantecipadamente

Viability Analysis

Requirements

Product Design

Coding

Integrating

Implementing

Maintenance

Documents andSpecification

VerificationValidation

Tests

Page 5: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Evolucionário

l Desenvolvimento Exploratório• Objetivo é trabalhar com clientes e evoluir um sistema final a

partir de uma especificação geral inicial. • Deve começar com requisitos bem entendidos

l Prototipação descartável• Objetivo é entender os requisitos do sistema• Deve começar com requisitos ainda pouco entendidos

Page 6: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Evolucionário

ValidationFinal

version

DevelopmentIntermediate

versions

SpecificationInitial

version

Outline

description

Concurrent

activities

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 7: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Evolucionário

l Problemas• Falta de visibilidade do processo• Sistemas pouco estruturados• Habilidades especiais (ex. Linguagens para prototipação

rápida) podem ser requeridas

l Aplicabilidade• Sistemas interativos de pequeno a médio porte• Partes de grandes sistemas (ex. a interface de usuário)• Sistemas de vida curta

Page 8: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Formal de Sistemas

l Baseado na transformação de uma especificaçãomatemática através de representações diferentes atéchegar ao programa executável

l Transformações preservam a corretude (‘correctness-preserving’) • é direto mostrar que o programa está em conformidade com

sua especificação

l Embutido na abordagem ‘Cleanroom’ do desenvolvimento de software

Page 9: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Transformações Formais

R2Formal

specificationR3

Executableprogram

P2 P3 P4

T1 T2 T3 T4

Proofs of transformation correctness

Formal transformations

R1

P1Notação

matemática

da

especificação

Refinamentos

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 10: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Formal de sistemas

l Problemas• Habilidade e treino para aplicar a técnica• Dificuldade para especificar formalmente alguns aspectos do

sistema como por ex. a interface de usuário

l Aplicabilidade• Sistemas Críticos

» aqueles onde a segurança deve ser feita antes do sistema ser colocado em operação

Page 11: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Iteração de Processo

l Requisitos do sistema SEMPRE evoluem no curso do projeto• Iteração do processo onde fases anteriores são retrabalhadas

é sempre parte do processo para grandes sistemas

l Iteração pode ser aplicada para qualquer modelogenérico de processo

l Duas abordagens (relacionadas) • Desenvolvimento incremental• Desenvolvimento espiral

Page 12: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Incremental

l Em vez de entregar o sistema “de uma só vez”, o desenvolvimento e a entrega são quebrados emincrementos• cada incremento entrega parte da funcionalidade

requerida

l Requisitos do usuário são priorizados• requisitos de mais alta prioridade são incluídos nos

incrementos iniciais

l Uma vez iniciado o desenvolvimento de um incremento, os requisitos são congelados• embora requisitos para incrementos posteriores possam

continuar a evoluir

Page 13: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento Incremental

Valida te

increment

Develop systemincrement

Design systemarchitecture

Integrateincrement

Valida te

system

Define outline requirements

Assign requirements to increments

System incomplete

Finalsystem

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 14: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Ex. Extreme Programming

l Nova abordagem ao desenvolvimento baseada no desenvolvimento e entrega de incrementos pequenosda funcionalidade

l Depende de melhorias constantes no código, envolvimento do usuário no grupo de desenvolvimento e programação por pares (codifica/testa)

Page 15: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Vantagens do DesenvolvimentoIncremental

l Funcionalidade do sistema fica disponível mais cedo aocliente

l Incrementos iniciais funcionam como protótipos paraajudar a elicitar requisitos para incrementossubsequentes

l Baixo risco de falha geral do projetol Os serviços de mais alta prioridade tendem a passar por

mais testes

Page 16: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Desenvolvimento espiral

l O processo é representado como uma espiral ao invésde uma seqüência de atividades com realimentação.

l Cada loop na espiral representa uma fase no processo.l Sem fases definidas, tais como especificação ou projeto

– os loops na espiral são escolhidos dependendo do que é requisitado.

l Os riscos são explicitamente avaliados e resolvidos aolongo do processo.

Page 17: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Modelo espiral do processo de software

Page 18: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Setores do modelo espiral

l Definição de objetivos• Objetivos específicos para a fase são identificados.

l Avaliação e redução de riscos• Riscos são avaliados e atividades são realizadas para reduzir os riscos-

chave.

l Desenvolvimento e validação• Um modelo de desenvolvimento para o sistema, que pode ser qualquer

um dos modelos genéricos, é escolhido.

l Planejamento• O projeto é revisado e a próxima fase da espiral é planejada.

Page 19: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Atividades de processo

l Especificação de software l Projeto e implementação de softwarel Validação de softwarel Evolução de software

Page 20: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Especificação de Software

l Processo de estabelecer que serviços são requeridos e as limitações na operação e desenvolvimento do sistema

l Processo de Engenharia de Requisitos• Estudo de viabilidade• Elicitação e Análise de Requisitos• Especificação de Requisitos• Validação de Requisitos

Page 21: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Um Processo (geral) de Engenhariade Requisitos

Feasibilitystudy

Requirementselicitation and

analysisRequirementsspecification

Requirementsvalidation

Feasibilityreport

Systemmodels

User and systemrequirements

Requirements

document

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 22: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Design e implementação de Software

l Processo de converter a especificação do sistema emum sistema executável

l Design/Projeto do Software • Estrutura que representa a especificação

l Implementação• Traduz essa estrutura em um programa executável

l Atividades de design e implementação são inter-relacionadas

Page 23: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Atividades e produtos de um processo de design de software

Architecturaldesign

Abstractspecification

Interfacedesign

Componentdesign

Datastructuredesign

Algorithmdesign

Systemarchitecture

Softwarespecification

Interfacespecification

Componentspecification

Datastructure

specification

Algorithmspecification

Requirementsspecification

Design activities

Design products

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 24: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Métodos de Design

l Abordagens sistemáticas para o design de softwarel O projeto/design é geralmente documentado como um

conjunto de modelos gráficosl Ex. de Modelos :

• Modelo de fluxo de dados (DFD)• Modelo entidade-relação-atributo (MER)• Modelo estrutural• Modelo de objetos

Page 25: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Validação de Software

l Verificação e validação objetivam mostrar que• O sistema está em conformidade com sua especificação• e satisfaz os requisitos do usuário/cliente

l Envolve checar e revisar processos e teste de sistemal Teste de sistema envolve executar o sistema com casos

de teste que são derivados da especificação de dados reais a serem processados pelo sistema

Page 26: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Um processo (geral) de Testes

Sub-systemtesting

Moduletesting

Unittesting

Systemtesting

Acceptancetesting

Componenttesting

Integration testing Usertesting

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 27: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Fases de Teste

Requirementsspecification

Systemspecification

Systemdesign

Detaileddesign

Module andunit codeand tess

Sub-systemintegrationtest plan

Systemintegrationtest plan

Acceptancetest plan

ServiceAcceptance

testSystem

integration testSub-system

integration test

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 28: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Evolução de Sistema

Assess existing

systems

Define systemrequirements

Propose systemchanges

Modify

systems

Newsystem

Existing

systems

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 29: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

l Em geral dominam custo do sistema. • Os custos do software em um PC em geral são

maiores que o custo do hardware • Para sistemas de vida longa, manutenção custa

várias vezes mais que custos de desenvolvimento

l Engenharia de Software compreendedesenvolvimento de software com custo viável

Custos de Software

Page 30: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Quais são os custos da engenharia de software?

l 60% dos custos são de desenvolvimentol 40% são custos de testes. l Para software personalizado custos da

evolução excedem custos do desenvolvimentol Custos variam dependendo do tipo de sistema

sendo desenvolvido e dos requisitos e atributos do sistema (performance, segurança)

l Distribuição dos custos depende do modelo de desenvolvimento utilizado

Page 31: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Distribuição de custos nasatividades

Figura 1.1

Distribuição de custos

nas atividades de

engenharia de

software

Page 32: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Custos de desenvolvimento de produto

Figura 1.2

Custos de desenvolvimento do produto

Page 33: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Suporte automatizado aoprocesso (CASE)

l Computer-aided software engineering (CASE) ésoftware para apoio aos processos de desenvolvimentoe evolução de software

l Automação de atividades:• Editores gráficos para modelagem• Dicionário de dados para gerenciar as entidades do projeto• Construtores gráficos para construção da UI • Debuggers

Page 34: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Tecnologia CASE

l Tools• Suporte a tarefas individuais como consistência do projeto,

edição de texto, etc.

l Workbenches• Suporte a fases como especificação ou design • Normalmente incluem ferramentas integradas

l Environments• Suporte a partes substanciais do processo de software• Normalmente incluem vários workbenches integrados

Page 35: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Tools, workbenches, environments

Single-methodworkbenches

General-purposeworkbenches

Multi-methodworkbenches

Language-specificworkbenches

Programming TestingAnalysis and

design

Integratedenvironments

Process-centredenvironments

Filecomparators

CompilersEditors

EnvironmentsWorkbenchesTools

CASEtechnology

Based on ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1

Page 36: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Classificação baseada em atividadesReengineering tools

Testing tools

Debugging tools

Program analysis tools

Language-processingtools

Method support tools

Prototyping tools

Configurationmanagement tools

Change management tools

Documentation tools

Editing tools

Planning tools

Specification Design Implementation Verificationand

Validation

Page 37: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Síntese

l Processos de Software são atividades envolvidas naprodução e evolução de um sistema de software • São representados em um Modelo de Processo de Software

l Atividades gerais envolvem:• Especificação, design, implementação, validação e evolução

l Processos genéricos descrevem uma dada organizaçãodas atividades de desenvolvimento de software

l Modelos Iterativos de processo descrevem o processode software como um ciclo de atividades

Page 38: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Síntese

l Engenharia de Requisitos é um processo de desenvolvimento de especificação de software

l Processos de design e implementação transformam a especificação em um programa executável

l Validação envolve checar se o sistema está emconformidade com sua especificaçãoe e necessidadesdo usuário

l Evolução refere-se a modificações no sistema depoisque está em uso

l Tecnologias CASE apoiam processos e atividades de desenvolvimento de software

Page 39: Processos e Modelos de Processos de Softwareariadne/mc436/1s2017/ch03CecModProc.pdf · Processos de Software são atividades envolvidas na produção e evolução de um sistema de

MC 426 IC Unicamp – M. Cecilia C. Baranauskas

Referências

l ©Ian Sommerville 2001 Software Engineering, 6th

edition. Chapter 3

l ©Ian Sommerville 2007 Engenharia de Software, 8ª.

edição. Chapter 4, Pearson, Addison Wesley

l Carvalho, A.M.B.R.; Chiossi, T.C.S. 2001,

Introdução à Engenharia de Software