Buscar

04-Aula.pdf

Prévia do material em texto

A crise do software e seus mitos
Material adaptado do Prof. Dr. Elvio Gilberto da Silva
ENGENHARIA DE SOFTWARE I
2
A evolução do Software
n O cenário da evolução de sistemas mostra que cada vez mais os 
softwares construídos exigem maior complexidade em sua construção 
em face a mudanças de formas de interação com seus usuários e com o 
surgimento de novas tecnologias.
3
A evolução do Software
n Década de 1960
n Sistemas em Batch
n Distribuição limitada
n Software customizado
n Década de 1970
n Multi-usuários
n Tempo real
n Bancos de Dados
n Software Produto
n Década de 1980
n Sistemas distribuídos
n Inteligência embutida
n Hardware barato
n Impacto no consumidor
n Década de 1990
n Sistema pessoais
n Tecnologias OO
n Sistemas Especialistas
n Redes Neurais
n Computação Paralela
4
Desenvolvimento de Software
O processo de desenvolvimento também tem apresentado 
maiores complexidades. Enquanto que anteriormente um 
sistema poderia ser desenvolvido por apenas uma pessoa, hoje 
em dia, são necessárias equipes e uma gerência atuante para sua 
construção. Por outro lado, o software tem ganhado cada vez 
mais importância na vida social e econômica de pessoas e 
organizações. Por fim, o usuário tem deixado de ser uma figura 
passiva, aceitando e se adaptando às funcionalidades de um 
software para se tornar uma figura mais exigente.
O sucesso de um software está em atender às necessidades do 
cliente.
5
Desenvolvimento de Software
Usuário
Software
Desenvolvedor
Software
6
A evolução do Software
n Software cada vez
n maior
n mais funcionalidades
n mais complexo
n abrangendo mais usuários
n exigindo a participação de equipes em seu desenvolvimento
7
Características do Software
n Software é desenvolvido e não produzido no sentido
clássico (industrial)
n custo de software é na engenharia e não na reprodução
n Software não ‘gasta’
n custos em sua manutenção
n Software precisa se adaptar a novas tecnologias
(‘crise do software’)
8
A Crise de Software
n Dificuldades no Trabalho com Software
n Medidas pobres de eficiência e qualidade
n Insatisfação do usuário é frequente
n Pouco entendimento dos requisitos
n Problemas de comunicação entre o usuário e o analista
n A qualidade do software é frequentemente suspeita
n Poucas medidas e critérios de qualidade
n Software existente é muito difícil de manter
n E tem que ser mantido até ser substituído
9
A Crise de Software
n Causas
n Introdução de erros no processo
n Má especificação
n Mau projeto
n Má implementação
n Testes incompletos ou mal feitos
n Problemas na comunicação homem-máquina
n Problemas na gerência
n Falta de treinamento em novas técnicas de desenvolvimento
n O processo está evoluindo muito rapidamente em função do 
aprendizado. É necessário reciclar
10
Problemas 
n Complexidade
n Especificar sistemas é uma atividade bastante complexa. Não se
trata apenas de fazer uns “programinhas”.
n Insatisfação dos usuários
n Usuários sentem-se frustrados com sistemas difíceis de serem
operados e/ou cujo desenvolvimento se prolonga por vários anos.
n 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.”
11
Problemas
n Produtividade
n Costuma estar quase sempre aquém do desejado.
n Frequentemente, a alocação de recursos e atividades são
desbalanceadas.
n Algumas questões recebem consideração demasiada,
enquanto outras são insuficientemente consideradas.
n Custos, tempo e recursos geralmente são subestimados
12
Problemas
n Confiabilidade do Sistema
n Há diversas estatísticas que provam a pouca confiabilidade
de boa parte dos sistemas.
n Depende do uso de métodos que possam garantir uma boa
qualidade do produto construído
n 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”
13
Problemas 
n Manutenibilidade
n Facilidade de se modificar um sistema para adaptar-se a 
circunstâncias novas, inexistentes à época da implantação.
n Sistemas recentemente implantados são substituídos por novos,
devido ao alto custo para sua manutenção.
14
Custo de Mudanças
Os custos no desenvolvimento de sistemas é maior depois que 
ele está construído devido à necessidade constante de alterações 
em sua implementação para corrigir erros ou por não terem sido 
bem compreendidas às necessidades do usuário. Por isso, 
acredita-se que a fase mais crítica no desenvolvimento de um 
sistema corresponde à sua fase de concepção. Um sistema bem 
concebido e projetado terá menos chances de apresentar erros 
ou de não satisfazer o usuário final. Além disso, um bom 
projeto permite que mudanças possam ser incorporadas mais 
facilmente.
15
Custo de Mudanças
Custo
1x
1,5
a
5X
60
a
100
X
Definição Projeto Manutenção
Fase 
Crítica
16
Problemas
n Porque leva tanto tempo para terminar programas e 
sistemas?
n Porque os custos são tão altos?
n Porque temos dificuldade de medir o progresso do 
desenvolvimento do software?
n Porque não conseguimos detectar todos os erros
antes de entregar o software aos nossos clientes?
n Porque os usuários estão sempre insatisfeitos com o 
software entregue?
17
Mitos...
n da Gerência...
Manuais de Regras 
e Procedimentos
Ferramentas modernas
de software e hardware 
são suficientes
Estamos atrasados… 
Vamos alocar 
mais gente ao projeto!
Desatualizados, obsoletos
O uso eficiente de ferramental 
exige conhecimento
Custos de treinamento, 
gerência e 
entendimento do 
processo de trabalho
18
Mitos...
n do Desenvolvedor/Programador...
Programa escrito 
e testado! 
Acabei!
Até que o programa 
esteja “rodando” não
há como medir 
sua qualidade
O único produto de um
projeto de software é o 
conjunto de programas
Quanto mais cedo você 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
Revisões anteriores à 
codificação
Especificação, projeto, 
plano de trabalho
19
Mitos...
n do Cliente...
Uma lista de intenções (boas) 
é suficiente para começar 
a produzir o software
Minhas necessidades vão mudar… 
Mas mudanças são fáceis de introduzir 
porque software é bastante flexível
Custo de mudanças é 
muito altoA especificação do 
software é a fase mais
crítica do processo
Erros na fase inicial têm
um custo muito alto de 
correção
20
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.”
21
Engenharia de Software
n Existe como disciplina há pouco tempo
n Estabelece um diferencial entre um engenheiro de 
software profissional e um “praticante da informática”
n Novos profissionais são agentes de mudanças ou de 
problemas
n oportunidades, desafios e perigos
22
Engenharia de Software
n Produtividade
n linhas de código por dia;
n pontos de função por mês
n Qualidade
n confiabilidade (e.g.: defeitos por KLOC – thousands
n of lines of code); e
n manutenibilidade (manutenção fácil).
23
Princípios da Engenharia
n MÉTODOS
n FERRAMENTAS 
n PROCEDIMENTOS
24
Métodos
n Instrumentos
n Representação do software 
durante seu desenvolvimento
n Notações
n Linguagens
n Critérios de Qualidade
n Como avaliaro 
desenvolvimento
n Exemplos
n UML
n Booch
n Análise estruturada
n Anlaise essencial
Como construir o Software?
25
Ferramentas
n Suporte automático ou semi-automático aos métodos
n CASE - Computer Aided Software Engineering
n Ambientes de desenvolvimento
n Ferramentas integradas
n Hardware + Software (de suporte) + Banco de Dados
É preciso muito software para desenvolver software!
26
Procedimentos
n Sequência dos métodos
n sequência de passos e atividades
n Resultados
n documentos, relatórios, módulos
n Controles
n coordenação, critérios de qualidade, pontos de controle
n Equipe
Quais os passos para construir o software?
27
Software
Software deve ser visto não só como o produto final gerado 
como também como o processo que foi utilizado para sua 
construção. Ou seja, a forma como se realiza o processo de 
desenvolvimento (quais métodos, quais instrumentos e quais 
atividades foram realizadas) influencia a qualidade do produto 
final. Da mesma forma, dependendo das características do 
produto que se quer gerar, deve-se escolher um processo 
adequado para sua construção.
28
Software
ProdutoProcesso
Software
29
Produto de Software
Um software é mais do que seu código fonte. Ele compreende 
os diversos documentos ou representações que são criadas ao 
longo do seu processo de desenvolvimento.
30
Produto de Software
Plano
Especificação
Projeto
Testes e Validações
Programa Fonte
Programa
Objeto
Estrutura de Dados
31
Processo de Construção de Software
Durante um processo de desenvolvimento, métodos e 
instrumentos são utilizados para se construir os diversos 
produtos. Estes métodos, na maioria dos casos, exigem a 
utilização de ferramentas para sua realização. Estas 
ferramentas serão utilizadas pelos membros da equipe 
escalada para desenvolver o sistema.
32
Processo de Construção de Software
Equipe
Ferramentas
Métodos
Passos/Atividades
Produtos
Instrumentos
Processo
33
Ciclo de Vida de Software
Definição dos requisitos
Análise
Projeto
Implementação
Teste/Avaliação
Implantação
Manutenção
Documentos são gerados
a cada fase e servem de
entrada para a fase seguinte
34
Ciclo de Vida - Modelo Cascata
Intenções
Especifica
ção do 
Software
Projeto
do
Software
Código
do
Software
Sistema
pronto
para operar
Análise
Projeto
Implementação
Teste
Requisitos
do
Software
Definição de Requisitos
Documentos gerados
durante o ciclo de vida
Transformações
35
Definição de Requisitos
n Identificar
n desejos, intenções, procedimentos 
atuais e dados;
n Organizá-los de forma coerente
n Definir de uma forma geral
n o que será tratado pelo software
n interface com o que fica de fora do 
software
Desejos
Intenções
Procedimentos
Dados
Requisitos
do
Software
36
Análise do Software
n Entendimento e Representação
n Domínio do problema
n Conceitos
n Funcionalidades 
n Casos de uso
n Baseado nos fatores críticos de 
sucesso do software
Especificação
do
Software
Requisitos
do
Software
37
Projeto do Software
n Projetar o Software
n Arquitetura
n Interfaces
n Estrutura de Dados
n Procedimentos
n Independente da Tecnologia 
onde será “encarnado” o 
software
Especificação
do
Software
Arquitetura Interfaces
Estrutura
de
Dados
Detalhes
dos
Procedimentos
Projeto
do
Software
38
Construção do Código
n Implementação
n Programação do código
n Tecnologia
n linguagem
n ambiente
n etc
Arquitetura Interfaces
Estrutura
de
Dados
Detalhes
dos
Procedimentos
Projeto
do
Software
Código
Software
39
Testes
n Estou construindo um sistema correto?
n Estou construindo o sistema certo?
n Teste de código
n Teste de sistema
n Testes com usuários
40
Testes
n O teste de código tem o objetivo de verificar se um 
programa ou conjunto de programas não apresentam 
erros de execução.
n Teste de sistema significa verificar se o sistema dá as 
respostas desejadas de acordo com cada solicitação 
do usuário.
n Testes com usuários são realizados com o objetivo de 
testar a interface do sistema e se todas as 
funcionalidades solicitadas foram contempladas pelo 
sistema.
41
Implantação do Software
n Pôr o software em operação
n Entrada de dados
n Conversões de dados
n Treinamento de operadores
n Disponibilização de Manuais
n Suporte à operação
n Help Desk
n Acompanhar
Software
Software
Dados Conversões
Pronto para operar
42
Manutenção do Software
n Manutenção
n Tipos
n Corretiva
n Novos Requisitos
n Novas Tecnologias 
n Alto Custo
n Podem requerer 
mudanças nas fases 
iniciais do 
desenvolvimento
Software
Em Operação
Erros
Software
Nova Versão
Requisitos
43
Análise e Projeto OO
n Motivação e Benefícios
n Enfrentar novos domínios de aplicação
n Melhorar a interação entre analistas e especialistas de 
domínios de aplicação
n Proporcionar uma representação básica consistente entre 
análise e projeto
n Reutilização
44
O que impulsionou uma proposta OO
n Amadurecimento dos conceitos de orientação a 
objetos
n Aumento da complexidade de sistemas
n Maiores
n Sujeitos a alterações constantes
n Interativos
n Voltados para os usuários
45
Métodos para Análise e Projeto OO
n Rumbaugh (OMT) – 1989 
n Shlaer & Mellor – 1990 
n Coad & Yourdon – 1991
n Booch – 1991 
n Wirfs-Brock –1991
n Jacobson – 1992
46
Unified Modeling Language
n UML – 1995
n Unificação dos trabalhos de Rumbaugh, Booch, Jacobson
n Oferece um conjunto de instrumentos para se realizar a 
análise e projeto OO
n Especificação, visualização, documentação e construção de 
artefatos de um sistema
n Linguagem de modelagem OO com maior previsão de 
utilização no mercado

Continue navegando