Processo de Desenvolvimento
de Software
UNIVERSIDADE ESTADUAL PAULISTA
INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS
Engenharia de Software
●
Auxiliar no processo de produção de software,
de forma que o processo dê origem a produtos
de alta qualidade, produzidos mais rapidamente
e a um custo reduzido.
Uma disciplina que reúne metodologias, métodos e ferramentas a ser utilizados, desde a percepção do problema até o momento em que o sistema desenvolvido deixa de ser operacional, visando resolver problemas
Princípios da Engenharia de
Software
●
Referem-se tanto ao processo como ao produto final,
descrevendo algumas propriedades gerais dos
processos e produtos.
●
Guiam a escolha das metodologias, métodos e
ferramentas apropriados para o desenvolvimento de
software
Princípios + metodologias, métodos e
ferramentas = propriedades desejadas
Princípios da Engenharia de
Software
●
Formalidade
• O processo de desenvolvimento deve acontecer como uma seqüência de passos definidos com precisão.
• Cada passo deve ser guiado por alguma metodologia que segue algum método.
Através de um enfoque formal, pode-se
produzir produtos mais confiáveis, controlar
Princípios da Engenharia de
Software
●
Abstração
• É o processo de identificação dos aspectos importantes de um determinado fenômeno, ignorando-se os detalhes.
• Pode-se existir diferentes visões da mesma realidade, cada uma com enfoques diferentes.
A abstração permite que o desenvolvedor se
concentre no problema a ser resolvido, sem
se perder em detalhes existentes no mundo
Princípios da Engenharia de
Software
●
Decomposição
• Subdivisão do trabalho em atividades específicas, com o objetivo de gerenciar a complexidade.
• Pode se aplicar a decomposição tanto ao processo de
desenvolvimento como ao produto que está sendo construído.
Decomposição do processo
•Permite o planejamento das atividades e diminui o tempo extra que seria gasto mudando de uma atividade para outra
Decomposição do produto
•Permite que atividades de desenvolvimento sejam feitas em paralelo
Princípios da Engenharia de
Software
●
Generalização
• Uma solução mais geral para um problema tem maior potencial para ser reutilizada.
• Através da generalização, o desenvolvedor tem o potencial de desenvolver um componente que pode ser utilizado em mais de um ponto do sistema de software desenvolvido
Solução generalizada pode ser mais custosa, por isso deve avaliar os problemas de custo e eficiência em desenvolver uma solução generalizada.
Princípios da Engenharia de
Software
●
Flexibilização
• O princípio da flexibilização é necessário no processo de desenvolvimento para permitir que o produto possa ser modificado com facilidade.
• O processo deve ter flexibilidade suficiente para permitir que partes do produto possam ser utilizados em outros sistemas.
Para alcançar esse princípio, a engenharia de
software necessita de mecanismos para controlar o processo de desenvolvimento.
Processo de Software
●
Conjunto de atividades pré-definidas que
levam a um resultado de boa qualidade,
nas condições desejadas do projeto
Camadas da Engenharia de Software
Qualidade
Processo
Métodos
Ferramentas
DEFINIÇÃO
DESENVOLVIMENTO
MANUTENÇÃO
VV&T
Atividades Fundamentais de um
Processo
Modelos de Processo de Software
●
Ajudam no controle e na coordenação de
um projeto de software
●
Definem as atividades que devem ser
realizadas
Diferentes Modelos de Processo de
Software
●
Seqüencial Linear – desenvolvimento
retilíneo, onde o sistema completo está
pronto após conclusão da seqüência.
●
Prototipagem – ajuda o cliente ou
desenvolvedor no entendimento das
necessidades
Iteração de Processo
●
Para a maioria dos grandes sistemas,
existe a necessidade de repetir partes do
processo, à medida que os requisitos do
sistema evoluem.
●
O projeto do sistema e o trabalho de
implementação devem ser refeitos, a fim de
implementar os requisitos modificados.
Requisitos
Análise
Projeto
Implementação
Teste
Concepção Elaboração Construção Transição
Fases
Qualidade de processo de software
Processo de Desenvolvimen to SOFTWARE PRODUTO PROCESSO DE SOFTWAREdesenvolvedor
usuário
organização
requisitos
requisitos
atendidos
atendidos
requisitos de
requisitos de
software produto
software produto
Por que focalizar o Processo de
Software?
●
Dirigindo o foco somente no
produto
produto
, deixa-se de
lado:
-
conhecimento
conhecimento
de como fazer isso melhor
●
Dirigindo o foco no
processo
processo
prevê-se:
-
repetição
repetição
de resultados
- tendências
futuras
futuras
do projeto
- características do
produto
produto
Qualidade de Processo de Software X
Maturidade de Processo de Software
●
A
maturidade dos processos
maturidade dos processos
de software de
uma organização influencia na sua capacidade de
atingir metas de
custo
custo
,
qualidade
qualidade
e
cronograma
cronograma
●
A
qualidade do processo de software
qualidade do processo de software
pode ser
analisada através do
nível de maturidade
nível de maturidade
do
processo.
Processo de Software Imaturo
CARACTERÍSTICAS
CARACTERÍSTICAS
●
Processo de Desenvolvimento de Software ad
hoc;
improvisado
improvisado
●
Processo de Desenvolvimento de Software
fortemente
dependente
dependente
dos profissionais
●
Processo de Desenvolvimento de Software
indisciplinado
indisciplinado
Processo de Software Imaturo
CONSEQÜÊNCIAS
CONSEQÜÊNCIAS
●
●
Produtividade
Produtividade
geralmente
menor
menor
●
●
Prazo
Prazo
e
qualidade
qualidade
de difícil
previsão
previsão
●Custos de
manutenção
manutenção
geralmente
altos
altos
●Baixa
visão
visão
do
progresso
progresso
e da
qualidade
qualidade
●Mais
riscos
riscos
na adoção de
nova tecnologia
nova tecnologia
Processo de Software Maduro
CARACTERÍSTICAS (a)
CARACTERÍSTICAS (a)
●
Processo de Desenvolvimento de Software
conhecido
conhecido
por todos
●
Processo de Desenvolvimento de Software com
apoio
apoio
visível da
alta administração
alta administração
●
●
Auditagem
Auditagem
da
fidelidade
fidelidade
ao Processo de
Desenvolvimento de Software
Medidas
Processo de Software Maduro
CARACTERÍSTICAS (b)
CARACTERÍSTICAS (b)
●
Adoção
disciplinada
disciplinada
de
tecnologia
tecnologia
●Uso de
teste
teste
-
-
piloto
piloto
●
Papéis e
responsabilidades
responsabilidades
clara e inequivocamente
definidos
definidos
●
●
Acompanhamento
Acompanhamento
da qualidade do produto e da
Processo de Software Maduro
CONSEQÜÊNCIAS
CONSEQÜÊNCIAS
●
●
Expectativas
Expectativas
para custos, cronograma, funcionalidades e
qualidade de produto de um modo geral, usualmente,
alcançadas
alcançadas
●
●
Melhoria
Melhoria
constante do processo de desenvolvimento de
software porque:
Melhoria de Processo de Software
●
O crescente
reconhecimento
reconhecimento
da importância de
se
garantir
garantir
a
Qualidade
Qualidade
de um
Produto de
Produto de
Software
Software
tem levado muita organizações a
melhorar
melhorar
o
controle
controle
sobre todos os
elementos
elementos
Melhoria de Processo de Software
Aonde queremos chegar
Aonde queremos chegar
AutoAvaliação Normas para Comparação
Aonde
Aonde
estamos
estamos
Aonde o
Aonde o
mundo
mundo
está...
está...
Melhoria do Processo de Software
Processo
Processo
Avaliação
Avaliação
do
do
Processo
Processo
Melhoria
Melhoria
é examinado pela
é examinado pela
conduz à
conduz à
identifica
identifica
mudanças no
mudanças no
Melhoria de Processo de Software
●
Um programa efetivo de mudança requer
compreensão do status atual.
●
●
Provérbio Chinês - “Se você não sabe para onde
Provérbio Chinês
está indo, nenhuma estrada tampouco saberá.”
●
●
Provérbio de
Provérbio de
Humphrey - “Se você não sabe onde
Humphrey
Realizando um grupo de
atividades correlatas que,
atividades
quando efetuadas coletivamente, alcançam um
conjunto de
metas consideradas importantes no
metas
controle
controle do
Processo de Software
Processo de Software
Como melhorar o processo de software?
●