Você está na página 1de 49

Engenharia de Software

Captulo 3 Processos de Software


Slides do Livro do Sommerville, 2000 Disponveis em ingls em www.software-engin.com
Apresentados por

Bernadette Farias Lscio


Slides traduzidos por Jacinta Pereira Graduando do Curso de Letras da UFC e cedidos pela Profa. Rossana Andrade

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 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 edio . Cptulo 3

Slide 2

Objetivos

Introduzir modelos de processo de software Descrever uma variedade de modelos de processo e quando eles podem ser usados Descrever esboos de modelos de processo para engenharia de requisitos, desenvolvimento de software, teste e evoluo Apresentar a tecnologia CASE para dar suporte s atividades de processo de software

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 3

Tpicos abordados

Modelos de processo de software Iterao do Processo Especificao de Software Projeto e implementao do Software Validao do Software Evoluo do Software Suporte de processo automatizado

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 4

O processo de software

Um conjunto estruturado de atividades requeridas para desenvolver um sistema de software


Especificao Projeto Validao Evoluo

Um modelo de processo de software uma representao abstrata de um processo. Apresenta uma descrio de um processo de alguma perspectiva particular
Software Engineering, 6th edio . Cptulo 3 Slide 5

Ian Sommerville 2000

Modelos genricos de processo de software

O modelo cascata
Separa e distingue fases de especificao e desenvolvimento
Especificao e desenvolvimento so entrelaados Um modelo de sistema matemtico formalmente transformado para uma implementao

Desenvolvimento evolucionrio

Desenvolvimento Formal de sistemas

Desenvolvimento baseado na reutilizao


O sistema montado a partir de componentes existentes

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 6

Modelo Cascata
Requirements definition System and software design Implementation and unit testing Integr ation and system testing Operation and maintenance

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 7

Fases do modelo cascata

Anlise e definio de requisitos Projeto do sistema e do software Implementao e teste da unidade Integrao e teste do sistema Operao e manuteno A desvantagem do modelo cascata a dificuldade de acomodar mudanas depois que o processo est em andamento

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 8

Problemas do modelo cascata

Partio inflexvel do projeto em diferentes estgios Isto faz com que seja difcil responder aos requisitos mutveis dos clientes Portanto, este modelo s apropriado quando os requisitos so bem entendidos

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 9

Desenvolvimento evolucionrio

Desenvolvimento exploratrio
O objetivo trabalhar com clientes e evoluir o sistema final de um esboo de especificao inicial. Deve comear com os requisitos que esto bem entendidos Objetivo entender os requisitos do sistema. Deve comear com requisitos pobremente entendidos

Preparao de prottipos descartveis

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 10

Desenvolvimento evolucionrio
Concurr ent activities Initial version Specification

Outline description

Development

Intermediate versions

Validation

Final version

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 11

Desenvolvimento evolucionrio

Problemas
Falta de visibilidade do processo Sistemas so, em geral, pobremente estruturados Habilidades especiais (ex. em lnguas para rpida preparao de prottipos ) podem ser requeridas
Para sistemas interativos pequenos ou mdios Para partes de sistemas grandes (ex. a interface de usurio) Para sistemas de curto-prazo

Aplicabilidade

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 12

Desenvolvimento de sistemas formais

Baseado na transformao de uma especificao matemtica atravs de diferentes representaes para um programa executvel Transformaes so preservadoras de exatido, portanto, so diretas para mostrar que o programa est de acordo com sua especificao Contido na abordagem Cleanroom para desenvolvimento de software

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 13

Desenvolvimento de sistemas formais

Requirements definition

Formal specification

Formal transformation

Integration and system testing

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 14

Transformaes Formais
Formal transformations T1 T2 T3 T4

Formal specification

R1

R2

R3

Executable program

P1

P2

P3

P4

Proofs of transformation correctness

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 15

Desenvolvimento de sistemas formais

Problemas

Necessidade de habilidades especializadas e treinamento para aplicar a tcnica Difcil de especificar formalmente alguns aspectos do sistema como a interface de usurio
Sistemas crticos, especialmente aqueles no qual um case de segurana deve ser feito antes do sistema ser posto em operao

Aplicabilidade

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 16

Desenvolvimento orientado ao reuso

Baseado no reuso sistemtico, onde os sistemas so integrados de componentes existentes ou sistemas padronizados Estgios do Processo
Anlise do componente Modificao dos requisitos Projeto do sistema com reuso Desenvolvimento e integrao

Esta abordagem est se tornando mais importante, mas a experincia ainda limitada com ela

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 17

Desenvolvimento orientado ao reuso

Requirements specification

Component analysis

Requirements modification

System design with reuse

Development and integration

System validation

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 18

Iterao do Processo

Requisitos do sistema SEMPRE evoluem no decorrer de um projeto, ento a iterao do processo, onde estgios anteriores so retrabalhados, sempre parte de um processo para sistemas maiores Iterao pode ser aplicada para qualquer modelo de processo genrico Duas abordagens (relacionadas)
Desenvolvimento incremental Desenvolvimento espiral

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 19

Desenvolvimento incremental

Ao invs 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 usurios so priorizados e os requisitos de maior prioridade so includos em incrementos iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so congelados embora requisitos para incrementos posteriores possam continuar a evoluir

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 20

Desenvolvimento incremental
Define outline requirements Assign requirements to increments Design system architecture

Develop system increment

Valida te increment

Integrate increment

Valida te system Final system

System incomplete

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 21

Vantagens do desenvolvimento incremental

O valor agregado ao Cliente est na entrega em cada incremento de modo que a funcionalidade do sistema estar disponvel mais cedo Incrementos iniciais funcionam como prottipos para ajudar a evocar requisitos para incrementos posteriores Menores riscos de falha no projeto em geral Os servios do sistema de alta prioridade tendem a receber a maioria dos testes

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 22

Programao extrema

Nova abordagem para o desenvolvimento de software baseado no desenvolvimento e entrega de incrementos de funcionalidade bem pequenos Conta com melhoramento constante do cdigo, envolvimento do usurio no time de desenvolvimento e programao em pares

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 23

Desenvolvimento espiral

Processo representado como uma espiral ao invs de uma seqncia de atividades com retorno Cada volta na espiral representa uma fase no processo. No existem fases fixas como especificao ou projeto as voltas na espiral so escolhidas de acordo com o que requerido Os riscos so explicitamente cotados e resolvidos durante todo o processo

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 24

Modelo espiral do processo de software


Determine objectives alternatives and constraints Risk analysis Risk analysis Risk analysis Prototype 3 Prototype 2 Operational protoype Evaluate alternatives identify, resolve risks

REVIEW Requirements plan Life-cycle plan

Risk analysis Prototype 1 Concept of Operation

Simulations, models, benchmarks S/W requirements Product design

Development plan Integration and test plan

Plan next phase

Code Unit test Design V&V Integr ation test Acceptance test Develop, verify Service next-level product
Slide 25

Requirement validation

Detailed design

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Setores do modelo espiral

Estabelecimento de objetivos
Objetivos especficos para a fase so identificados
Os riscos so avaliados e atividades postas em prtica para reduzir os riscos principias Um modelo de desenvolvimento para o sistema escolhido, podendo ser qualquer um dos modelos genricos

Avaliao e reduo de riscos

Desenvolvimento e validao

Planejamento
O projeto revisado e a fase seguinte da espiral planejada

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 26

Especificao do Software

O processo de estabelecer que servios so requisitados e quais as restries na operao e desenvolvimento do sistema Processo de engenharia de requisitos
Estudo de viabilidade Elicitao e anlise dos requisitos Especificao dos requisitos Validao dos requisitos

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 27

O processo de engenharia de requisitos


Feasibility study Requirements elicitation and analysis Requir ements specification Requirements validation System models User and system requirements Requirements document

Feasibility report

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 28

Projeto e implementao de Software

O processo de converter a especificao do sistema em um sistema executvel Projeto de Software


Projeto de uma estrutura de software que perceba a especificao Transformar esta estrutura em um programa executvel

Implementao

As atividades de projeto e implementao so intimamente relacionadas e podem ser entrelaadas

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 29

Atividades de processo de projeto

Projeto arquitetural Especificao abstrata Projeto de interface Projeto de componente Projeto de estrutura de dados Projeto de algoritmo

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 30

O processo do projeto de software


Requir ements specif ication Design acti ities v Architectur al design Abstr act specif ication Interface design Component design Data structur e design Algorithm design

System architectur e

Software specif ication

Interface specif tion ica

Component specif ication Design pr oducts

Data structur e specif ication

Algorithm specif tion ica

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 31

Mtodos do Projeto

Abordagens sistemticas para desenvolver um projeto de software O projeto geralmente documentado como uma srie de modelos grficos Modelos possveis
Modelo de fluxo de dados Modelo de atributos relacionados entidade Modelo Estrutural Modelos de objetos

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 32

Programando e Depurando

Transformar um projeto em um programa e remover erros do programa Programao uma atividade pessoal no existe processo de programao genrico Programadores realizam alguns testes de programa para detectar falhas no programa e remover tais falhas no processo de depurao

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 33

O processo de depurao

Locate error

Design error repair

Repair error

Re-test program

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 34

Validao do Software

Verificao e validao pretendem mostrar que um sistema est de acordo com sua especificao e cumpre os requisitos do cliente do sistema Envolve a verificao e a reviso de processos e teste do sistema Teste de sistema envolve a execuo do sistema com cases de teste que so derivados da especificao dos dados reais a serem processados pelo sistema
Software Engineering, 6th edio . Cptulo 3 Slide 35

Ian Sommerville 2000

O processo de teste
Unit testing Module testing Sub-system testing System testing Acceptance testing

Component testing
Ian Sommerville 2000

Integration testing

User testing
Slide 36

Software Engineering, 6th edio . Cptulo 3

Etapas de teste

Teste da Unidade
Os componentes individuais so testados Conjuntos de componentes dependentes relacionados so testados Os mdulos so integrados em sub-sistemas e testados. O foco aqui deve ser no teste da interface Teste do sistema como um todo. Teste das propriedades emergentes

Teste do Mdulo

Teste do Sub-sistema

Teste do Sistema

Teste de Aceitao
Teste com dados do consumidor para verificar que aceitvel

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 37

Fases de teste
Requir ements 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 edio . Cptulo 3

Slide 38

Evoluo do Software

Software hereditariamente flexvel e pode ser mudado. Como os requisitos mudam ao se alterar as circunstncias de negcios, o software que suporta o negcio tambm deve evoluir e mudar Embora tenha havido uma demarcao entre desenvolvimento e evoluo (manuteno), este cada vez mais irrelevante na medida que menos e menos sistemas so totalmente novos
Software Engineering, 6th edio . Cptulo 3 Slide 39

Ian Sommerville 2000

Evoluo do sistema

Define system requirements

Assess existing systems

Propose system changes

Modify systems

Existing systems

New system

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 40

Suporte ao processo automatizado (CASE)

Engenharia de software auxiliada por computador (CASE) um software para dar suporte aos processos de desenvolvimento e evoluo do software Automao da atividade
Editores grficos para o desenvolvimento de modelos de sistema Dicionrio de dados para gerenciar entidades de projeto Construtor Grfico UI para a construo de interface para usurio Depuradores para suportar deteco de falhas no sistema Tradutores automticos para gerar novas verses de um programa

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 41

Tecnologia Case

Tecnologia Case tem levado a melhorias significantes no processo de software embora no na ordem de magnitude de melhorias que foram antes previstos
A engenharia de software requer pensamento criativo isto no prontamente automatizvel A engenharia de software uma atividade de grupo e, para grandes projetos, muito tempo utilizado em interaes do grupo. A tecnologia CASE no os suporta de fato

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 42

CASE classificao

A classificao nos ajuda a entender os diferentes tipos de ferramentas de CASE e seu suporte para atividades do processo Perspectiva Funcional
As ferramentas so classificadas de acordo com suas funes especficas
As ferramentas so classificadas de acordo com as atividades do processo que suportam As ferramentas so classificadas de acordo com sua organizao em unidades integradas
Software Engineering, 6th edio . Cptulo 3 Slide 43

Perspectiva do Processo

Perspectiva da Integrao

Ian Sommerville 2000

Classificao 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 T esting tools Debugging tools Documentation tools Re-engineering tools
Ian Sommerville 2000

Examples PERT tools, estimation tools, spreadsheets T ext 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 T est data generators, file comparators Interactive debugging systems Page layout programs, image editors Cross-reference systems, program restructuring systems
Slide 44

Software Engineering, 6th edio . Cptulo 3

Classificao 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 Integrao CASE

Ferramentas
Suporta tarefas individuais do processo como verificao da consistncia de um projeto, edio de texto, etc. Suporte a fases do processo como especificao ou projeto. Normalmente inclui uma variedade de ferramentas integradas

reas de trabalho (workbenches)

Ambientes
Suporta tudo ou uma parte substancial de todo um processo de software. Normalmente inclui vrias reas de trabalho integradas

Ian Sommerville 2000

Software Engineering, 6th edio . Cptulo 3

Slide 46

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 edio . Cptulo 3

Slide 47

Pontos chave

Processos de software so as atividades envolvidas na produo e evoluo de um sistema de software. Eles so representados em um modelo de processo de software As atividades gerais so especificao, projeto e implementao, validao e evoluo Modelos genricos de processo descrevem a organizao processos de software Modelos iterativos de processo descrevem o processo de software como um de atividades
Software Engineering, 6th edio . Cptulo 3 Slide 48

Ian Sommerville 2000

Pontos chave

Engenharia de requisitos o processo de desenvolver uma especificao de software Os processos de projeto e implementao transformam a especificao em um programa executvel A Validao envolve verificar que o sistema cumpre com as especificaes e as necessidades do usurio Evoluo 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 edio . Cptulo 3

Slide 49