Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...
Transcript of Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...
Engenharia de Software
Renata AraujoRicardo Storino
Núcleo de Computação EletrônicaCurso de Programação de Computadores
Maio a Setembro/2000
Análise e Projeto de Sistemas
2
A evolução do Software
Década de 1960 Sistemas em Batch Distribuição limitada Software customizado
Década de 1970 Multi usuários Tempo real Bancos de Dados Software Produto
Década de 1980 Sistemas distribuídos Inteligência embutida Hardware barato impacto no consumidor
Década de 1990 Sistema pessoais Tecnologias OO Sistemas Especialistas Redes Neurais Computação Paralela
3
Desenvolvimento de Software
Usuário
Software
Desenvolvedor
Software
4
A evolução do Software
Software cada vez maior mais funcionalidades mais complexo abrangendo mais usuários exigindo a participação de equipes em seu desenvolvimento
5
Características do Software
Software é desenvolvido e não produzido no sentido clássico (industrial) custo de Software é na engenharia e não na reprodução
Software não ‘gasta’ custos em sua manutenção
Software precisa se adaptar a novas tecnologias (‘crise do software’)
6
A Crise de Software
Dificuldades no Trabalho com Software
Medidas pobres de eficiência e qualidade
Insatisfação do usuário é frequente Pouco entendimento dos requisitos Problemas de Comunicação entre o usuário e o analista
A qualidade do software é frequentemente suspeita Poucas medidas e critérios de qualidade
Software existente é muito difícil de manter E tem que ser mantido até ser substituído
7
A Crise de Software
Causas
Introdução de erros no processo Má especificação Mau projeto Má implementação Testes incompletos ou mal feitos
Problemas na comunicação homem-máquina
Problemas na gerência Falta de treinamento em novas técnicas de desenvolvimento O processo está evoluindo muito rapidamente em função do
aprendizado. É necessário reciclar
8
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.”
9
Problemas
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
10
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”
11
Problemas
Manutenibilidade
Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação.
Sistemas recentemente implantados são substituídos por novos, devido ao alto custo para sua manutenção
12
Custo de Mudanças
Custo
1x
1,5a
5X
60a
100X
Definição Projeto Manutenção
Fase Crítica
13
Problemas
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?
14
Mitos...
da Gerência...
Manuais de Regras e Procedimentos
Ferramentas modernasde 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
15
Mitos...
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 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
Revisões anteriores à codificação
Especificação, projeto, plano de trabalho
16
Mitos... 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
17
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.”
18
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 oportunidades, desafios e perigos
19
Engenharia de Software
Produtividade linhas de código por dia; pontos de função por mês
Qualidade confiabilidade (e.g.: defeitos por KLOC); e manutenibilidade (manutenção fácil).
20
Princípios da Engenharia
MÉTODOS
FERRAMENTAS
PROCEDIMENTOS
21
Métodos
Instrumentos representação do software
durante seu desenvolvimento Notações Linguagens
Critérios de Qualidade Como avaliar o
desenvolvimento
Exemplos UML Booch Análise estruturada Anlaise Essencial
Como construir o Software?
22
Ferramentas
Suporte automático ou semi-automático aos métodos CASE - Computer Aided Software Engineering
Ambientes de desenvolvimento ferramentas integradas Hardware + Software (de suporte) + Banco de Dados
É preciso muito software para desenvolver software!
23
Procedimentos
Seqüência dos métodos sequência de passos e atividades
Resultados documentos, relatórios, módulos
Controles coordenação, critérios de qualidade, pontos de controle
Equipe
Quais os passos para construir o software?
24
Software
ProdutoProcesso
Software
25
Produto de Software
Plano
Especificação
Projeto
Testes e Validações
Programa Fonte
ProgramaObjeto
Estrutura de Dados
26
Processo de Construção de Software
Equipe
FerramentasMétodos
Passos/Atividades
Produtos
Instrumentos
Processo
27
Ciclo de Vida de Software
Definição dos requisitos
Análise
Projeto
Implementação
Teste/Avaliação
Implantação
Manutenção
Documentos são geradosa cada fase e servem deentrada para a fase seguinte
28
Ciclo de Vida - Modelo Cascata
Intenções
Especificação do
Software
Projetodo
Software
Códigodo
Software
Sistemapronto
para operar
Análise
Projeto
Implementação
Teste
Requisitosdo
Software
Definição de Requisitos
Documentos geradosdurante o ciclo de vida
Transformações
29
Definição de Requisitos
Identificar desejos, intenções, procedimentos
atuais e dados;
Organizá-los de forma coerente
Definir de uma forma geral o que será tratado pelo software interface com o que fica de fora do
software
DesejosIntenções
ProcedimentosDados
Requisitosdo
Software
30
Análise do Software
Entendimento e Representação Domínio do problema Conceitos Funcionalidades Casos de uso
Baseado nos fatores críticos de sucesso do software
Especificaçãodo
Software
Requisitosdo
Software
31
Projeto do Software
Projetar o Software Arquitetura Interfaces Estrutura de Dados Procedimentos
Independente da Tecnologia onde será “encarnado” o software
Especificaçãodo
Software
Arquitetura Interfaces
Estruturade
Dados
Detalhesdos
Procedimentos
Projetodo
Software
32
Construção do Código
Implementação
Programação do código Tecnologia
linguagem ambiente etc
Arquitetura Interfaces
Estruturade
Dados
Detalhesdos
Procedimentos
Projetodo
Software
Código
Software
33
Testes
Estou construindo um sistema correto? Estou construindo o sistema certo?
Teste de código Teste de sistema Testes com usuários
34
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
Help Desk Acompanhar
Software
Software
Dados Conversões
Pronto para operar
35
Manutenção do Software
Manutenção Tipos
Corretiva Novos Requisitos Novas Tecnologias
Alto Custo Podem requerer
mudanças nas fases iniciais do desenvolvimento
Software
Em Operação
Erros
Software
Nova Versão
Requisitos
36
Análise e Projeto OO
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
37
O que impulsionou uma proposta OO
Amadurecimento dos conceitos de orientação a objetos
Aumento da complexidade de sistemas Maiores Sujeitos a alterações constantes Interativos Voltados para os usuários
38
Métodos para Análise e Projeto OO
Rumbaugh (OMT) – 1989
Shlaer & Mellor – 1990
Coad & Yourdon – 1991
Booch – 1991
Wirfs-Brock –1991
Jacobson – 1992
39
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
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