2. 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
DesenvolvimentoDesenvolvimento
Programa em
linguagem de
máquina
combinação de
caracteres quaisquer
combinação de zeros
e uns
3. 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
4. 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
5. 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?
6. 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”
7. 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)
8. 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
9. 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?
10. ENGENHARIA DE SOFTWARE E
WEB
• O CICLO DE VIDA DO SOFTWARE (CLÁSSICO)
ANÁLISE
DE
REQUISITOS
ANÁLISE
DE
REQUISITOS
PROJETO
PROJETO
CODIFICAÇÃO
CODIFICAÇÃO
TESTE
TESTE MANUTENÇÃO
MANUTENÇÃO
ESPECIFICAÇÃO
TEXTUAL
NATURAL
ESPECIFICAÇÃO
TEXTUAL
NATURAL
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
11. ENGENHARIA DE SOFTWARE E
WEB
• CICLO EM PARALELO
ANÁLISE DE REQUISITOS
ANÁLISE DE REQUISITOS
PROJETO
PROJETO
CODIFICAÇÃO
CODIFICAÇÃO
TESTE
TESTE
MANUTENÇÃO
MANUTENÇÃO
12. 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
13. 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
14. 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
PLANEJAMENTO
ANÁLISE
PROJETO
IMPLEMENTAÇÃO
PROMOÇÃO
PROCESSOS
PRODUTOS
15. 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
16. 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
17. ENGENHARIA DE SOFTWARE E
WEB
Problema
mundo
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|
18. ENGENHARIA DE SOFTWARE E
WEB
MÉTRICAS E A ISO 9126
Funcionalidade
Funcionalidade
Confiabilidade
Confiabilidade
Usabilidade
Usabilidade
Eficiência
Eficiência
Manutenibilidade
Manutenibilidade
Portabilidade
Portabilidade
Tempo
Recursos
Analisabil.
Modificabil.
Estabilidade
Testabilidade
Indepen. de Hardware
Indepen. de Software
Instalabilidade
Reusabilidade
Métricas de
Software
ISO
9126
Adequação
Acurácia
Segurança
Conformidade
Interoperabil.
Maturidade
Tolerância a falhas
Recuperabilidade
Inteligibilidade
Apreensibilidade
Operacionalidade
19. ENGENHARIA DE SOFTWARE E
WEB
MEDIR NÃO É TAREFA FÁCIL
Paradoxo de Simpson
Departamento
I
Departamento
II
Homens 50 25
Mulheres 50 51980
% mulheres 50 17
Homens 10 75
Mulheres 15 201990
% mulheres 60 21
Depatamentos I e II
Homens 75
Mulheres 551980
% mulheres 42
Homens 95
Mulheres 351990
% mulheres 29
Percentual de mulheres deveria crescer de 1980 para 1990.
Parcialmente isto parece verdade , mas no geral não!
20. 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 51980
% mulheres 50 17
Homens 1 65
Mulheres 51 131990
% mulheres 98 17
Depatamentos I e II
Homens 75
Mulheres 551980
% mulheres 42
Homens 66
Mulheres 641990
% mulheres 49
21. ENGENHARIA DE SOFTWARE E
WEB
P1 P2 P3 P4 P5
Defeitos 12 5 2 3 6
LOC 777 110 110 110 1000Vrs
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 2107Vrs
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?
22. ENGENHARIA DE SOFTWARE E
WEB
MÉTRICA PARA COMPLEXIDADE E WEB
Permite 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ão
regiã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 os
possí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
23. 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.]
Editor's Notes
Engenharia sempre traz a idéia de uma abordagem disciplinada, utilizando metodologia. Evoca menos “arte” e mais ciência.
Curar: qualidade controlada sobre o produto final
Processo: controle de qualidade no processo
ERRO: UM ERRO CONCEITUAL NA MENTE DO PROJETISTA, ANALISTA, PROGRAMADOR
DEFEITO: QUANDO UM ERRO É INTRODUZIDO NUM PROGRAMA DE COMPUTADOR. O ERRO NÃO SE MANIFESTOU MAS ESTÁ LÁ
FALHA: A MANIFESTAÇÃO EXTERNA (PERCEBIDA DE ALGUMA FORMA, - ERRO EM TELA, UM EQUIPAMENTO QUE NÃO FUNCIONA)
ACIDENTE: A CONSEQUÊNCIA DA FALHA
O Y2K é outro exemplo (com cosequências econômias e consumo de tempo e recursos humanos)
Mudanças inicialmente ditadas pelas forças armadas e depois pela economia. Hoje por ambas.
Deterioração ou desgaste acontece se nenhum esforço for realizado para contê-lo, e ao realizá-lo, novos erros são introduzidos no software.
Negócios entre empresas nos EUA em 2003 (projeção): US1.8 trilhões, 14.5 em e-commerce (fonte:forrest research)
Cada fase tem como resultado alguns produtos: especificação funcional, o projeto, os programas, etc.
Manutenção
corretiva: elimina defeitos (e pode introduzir outros...), geralmente feita depois de uma ou mais falhas
preventiva: detectado um erro, ainda sem falha, elimina-se o defeito
adaptativa: adequa para um novo ambiente ou situação (ex. permitir acesso via intranet)
evolutiva: introduz novas funcionalidades, visando melhorar por exemplo a usabilidade
reengenharia: é um novo ciclo, que busca normalmente uma solução diferente. Pode ser reversa
Produtos:
Audiência: Todo conhecimento sobre o público alvo (usuário) bem como sobre quem usa a informação (quem é o usuário): conhecimento prévio, inclinações, etc.
Propósito: uma articulação da razão para o escopo da existência WEB. Durante todo o desenvolvimento o desenvolvedor precisa ter um suscinto proposito em mente. Pode ser: “Criar a presença na empresa no Cyberespaço” provavelmente ela mudará com o tempo.
Objetivo: derivada do propósito, define metas especificas. Ex. “oferecer informação sobre uma nova linha de produtos”, isto implica em definir quais produtos a empresa oferece (imagens, vídeo, esquemas, preços, etc.) O objetivo muda junto com o propósito.
Domínio da informação: uma coleção de informações sobre o assunto que a Web vai cobrir (tanto da necessidade do usuário quanto do desenvolvedor). Padrões, artigo, testes publicados, órgão de referência, leis pertinentes.
Especificação Web: Descrição detalhada de da construção e elementos que irão para a Web. Suas limitações. Como as etapas serão constuídas, implementadas e publicadas.
Apresentação Web: Os significados pelos quais a informação é disponibilizada ao usuário. Resultado do processo de projeto e implementação: considerações de estética, eficiência, usabilidade.
Processos:
Planejamento:
O processo de escolher entre opções competitivas para comunicação. Isto inclui: antecipação e decisão sobre objetivos de audiência, propósito e objetivos para a informação. Também se aplica a coleta de informação de suporte que precisa ser coletada, como será coletada, quando, e como será atualizada. Uma definição dos “skill´s necessários a determinadas partes da Web.
Análise: o processo de juntar e comparar informação sobre a Web e sua operação de forma a melhorar a qualidade. Análise da necessidade de novos desenvolvimentos, riscos envolvidos (pesando-os).
Projeto: O Web Designer trabalha com a especificação, toma decisões sobre como os componentes Web serão construídos. Este processo leva em conta o propósito, audiência, objetivo e domínio da informação. Preocupa-se em alcançar a especificação de forma flexível, eficiente e elegante.
Implementação: a construção em si. Codificação.
Promoção: a inscrição em mecanismos de busca, uso de outros meios de comunicação. Conhecimento de comunidades na WEB. O emprego de específicas atividades de marketing e relacionamento.
Inovação: Monitoração de novas tecnologias, visando incrementar a usabilidade, qualidade, funcionalidades.
Permitem avaliar objetivamente uma situação atual. Permitem fazer previsões. Avaliar novas práticas. Tomar melhores decisões.
&lt;number&gt;
Um modelo criado para resolver um problema, deve resolver outros problemas de mesma natureza. Assim um fator, por exemplo “usabilidade”, pode ser medido, seguindo-se um modelo, atribuir-se um valor e assim determinar o nivel de qualidade dele. A escala de níveis de qualidade pode ser variável conforme a instalação.
&lt;number&gt;
Métricas nos fatores e subfatores de um padrão.
&lt;number&gt;
Generalizações erradas por falta de conhecimento.
&lt;number&gt;
Monotonicidade deve garantir que os elementos anteriores estão incluídos nos seguintes.
&lt;number&gt;
&lt;number&gt;
Complexidade medida por caminhos distintos numa função. A função para os cálculos é extraída da teoria dos grafos