Upload
anibal-a-matias-jr
View
143
Download
8
Embed Size (px)
Citation preview
ENGENHARIA DE SOFTWARE E WEB
ENGENHARIA DE SOFTWARE E WEB
• SOFTWARE• Em um sistema computacional, o conjunto dos componentes
que não fazem parte do equipamento físico propriamente dito e que incluem as instruções e programas (e os dados a eles associados) empregados durante a utilização do sistema
• Algoritmos escritos numa linguagem para serem executados em alguma máquina a fim de resolver algum problema
• Software: produto ou serviço?• Hoje é um PRODUTO com serviços agregados
O software é sempre um texto escrito numa linguagem
Especificação textual
DesenvolvimentoDesenvolvimentoPrograma em linguagem de
máquinacombinação de
caracteres quaisquercombinação de zeros
e uns
ENGENHARIA DE SOFTWARE E WEB
• ENGENHARIA• Arte de aplicar conhecimentos científicos e empíricos e certas
habilitações específicas à criação de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas
• Uma forma disciplinada de tratar de determinado assunto ou problema
• Engenharia de software: Uma forma disciplinada de tratar o software no que tange ao seu ciclo de vida e os problemas a ele associados
ENGENHARIA DE SOFTWARE E WEB
• ENGENHARIA DE SOFTWARE
• Prática industrial: operativa• Disciplina acadêmica: Normativa• Evolução:
• O Departamento de Defesa norte-americano (DoD) necessitava de sistemas de tempo real – radares e computadores
• Surgiram os Bancos de Dados• Necessidade de comunicação e
compartilhamento forçaram o surgimento de redes de computadores
• Havia necessidade de computadores tolerantes a falhas
• Essa abordagem não foi adequada• Membros sairam IBM, que fez o 1o.
Sistema de reserva de passagens aéreas
• Parceiros para investir: Sistema financeiro COBOL
ENGENHARIA DE SOFTWARE E WEB
• COMPLEXIDADE• Software é um elemento complexo
• Que abrange ou encerra muitos elementos ou partes • Observável sob diferentes aspectos • Confuso, complicado, intricado
• Natureza do problema• Necessidades infinitas (novas funções, mudanças no projeto, etc.)• Recursos finitos (tempo, dinheiro, pessoas, etc.)
• Crise do Software (Presmann)• Acrescentar pessoas, não acelera proporcionalmente o processo• Prazos, custos, qualidade• Evolução no tratamento do software:
Anos 60 Anos 70 Anos 80 Anos 90 XXI
Inicia eng. software
metodologia custos qualidade descartável?
ENGENHARIA DE SOFTWARE E WEB
• PARADIGMAS:• (Weinberg – 89)
• Curar programas doentes ou produzir programas sãos?• Eliminar erros do produto ou investir no processo que o isente
de erros?
• DEFINIÇÃO DE ENGENHARIA DE SOFTWARE DO IEEE
• “A aplicação de uma abordagem quantificável , sistemática e disciplinada ao desenvolvimento, operação e manutenção de software”
ENGENHARIA DE SOFTWARE E WEB
• RISCOS ENVOLVIDOS• SAÚDE (VIDA)• REDES DE COMUNICAÇÃO (ECONÔMICO)• TRÁFEGO (VIDA, ECONÔMICO)• SISTEMAS COMERCIAIS (TEMPO/ESFORÇO E PORTANTO
ECONÔMICO)fdfdf
fdfdf fdfdf
fdfdf
fdfdf fdfdf
(erro)(defeito)
(falha)
1+1=3
(acidente)
ENGENHARIA DE SOFTWARE E WEB
• EXEMPLOS DE DESASTRES POR SOFTWARE:
• Patriot• 28 soldados morreram (erro de
ponto flutuante)• Israel detectou o problema,
mas sem condições de distribuir correção (guerra)
• Um “RE-START” ajudaria
• Ariane 5• Explosão• Perda econômica
1996
PATRIOT
FOGUETE ARIANE 5
1990
ENGENHARIA DE SOFTWARE E WEB
• CRISE DO SOFTWARE (Pressman, Boehm)• Crise: imprevisibilidade de custos, prazos• Mudança de necessidades e aplicações
• Software se deteriora ou se desgasta• Yourdon: “Declínio e queda...” e “Ressurreição e
ascenção do analistas e programadores”• Crise crônica
1960 1970 1980 1990 XXI
Batch, Distribuição
limitada, Software
customizado
Multiusuário, Tempo real,
Banco de dados, Software como
produto
Sistemas distribuídos,
software embarcado, baixo custo de
hardware, impacto no consumo
Poderosos desk-tops, orientação a objetos, sistema especialistas,
redes neurais, computação paralela,
redes
descartável?
ENGENHARIA DE SOFTWARE E WEB
• O CICLO DE VIDA DO SOFTWARE (CLÁSSICO)
ANÁLISE DE
REQUISITOSPROJETO CODIFICAÇÃO TESTE MANUTENÇÃO
ESPECIFICAÇÃOTEXTUALNATURAL
Especificação funcional
Projeto preliminar
Projeto detalhado
Codificação em
linguagem de programação
Elaboração de massa de
testes
Testes individuais
Teste geral
Manutenção:
Corretiva, Preventiva, Adaptativa, Evolutiva,
reengenharia
ENGENHARIA DE SOFTWARE E WEB
• CICLO EM PARALELO
ANÁLISE DE REQUISITOS
PROJETO
CODIFICAÇÃO
TESTE
MANUTENÇÃO
ENGENHARIA DE SOFTWARE E WEB
• CICLO EM ESPIRAL (original de Boehm 1988)
PLANEJAMENTO
ANÁLISE DE RISCO
ENGENHARIA
CONSTRUÇÃO & ENTREGA
AVALIAÇÃO DO USUÁRIO
COMUNICAÇÃO DO USUÁRIO
PONTO DE ENTRADA NO PROJETO
Fases do ciclo de vida
ENGENHARIA DE SOFTWARE E WEB
• CICLO E PROCESSO WEB• Necessidades do usuário WEB
• Exibição de informação• Ativação de links• Movimento• Controle da informação• Interação• Opções e “feedback”• Atualização• Segurança
• Metodologia• Método o que fazer• Técnica como fazer
ENGENHARIA DE SOFTWARE E WEB
• CICLO E PROCESSO WEB (John December)
Declaração de propósito
Domínio da informação
Informação de audiência Declaração de objetivo
Especificação Web Apresentação Web
INOVAÇÃO
PLANEJAMENTOANÁLISE
PROJETO
IMPLEMENTAÇÃO
PROMOÇÃO
PRO
CES
SOS
PRODUTOS
ENGENHARIA DE SOFTWARE E WEB
• FERRAMENTAS DA ENGENHARIA DE SOFTWARE
• Diagramas para aplicações: DFD´s, DTE´S, MER, ETC
• Dicionário de dados • Tabelas de decisão, (Nassi-
Shneiderman )• Pseudo-código
ENGENHARIA DE SOFTWARE E WEB
• FERRAMENTAS DA ENGENHARIA DE SOFTWARE• Quantificação
• Métricas de software
“A principal diferença entre uma ciência bem desenvolvida e uma menos desenvolvida é o grau com que as coisas são mensuradas “
Fred S. Roberts
“Meça o que for mensurável, e o que não for, faça mensurável”. Carl F. Gauss
ENGENHARIA DE SOFTWARE E WEB
Problemamundo
real
Modelo abstrato
Modelo transformad
o
Solução do problema
USO DE MODELOS PARA ABSTRAÇÃO
métrica
Escala para métrica Níveis de
qualidade
excelente
bom
satisfatório
pobre
bom
Valores e interpretação:
?
G=e-n Testes=|arestas – nós|
ENGENHARIA DE SOFTWARE E WEB
MÉTRICAS E A ISO 9126
Funcionalidade Confiabilidade Usabilidade
Eficiência Manutenibilidade Portabilidade
TempoRecursos
Analisabil.Modificabil.EstabilidadeTestabilidade
Indepen. de HardwareIndepen. de Software
InstalabilidadeReusabilidade
Métricas de SoftwareISO
9126
AdequaçãoAcurácia
SegurançaConformidadeInteroperabil.
MaturidadeTolerância a falhasRecuperabilidade
InteligibilidadeApreensibilidadeOperacionalidade
ENGENHARIA DE SOFTWARE E WEB
MEDIR NÃO É TAREFA FÁCILParadoxo de Simpson
Departamento I
Departamento II
Homens 50 25 Mulheres 50 5
1980
% mulheres 50 17 Homens 10 75 Mulheres 15 20
1990
% mulheres 60 21
Depatamentos I e II Homens 75 Mulheres 55
1980
% mulheres 42 Homens 95 Mulheres 35
1990
% mulheres 29
Percentual de mulheres deveria crescer de 1980 para 1990. Parcialmente isto parece verdade , mas no geral não!
ENGENHARIA DE SOFTWARE E WEB
MONOTONICIDADE PARCIAL FOI VIOLADA.
Depto I(1990) > DeptoI(1980) ao adicionarmos o Depto II:
(1990)(DeptoI DeptoII) < (DeptoI DeptoII)(1980) o que acontece é o seguinte:
Depto I(1990) > DeptoI(1980) não garante que:
Depto I(1990) DeptoI(1980)
Departamento I
Departamento II
Homens 50 25 Mulheres 50 5
1980
% mulheres 50 17 Homens 1 65 Mulheres 51 13
1990
% mulheres 98 17
Depatamentos I e II Homens 75 Mulheres 55
1980
% mulheres 42 Homens 66 Mulheres 64
1990
% mulheres 49
ENGENHARIA DE SOFTWARE E WEB
P1 P2 P3 P4 P5 Defeitos 12 5 2 3 6
LOC 777 110 110 110 1000
Vrs I DD .01544 .04545 .01818 .02727 .00600
Defeitos 3 6 3 4 70 LOC 55 110 110 110 10000 DD .05455 .05455 .02727 .03636 .00700
Vrs II
Relação < < < < <
P12345 Defeitos 28
LOC 2107
Vrs I DD .01329
Defeitos 86 LOC 1035 DD .00828
Vrs II Relação >
Enquanto a DD CRESCEU com relação a cada
programa individualmente, no TODO essa mesma relação DIMINUIU.
O QUE ESTÁ ERRADO?
ENGENHARIA DE SOFTWARE E WEB
MÉTRICA PARA COMPLEXIDADE E WEBPermite saber o número mínimo de testes necessários
região
1
2,3
6 4,5
7 8
9
10
11
nós
extremidades
região
regiãoregião
TEORIA DOS GRAFOS
V(G) = E – N + 2
V(G) = 12 – 9 + 2 = 5
Mínimo de testes = 5
Podemos usá-la para verificar todos ospossíveis caminhos num site
(ou uma aplicação), determinando assim a quantidade de testes mínimos
necessários para passar por todos os itens de navegação pelo menos
uma vez
ENGENHARIA DE SOFTWARE E WEB
MANUTENIBILIDADE
Algumas palavras sobre manutenção de software:
“O maior problema na manutenção que fazemos é que nós não podemos fazer manutenção em sistemas que não foram
projetados para manutenção”[Scheidewind]
“60% a 70% do custo de software é com manutenção” [Pressman]
Lei da entropia: “A entropia de um sistema incrementa-se com o tempo, se nenhum trabalho for feito para mantê-la ou
reduzí-la” [Belady et. al.]