Anda di halaman 1dari 53

Projeto de Software

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 so construdos para permitir um melhor


entendimento sobre o sistema que est sendo
construdo.
especificar a estrutura e comportamento
guia para construo do sistema
documentam as decises tomadas

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

Modelagem na Engenharia Civil

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.

O processo deve determinar aes prticas a serem realizadas pela


equipe como prazos definidos e mtricas para se avaliar como elas
esto sendo realizadas

Modelo + Planejamento = Processo

Modelos de processo de
software
Um conjunto de atividades fundamentais exigida para
desenvolver um sistema de software

Especificao.
Projeto e implementao.
Validao.
Evoluo.

Um modelo de processo de software uma representao


abstrata de um processo. Representa uma descrio de um
processo a partir de uma perspectiva particular.

As exigncias que criam processo


Estudo de
viabilidade

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

Econmica relao custo/benefcio;


Tcnica tecnologia e capacitao;
Jurdica aspectos legais.

Levantamento e anlise de requisitos


Entrevista, observao, reunies

Especificao de requisitos

Documento contendo os requisitos do usurio e do sistema funcionais e nofuncionais

Validao de requisitos

Avaliao do documento de requisitos pertinncia, consistncia e


integralidade.

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.

Desenvolvimento evolucionrio (prototipao)


Especificao e desenvolvimento so intercalados

Modelo espiral
O desenvolvimento do sistema evolui a partir de um esboo
inicial, em direo ao sistema final desenvolvido.

Modelos de ciclo de vida


Existem alguns processos pr-fabricados
Esses processos so conhecidos como modelos de ciclo de
vida
Esses processos apresentam caractersticas predefinidas
Devem ser adaptados para o contexto real de uso
Caractersticas do projeto
Caractersticas da equipe
Caractersticas do cliente

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)

Resultado coleo de programas implementados e


testados.

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.

Resultado produto pronto para ser entregue ao cliente.

Ciclo de vida Cascata

Ciclo de vida Cascata


til quando se tem requisitos estveis e bem definidos
Ex.: Adicionar um novo dispositivo legal em um sistema de
contabilidade
No lida bem com incertezas
Fornece pouca visibilidade do estado do projeto
Muito tempo para a primeira entrega
Dificuldade na obteno de feedback do cliente

Contribuies e problemas do ciclo de


vida clssico
Contribuies
Processo de desenvolvimento de software deve ser
sujeito disciplina, planejamento e gerenciamento.
A implementao do produto deve ser postergada at
que os objetivos tenham sido completamente
entendidos.
Deve ser utilizado quando os requisitos esto bem
claros no inicio do desenvolvimento.

Contribuies e problemas do ciclo de


vida clssico
Problema
Rigidez
Qualquer desvio desencorajado
Todo o planejamento orientado para a entrega do
produto de software em uma data nica.
Processo de desenvolvimento pode ser longo e a
aplicao pode ser entregue quando as necessidades do
usurio j tiverem sido alteradas.

Contribuies e problemas do ciclo de


vida clssico
Problema (cont.)
Projetos reais raramente seguem o fluxo seqencial que
o modelo prope.
Logo no incio difcil estabelecer explicitamente todos
os requisitos. No comeo dos projetos sempre existe
uma incerteza natural.
O cliente deve ter pacincia. Uma verso executvel do
software s fica disponvel numa etapa avanada do
desenvolvimento

Ciclo de vida Incremental

Ciclo de vida Incremental


Faz entregas incrementais do software
Cada incremento construdo via um mini-cascata
Cada incremento um software operacional
Verses anteriores ajudam a refinar o plano
Feedback constante do cliente
Diminuio da ansiedade do cliente
O cliente rapidamente recebe uma verso funcional do
software

Ciclo de vida RAD

Ciclo de vida RAD


Rapid Application Development ou
Desenvolvimento Rpido de Aplicao
Funcionamento equivalente ao cascata
Principais diferenas
Visa entregar o sistema completo em 60 a 90 dias
Mltiplas equipes trabalham em paralelo na modelagem e
construo
Assume a existncia de componentes reutilizveis e gerao
de cdigo
Difcil de ser utilizado em domnios novos ou instveis

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

Ciclo de vida Espiral

Ciclo de vida Espiral


Foco principal no gerenciamento de riscos
A cada ciclo
O conhecimento aumenta
O planejamento refinado
O produto gerado no ciclo anterior evoludo (no jogado
fora)
Cada ciclo evolui o sistema, mas no necessariamente entrega
um software operacional
Modelo em papel
Prottipo
Verses do produto
Etc.

Outros ciclos de vida


Mtodos formais
Uso de formalismos matemticos
Alto nvel de complexidade
Usualmente aplicado somente a software crtico
Processo Unificado
Tentativa de obter o que h de melhor em cada modelo de
ciclo de vida

Processo de Software

Processo de Software

Processo de Software

Objetivo: Processo Unificado com aspectos de...


Desenvolvimento iterativo
Desenvolvimento evolutivo
Desenvolvimento gil

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

Craig Larman, 2007, Utilizando UML e Padres, 3 ed.


Slides baseados no material do professor Leonardo Murta
Ian Sommerville, 2000, Engenharia de Software, 6 ed.
Roger Pressman, Engenharia de Software, 3 ed.

Anda mungkin juga menyukai