Engenharia de
Software
Tecnologia em Análise e
Desenvolvimento de Sistemas
1. O que é software?
2. O que é Engenharia de Software?
3. Qual é a diferença entre Engenharia de
Software e Engenharia de Sistemas?
4. O que é um processo de software?
5. O que é um modelo de processo de
software?
6. Quais os desafios enfrentados pela
Engenharia de Software?
7. Quais os atributos de um bom software?
Engenharia de Software - Professor Gabriel Baptista
1. O que é Engenharia de Sistemas?
2. Algumas características dos sistemas?
3. Como se dividem os requisitos de um
sistema?
4. Como modelar um sistema?
5. Quais os componentes funcionais dos
sistemas?
6. Quais as fases de um processo de
Engenharia de Sistemas?
7. Como faço se preciso comprar um
sistema?
Engenharia de Software - Professor Gabriel Baptista
O que vem a ser um ciclo
de vida?
Engenharia de Software - Professor Gabriel Baptista
Atividades fundamentais do
Software
• Especificação:
Definição
de
funcionalidades e restrições
• Projeto (Desenho) e implementação:
Produção do software de acordo com
o especificado
• Validação: Garantia que o software
faz o que foi especificado
• Evolução: Evolução natural para
atender às necessidades do cliente.
Engenharia de Software - Professor Gabriel Baptista
Observações
• Não existe um processo de
software ideal!
• Não
existem
ferramentas
mágicas!
• A melhoria de processo deve
ser implementada!
Engenharia de Software - Professor Gabriel Baptista
•
•
•
•
Modelos de processo de
software
Genéricos
Com o objetivo de mostrar as
tendências no desenvolvimento
do software
Diferentes abordagens
Evolução
Engenharia de Software - Professor Gabriel Baptista
Modelo em “Cascata”
Water-Fall (Royce, 1970)
(SOMMERVILLE, 2003)
Engenharia de Software - Professor Gabriel Baptista
Modelo em “Cascata”
• Retrato das atividades fundamentais.
• Idealizado para não existir iteração
entre as fases. Porém, na prática,
existe uma pequena iteração.
• Costuma-se “congelar” determinados
documentos a partir de um certo ponto
do projeto.
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do modelo em
cascata?
• Quais as desvantagens do modelo em
cascata?
• Em que tipo de projeto você utilizaria
o modelo em cascata?
Engenharia de Software - Professor Gabriel Baptista
Observações sobre o
modelo em “Cascata”
• Deve ser utilizado se os requisitos
forem bem compreendidos.
• Ao encontrar um erro, deve-se
retornar até a fase causadora do erro
e reiniciar o projeto daquele ponto.
Engenharia de Software - Professor Gabriel Baptista
Modelo evolucionário
(SOMMERVILLE, 2003)
Engenharia de Software - Professor Gabriel Baptista
Modelo evolucionário
• Dois tipos:
 Exploratório: Evolução a partir de
propostas do cliente
 Protótipos descartáveis: O objetivo é
compreender os requisitos
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do modelo
evolucionário?
• Quais as desvantagens do modelo
evolucionário?
• Em que tipo de projeto você utilizaria
o modelo evolucionário?
Engenharia de Software - Professor Gabriel Baptista
Observações sobre o
modelo evolucionário
• Facilidade de interação com o cliente
• Especificação
desenvolvida
gradativamente
• Processo não é visível
• Sistemas mal-estruturados
Engenharia de Software - Professor Gabriel Baptista
• Processos iterativos!
o Possibilidade de repetição de
alguns pontos do processo para
redimensionamento
ou
mesmo
melhor entendimento do software.
 Desenvolvimento incremental
 Desenvolvimento espiral
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento
incremental
(SOMMERVILLE, 2003)
Engenharia de Software - Professor Gabriel Baptista
Observações sobre o
desenvolvimento incremental
• Meio de reduzir o retrabalho
• Funções prioritárias devem ser
entregues primeiro
• Risco menor de fracasso total
• Cuidado
com
o
número
de
incrementos!
• Cuidado com o número de funções
por incremento!
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento em espiral
(Boehm, 1988)
(SOMMERVILLE, 2003)
Engenharia de Software - Professor Gabriel Baptista
Observações sobre o
desenvolvimento em espiral
• Cada loop representa uma fase do
processo: viabilidade, requisitos, projeto,
etc.
• Quatro vetores:
 Definição de objetivos
 Avaliação e redução de riscos
 Desenvolvimento e validação
 Planejamento
• Consideração explícita dos riscos
• Abrangência de outros processos para
produção de artefatos.
Engenharia de Software - Professor Gabriel Baptista
Momento de reflexão
• Você consegue visualizar algum destes
modelos dentro da sua empresa?
• Existe uma documentação formal sobre
este processo de desenvolvimento dentro
da sua empresa?
• Você conseguiria desenhar o processo de
sua empresa?
Engenharia de Software - Professor Gabriel Baptista
Importante!
• Precisamos ter o processo que iremos
utilizar em um projeto documentado!
• Isto faz parte do planejamento do projeto!
Engenharia de Software - Professor Gabriel Baptista
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Download

Engenharia de Software - Professor Gabriel Baptista