1. Engenharia de Software
Aula 2 – Processos de Software
Profa. Dra. Judith Pavón
Universidade Salvador – UNIFACS
2012
2. Conteúdo
Objetivo da aula
Leitura recomendada
Processos
Modelos de Processos de Desenvolvimento de Software
Processo de Software (genêrico)
Modelos do Ciclo de Vida de Software
Linguagem
Método
Ferramenta CASE
Metodologia
Pontos Principais
2
3. Objetivo da aula
O objetivo desta aula é apresentar os
conceitos de processo de software e as
características dos processos tradicionais
de desenvolvimento de software.
3
4. Processos
• Conjunto de atividades pré-definidas que levam a um
resultado de boa qualidade, nas condições desejadas do
projeto (tempo e custo).
• Os processos devem ser adequados aos diferentes tipos
de sistema a construir.
Os modelos de processos de desenvolvimento de software
foram originalmente propostos para colocar ordem no caos
do desenvolvimento de software.
Maturidade do processo
- Medida da eficiência global da empresa de
software em relação ao processo de
desenvolvimento (Ex. CMMI)
4
5. Processo
Conjunto de atividades
bem definidas
com responsáveis
com artefatos de entrada e saída
com dependências entre as mesmas e
ordem de execução
com modelo de ciclo de vida
6. Modelos de Processo de
Desenvolvimento de Software
• Os modelos de processos de desenvolvimento de software
têm trazido uma certa dose de estrutura útil para o trabalho
de engenharia de software e têm fornecido um roteiro
razoavelmente efetivo para as equipes de software.
• Quem decide o modelo de processo de desenvolvimento a
ser utilizado?
Os líderes de equipe ou gerentes adaptam um modelo de
processo a suas necessidades e depois o seguem.
6
7. Modelos de Processo de
Desenvolvimento de Software
• Por que é importante?
Porque fornece estabilidade, controle e organização a uma atividade que pode,
se deixada sem controle, tornar-se caótica.
• Quais são os passos?
O processo dirige uma equipe de software por meio de um arcabouço de
atividades guarda-chuva que são organizadas em um fluxo de processo que
pode ser linear, incremental ou evolutivo.
• Qual é o produto do trabalho?
Do ponto de vista de um engenheiro de software, os produtos do trabalho são
todos os artefatos que conformam um software.
• Como tenho certeza que fiz corretamente?
Existem diversos mecanismos de avaliação de processo de software que
permitem às organizações determinar a “maturidade” do seu processo.
7
8. Processo de Software
(genêrico)
um framework para as tarefas necessárias para
construir software de qualidade
Três fases genéricas:
Definição
Desenvolvimento
Manutenção
9. Fase de Definição
Foco: o que
Atividades:
Análise de viabilidade
planejamento do projeto
análise e especificação de
requisitos
10. Fase de
Desenvolvimento
Foco: como
Atividades:
projeto do software
geração de código
teste do software
11. Fase de Manutenção
Foco: mudanças no produto
associadas a:
correção de erros
adaptação por mudanças no ambiente
evolução por mudanças nos requisitos do
usuário
12. Atividades de Apoio
acompanhamento e controle do projeto
revisões técnicas
garantia da qualidade de software
gerência de configuração
preparação e produção de documentos
gerência de reuso
medições
gerência de risco
13. Atividade 3 (entregar na próxima aula)
Trabalho em duplas
1. Identificar e listar os principais processos de
desenvolvimento de software
2. Fazer um breve resumo das principais características de
cada processo listado no item anterior, comentar as fases
desse processo e quando é recomendado usar.
3. Escolha um sistema a ser desenvolvido.
4. Defina o processo de desenvolvimento a ser seguido.
13
14. Modelos do Ciclo de Vida de
Software
Cascata
Modelos Iterativos
Espiral
Incremental (ex: do RUP)
...
17. Modelo Cascata
A metodologia de desenvolvimento em cascata foi
desenvolvida pela marinha norte-americana nos
anos 60 para permitir o desenvolvimento de
software militares.
Propõe uma sequência de fases rígidas.
Ao final de cada fase, a equipe de projeto finaliza
com uma revisão.
Somente pode ir para a próxima fase, se finalizar a
anterior para o sistema como um todo.
18. Modelo Cascata – Quando
usar
A Metodologia em Cascata funciona bem quando os
requisitos do usuário são rígidos e podem ser
conhecidos com antecedência.
A metodologia de Desenvolvimento em Cascata
pode funcionar bem em ambientes rígidos e
fortemente controlados.
No cenário comercial, somente recomenda-se usar
este modelo para sistemas pequenos e simples, pois
se for um sistema complexo vai demorar muito
tempo até mostrar o funcionamento do sistema.
19. Prototipação
O modelo de Prototipagem é uma abordagem que
visualiza o desenvolvimento de concepções do
sistema conforme o andamento do projeto.
Esta metodologia baseia-se na utilização de
prototipagem visual ou modelos do sistema final.
Estes modelos podem ser simples desenhos,
imagens gráficas ou simulações de aplicações.
Esta metodologia é até certo ponto bastante flexível
a respeito de mudanças de requisitos; contudo, este
processo precisa de muito controle.
21. Modelos Iterativos
Requisitos de sistema SEMPRE evoluem
durante o decorrer de um projeto. Assim a
iteração do processo sempre faz parte do
desenvolvimento.
Iterações podem ser aplicadas a quaisquer
dos processos de software.
Duas abordagens (relacionadas)
Desenvolvimento espiral
Desenvolvimento incremental
22. Desenvolvimento Espiral
Guia o processo de desenvolvimento com base em
análise de riscos e planejamento que é
realizado durante toda a evolução do
desenvolvimento.
Exemplos de riscos: pessoas que abandonam a
equipe de desenvolvimento, ferramentas que não
podem ser utilizadas, falha em equipamentos usados
no desenvolvimento ou que serão utilizados no
produto final, etc.
A identificação e o gerenciamento de riscos é hoje
uma atividade importantíssima no desenvolvimento
de software devido à imaturidade da área e à falta de
conhecimento, técnicas e ferramentas adequadas.
23. Desenvolvimento Espiral
Guia o processo de desenvolvimento com base em
análise de riscos e planejamento que é
realizado durante toda a evolução do
desenvolvimento.
Exemplos de riscos: pessoas que abandonam a
equipe de desenvolvimento, ferramentas que não
podem ser utilizadas, falha em equipamentos usados
no desenvolvimento ou que serão utilizados no
produto final, etc.
A identificação e o gerenciamento de riscos é hoje
uma atividade importantíssima no desenvolvimento
de software devido à imaturidade da área e à falta de
conhecimento, técnicas e ferramentas adequadas.
26. Desenvolvimento Incremental
Em vez de entregar o sistema como um todo, o
desenvolvimento e a entrega são divididos em
incrementos, com cada incremento entregando
parte da funcionalidade requerida
Requisitos dos usuários são priorizados e os
requisitos de mais alta prioridade são incluídos
nas iterações iniciais
Uma vez que o desenvolvimento de um
incremento é iniciado, os requisitos são
"congelados". Embora os requisitos possam
continuar a evoluir para incrementos posteriores.
27. RUP (Rational Unified Process)
A metodologia RUP (Rational Unified Process) é
um processo que fornece uma metodologia
disciplinada de desenvolvimento utilizando um
conjunto de ferramentas, modelos e entregáveis.
Nesse modelo, considera-se o desenvolvimento
do software em ciclos iterativos onde uma
pequena porção dos requisitos passa por todas as
etapas de desenvolvimento como em um modelo
cascata.
Ao final de cada ciclo de iteração têm-se uma
nova versão do software, a qual será
incrementada a cada novo ciclo que ocorrer.
28. RUP (Rational Unified Process)
O RUP é estruturado em duas dimensões:
Eixo X -Tempo: divisão do ciclo de vida em
fases e iterações, mostra os aspectos do ciclo de
vida do processo à medida que se desenvolve.
Eixo Y - Componentes de processo:
produção de um conjunto específico de artefatos
(produtos) com atividades bem definidas.
30. Linguagem
Notação com sintaxe e semântica bem
definidas
com representação gráfica ou textual
Usada para descrever os artefatos
gerados durante o desenvolvimento de
software
Exemplos: UML, BPMN
31. Método
Descrição sistemática de como deve-se
realizar uma determinada atividade ou
tarefa
A descrição é normalmente feita
através de padrões e guias
Exemplos: Método para descoberta das
classes de análise no RUP.
32. Ferramenta CASE
Provê suporte computacional a um
determinado método ou linguagem
Ambiente de desenvolvimento: conjunto
de ferramentas integradas (CASE)
Exemplos: Rational Rose, JBuilder
34. Pontos principais
Engenharia de software é uma disciplina de
engenharia que está envolvida com todos os
aspectos da produção de software
Produtos de software consistem de programas
desenvolvidos e documentação associada. Alguns
atributos de qualidade do produto são
manutenibilidade, eficiência e usabilidade
O processo de software consiste nas atividades que
são envolvidas no desenvolvimento de produtos de
software
35. Pontos principais
Métodos são formas organizadas de produzir
software. Eles incluem sugestões para o processo a
ser seguido, as notações a serem usadas, regras
que governam as descrições do sistema que são
produzidas e diretrizes de projeto
Ferramentas CASE são sistemas de software que
são projetados para suportar as atividades rotineiras
no processo de software, como edição de diagramas
de projeto e verificação de consistência dos
diagramas