Você está na página 1de 44

Processos de Software

Centro de Informtica - Universidade Federal de Pernambuco


Kiev Gama
kiev@cin.ufpe.br
Slides originais elaborados por Ian Sommerville e adaptado pelos profs. Mrcio Cornlio, Vinicius Garcia e Kiev Gama
O autor permite o uso e a modificao dos slides para fins didticos

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

O processo 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

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.
2

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Modelos genricos de processo de software


O modelo cascata
Fases separadas e distintas de especificao e
desenvolvimento.

Engenharia de software baseada em componentes


O sistema montado a partir de componentes existentes.

Desenvolvimento iterativo
Sistema desenvolvido atravs de vrias etapas

Existem muitas variantes destes modelos


Ex: desenvolvimento formal onde um processo semelhante
ao cascata usado, mas a especificao formal refinada
durante os vrios estgios para um projeto implementvel.

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


4

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Fases 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!

Todas as fases envolvem atividades de validao


5

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Problemas do modelo cascata


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.
6

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
7

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Desenvolvimento evolucionrio
Vantagem: especificao desenvolvida de
forma incremental
Problemas:
Processo no visvel
Sistemas podem ser mal estruturados devido
mudana contnua

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
9

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
10

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Prototipao Descartvel
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
11

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Engenharia de software baseada em componentes

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.

Esta abordagem est se tornando cada vez mais


usada medida que padres de componentes
tm surgido.
Reuso acidental vs. Reuso planejado
12

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Processos Iterativos
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 de processo
Duas abordagens (relacionadas)
Entrega incremental;
Desenvolvimento espiral.

Essncia: especificao desenvolvida em conjunto


com o software
13

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Entrega incremental
O sistema entregue ao cliente em incrementos
Cada incremento fornece parte da funcionalidade

Os requisitos so priorizados
Requisitos de prioridade mais alta so includos nos
incrementos iniciais.

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!)
14

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Desenvolvimento incremental

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


15

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Vantangens 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.
16

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Problemas do desenvolvimento incremental


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

17

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Extreme programming
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.

18

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Desenvolvimento espiral
O processo representado como uma espiral
ao invs de uma sequncia 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.
19

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Modelo espiral do processo de software

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


20

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Setores do modelo espiral


Definio de objetivos
Objetivos especficos para a fase so identificados.

Avaliao e reduo de riscos


Riscos so avaliados e atividades so realizadas para reduzir os
riscos-chave.

Desenvolvimento e validao
Um modelo de desenvolvimento para o sistema, que pode ser
qualquer um dos modelos genricos, escolhido.

Planejamento
O projeto revisado e a prxima fase da espiral planejada.

Processo de Desenvolvimento vs. Processo de


Gerenciamento

21

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
esp. 1

esp. 2

implement.

22

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Transformao Formal
A grande motivao por trs da ideia de
refinamento formal a possibilidade de gerar
programas que so corretos por construo
O prprio processo de desenvolvimento deve
garantir que o programa faz exatamente o que foi
especificado

Este modelo tem sido aplicado ao


desenvolvimento de sistemas crticos,
especialmente naqueles onde a segurana
um fator crtico (ex: sistema de controle de
ferrovias)
23

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE


ISO 12207
Processos de Ciclo de vida do Software

Norma internacional que identifica quais os


processos no ciclo de vida do software
Processos fundamentais

Aquisio
Fornecimento
Desenvolvimento
Operao
Manuteno

O que chamado de processo nesta norma,


seria mais ou menos correspondente ao que
visto como atividade em Sommerville
24

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Atividades de um processo de desenvolvimento


(Sommerville)

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

25

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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

Elicitao e anlise de requisitos;


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

Validao de requisitos.
26

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

O processo de engenharia de requisitos

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4

Tambm pode envolver a


prototipao de partes do
sistema!

27

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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.

Implementao
Transformar essa estrutura em um programa
executvel.

As atividades de projeto e implementao so


fortemente relacionadas e podem ser
intecaladas.
28

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Modelo genrico do processo de projeto de sistema

29

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Atividades especficas do processo de projeto


Projeto de arquitetura
Subsistemas e relacionamento

Especificao abstrata
Especificao abstrata de servios e restries de
subsistemas

Projeto de interfaces entre componentes


Projeto de componente
Projeto de estrutura de dados
Projeto de algoritmo
30

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Mtodos estruturados
Abordagens sistemticas para projetar sistemas
de software
Project (gerenciamento) vs. Design
(desenvolvimento)

O projeto , em geral, documentado como um


conjunto de modelos grficos
Modelos possveis

Modelo de objeto;
Modelo de sequncia;
Modelo de transio de estado;
Modelo estruturado;
Modelo de fluxo de dados.
31

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Programao e depurao
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

Programadores realizam alguns testes para


descobrir defeitos no programa e removem
esses defeitos no processo de depurao
32

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Validao de software
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?
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.

33

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Estgios de teste
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
Teste de sistema como um todo. O teste das propriedades
emergentes particularmente importante.
Busca erros que resultam de interaes no previstas entre
componentes

Teste de aceitao
Teste com dados do cliente para verificar se o sistema
atende s suas necessidades, ou seja, pode revelar
problemas de requisitos
34

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Fases de teste

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


35

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

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
36

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Evoluo de software

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


37

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

(Rational) Unified Process


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
38

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Modelo de fases do RUP


Centrado no gerenciamento de projetos

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


39

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Fases do RUP
Concepo
Estabelecer o business case para o sistema.

Elaborao
Desenvolver um entendimento do domnio do
problema, arquitetura do sistema e identificar riscos

Construo
Projeto, programao, teste de sistema e
documentao

Transio
Implantar o sistema no seu ambiente operacional.
40

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Fases do RUP

41

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Workflows estticos

Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4


42

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Boas prticas do RUP


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
43

[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE

Leituras recomendadas
SOMMERVILLE, I. Engenharia de Software. 9.
Ed. So Paulo: Pearson Education, 2011
Captulo 4

Referncia adicional
Barry W. Boehm. A Spiral Model of Software
Development and Enhancement. IEEE Computer,
vol. 21, nmero 5, Maio de 1988.
http://dx.doi.org/10.1109/2.59

44

Você também pode gostar