Você está na página 1de 36

Engenharia de Software

Prof. Ricardo Destro


Prof. Rogério Airoldi
FISP

Este material foi baseado nas apresentações da Professora Dra.


Selma S. S. Melnikoff da Escola Politécnica da USP para a
disciplina de Princípios de Projeto de Software e metodologia de
programação.
2002
Tópicos
• Princípios da Engenharia de Software
• Processo de software
• Análise de sistema/software
• Projeto de software
• Implementação
• Testes
• Manutenção
• Garantia da Qualidade
Sistema
1. Sistema é um conjunto de elementos que
apresentam uma relação entre si, tal que
apresentem uma unidade.

2. Sistema é uma disposição das partes ou dos


elementos de um todo, coordenados entre si, e que
formam estrutura organizada. (Aurélio)
Sistemas Automatizados

PROGRAMAS

SISTEMA
USUÁRIOS
EQUIPAMENTOS

DOCUMENTOS
DADOS
Software - Definição
• Software é:
1. Conjunto de instruções (programas de computador)
que, quando executado, realizam as funções desejadas,
com o desempenho desejado;
2. Conjunto de dados que permitem aos programas
manipularem adequadamente a informação;
3. Documentos que descrevem a operação e o uso dos
programas.
Exemplos de Software
• software de sistema: sistemas operacionais,
compiladores, gerenciadores de redes
• software de tempo real
• “management information systems”- MIS
• software científico e de engenharia: CAD,
simuladores
• software embarcado
• software para PC
• software para inteligência artificial
• software Web
Evolução do software
1950 1960 1970-1980 1990 2000

1a. fase
4a. fase
sistemas batch
distribuição limitada 2a. fase objetos
software dedicado sistemas multiusuário computação paralela
tempo real WWW
bancos de dados “desk-tops” poderosos
software-produto Processos maduros
5a. fase
Computação ubíqua
Portáteis
3a. fase Dependência social
sistemas distribuídos Produção industrial
hardware de baixo custo
inteligência local
impacto no consumidor
Software - Situação Atual
• Responsável pelo produto mais importante:
INFORMAÇÃO
• Sofisticação e complexidade
• Carência de volume e competência profissional
• Equipes multidisciplinares
Problemas
(continuam os mesmos...)
• Por que os programas não ficam prontos
rapidamente?
• Por que os custos de desenvolvimento são tão
altos?
• Por que os erros não são detectados antes da
entrega aos consumidores?
• Por que é difícil medir o progresso durante o
desenvolvimento?
Crise do Software
• Crise de tecnologia - hardware caminha mais
rápido que o software

• Crise de oferta - demanda é maior que a


capacidade de desenvolvimento

• Crise de manutenção - projeto mal feito e recursos


escassos não permitem manutenção.
Problemas Atuais
• Na década de 60 foi prevista a crise de software
que não chegu a ocorrer.
• Os problemas de desenvolvimento de software não
estão limitados aos sistemas que não funcionam
adequadamente:
– Como desenvolver?
– Como manter o volume de software existente?
– Como atender à demanda crescente pelo software?
Características de Software
• Software é desenvolvido; não é manufaturado.
• Software não desgasta.
• Software deteriora com a manutenção.
• Software ainda não resulta da montagem das
partes:
– Existe esforço para componentização;
– Não existem componentes padronizados como em
hardware.
Software não é montagem de
partes (ainda...)
• hardware: montagem de componentes
• software:
– reutilização de software
– bibliotecas
– componentes (especificação, projeto, código, casos de
teste, etc.)
– técnicas de 4a. geração
Engenharia de Software
“[Engenharia de Software é] o estabelecimento e o
uso de princípios sólidos de engenharia, com o
intuito de obter, economicamente, software que
seja confiável e funcione eficientemente em
máquinas reais.”

Fritz Bauer, 1969


IEEE 610.12
Engenharia de software é:

1. A aplicação de uma abordagem sistemática,


disciplinada e quantificável ao desenvolvimento,
operação e manutenção do software
2. O estudo das abordagens definidas em 1.
Camadas da Engenharia de
Software

CASE
Ferramentas
Análise, projeto...
KPAs
Métodos
Compromisso da organização
Processo
Melhoria contínua

Qualidade
Para que um processo?
• Para definir as atividades a serem conduzidas no
projeto;
• Para uniformizar o entendimento dos envolvidos
em relação ao desenvolvimento de sistemas;
• Para manter a consistência entre sistemas
desenvolvidos em uma mesma empresa;
• Para viabilizar pontos de controle para a gerência.
Modelos de Processo de Software
• modelo clássico ou cascata
• modelo de prototipação
• modelo espiral
• modelo com técnicas de 4a. Geração
Modelo de Cascata
ENGENHARIA
ENGENHARIA
DE SISTEMAS
DE SISTEMAS

ANÁLISE
ANÁLISE

PROJETO
PROJETO

IMPLEMEN-
IMPLEMEN-
TAÇÃO
TAÇÃO

TESTE
TESTE

MANUTENÇÃO
MANUTENÇÃO
Fase 1: Engenharia de Sistema
• Definição do escopo do sistema
• Avaliação de sistemas atualmente em uso
• Definição de metas e objetivos do sistema
• Estudo da viabilidade de automatizar
• Estimativa de tempo e recursos
• Escolha da metodologia de projeto
• Identificação de recursos de hardware e software
• Resultado: análise de viabilidade e Especificação
de Requisitos de Sistema
Fase 2: Análise de Requisitos
• Modelagem independente de tecnologia, com o
uso de ferramentas de modelagem
• Refinamento das relações custo-benefício
• Refinamento das estimativas de recursos
• Especificação dos critérios de aceitação
• Definição do balanceamento entre operação
humana e automação
• Resultado: Especificação de Requisitos de
Software
Fase 3: Projeto de Software
• Definição da arquitetura de software
– Modelo de processadores
– Modelo de tarefas
– Módulos de programa.
• Transformação do modelo de dados em base de
dados
• Elaboração do modelo da interface homem-
máquina
• Elaboração do plano de testes
• Resultado: documentos de projeto de software
Fase 4: Implementação
• Transformação em código
• Montagem de banco de dados
• Uso de técnicas de programação
• Estabelecimento de padrões de codificação
• Resultado: códigos
Fase 5: Testes
• Comparação do sistema com sua especificação
• Verificação do funcionamento interno e externo
do programa
• Uso de estratégia de teste
• Uso de ambientes de teste
• Aceitação
• Instalação (simples ou gradual)
• Resultado: sistema instalado
Fase 6: Manutenção
• Devida à correção de erros
• Devida à mudanças na plataforma de software
• Devida às mudanças no hardware
• Devida à evolução do negócio
• Resultados: sistema e documentos modificados
Problemas com Modelo de Cascata

• Fluxo seqüencial é quebrado pelas múltiplas


iterações.
• É difícil acomodar incertezas do início do
desenvolvimento.
• O software produto só é visível ao final do ciclo.
• Não prevê explicitamente o uso dos pacotes pré-
existentes.
Modelo de Prototipação
• Usado quando não se tem segurança nos requisitos
• Prototipar o que for necessário
– interface de usuário (em papel ou tela)
– parte das funções

• Após a identificação dos requisitos, descartar o


sistema?
Modelo de Prototipação
INÍCIO
FIM

identificação de
engenharia
requisitos
de produto

refinamento
do protótipo
projeto
breve

construção do
avaliação do protótipo
protótipo
pelo cliente
Problemas com Modelo de Prototipação

• O cliente acha que protótipo é produto.


• O projetista incorpora soluções inadequadas.
• O protótipo pode não convergir.
• A administração do ciclo de prototipação pode
ser complidada.
Modelo Espiral

ANÁLISE DE RISCO
PLANEJAMENTO
Desenvolvimento de conceito

Desenvolvimento de novo produto

Aperfeiçoamento de produto

Manutenção
SISTEMA
COMPLETO

AVALIAÇÃO
ENGENHARIA
Modelo Espiral
• Planejamento: determinação dos objetivos,
alternativas e restrições
• Análise de riscos: análise de alternativas e
identificação/resolução dos problemas
• Engenharia: desenvolvimento do produto do nível
seguinte
• Avaliação do cliente: avaliação do produto pelo
cliente
Problemas do Modelo Espiral
• É difícil convencer o cliente de que o processo é
controlável.
• Exige maior experiência gerencial.
• Exige experiência em análise de riscos.
Técnicas de 4a. Geração
• Caracterizam-se por permitir a especificação de
software em nível alto.
• Tipos de ferramentas
– gerenciadores de bancos de dados
– linguagens de consulta não-procedurais para banco de
dados
– geradores de relatórios
– construtores de telas
– geradores de código
Modelo com Técnicas de 4a. Geração

IDENTIFICAÇÃO
IDENTIFICAÇÃO
DE
DEREQUISITOS
REQUISITOS

ESTRATÉGIA
ESTRATÉGIADE
DE
PROJETO
PROJETO

IMPLEMENTAÇÃO
IMPLEMENTAÇÃO

TESTES
TESTES
Problemas com Técnicas de 4a. Geração

• O número de ferramentas é grande; o modelo fica


abstrato.
• As ferramentas podem se tornar obsoletos
rapidamente.
• Tem grande dependência do fornecedor.
• Deve considerar os royalties na distribuição.
• A confiabilidade e a eficiência devem ser
consideradas.
Mitos de Software
• As normas e os procedimentos de software fornecem toda a
informação necessária ao engenheiro de software.
• Quem tiver computadores de última linha está equipado com todas
as ferramentas necessárias para o desenvolvimento de software.
• Aumentar o tamanho da equipe resolve o problema de um projeto
atrasado
• Terceirizar resolve os problemas de gerência
• Basta uma visão geral dos objetivos para se iniciar o
desenvolvimento do software
• É fácil acomodar as mudanças de requisitos durante o
desenvolvimento do software
• Uma vez que o programa está pronto, acabou o trabalho do
engenheiro de software
• Não há como avaliar a qualidade do software até que ele seja
efetivamente colocado em produção
• O único produto que realmente interessa é o código executável