Orientado a Objetos
Aula 1
Processos de software
Atividades para especificar, projetar, implementar
e testar sistemas de software
Objetivos
Modelos
Modelos de ciclo de vida
Processo de software
Processo Unificado
Fronteira entre anlise e projeto
Processo de software
Um processo de software um mtodo para
desenvolver ou produzir software.
A pesquisa em processo de software lida com
mtodos e tecnologias estimativas, suporte e
melhoria das atividades de desenvolvimento de
software.
Define quem faz o que, quando e como.
Modelagem
Modelagem uma tcnica de engenharia
aprovada e bem aceita
modelos de arquitetura de casas e de grandes prdios
modelos matemticos a fim de analisar os efeitos de
ventos e tremores de terra --> causas
O que um MODELO?
Modelos
Um modelo uma simplificao da realidade.
Planos de detalhes, podem ser estruturais (organizao do
sistema) ou comportamentais (dinmica do sistema)
Modelos
Modelos de sistemas complexos so importantes
porque no temos capacidade de compreend-los
inteiramente
Os melhores modelos esto relacionados realidade
(modelos simplificam a realidade)
Nenhum modelo nico suficiente. Conjunto de
modelos independentes
Objetivos da Modelagem
Auxiliar no processo de produo produtos de
alta qualidade, produzidos mais rapidamente e a
um custo cada vez menor.
Atributos: abstrao, visibilidade, especificao,
construo, confiabilidade, manutenibilidade,
segurana, documentao.
Objetivos da Modelagem
Possibilitam:
Ao gerente: controlar o processo de
desenvolvimento de sistemas de software.
Ao desenvolvedor: obter a base para produzir,
de maneira eficiente, software que satisfaa os
requisitos pr-estabelecidos.
Objetivos da Modelagem
Abstrao
Melhor entendimento e maior compreenso
Visualizao
Visualizao antecipada antes da implementao
Vises complementares do software
Especificao
Descrio precisa do que deve ser feito
Objetivos da Modelagem
Construo
Gerao automtica com ferramentas baseadas em modelos
Documentao
Comunicao entre equipes na diferentes fases do ciclo de
vida
Modelo X Processo
Um modelo algo terico, um conjunto de possveis aes.
Modelos de processo de
software
Um conjunto de atividades fundamentais exigida para
desenvolver um sistema de software
Especificao.
Projeto e implementao.
Validao.
Evoluo.
Levantamento
e anlise de
requisitos
Especificao
de requisitos
Relatrio
de viabilidade
Validao
de requisitos
Modelos
de sistemas
Requisitos do
usurio e do sistema
Documentao
de requisitos
Modelos de processo de
software
Processo de Engenharia de Requisitos
Estudo de viabilidade
Especificao de requisitos
Validao de requisitos
Modelos de processo de
software - paradigmas
Uma estratgia de desenvolvimento que
englobe processos, mtodos e ferramentas, e
as fases de desenvolvimento...
Modelos de processo de
software - paradigmas
O modelo de cascata
Separa em fases distintas as atividades de especificao,
projeto, implementao, testes e manuteno.
Modelo espiral
O desenvolvimento do sistema evolui a partir de um esboo
inicial, em direo ao sistema final desenvolvido.
Ciclo de vida
Fase de definio
Anlise e Especificao
Estudo de Viabilidade
Estimativas Planejamento
Fase de desenvolvimento
Projeto
Implementao e integrao
Verificao e Validao
Fase de operao
Atividades que mantm o sistema funcionando
Manuteno atividades executadas depois que o produto entregue aos
usurios.
Fase de definio
Esta fase encerra-se com o contrato de
desenvolvimento.
Analisado e confirmado pelo usurio para
verificar se ele satisfaz todas as suas
expectativas.
Deve ser usado pelos desenvolvedores de
software para obter um produto que satisfaa
os requisitos.
Fase de desenvolvimento
Projeto de Software
definida a soluo do problema:
Decomposio do produto ( sub-sistema, componentes
etc).
Representao das funes do sistema em uma forma
que possa ser transformada em um ou mais programas
executveis.
Definio de como o produto deve ser implementado.
Dividido em:
Projeto de alto nvel decomposio lgica
Projeto detalhado decomposio fsica.
Fase de desenvolvimento
Projeto de Software
Projeto conceitual, projeto da interface de
usurio, projeto da arquitetura de software,
projeto de algoritmos e estruturas e dados.
Resultado documentao de especificao de
projeto
Fase de desenvolvimento
Implementao
O projeto transformado em um programa, ou
unidades de programa.
Teste unitrio cada unidade satisfaz suas
especificaes ( plano e casos de teste pr-estabelecidos)
Fase de desenvolvimento
Integrao
Programas ou unidades de programas so
integrados e testados como sistema.
Integrao incremental programas ou unidades so
integradas medida em que forem sendo desenvolvidos.
Prototipao
Prototipao
Usualmente utilizado como auxlio a outro modelo de ciclo de
vida
til para
Validar um requisito obscuro com o cliente
Verificar o desempenho de um algoritmo especfico
Deveria ser jogado fora no final
Prottipos no so produtos
Usualmente os clientes desejam colocar prottipos em
produo
Processo de Software
Processo de Software
Processo de Software
Desenvolvimento Iterativo
O desenvolvimento organizado em mini-projetos
Cada mini-projeto uma iterao
Cada iterao tem durao curta e fixa (de 2 a 6 semanas)
Cada iterao tem atividades de anlise, projeto, programao
e testes
O produto de uma iterao um software parcial
Desenvolvimento Iterativo
A iterao deve ser fixa
Tarefas podem ser removidas ou includas
A iterao nunca deve passar da durao previamente
estipulada
O resultado de cada iterao um software...
Incompleto
Em desenvolvimento (no pode ser colocado em produo)
Mas no um prottipo!!!
Esse software pode ser verificado e validado parcialmente
Testes
Usurios
Podem ser necessrias diversas iteraes (e.g. 10 a 15) para
ter uma verso do sistema pronta para entrar em produo
Desenvolvimento Iterativo
Iteraes curtas privilegiam a propagao de conhecimento
Aumento do conhecimento sobre o software
Diminuio das incertezas, que levam s mudanas
Desenvolvimento Evolutivo
As especificaes evoluem a cada iterao
A cada iterao, uma parte do software fica pronta
O conhecimento sobre o software aumenta
As especificaes so evoludas para retratar esse aumento de
conhecimento sobre o que o software
Desenvolvimento Evolutivo
Mudanas sempre acontecem em projetos de software
Requisitos mudam
O ambiente em que o software est inserido muda
As pessoas que operam o software mudam
Estratgias para lidar com mudanas
Evitar as mudanas (corretivas) fazendo uso de boas tcnicas
de engenharia de software
Acolher mudanas por meio de um processo evolutivo
Leonardo
Desenvolvimento gil
So dadas respostas rpidas e flexveis a mudanas
O projeto replanejado continuamente
So feitas entregas incrementais e constantes do software,
refletindo as mudanas solicitadas
Desenvolvimento gil
Princpios geis
Satisfazer o cliente
Acolher modificaes nos requisitos
Entregar o software com frequncia
Trabalhar junto ao cliente
Manter os indivduos motivados
Promover conversas face a face
Medir o progresso com software funcionando
Manter um ritmo constante de trabalho
Cuidar da qualidade
Buscar por simplicidade
Trabalhar com equipes auto organizadas
Ajustar o comportamento da equipe buscando mais efetividade
Modelagem gil
Tem intuito de apoiar o entendimento e a comunicao
Do problema (anlise)
Da soluo (projeto)
Tem carter exploratrio
No visa ser completa
Foca nos aspectos mais complexos e incomuns
No pretende ser a nica documentao do software
Enxerga o cdigo como o verdadeiro projeto
Todos os modelos anteriores podem estar desatualizados ou
serem imprecisos
No pretende ser o meio de comunicao principal
Deve ser feita pelos prprios desenvolvedores e no por
equipes separadas
Modelagem gil
Incentiva a modelagem em pares
Ou pequenos grupos
Apia a criao de vises do modelo em paralelo
Esttica (e.g., diagrama de classes)
Dinmica (e.g., diagrama de seqncia)
Usa ferramentas simples
Quadro-branco + cmera digital
Ferramentas CASE
Editor de texto
Utiliza simplificaes da notao sempre que possvel
No usa todos os recursos da UML
Utiliza recursos adicionais se necessrio
Referncias