Você está na página 1de 7

4/19/11

O processo de software
!!

Processos de Software
!!

Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessrios para o desenvolvimento de um sistema de software
! Atividades: Especificao, Projeto, Validao, Evoluo

Prof. Mrcio Lopes Cornlio


Slides originais elaborados por Ian Sommerville O autor permite o uso e a modificao dos slides para fins didticos
!!

Exemplos: Processo Unificado (RUP), Programao Extrema, UML Components Um modelo de processo de software apresenta a descrio de um processo de uma perspectiva particular, normalmente focando apenas em algumas atividades.
Engenharia de Software, 8. edio. Captulo 4 Slide 2

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 1

Ian Sommerville 2006

Modelos genricos de processo de software


!!

Modelo cascata
!!

O modelo cascata
! Fases separadas e distintas de especificao e desenvolvimento. O sistema montado a partir de componentes existentes. Sistema desenvolvido atravs de vrias etapas Ex: desenvolvimento formal onde um processo semelhante ao cascata usado, mas a especificao formal refinada durante os vrios estgios para um projeto implementvel.

Resposta ao modelo code-and-fix vigente na dcada de 70

!!

Engenharia de software baseada em componentes


!

!!

Desenvolvimento iterativo
!

!!

Existem muitas variantes destes modelos


!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 3

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 4

Fases do modelo cascata


!! !! !! !! !!

Problemas do modelo cascata


!!

Anlise e definio de requisitos Projeto de sistema e software Implementao e teste de unidade Integrao e teste de sistema Operao e manuteno Primeiro modelo a organizar as atividades de desenv. Uma fase tem de estar completa antes de passar para a prxima.
! Sadas das fases so acordadas contratualmente!

Particionamento inflexvel do projeto em estgios


! Dificulta a resposta aos requisitos de mudana do cliente.

!!

Documentos completamente elaborados so necessrios para fazer as transies entre estgios Apropriado somente quando os requisitos so bem compreendidos e quando as mudanas so raras
! Poucos sistemas de negcio tm requisitos estveis.

!!

!! !!

!!

O modelo cascata o mais usado em projetos de engenharia de sistemas de grande porte, onde um sistema desenvolvido em vrias localidades.
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 6

!!

Todas as fases envolvem atividades de validao


Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 5

4/19/11

Desenvolvimento evolucionrio
!!

Desenvolvimento evolucionrio
!!

!!

!!

Implementao inicial, exposio do resultado aos comentrios do usurio e refinamento desse resultado em verses Especificao, desenvolvimento e validao so intercaladas Dois tipos
! ! Desenvolvimento exploratrio: explora requisitos e entrega um sistema final Prototipao throwaway: objetivo compreender os requisitos do cliente

!!

Vantagem: especificao desenvolvida de forma incremental Problemas:


! ! Processo no visvel Sistemas podem ser mal estruturados devido mudana contnua

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 7

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 8

Desenvolvimento Exploratrio
!!

Desenvolvimento Exploratrio
!!

Idia geral:
! ! ! Desenvolvimento da primeira verso do sistema o mais rpido possvel Modificaes sucessivas at que o sistema seja considerado adequado Aps o desenvolvimento de cada uma das verses do sistema ele mostrado aos usurios para comentrios

!!

!!

!!

Adequado para o desenvolvimento de sistemas onde difcil ou impossvel se fazer uma especificao detalhada do sistema Principal diferena para os outros modelos a ausncia da noo de programa correto
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 9

Tem sido mais usada no desenvolvimento de sistemas especialistas - geralmente sistemas que tentam emular capacidades humanas A maioria dos sistemas desenvolvidos com sucesso usando a programao exploratria foi implementada usando pequenos grupos de profissionais altamente qualificados e motivados

9/45

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 10

10/45

Prototipao Descartvel
!!

Prototipao Descartvel
!!

Como na programao exploratria, a primeira fase prev o desenvolvimento de um programa para o usurio experimentar
! ! No entanto, o objetivo aqui estabelecer os requisitos do sistema O software deve ser reimplementado na fase seguinte

!!

A construo de prottipos com os quais os usurios possam brincar uma idia bastante atrativa:
! ! Para sistemas grandes e complicados Quando no existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos
Engenharia de Software, 8. edio. Captulo 4 Slide 11

!!

Os objetivos do prottipo devem estar bem claros antes do incio da codificao. Possveis objetivos: ! Entender os requisitos dos usurios ! Definir a interface com os usurios ! Demonstrar a viabilidade do sistemas para os gerentes. Uma deciso importante a ser tomada escolher o que ser e o que no ser parte do prottipo ! No economicamente vivel implementar todo o sistema! ! Os objetivos do prottipo so o ponto de partida
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 12

Ian Sommerville 2006

11/45

12/45

4/19/11

Engenharia de software baseada em componentes


!!

Processos Iterativos
!!

Baseado em reuso sistemtico onde sistemas so integrados a partir de componentes existentes ou de sistemas COTS (Commercial-of-the-shelf)! Estgios do processo
! ! ! ! Anlise de componentes; Modificao de requisitos; Projeto de sistema com reuso; Desenvolvimento e integrao.

Requisitos de sistema SEMPRE evoluem no curso de um projeto Algum retrabalho necessrio A abordagem iterativa pode ser aplicada a qualquer um dos modelos genricos do processo. Duas abordagens (relacionadas) ! Entrega incremental; ! Desenvolvimento espiral.

!!

!! !!

!!

!!

Esta abordagem est se tornando cada vez mais usada medida que padres de componentes tm surgido. Reuso acidental vs. Reuso planejado
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 13

!!

!!

Essncia: especificao desenvolvida em conjunto com o software


Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 14

Entrega incremental
!!

Desenvolvimento incremental

O sistema entregue ao cliente em incrementos


! Cada incremento fornece parte da funcionalidade Requisitos de prioridade mais alta so includos nos incrementos iniciais.

!!

Os requisitos so priorizados
!

!!

Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so congelados


! Os requisitos para os incrementos posteriores podem continuar evoluindo (e incluir requisitos j implementados!)
Engenharia de Software, 8. edio. Captulo 4 Slide 15 Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 16

Ian Sommerville 2006

Vantangens do desenvolvimento incremental


!!

Problemas do desenvolvimento incremental


!!

Incrementos podem ser entregues regularmente ao cliente e, desse modo, a funcionalidade de sistema disponibilizada mais cedo. Os incrementos iniciais agem como prottipos para elicitar os requisitos para incrementos posteriores do sistema. Riscos menores de falha geral do projeto. Os servios de sistema de mais alta prioridade tendem a receber mais testes.

!!

Incrementos pequenos exigem mapeamento entre requisitos e incremento de tamanho adequado Dificuldade de identificar os recursos comuns exigidos por todos os incrementos

!!

!!

!!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 17

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 18

4/19/11

Extreme programming
!!

Desenvolvimento espiral
!!

Uma abordagem baseada no desenvolvimento e na entrega de incrementos de funcionalidade muito pequenos. Baseia-se no aprimoramento constante do cdigo, em testes automatizados, no envolvimento do usurio na equipe e no desenvolvimento em pares.

O processo representado como uma espiral ao invs de uma seqncia de atividades com realimentao. Cada loop na espiral representa uma fase no processo. Sem fases definidas, tais como especificao ou projeto os loops na espiral so escolhidos dependendo do que requisitado. Os riscos so explicitamente avaliados e resolvidos ao longo do processo.
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 20

!!

!!

!!

!!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 19

Modelo espiral do processo de software


!!

Setores do modelo espiral


Definio de objetivos
!
!!

Objetivos especficos para a fase so identificados. Riscos so avaliados e atividades so realizadas para reduzir os riscos-chave. Um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genricos, escolhido. O projeto revisado e a prxima fase da espiral planejada.

Avaliao e reduo de riscos


!

!!

Desenvolvimento e validao
!

!!

Planejamento
!

!!

Processo de Desenvolvimento vs. Processo de Gerenciamento


Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 22

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 21

Transformao Formal
!!

Transformao Formal
!!

Idia geral:
! Uma especificao formal (definio matemtica, no ambgua) do software desenvolvida e posteriormente transformada em um programa atravs de regras que preservam a corretude da especificao

A grande motivao por trs da idia de refinamento formal a possibilidade de gerar automaticamente programas que so corretos por construo
! O prprio processo de desenvolvimento deve grantir que o programa faz exatamente o que foi especificado

esp. 1

esp. 2

implement.

!!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 23

23/45

Este modelo tem sido aplicado ao desenvolvimento de sistemas crticos, especialmente naqueles onde a segurana um fator crtico (ex: sistema de controle de ferrovias)
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 24

24/45

4/19/11

Atividades de um processo de desenvolvimento


!!

Especificao de software
O processo para definir quais servios so necessrios e identificar as restries de operao e de desenvolvimento do sistema. Processo de engenharia de requisitos
! ! ! Estudo de viabilidade;
! Realizado antes do projeto ser iniciado

!! !! !! !!

Especificao de software Projeto e implementao de software Validao de software Evoluo de software


!!

Elicitao e anlise de requisitos; Especificao de requisitos;


! Requisitos do usurio (mais abstrato) e requisitos do sistema (descrio detalhada de funcioalidades)

!
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 25

Validao de requisitos.
Engenharia de Software, 8. edio. Captulo 4 Slide 26

Ian Sommerville 2006

O processo de engenharia de requisitos


!!

Projeto e implementao de software


o processo de converso da especificao em um sistema de software Projeto de software
!
!!

!!

Projetar uma estrutura de software que atenda especificao. Transformar essa estrutura em um programa executvel.

Implementao
!

!!
!!

Tambm pode envolver a prototipao de partes do sistema!


Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 27

As atividades de projeto e implementao so fortemente relacionadas e podem ser intecaladas.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 28

Atividades do processo de projeto


!!

Atividades do processo de projeto


!! !! !! !! !! !!

Projeto de arquitetura
! Subsistemas e relacionamento Especificao abstrata de servios e restries de subsistemas

!!

Especificao abstrata
!

!! !! !! !!

Projeto de interfaces entre componentes Projeto de componente Projeto de estrutura de dados Projeto de algoritmo

Projeto de arquitetura Especificao abstrata Projeto de interfaces entre componentes Projeto de componente Projeto de estrutura de dados Projeto de algoritmo

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 29

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 30

4/19/11

Mtodos estruturados
!!

Programao e depurao
!!

Abordagens sistemticas para projetar sistemas de software


! Project (gerenciamento) vs. Design (desenvolvimento)!

a transformao de um projeto em um programa e a remoo de defeitos desse programa. Programao uma atividade pessoal no h processo genrico de programao.
! H algumas prticas, porm, que so universalmente consideradas boas

!!

O projeto , em geral, documentado como um conjunto de modelos grficos Modelos possveis


! ! ! ! ! Modelo de objeto; Modelo de seqncia; Modelo de transio de estado; Modelo estruturado; Modelo de fluxo de dados.
Engenharia de Software, 8. edio. Captulo 4 Slide 31

!!

!!

!!

Programadores realizam alguns testes para descobrir defeitos no programa e removem esses defeitos no processo de depurao

Ian Sommerville 2006

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 32

Validao de software
!!

Estgios de teste
!!

Verificao e validao (V & V) tm a inteno de mostrar que um sistema est em conformidade com a sua especificao e que atende aos requisitos do cliente Verificao: construmos o sistema corretamente?

Teste de componente ou unidade


! ! Os componentes individuais so testados independentemente; Esses componentes podem ser funes ou classes de objetos, ou grupos coerentes dessas entidades. Teste de sistema como um todo. O teste das propriedades emergentes particularmente importante. Busca erros que resultam de interaes no previstas entre componentes Teste com dados do cliente para verificar se o sistema atende s suas necessidades, ou seja, pode revelar problemas de requisitos

!!

!!

Teste de sistema
! !

!
!!

Exs: inspeo de cdigo, anlise esttica

Validao: construmos o sistema correto?


! Exs: testes, animao de especificaes
!!

!!

Testes envolvem a execuo do sistema com casos de teste que so derivados da especificao do sistema e de dados reais a ser processados por ele.
Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 33

Teste de aceitao
!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 34

Evoluo de software
!! !!

Evoluo de software

O software inerentemente flexvel e pode mudar Requisitos mudam devido a diversos fatores e o software deve acompanhar essas mudanas Processos antigos separavam explicitamente desenvolvimento de evoluo
! Processos e mtodos iterativos (XP, RUP, Espiral) normalmente no fazem uma sepao explcita

!!

!!

Evoluo pode se dever a diversas razes:


! ! ! Correes (patches) Mudanas de requisitos Melhoria de funcionalidades pr-existentes
Engenharia de Software, 8. edio. Captulo 4 Slide 35 Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 36

Ian Sommerville 2006

4/19/11

(Rational) Unified Process


!!

Modelo de fases do RUP

um (modelo de?) processo moderno baseado na UML


! Tenta cobrir todos os aspectos do desenvolvimento de software

!! !!

Fortemente focado na documentao do sistema Normalmente descrito a partir de trs perspectivas:


! ! ! Uma perspectiva dinmica que mostra as fases ao longo do tempo; Uma perspectiva esttica que mostra atividades de processo; Uma perspectiva prtica que sugere bons princpios e prticas de desenvolvimento
Engenharia de Software, 8. edio. Captulo 4 Slide 37 Ian Sommerville 2006 Engenharia de Software, 8. edio. Captulo 4 Slide 38 !!

Centrado no gerenciamento de projetos

Ian Sommerville 2006

Fases do RUP
!!

Boas prticas do RUP


!!

Concepo
! Estabelecer o business case para o sistema. Desenvolver um entendimento do domnio do problema, arquitetura do sistema e identificar riscos Projeto, programao, teste de sistema e documentao Implantar o sistema no seu ambiente operacional.

Desenvolver o software iterativamente Gerenciar requisitos Usar arquiteturas baseadas em componentes Modelar o software visualmente Verificar a qualidade de software Controlar as mudanas do software

!!

!!

Elaborao
!
!! !!

!!

Construo
!
!! !!

!!

Transio
!

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 39

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 40

Workflows estticos
!!

Referncia Adicional
Barry W. Boehm. A Spiral Model of Software Development and Enhancement. IEEE Computer, vol. 21, nmero 5, Maio de 1988.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 41

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 4

Slide 42