Aula 2 e 3 - Introducao A Processos de Software
Aula 2 e 3 - Introducao A Processos de Software
Aula 2 e 3 - Introducao A Processos de Software
de Software
Professora: Carla Ilane Moreira Bezerra
Sumário
1. Processo de Software
2. Ciclo de Vida
3. Benefícios do Processo
O que é Processo de Software?
Um conjunto estruturado de atividades necessárias para
o desenvolvimento de um sistema de software
Especificação;
Projeto;
Validação;
Evolução.
Um processo de software pode ser definido como um
conjunto coerente de atividades, políticas, estruturas
organizacionais, tecnologias, procedimentos e artefatos
necessários para conceber, desenvolver, dispor e manter
um produto de software (FUGGETTA, 2000).
O que é Processo de Software?
Um processo eficaz deve, claramente, considerar as
relações entre as atividades, os artefatos produzidos no
desenvolvimento, as ferramentas e os procedimentos
necessários e a habilidade, o treinamento e a motivação
do pessoal envolvido (FALBO, 1998).
Uma seqüência de passos requeridos para realizar uma
tarefa (procedimento médico, operação militar, ou o
desenvolvimento ou manutenção de um software), com o
objetivo de auxiliar os envolvidos na execução das tarefas
e na realização dos trabalhos de forma coordenada, com
cada um auxiliando o outro (HUMPHERY,2005).
Processo x Modelo de Processo
Processo de software refere-se a todas as atividades, bem
como relacionamentos, artefatos, ferramentas, papéis etc,
necessárias para construir, entregar e manter um produto
de software.
Um modelo de processo de software ou ciclo de vida de
software é uma representação abstrata do processo. Ele
apresenta a descrição de um processo a partir de uma
perspectiva particular.
Modelos de Processo de Software
Outras características
devem ser levadas em
consideração durante a
vida de um produto de
software:
A adoção de um ciclo de • Organização das
vida não é suficiente para atividades do processo
guiar e controlar um
projeto de software na • Recursos humanos,
prática hardware e software
• Procedimentos de
operação
• Políticas de
desenvolvimento e
restrições
• Tipos de software
Modelos de Processo de Software
O modelo cascata
Fases separadas e distintas de especificação e desenvolvimento.
Desenvolvimento evolucionário ou evolutivo
Especificação, desenvolvimento e validação são intercalados.
Desenvolvimento incremental
As entrega são separadas em incrementos, sendo que cada
incremento fornece parte da funcionalidade solicitada
Desenvolvimento em espiral
É representado em forma de espiral e cada loop no espiral
representa uma fase do processo
Modelo cascata
Aplicabilidade
Para sistemas interativos de pequeno e médio portes;
Para partes de um sistema de grande porte (por exemplo, a
interface de usuário);
Para sistema com curto ciclo de vida.
Vantagens:
Adequado quando os requisitos não podem ser
completamente especificados de início
O uso do sistema pode aumentar o conhecimento sobre o
produto e melhorar os requisitos
Produz sistemas que atendem às necessidades imediatas do
cliente
Desenvolvimento Exploratório
Desvantagens:
Necessária uma forte gerência de custo, cronograma e
configuração
Usuários podem não entender a natureza da abordagem e se
decepcionar quando os resultados são não satisfatórios
O processo não é visível
Não se produzem documentos que reflitam as versões do sistema
Freqüentemente são mal estruturados
Software sem estrutura
Modificações cada vez mais custosas
Prototipação
Obter Requisitos
Construir Protótipo
Avaliar Protótipo
21
Prototipação
Elaborar Projeto • Representação dos aspectos do software que são visíveis ao usuário
Rápido • Abordagens de entrada e formatos de saída
22
Prototipação
Modelo executável
retratando a interface
Protótipo de trabalho
homem-máquina
que implemente um
capacitando o cliente a
subconjunto dos
compreender a forma
requisitos indicados
de interação com o
software
Programa existente
(pacote) que permita
representar todas ou
Protótipo em papel
O protótipo parte das funções
desejadas para o
pode ser software a construir
oferecido ao
cliente em
diferentes
formas:
23
Prototipação
Vantagens:
Um protótipo deve ser submetido a uma avaliação
Geralmente realizada pelo cliente
O fato de o cliente poder interagir com um protótipo ajuda a
balancear suas necessidades funcionais e de desempenho
Os desenvolvedores podem implementar os requisitos
baseado no feedback do usuário
Modelo de desenvolvimento interessante para alguns sistemas
de grande porte que representem um certo grau de dificuldade
para exprimir rigorosamente os requisitos
A experiência adquirida no desenvolvimento do protótipo vai
ser de extrema utilidade nas etapas posteriores do
desenvolvimento do sistema real, permitindo reduzir custo e
resultando num sistema melhor concebido
Prototipação
Desvantagens:
Clientes imaginam que a maior parte do trabalho já foi feita
Protótipo pode crescer de maneira não planejada, se tornando
um incremento funcional
Protótipo pode ter um desempenho melhor do que um
incremento funcional, pois não implementa toda a funcionalidade,
causando frustração aos clientes quando o sistema completo é
entregue
Quando informamos que o produto precisa ser reconstruído, o
cliente exige que alguns acertos sejam aplicados para tornar o
protótipo um produto, e muito freqüentemente, a gerência de
desenvolvimento de software cede
O desenvolvedor muitas vezes faz concessões de implementação
a fim de colocar um protótipo em funcionamento rapidamente
A opção menos ideal se tornou então parte integrante do sistema
Desenvolvimento espiral
O processo é representado como uma espiral ao invés de
uma seqüência de atividades com realimentação.
Cada loop na espiral representa uma fase no processo.
Sem fases definidas, tais como especificação ou projeto –
os loops na espiral são escolhidos dependendo do que é
requisitado.
Os riscos são explicitamente avaliados e resolvidos ao
longo do processo.
Modelo espiral do processo de software
Modelo espiral do processo de software
Setores do modelo espiral
Definição de objetivos
Objetivos específicos para a fase são identificados.
Avaliação e redução de riscos
Riscos são avaliados e atividades são realizadas para reduzir os riscos-chave.
Desenvolvimento e validação
Um modelo de desenvolvimento para o sistema, que pode ser qualquer um
dos modelos genéricos, é escolhido.
Planejamento
O projeto é revisado e a próxima fase da espiral é planejada.
Vantagens
O modelo em espiral permite que ao longo de cada iteração
se obtenham versões do sistema cada vez mais completas,
recorrendo à prototipagem para reduzir os riscos
Este tipo de modelo permite a abordagem do refinamento
seguido pelo modelo em cascata, mas que incorpora um
enquadramento iterativo que reflete, de uma forma bastante
realística, o processo de desenvolvimento
▪ Não faz distinção entre desenvolvimento e manutenção
Desvantagens
35
Entrega incremental
Exemplo
Retrabalho
Abandono de
Acúmulo planos e Produto funciona, mas com
procedimentos defeitos; prazo e custo
de trabalho
maiores; e menos
funcionalidade
Clientes e
Sucesso depende muito do funcionários
esforço heróico das pessoas Pouca insatisfeitos
repetibilidade
Motivação
Benefícios da qualidade:
Maior produtividade
Redução de defeitos no produto
Aumento da confiabilidade do produto
Menos esforço de re-trabalho
Redução de custo de desenvolvimento e manutenção
Maior competitividade
Maior índice de satisfação
Custo Relativo para Correção de Defeitos
Custo no Desenvolvimento com e sem
Inspeções
Papéis
Papel
descreve como as pessoas se comportam no processo e quais
são as
responsabilidades que elas têm
requer habilidades específicas necessárias
papéis não são pessoas
pessoas executam papéis
Primeiros Passos - Papéis
• Administrador de Rede
• Analista de Qualidade
• Analista de Requisitos
• Analista de Negócios
• Analista de Testes
• Arquiteto de Software
• Consultor
• Desenvolvedor
Cada papel tem sua
importância, disciplina, • Gerente de
artefatos associados e Configuração
atividades pré-definidas • Gerente de Projetos
• Testador
• ...
Tarefas
Tarefa
é uma ação desempenhada por alguma pessoa visando a
realização ou monitoramento do projeto
não representa uma evidência de progresso no
desenvolvimento
ter trabalhado 20 horas não implica ter produzido um artefato de
qualidade, mesmo que se tenha estimado serem necessárias 20 horas
para o seu desenvolvimento
consome recursos - consumo real
esforço (tempo de pessoa)
equipamento
financeiro
Atividades
Atividade
conjunto de tarefas que levam a um ou mais artefatos de
qualidade controlada
permite o controle da qualidade do resultado
num extremo pode ser a mera constatação que o resultado existe
no outro extremo pode envolver técnicas muito avançadas de
controle da qualidade
o esforço é medido através das tarefas constituintes
Atividades são “mini-projetos”
possuem início e fim definidos
consomem um volume finito de recursos
produzem artefatos definidos
possuem critérios de conclusão estabelecidos
Primeiros Passos - Atividades
• Análise e projeto de
software
• Desenvolvimento de
software
• Gerência de Configuração
• Gerência de Requisitos
• Gerência de Projetos
• Implantação
http://www.youtube.com/watch?v=L2zqTYgcpfg&p=09FD81C593
B3FA8F&playnext=1&index=21
Referências Bibliográficas
Qualidade de Software. André Koscianski e Michel dos Santos
Soares. Editora Novatec. 2a Edição. ISBN 978-85-7522-112-9.
Notas de Aula da disciplina de Qualidade de Software do
professor Alexandre Vasconcelos UFPE.
FUGGETTA, A. 2000. Software process: a roadmap . In
Proceedings of the Conference on the Future of Software
Engineering (Limerick, Ireland, June 04 - 11, 2000). ICSE '00.
ACM, New York, NY, 25-34.
HUMPHREY,Watts S. PSP: a self-improvement process for
software engineers. Addison-Wesley, 2005.
Sommerville, Ian. Software Engineering . 8 th edition, Addison -
Wesley, 2006.
Dúvidas?