Núcleo de Computação Eletrônica
Curso de Programação de Computadores
Maio a Setembro/2000
Análise e Projeto de Sistemas
Engenharia de Software
Renata Araujo
Ricardo Storino
A evolução do Software

Década de 1960







Multi usuários
Tempo real
Bancos de Dados
Software Produto
Década de 1980

Sistemas em Batch
Distribuição limitada
Software customizado
Década de 1970






Década de 1990





2
Sistemas distribuídos
Inteligência embutida
Hardware barato
impacto no consumidor
Sistema pessoais
Tecnologias OO
Sistemas Especialistas
Redes Neurais
Computação Paralela
Desenvolvimento de Software
Software
Usuário
Desenvolvedor
Software
3
A evolução do Software

Software cada vez





4
maior
mais funcionalidades
mais complexo
abrangendo mais usuários
exigindo a participação de equipes em seu desenvolvimento
Características do Software

Software é desenvolvido e não produzido no sentido
clássico (industrial)


Software não ‘gasta’


5
custo de Software é na engenharia e não na reprodução
custos em sua manutenção
Software precisa se adaptar a novas tecnologias
(‘crise do software’)
A Crise de Software

Dificuldades no Trabalho com Software

Medidas pobres de eficiência e qualidade

Insatisfação do usuário é frequente



A qualidade do software é frequentemente suspeita


Poucas medidas e critérios de qualidade
Software existente é muito difícil de manter

6
Pouco entendimento dos requisitos
Problemas de Comunicação entre o usuário e o analista
E tem que ser mantido até ser substituído
A Crise de Software

Causas

Introdução de erros no processo





Problemas na comunicação homem-máquina

Problemas na gerência


7
Má especificação
Mau projeto
Má implementação
Testes incompletos ou mal feitos
Falta de treinamento em novas técnicas de desenvolvimento
O processo está evoluindo muito rapidamente em função do
aprendizado. É necessário reciclar
Problemas

Complexidade


Especificar sistemas é uma atividade bastante complexa. Não se
trata apenas de fazer uns “programinhas”.
Insatisfação dos usuários


usuários sentem-se frustrados com sistemas difíceis de serem
operados e/ou cujo desenvolvimento se prolonga por vários anos.
usuário precisa de sistemas funcionando de acordo com suas
necessidades
“O valor de um sistema está em atender com precisão as
necessidades de seus usuários.”
8
Problemas

9
Produtividade

Costuma estar quase sempre aquém do desejado.

Freqüentemente, a alocação de recursos e atividades são
desbalanceadas.

Algumas questões recebem consideração demasiada,
enquanto outras são insuficientemente consideradas.

Custos, tempo e recursos geralmente são subestimados
Problemas

Confiabilidade do Sistema

Há diversas estatísticas que provam a pouca confiabilidade
de boa parte dos sistemas.

depende do uso de métodos que possam garantir uma boa
qualidade do produto construído

Não basta que o sistema produza resultados solicitados pelo
usuário.Mas que também tenha o desempenho adequado.
“Não é suficiente que o sistema seja eficiente. É
necessário ainda que ele seja eficaz”
10
Problemas

11
Manutenibilidade

Facilidade de se modificar um sistema para adaptar-se a
circunstâncias novas, inexistentes à época da implantação.

Sistemas recentemente implantados são
devido ao alto custo para sua manutenção
substituídos por novos,
Custo de Mudanças
Custo
1,5
a
5X
60
a
100
X
1x
Definição
12
Fase
Crítica
Projeto
Manutenção
Problemas
13

Porque leva tanto tempo para terminar programas e
sistemas?

Porque os custos são tão altos?

Porque temos dificuldade de medir o progresso do
desenvolvimento do software?

Porque não conseguimos detectar todos os erros
antes de entregar o software aos nossos clientes?

Porque os usuários estão sempre insatisfeitos com o
software entregue?
Mitos...

da Gerência...
Desatualizados, obsoletos
Manuais de Regras
e Procedimentos
Ferramentas modernas
de software e hardware
são suficientes
O uso eficiente de ferramental
exige conhecimento
14
Estamos atrasados…
Vamos alocar
mais gente ao projeto!
Custos de treinamento,
gerência e
entendimento do
processo de trabalho
Mitos...

do Desenvolvedor/Programador...
O único produto de um
projeto de software é o
conjunto de programas
Até que o programa
esteja “rodando” não
há como medir
sua qualidade
Revisões anteriores à
codificação
15
Especificação, projeto,
plano de trabalho
Programa escrito
e testado!
Acabei!
Quanto mais cedo voce escrever o
código, mais tempo irá demorar
para completá-lo
De 50 a 70 % do custo de produção
de um software vai ser gasto para
operacionalizá-lo para o usuário
Mitos...

do Cliente...
Uma lista de intenções (boas)
é suficiente para começar
a produzir o software
A Especificação do
Software é a fase mais
crítica do processo
Erros na fase inicial têm
um custo muito alto de
correção
16
Minhas necessidades vão mudar…
Mas mudanças são fáceis de introduzir
porque software é bastante flexível
Custo de mudanças é
muito alto
O que é Engenharia de Software?
Estudo e aplicação de Métodos e Técnicas com o
objetivo de tornar o desenvolvimento de software mais
“eficiente”.
“O estabelecimento e uso de princípios de engenharia de
forma a obter economicamente software confiável e
que funcione eficientemente em máquinas reais.”
17
Engenharia de Software

Existe como disciplina há pouco tempo

Estabelece um diferencial entre um engenheiro de
software profissional e um “praticante da informática”

Novos profissionais são agentes de mudanças ou de
problemas

18
oportunidades, desafios e perigos
Engenharia de Software

Produtividade



Qualidade


19
linhas de código por dia;
pontos de função por mês
confiabilidade (e.g.: defeitos por KLOC); e
manutenibilidade (manutenção fácil).
Princípios da Engenharia
20

MÉTODOS

FERRAMENTAS

PROCEDIMENTOS
Métodos
Como construir o Software?

Instrumentos



representação do software
durante seu desenvolvimento
Notações
Linguagens

Exemplos


Critérios de Qualidade

21
Como avaliar o
desenvolvimento



UML
Booch
Análise estruturada
Anlaise Essencial
Ferramentas
É preciso muito software para desenvolver software!

Suporte automático ou semi-automático aos métodos


Ambientes de desenvolvimento


22
CASE - Computer Aided Software Engineering
ferramentas integradas
Hardware + Software (de suporte) + Banco de Dados
Procedimentos
Quais os passos para construir o software?

Seqüência dos métodos


Resultados


23
documentos, relatórios, módulos
Controles


sequência de passos e atividades
coordenação, critérios de qualidade, pontos de controle
Equipe
Software
Software
Processo
24
Produto
Produto de Software
Plano
Estrutura de Dados
Especificação
Programa
Objeto
Projeto
25
Programa Fonte
Testes e Validações
Processo de Construção de Software
Equipe
Métodos
Ferramentas
Passos/Atividades
Instrumentos
Produtos
Processo
26
Ciclo de Vida de Software
Definição dos requisitos
Análise
Documentos são gerados
a cada fase e servem de
entrada para a fase seguinte
Projeto
Implementação
Teste/Avaliação
Implantação
Manutenção
27
Ciclo de Vida - Modelo Cascata
Definição de Requisitos
Intenções
Transformações
Requisitos
do
Software
Análise
Especifica
ção do
Software
Projeto
Projeto
do
Software
Documentos gerados
durante o ciclo de vida
Implementação
Código
do
Software
Teste
Sistema
pronto
para operar
28
Definição de Requisitos

Desejos
Intenções
Procedimentos
Dados
Identificar


Organizá-los de forma coerente

Definir de uma forma geral


Requisitos
do
Software
29
desejos, intenções, procedimentos
atuais e dados;
o que será tratado pelo software
interface com o que fica de fora do
software
Análise do Software

Entendimento e Representação

Requisitos
do
Software




Especificação
do
Software
30
Domínio do problema
Conceitos
Funcionalidades
Casos de uso
Baseado nos fatores críticos de
sucesso do software
Projeto do Software
Especificação
do
Software

Projetar o Software





Projeto
do
Software
31
Arquitetura
Interfaces
Estrutura
de
Dados
Detalhes
dos
Procedimentos
Arquitetura
Interfaces
Estrutura de Dados
Procedimentos
Independente da Tecnologia
onde será “encarnado” o
software
Construção do Código
Detalhes  Implementação
dos
Procedimentos
 Programação do código
Estrutura
de
Dados
Arquitetura
Interfaces

Tecnologia


Projeto
do
Software

linguagem
ambiente
etc
Código
Software
32
Testes





33
Estou construindo um sistema correto?
Estou construindo o sistema certo?
Teste de código
Teste de sistema
Testes com usuários
Implantação do Software

Pôr o Software em operação





Entrada de dados
Conversões de dados
Treinamento de operadores
Disponibilização de Manuais
Suporte à operação


Software
Dados
Conversões
Help Desk
Acompanhar
Software
Pronto para operar
34
Manutenção do Software

Manutenção





Em Operação
Tipos
Corretiva
Novos Requisitos
Novas Tecnologias
Alto Custo

Software
Erros
Requisitos
Podem requerer
mudanças nas fases
iniciais do
desenvolvimento
Software
Nova Versão
35
Análise e Projeto OO

36
Motivação e benefícios

Enfrentar novos domínios de aplicação

Melhorar a interação entre analistas e especialistas de
domínios de aplicação

Proporcionar uma representação básica consistente entre
análise e projeto

Reutilização
O que impulsionou uma proposta OO

Amadurecimento dos conceitos de orientação a
objetos

Aumento da complexidade de sistemas




37
Maiores
Sujeitos a alterações constantes
Interativos
Voltados para os usuários
Métodos para Análise e Projeto OO
38

Rumbaugh (OMT) – 1989

Shlaer & Mellor – 1990

Coad & Yourdon – 1991

Booch – 1991

Wirfs-Brock –1991

Jacobson – 1992
Unified Modeling Language

UML – 1995

Unificação dos trabalhos de Rumbaugh, Booch, Jacobson

Oferece um conjunto de instrumentos para se realizar a
análise e projeto OO


39
Especificação, visualização, documentação e construção de
artefatos de um sistema
Linguagem de modelagem OO com maior previsão de
utilização no mercado
Download

Engenharia de Software