Escolar Documentos
Profissional Documentos
Cultura Documentos
de Software
Aula 01 - Introdução
▪ Nas primeiras décadas de uso do computador, o principal
desafio era desenvolver um hardware que reduzisse o custo
do processamento e armazenamento de dados.
▪ A complexidade dos programas era limitada pelos
recursos de hardware.
No Início...
▪ Os programas eram desenvolvidos por um pequeno grupo
de pesquisadores.
▪ Não havia método de desenvolvimento de software.
▪ As exigências e as expectativas dos usuários eram baixas,
pois não havia concorrência no mercado.
Introdução
▪ Ao longo de 50 anos, a importância do software passou por
mudanças significativas:
▪ Melhoria no desempenho dos computadores.
▪ Modificações nas arquiteturas dos computadores.
▪ Aumento significativo na memória e capacidade de
armazenamento.
▪ Grande variedade de opções de entrada e saída.
Introdução
▪ Dificuldades do desenvolvimento de software frente ao
rápido crescimento da demanda por software, da
complexidade dos problemas a serem resolvidos e da
inexistência de técnicas estabelecidas para o
desenvolvimento de sistemas que funcionassem
adequadamente ou pudessem ser validados.
Crise de
Software
▪ Baixa produtividade no desenvolvimento e alto custo.
▪ Baixa qualidade do software produzido.
▪ Custos em manutenção de software acabam superando custos
em desenvolvimento.
▪ Estimativas de prazo e custo são frequentemente imprecisas.
Crise de ▪ Manutenção de software é ameaçada por projetos ruins e falta
Software - de controle e gerência adequados.
Ariane 5
▪ Problema no freio.
▪ Recall para atualização do software.
Software em
Carros
▪ Datas eram armazenadas com apenas 2 dígitos para o ano.
▪ Economia de memória.
O Bug do
Milênio
▪ Softwares de sistemas: coleção de programas escritos para
servir a outros programas.
▪ Softwares de aplicação: programas isolados que resolvem
uma necessidade específica do negócio.
▪ Softwares científicos e de engenharia: aplicações voltadas
para a pesquisa científica.
Categorias de ▪ Softwares embutidos: controla as funções de um produto ou
Software sistema.
▪ Softwares para linhas de produto: capacidade específica a
ser usada por muitos clientes com o mesmo objetivo.
▪ Aplicações Web: sofisticados ambientes computacionais,
integrados a banco de dados e aplicações de negócio.
▪ Softwares para inteligência artificial: faz uso de algoritmos
não-numéricos para resolver problemas complexos.
▪ É uma área da computação voltada à especificação,
desenvolvimento, manutenção e criação de sistemas
de software, com a aplicação de tecnologias e práticas de
gerência de projetos e outras disciplinas, visando
organização, produtividade e qualidade.
Engenharia de
Software
▪ Modelagem de Negócio
▪ Engenharia de Requisitos
▪ Análise e Projeto
▪ Arquitetura de Software
Atividades da ▪ Implementação
Engenharia de ▪ Testes
Software ▪ Implantação/Distribuição
▪ Gerenciamento de Projetos
▪ Gerência de Configuração e Mudanças
▪ Manutenção
▪ O termo foi empregado pela primeira vez em 1969, pela
japonesa Hitachi, mas só começou a ficar popular no início dos
anos 90.
▪ Características:
Fábricas de ▪ Ter processos claros e depender mais deles do que das pessoas,
de forma a ter resultados mais previsíveis.
Software ▪ Aplicar conceitos da indústria em geral em ambientes de
desenvolvimento de software de forma a aumentar a
produtividade e diminuir prazos e custos.
▪ Divisão de trabalho com equipes especializadas para cada parte
do desenvolvimento de um software, que trabalham como numa
linha de produção.
▪ “A qualidade de um sistema é fortemente influenciada pela
qualidade do processo utilizado para adquiri-lo, desenvolvê-lo
e mantê-lo” SEI
Como obter
qualidade?
▪ Conjunto de tarefas ordenadas.
▪ Séries de etapas que envolvem atividades, restrições e
recursos para alcançar a saída desejada.
Processos
▪ Conjunto de práticas realizadas para atingir um determinado
propósito; pode incluir ferramentas, métodos, materiais e/ou
pessoas.
▪ Um processo define quem está fazendo o quê, quando e como
alcançar um certo objetivo.
Processos de
Software
▪ Quando o processo envolve a elaboração de um produto,
pode ser chamado de ciclo de vida.
▪ O ciclo de vida de software descreve a vida do software desde
a concepção até a implementação, entrega, utilização e
manutenção.
Ciclo de Vida
▪ Especificação
▪ Definição das funcionalidades e restrições.
▪ Desenvolvimento
▪ Produção do software.
▪ Validação
▪ Validação do software para verificar se é o que o cliente precisa.
Atividades de ▪ Evolução
um Processo de ▪ Evolução do software para atender mudanças necessárias pelo
cliente.
Software
▪ Características das atividades:
▪ Bem definidas
▪ Com responsáveis
Atividades de ▪ Com artefatos de entrada e saída
▪ Com dependências entre as mesmas e ordem de execução
um Processo de ▪ Com “modelo de ciclo de vida”
Software
▪ Assim, um processo de software padrão é composto por:
▪ Fases/atividades (entradas e saídas)
▪ Procedimentos/métodos
Modelo Cascata
▪ Torna o processo de desenvolvimento estruturado.
▪ Tem uma ordem sequencial de fases.
Modelo Cascata ▪ Cada fase cai em cascata na próxima e cada fase deve estar
- Vantagens terminada antes do início da seguinte.
▪ Todas as atividades identificadas nas fases do modelo são
fundamentais e estão na ordem certa.
▪ Não fornece feedback entre as fases e não permite a
atualização ou redefinição das fases anteriores.
▪ Não suporta modificações nos requisitos.
Modelo Cascata ▪ Não permite a reutilização.
- Desvantagens ▪ É excessivamente sincronizado.
▪ Se ocorrer um atraso, todo o processo é afetado.
▪ Faz aparecer o software muito tarde.
▪ É criticado por ser rígido, monolítico e linear.
▪ Inspirado em outros modelos de engenharia, este modelo
argumenta que cada atividade apenas deve ser iniciada
quando a outra estiver terminada e verificada.
Modelo Cascata ▪ Ele é considerado monolítico por não introduzir a participação
- Críticas de clientes e usuários durante
desenvolvimento, mas apenas o
as atividades do
software ter sido
implementado e entregue.
▪ Não existe como o cliente verificar antecipadamente qual o
produto final para detectar eventuais problemas.
▪ Situações onde o software a ser desenvolvido é simples, os
Modelo Cascata requisitos são bem conhecidos, assim como a tecnologia de
programação.
– Quando usar?
Modelo Cascata
com
Realimentação
▪ Criado pelo Ministério da Defesa da Alemanha, em 1992.
▪ É uma variação do Modelo em Cascata.
▪ Demonstra que as atividades de teste estão relacionadas com
a análise e o projeto.
Modelo em V
▪ Capacita o desenvolvedor a criar um modelo do software que
será implementado.
▪ Tem o objetivo de resolver problemas ou limitações
existentes na análise de requisitos, antes do início da
implementação do software.
Desenvolvimento ▪ O protótipo pode ser apresentado ao cliente na forma de
Evolucionário - papel ou modelo executável no computador, retratando a
Desenvolvimento
Incremental
Desenvolvimento
Iterativo e
Incremental
▪ Vantagens:
▪ O cliente recebe resultados rapidamente (vantagem
para o negócio)
Desenvolvimento
▪ Risco menor de fracasso do sistema (problemas
Iterativo e isolados, não gerais).
Incremental ▪ Funcionalidades mais importantes são entregues
primeiro (testadas com mais frequência, menor
quantidade de erros).
▪ Desvantagens: