ENGENHARIA DE SOFTWARE
Prof. Paulo Malcher
prcmalcher@gmail.com
https://sites.google.com/site/professorpaulomalcher/
O Processo
–
O que é?
•
Um
conjunto
de
atividades
que
recebem
insumos, transformando-os, de acordo com
uma lógica pré-estabelecida e com agregação
de
valores,
em
produtos/serviços
para
responderem
às
necessidades
dos
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
O Processo de Software
–
O que
é?
•
Um processo de software pode ser entendido
como um
conjunto estruturado de atividades
exigidas para desenvolver um sistema de
software.
•
Assim
Sommerville
[2011] trás a seguinte
definição:
"[O processo é] um conjunto de atividades e resultados associados que produzem um
O Processo de Software
–
O que
é?
•
Jalote conclui que um processo de software é:
O Processo de Software
–
O que
é?
•
Jalote ainda afirma:
O Processo de Software
–
O que
é?
•
Humprey (1989) diz que é:
O Processo de Software
–
O que
é?
•
Existem
muitos
diferentes
processos
de
software. Cada equipe/projeto tem os seus
processos de
software. Mas todos devem
incluir três elementos fundamentais para a
engenharia de software.
• Métodos
• Ferramentas
O Processo de Software
–
Componentes
•
A partir destas definições podemos considerar
que de forma geral um
processo de software
padrão pode ser visto como um conjunto de
atividades
(procedimentos)
,
métodos
,
O Processo de Software
-Componentes
•
MÉTODOS
• Para se desenvolver processos ou um software como um todo, é necessário definir formas de desenvolvimento que permitirão que esses processos sejam concluídos. Essas formas são os
métodos. Ou seja, métodos são as várias formas
O Processo de Software
-Componentes
O Processo de Software
-Componentes
•
FERRAMENTAS
• Dão suporte automatizado aos métodos. Existem atualmente ferramentas para sustentar cada método.
• Quando as ferramentas são integradas, é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE
-Computer Aided Software Engineering.
O Processo de Software
-Componentes
O Processo de Software
-Componentes
•
PROCEDIMENTOS
• Constituem o elo de ligação entre os métodos e as ferramentas.
• São a Sequência em que os métodos serão aplicados.
O Processo de Software
-Componentes
•
Na definição de um processo de software
devem
ser
consideradas
as
seguintes
informações:
• Atividades a serem realizadas.
• Recursos necessários.
• Artefatos requeridos e produzidos.
• Procedimentos adotados.
O Processo de Software
–
Fases
•
Sucintamente podemos definir o processo de
software
como um conjunto de atividades
uniformizadas
a
serem
aplicadas
O Processo de Software
–
Fases
O Processo de Software
–
Fases
•
Para Schwartz (2009) as principais fases de um
processo de software são :
• Especificação: tradução da necessidade ou requisito operacional para uma descrição da funcionalidade a ser executada.
O Processo de Software
–
Fases
•
Para Schwartz (2009) as principais fases de um
processo de software são :
• Programação (Codificação): produção do código que controla o sistema e realiza a computação e lógica envolvida.
O Processo de Software
–
Fases
•
Para Schwartz (2009) as principais fases de um
processo de software são :
O Processo de Software
–
Fases
O Processo de Software
–
Modelo Genérico
•
Independentemente da natureza do projeto e
aplicação os modelos de processo de software
possuem:
• Fase de definição (especificação e projeto).
• Fase de desenvolvimento (programação, verificação e integração).
• Fase de manutenção (manutenção).
Fase de Definição do Processo de Software
•
Fase de Definição
• Focaliza "o que" será desenvolvido.
•
Fase de Desenvolvimento
• Focaliza "como" o software será desenvolvido.
•
Fase de Manutenção
O Processo de Software
–
Fases
•
As três fases genéricas do processo de
software são complementadas por uma série
de atividades de apoio.
O Processo de Software
–
Fases
•
Atividades típicas nessa categoria são:
• Controle e Acompanhamento do Projeto de Software.
• Revisões Técnicas Formais.
• Garantia de Qualidade de Software.
• Gestão de Configuração de Software.
• Preparação e Produção de Documentos.
• Gestão de reutilização.
• Medições.
O Processo de Software
–
Fases
O Processo de Software
-Atividades
O Processo de Software
-Atividades
O Processo de Software
-Atividades
•
Especificação
• Engenharia de Sistema: estabelecimento de uma solução geral para o problema, envolvendo questões extra software.
• Análise de Requisitos: levantamento das necessidades do software a ser implementado. A Análise tem como objetivo produzir uma especificação de requisitos, que convencionalmente é um documento.
O Processo de Software
-Atividades
•
Projeto
• Projeto Arquitetural: onde é desenvolvido um modelo conceitual para o sistema, composto de módulos mais ou menos independentes.
• Projeto de Interface: onde cada módulo tem sua interface de comunicação estudada e definida.
O Processo de Software
-Atividades
•
Programação (Codificação)
O Processo de Software
-Atividades
•
Verificação e Integração:
• Teste de Unidade e Módulo: a realização de testes para verificar a presença de erros e comportamento adequado a nível das funções e módulos básicos do sistema.
O Processo de Software
-Atividades
•
Manutenção:
O Processo de Software
-Atividades
•
Desta forma as atividades relacionadas a um
processo
de
software
estão
diretamente
vinculadas com a produção do software como
produto
final.
Afim
de
especificar
quais
atividades devem ser executadas e em qual
ordem
temos
diversos
modelos
de
O Processo de Software
-Objetivos
•
Processos de software visam assegurar o
desenvolvimento de software:
• Com prazos e necessidade de recursos definidos.
• Com elevada produtividade (de forma econômica).
O Processo de Software
-Objetivos
•
Processos de software buscam:
• Organizar
• Instrumentar
• Planejar
• Acompanhar projeto
O Processo de Software - Importância
•
Sem o uso de Processos de Software
• Procedimentos existentes na organização não são documentados e usados de forma consistente na prática.
• Erros são cometidos repetidamente.
• Dificuldade de prever cronogramas e orçamentos.
• Alto índice de defeitos, retrabalho e desperdício.
• Dificuldade de implementar boas práticas e lições aprendidas.
O Processo de Software - Importância
•
Para Sommerville (2011)
• Os processos devem ser mensuráveis
• O progresso do processo deve ser visível externamente
• Os erros do processo devem ser descobertos antes que resultem em erros no produto.
O Processo de Software - Importância
•
Para Sommerville (2011)
• Pode ser apoiado por ferramentas CASE.
• Deve ser aceito pelos stakeholders (Envolvidos).
• Problemas inesperados não devem interromper o processo.
O Processo de Software - Modelos
•
Existem
vários
modelos
de
processo
de
software (ou paradigmas de engenharia de
software).
•
Cada um representa uma tentativa de colocar
ordem em uma atividade inerentemente caótica
•
Pode-se citar os seguintes modelos e processo
O Processo de Software - Modelos
•
Cascata
•
Modelo de Desenvolvimento Evolucionário
• Programação Exploratória
• Prototipagem descartável
•
Modelo de Transformação Formal
•
Modelos Iterativos
• Espiral