Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Desenvolvimento iterativo
Sistema desenvolvido atravs de vrias etapas
Modelo cascata
Resposta ao modelo code-and-fix vigente na
dcada de 70
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
Desenvolvimento evolucionrio
Vantagem: especificao desenvolvida de
forma incremental
Problemas:
Processo no visvel
Sistemas podem ser mal estruturados devido
mudana contnua
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
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
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.
Anlise de componentes;
Modificao de requisitos;
Projeto de sistema com reuso;
Desenvolvimento e integrao.
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.
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.
Desenvolvimento incremental
17
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
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
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.
21
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
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
Aquisio
Fornecimento
Desenvolvimento
Operao
Manuteno
Especificao de software
Projeto e implementao de software
Validao de software
Evoluo de software
25
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
Validao de requisitos.
26
27
Implementao
Transformar essa estrutura em um programa
executvel.
29
Especificao abstrata
Especificao abstrata de servios e restries de
subsistemas
Mtodos estruturados
Abordagens sistemticas para projetar sistemas
de software
Project (gerenciamento) vs. Design
(desenvolvimento)
Modelo de objeto;
Modelo de sequncia;
Modelo de transio de estado;
Modelo estruturado;
Modelo de fluxo de dados.
31
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
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
33
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
Fases de teste
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 de software
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
Fases do RUP
41
Workflows estticos
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