Leitura: Sommerville – Pressman - Ariadnemaria/arqan/2012-1/cap1-introd.pdf · Engenharia de...
Transcript of Leitura: Sommerville – Pressman - Ariadnemaria/arqan/2012-1/cap1-introd.pdf · Engenharia de...
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 1Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Leitura:Sommerville – Pressman - Ariadne
Introdução
Engenharia de Software
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 2Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Conceitos de Engenharia de Software. Produto e processo de desenvolvimento de software.
Extração, análise e especificação de requisitos. Métodos de desenvolvimento de software.
Verificação, validação e manutenção de especificações de software. Planejamento e gestão
de projetos. Estimativas: métricas e modelos de custo, estudo de viabilidade
Engenharia de SoftwareEmenta
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 3Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de SoftwarePrograma
1. INTRODUÇÃO1.1 Definições e Objetivos1.2 Conceitos Básicos1.3 Características do Software1.4 Componentes e Aplicações do Software
2. PROCESSO DE SOFTWARE2.1 Modelo de Processo2.2 Ciclo de Vida Clássico/O Modelo Cascata2.3 Modelo Evolucionário2.4 Modelo Espiral2.5 Técnicas de Quarta Geração2.6 Desenvolvimento Rápido de Software2.7 Combinando Paradigmas
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 4Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
3. REQUISITOS DE SOFTWARE3.1 Classificação de requisitos3.2 Técnicas de extração de requisitos3.3 Documento de requisitos de software3.4 Processos de Engenharia de Requisitos
4. GERENCIAMENTO DE CUSTO4.1 Planejamento4.2 Estudo de Viabilidade4.3 Estimativa4.4 Gerenciamento de Pessoal4.6 Gerenciamento de Grupos
Engenharia de SoftwarePrograma
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 5Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
5. MODELOS DE SISTEMA5.1 Modelos de Contexto 5.2 Modelos de Comportamento5.3 Métodos Estruturados5.4 Métodos Orientado a Objeto – Casos de Uso
6. MODELO PARA PROJETO6.1 Hierarquia de módulos e objetos 6.2 Estratégias para derivar o projeto 6.3 Qualidade do projeto: coesão, acoplamento
Engenharia de SoftwarePrograma
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 6Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
7. MODELO DE DADOS7.1 Diagrama de Entidade e Relacionamento 7.2 Tipos de Entidades7.3 Tipos de Relacionamento7.4 Normalização
8. VERIFICAÇÃO, VALIDAÇÃO E TESTE8.1 Planejamento de verificação e validação8.2 Inspeções de Software8.3 Teste de Software
Engenharia de SoftwarePrograma
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 7Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
9. EVOLUÇÃO DE SOFTWARE9.1 Manutenção de Software9.2 Tipos de Manutenção9.3 Previsão de mudanças9.4 Processo de Evolução9.5 Evolução de Sistemas Legados
10. GERENCIAMENTO DE QUALIDADE10.1 Qualidade de Processo e de Produto10.2 Padrões de Qualidade10.3 Controle de Qualidade10.4 Métricas de Software
Engenharia de SoftwarePrograma
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 8Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de SoftwareBIBLIOGRAFIA
Bibliografia Básica
� Sommerville, Ian, Engenharia de Software.Ed. Addison Wesley, 8º Edição� PRESSMAN, ROGER, Engenharia de Software. Ed. Mc-Graw Hill, 6º Edição, 2006.� POMPILHO, S. Análise Essencial – Guia Prático
de Análise de Sistemas. Ed. Infobook, 1995.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 9Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de SoftwareBIBLIOGRAFIA
Bibliografia de Apoio
� DAVIS, W. S. Análise e Projeto de Sistemas – UmaAbordagem Estruturada. Ed Livros Técnicos eCientíficos. 1987.
� YOURDON, E. AND CONSTANTINE, L StructuredDesign. Ed. Yourdon Press, 1978
� NETO, ACÁCIO F.. Engenharia da Informação. McGraw,1988.
� MARTIN, JAMES & MCCLURE C. Técnicas Estruturadas e CASE. McGraw,1971
� http://wps.prenhall.com/br_pfleeger_engsoftware_2� www.aw.com/sommerville_br
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 10Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Objetivos
� Compreender o que é Engenharia de Software e por que ela é importante.
� Mostrar as distinções e relacionamentos entre sistema e software.
� Mostrar as principais questões sobre engenharia software.
� Compreender questões profissionais e éticas relevantes para os engenheiros de software.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 11Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Por que?� Por que tanta demora para entregar o sistema?
� Por que os prazos se atrasam?
� Por que os custos são altos?
� Por que não achar todos os erros antes de entregar?
� Por que é difícil medir o progresso do desenvolvimento de um software?
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 12Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Desafio
No mercado atual, não há dúvida de que os profissionais de TI envolvidos com projetos de
desenvolvimento de software e soluções corporativas têm um claro desafio:
PRODUZIR soluções mais rápidas, melhores e mais baratas que antes (melhor ainda ser mais rápidas,
melhores e mais baratas que a concorrência)
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 13Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Desafio
� Desenvolver software é um problema de métodos e técnica, em suma, de atividade humana.
� Hoje a TI está comprometida com o SUCESSO -significa COMPETITIVIDADE, fazer mais, melhor e mais barato.
� Gerenciar projetos de TI é gerenciar riscosassumidos e vencidos por seres humanos inteligentes.
� PESSOAS precisam de investimentos massivos!!! (SOLUÇÃO).
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 14Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Evolução do Software
����
��������
��� �������� ��� ��������������� ��������������������������� ������
�������� ��� ��������������� �� !"��������� ���� ���� ����� � � �������
��� #$� �� ��
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 15Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Aplicação do SoftwareBásico Coleção de programas escritos para apoio a
outros programas.
Tempo Real Software que monitora / analisa / controla eventos do mundo real.
Comercial Processa informações comerciais, reestruturação de dados para tomada de decisões.
Científico e de engenharia
Algoritmos de processamento de números(astronomia à vulcanologia).
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 16Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Aplicação do SoftwareEmbutido usado para controlar produtos e sistemas para os
mercados industriais e de consumo.
Computador Pessoal
Processamento de textos,planilhas, computação gráfica.
Inteligência Artificial
faz uso de algoritmos não numéricos para resolver problemas que não sejam favoráveis àcomputação ou à análise direta.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 17Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Componentes do Software
����� ������� ��
�����������
������ �������
�������
����
�����������������
��������
����������
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 18Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Sistema?
� Um sistema é um conjunto de elementos inter-dependentes que realizam operações visando atingir metas especificadas.
� Sistema de Computação baseado em computador, éaquele destinado ao suporte ou automação de tarefas através de processamento de informações.
� Cada vez mais os sistemas possuem componente computacional, controlado por software.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 19Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Componentes de Sistemas deComputação
•Hardware– Computadores, periféricos e redes
•Software– Os programas e arquivos de dados
•Informações– Coleção de informações organizadas e sistematizadas necessárias ao desempenho das tarefas e procedimentos
•Usuários– Usuários e operadores que realizam as tarefas e procedimentos.
•Procedimentos– Atividades realizadas pelos usuários e operadores, bem como pelos programas (procedimentos automatizados).
•Documentação– Manuais e formulários que descrevem as operações do sistema.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 20Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Exemplos de Sistemas Computacionais
� Automação Bancária� Freqüência e Folha de Pagamento� Controle de Tráfego Urbano� Controle Acadêmico� Editoração de Jornais e Revistas� Controle de Elevadores� Automação de Biblioteca
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 21Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Software?� Programas de computadores associados a documentação.
� Um programa é um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real.
� Tipos de produtos de software:• Genéricos (COTS – Commercial Off-The Shelf) - tipo stand-alone,
pacotes de software, como por exemplo, processadores de texto, ferramentas de gerenciamento.
• Sob encomenda ( personalizado) – desenvolvido para um cliente em particular.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 22Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Software?
Analisar as características que o tornam diferente dos outros produtos:
� Hardware: produto em forma física� Software: elemento de sistema lógico
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 23Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Características do Software� Complexidade
– Software é mais complexo do que qualquer outro produto construídos por seres humanos
� Mutabilidade– Existe sempre uma pressão para se fazer mudanças em um
software
� Conformidade– O software deve ser desenvolvido conforme o ambiente. Não é o
ambiente que deve se adaptar ao software.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 24Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Características do Software� Desenvolvido ou projetado por engenharia, não
manufaturado no sentido clássico (industrial)• sucesso é medido pela qualidade e não quantidade
� Não se “desgasta”, mas se deteriora devido as mudanças
� A maioria é feita sob medida em vez de ser montada a partir de catálogos de componentes existentes (reusabilidade de software).
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 25Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas do Hardware
tempo
“desgaste”“mortalidadeinfantil”
índice de
falhas
Defeitos de projeto e manufatura
ProblemasAmbientais
(poeira, vibração, abuso, temperaturas, ...)
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 26Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas do Software
mudanças
índice de falhas
curva real
curva idealizada
tempo
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 27Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas do Hardware/Software� Quando um componente de hardware se
desgasta é substituído por uma “peça de reposição”
� Não existe “peça de reposição” para software• Toda falha indica um erro no projeto ou no
processo de tradução para o código executável
• Manutenção do software é mais complexa do que a do hardware
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 28Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Formas do Software
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 29Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Crise do Sofware� Refere-se a um conjunto de problemas encontrados no
desenvolvimento de software: (problemas não se limitam a softwares que não funcionam adequadamente)
� Prazos ultrapassados� Custos acima do previsto� Não atendimento dos requisitos do usuário� Elevado custo de manutenção� 1/3 dos projetos são cancelados� 2/3 dos projetos extrapolam o orçamento� Custo hardware x software
» 1970 = 8:2» 1991 = 2:8» Hoje = 1:9
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 30Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Crise do Sofware
�� As estimativas de prazo e de custo são As estimativas de prazo e de custo são imprecisasimprecisas• “Não dedicamos tempo para coletar dados sobre o
processo de desenvolvimento de software”• “Estimativas são feitas a olho, com resultados ruins”• “Os prazos arrastam-se por meses”• “Causa insatisfação para o cliente e falta de
confiança”• “Sem nenhuma indicação sólida de produtividade,
não podemos avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões”
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 31Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Crise do Sofware
�� A produtividade das pessoas da A produtividade das pessoas da áárea de software rea de software não tem acompanhado a demanda por seus não tem acompanhado a demanda por seus serviserviççosos• “Os projetos de desenvolvimento de software
normalmente são efetuados apenas com um vago indício das exigências do cliente”
• “A comunicação entre o cliente e o desenvolvedor de software é muito fraca”
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 32Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Crise do Sofware�� A qualidade de software A qualidade de software frequentementefrequentemente éé
inadequadainadequada• Não uso de técnicas de teste sistemáticas e
completas
• Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 33Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Crise do Sofware�� O software existente O software existente éé muito difmuito difíícil de mantercil de manter
• A tarefa de manutenção devora o orçamento destinado ao software
• A facilidade de manutenção não foi enfatizada como um critério importante
=====================================Solução para a Crise do Sofware �
Engenharia de software aliada a técnicas e ferramentas
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 34Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software -Ariane
� Ariane 5, 1996
� O foguete explodiu 40 segundos após a sua primeira decolagem.
� Prejuízo de US$ 500 milhões
� Foi aproveitado um pacote de software de navegação do Ariane 4 que não tinha erros.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 35Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software -Ariane
� No módulo Sistema de Referencia Inercial uma conversão de valores de 16-bits para 64-bits causou um operando inválido que o interrompeu
� A falha no SRI levou o computador de bordo a modificar a trajetória do foguete levando à ruptura de juntas e isto causou a ativação da auto-destruição.
� No Ariane 5, o módulo SRI só deveria ter sido utilizado antes do lançamento.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 36Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software - -LAS
� London Ambulance System - despacho de ambulâncias em Londres, 1992.
� Morte de pessoas que não foram socorridas em tempo.� Problema de Gerência de Software:
– Responsáveis contrataram uma empresa desconhecida cujo valor cobrado era menor que os cobrados pelas empresas de renome.
– Colocaram o sistema no ar sem os devidos testes.– Não foi feita uma migração correta do sistema antigo para o
novo.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 37Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software - -Therac-25
� Máquina de radioterapia com software controlador (1985-87).
� O controle de segurança feito pelo hardware em máquinas anteriores foi removido e passou a ser feito pelo software.
� O software falhou na tarefa de, ao mesmo tempo, manter invariantes essenciais: o feixe de elétrons e o dispositivo que controla a concentração do feixe em níveis seguros.
� Diversas mortes em decorrência de queimaduras.� O programador não tinha experiência em programação
concorrente.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 38Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software -Denver
� Sistema de triagem/controle de bagagem do aeroporto internacional de Denver (EUA)
� Objetivo: Sistema para controlar 4000 "telecars" ao longo de 21 milhas de trilhos, transportando a bagagem entre os portões e asáreas de retirada de bagagem de 20 companhias aéreas.
� Características: Uma rede de cerca de 100 computadores, 5000 "olhos eletrônicos", 400 receptores de rádio e 56 leitores de códigos de barra, organizando o transporte e entrega segura de cada malaou valise desde a chegada ao aeroporto até a entrega ao passageiro e respectiva conferência.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 39Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Falhas Famosas de Software -Denver
� Problemas:• Atrasou a inauguração do aeroporto. Custo do sistema: US$
193 milhões• Inauguração estava prevista para Out/1993. Em Junho/1994 o
sistema ainda não estava funcionando e causava prejuízos de US$ 1,1 milhão/dia
• No começo de 1995 um controle MANUAL de bagagem foi instalado para que o aeroporto pudesse ser inaugurado (com atraso de mais de um ano)
• Problema de planejamento e gerenciamento.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 40Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Causas dos problemas associados à crise de software
�� FILOSOFIA DO SOFTWAREFILOSOFIA DO SOFTWARE
�� FALHAS DAS PESSOAS RESPONSFALHAS DAS PESSOAS RESPONSÁÁVEIS VEIS PELO DESENVOLVIMENTO DE SOFTWAREPELO DESENVOLVIMENTO DE SOFTWARE
�� MITOS DO SOFTWAREMITOS DO SOFTWARE
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 41Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Causas�� PRPRÓÓPRIO CARPRIO CARÁÁTER DO SOFTWARETER DO SOFTWARE
• O software é um elemento de sistema lógico e não físico. Conseqüentemente o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas.
�� FALHAS DAS PESSOAS RESPONSFALHAS DAS PESSOAS RESPONSÁÁVEIS PELO VEIS PELO DESENVOLVIMENTO DE SOFTWAREDESENVOLVIMENTO DE SOFTWARE• Gerentes sem nenhum background em software
• Os profissionais da área de software têm recebido pouco treinamento formal em novas técnicas para o desenvolvimento de software
• Resistência a mudanças.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 42Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Software� O estabelecimento de objetivos gerais é suficiente para
se começar a escrever programas.
� Mudanças no software podem ser feitas facilmente porque ele é "flexível".
� Um projeto é bem sucedido se conseguirmos um programa funcionando corretamente.
� Administrativos, do Cliente e do Profissional
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 43Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos Administrativos
� Gerentes se encontram sob pressão
• manter orçamentos
• evitar que os prazos sejam ultrapassados
• melhorar a qualidade
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 44Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos Administrativos
� Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software.
� Realidade:• Será que o manual é usado?• Os profissionais sabem que ele existe? • Ele reflete a prática moderna de desenvolvimento de
software? • Ele é completo?
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 45Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos Administrativos� Mito: Meu pessoal tem ferramentas de
desenvolvimento de software de última geração; afinal compramos para eles os mais novos computadores.
� Realidade:• É preciso muito mais do que os mais recentes
computadores para se fazer um desenvolvimento de software de alta qualidade.
• Ferramentas de engenharia e software auxiliada por computador CASE (Computer-Aided Software Engineering) são mais importantes do que o hardware
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 46Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Clientes� Mito: Uma declaração geral dos objetivos é
suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde.
� Realidade:• Uma definição inicial ruim é a principal causa de
fracassos dos esforços de desenvolvimento de software.
• É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 47Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Clientes� Mito: Os requisitos de projeto modificam-se
continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software éflexível.
� Realidade:• Requisitos podem ser mudados, mas o impacto
varia de acordo com o tempo que é introduzido (projeto e custo)
• Um mudança, quando solicitada tardiamente num projeto, é mais dispendiosa do que a mesma mudança solicitada nas fases iniciais
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 48Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Profissional� Mito: Assim que escrevermos o programa e o
colocarmos em funcionamento nosso trabalho estará completo.
� Realidade:• Os dados da indústria indicam que entre 50 e 70%
de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 49Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Profissional� Mito: Enquanto não tiver o programa
"funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.
� Realidade:• Mecanismo (Revisão Técnica Formal) de garantia
de qualidade de software é aplicado desde o começo do projeto
• Revisões de software são um “filtro de qualidade” -descobre erros/defeitos
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 50Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Mitos do Profissional� Mito: A única coisa a ser entregue em um
projeto bem-sucedido é o programa funcionando.
� Realidade:• Um programa funcionando é somente uma parte de
uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.
• A DOCUMENTAÇÃO é o alicerce
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 51Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Categorias de Tamanho de Softwares
Categoria Tamanho daEquipe
Duração Tamanho do Fonte
(linhas de código)
Trivial 1 1-4 semanas 500
Pequeno 1 1-6 meses 1000 a 2000
Médio 2-5 1-2 anos 5 mil a 50 mil
Grande 5-20 2-3 anos 50 mil a 100 mil
Muito grande 100-200 4-5 anos 1 milhão
Extremamentegrande
2000-5000 5-10 anos 1 a 10 milhões
ex: O Win 95: teve 11 milhões de linhas e 200 programadores / O Nestscape teve 3 milhões de linhas e 120 programadores
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 52Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
SOLUÇÃO
� Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos
� Métodos e Técnicas para o disciplinar o processo de desenvolvimento do software
.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 53Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Aspectos históricos da Engenharia de Software
� 1968 Conferência da OTAN� Objetivo: resolver a “Crise do Software”� Software é entregue
– Atrasado– Com orçamento estourado– Com falhas residuais
� Eles não encontraram uma solução, mas definiram uma meta: Engenharia de Software (aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software)
� Custo do hardware decrescente e custo do software em ascensão
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 54Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
� Fritz Bauer – 1969 ( primeira definição)
“O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter
economicamente um software que seja confiável e que funcione eficientemente em máquinas
reais”
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 55Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
� IEEE, 1993
“A aplicação de uma abordagem sistemática, disciplinada e quantificável para o
desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a
fim de obter economicamente softwares confiáveis e que executem de forma eficiente
nas máquinas reais”
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 56Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
� É uma disciplina de engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção.
� Os engenheiros de software adotam uma abordagem sistemática e organizada em seu trabalho e usam ferramentas e técnicas apropriadas dependendo do problema a ser resolvido.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 57Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
Programador (técnicas) Engenheiro (técnicas)
1. Paradigma de tentativa e erro 1. Paradigma adaptado ao escopo do sistema
2. Estrutura de Dados 2. Análise e Projeto
3. Linguagens de Programação 3. Ferramentas CASE e SGBD´s
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 58Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
� É uma disciplina que integra métodos, ferramentas eprocedimentos para o desenvolvimento de software de computador.
� Possibilitar ao gerente o controle do processo de desenvolvimento
� Oferecer ao profissional uma base para a construção de software de alta qualidade.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 59Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de Software - Método
� Métodos: proporcionam os detalhes de “comofazer” para construir o software.
� Envolvem um amplo conjunto de tarefas
� Um método de ES é uma aproximação estruturada para o desenvolvimento de software
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 60Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de Software - Método
� Objetivo: Produção de software de alta qualidade de um modo cost-effective (custo-beneficio).
� Início na década de 70 (DeMarco e Jackson):• Identificação dos componentes funcionais básicos
de um sistema;• Orientado à função;• Métodos ainda muito utilizados.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 61Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� 80s-90s Métodos orientados a objeto (Booche Rumbaugh).
� classes,objetos.
� Atualmente os diferentes métodos estão integrados numa aproximação unificada baseada em Unified Modeling Language(UML).
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 62Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� Todos os métodos pretendem
• Criar modelos do sistema que possam ser representados graficamente;
• Usar estes métodos como especificação
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 63Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 64Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
• Métodos devem incluir os seguintes componentes:
• Descrição gráficas • Regras• Recomendações • Diretrizes de processo
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 65Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
• Descrição gráficas.• Descrições dos modelos do sistema que
deverão ser desenvolvidos e da notação usada para os definir. Ex. Modelos de objetos, fluxos de dados etc.
• Regras • Restrições que se aplicam a modelos de
sistema. Ex.Cada entidade deve ter um único nome.
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 66Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
• Recomendações • Conselho em prática de projeto. Ex. Nenhum
objeto deve ter mais que sete sub-objetos.
• Diretrizes de processo • Descrição das atividades que podem ser
seguidas.• Atributos de objetos devem ser
documentados.
Engenharia de Software - Método
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 67Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� Ferramentas : fornecem suporte automatizado ou semi aos métodos.• Existem atualmente ferramentas para sustentar
cada um dos métodos
• Quando as ferramentas são integradas éestabelecido um sistema de suporte ao desenvolvimento de software chamado CASE -Computer Aided Software Engineering
Engenharia de Software -Ferramentas
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 68Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é CASE(Computer-Aided Software Engineering)
� Sistemas de software automatizado utilizados para apoiar as atividades de processo de software.
� Upper-CASE• Ferramenta para dar apoio às fases iniciais do processo de
software.
� Lower-CASE• Ferramenta para dar apoio à implementação a aos testes.
� Ex.(Poseidon para UML , ArgoUML....)
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 69Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Procedimentos
Engenharia de Software -Procedimentos
Métodos
Ferramentas
Resultados
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 70Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� Procedimentos : constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software. • Seqüência em que os métodos serão aplicados• Produtos (deliverables) que se exige que sejam
entregues• Controles que ajudam assegurar a qualidade e
coordenar as alterações• Marcos de referência que possibilitam administrar o
progresso do software
Engenharia de Software -Procedimentos
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 71Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
� Todo engenheiro de software deve desenvolver com:
– Rigor e Formalidade– Separação de interesses– Modularidade– Abstração– Antecipação de mudanças– Generalidade– Possibilidades de evolução
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 72Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
� Rigor e Formalidade O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade é o requisito de que o processo seja dirigido e avaliado por leis matemáticas.
� Separação de interessesSeparar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 73Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
• ModularidadeConsiste na divisão de sistemas complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento).
• Decomposição é o ato de dividir um problema original em subproblemas recursivamente.
• Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo. Ajuda na manutenção do sistema.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 74Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
• Antecipação de mudançasSistemas de softwares são desenvolvidos enquanto seus requisitos ainda não estão totalmente claros. Quando o sistema éfinalmente liberado, novos requisitos podem ser descobertos e velhos requisitos atualizados através do “feedback” do usuário.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 75Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
• Generalidade / EspecialidadeSoluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas. No processo de produção de software estas questões devem ser cuidadosamente analisadas.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 76Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Princípios da Engenharia de Software
� IncrementabilidadeCaracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado éatingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 77Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais os custos da Engenharia de Software?
� Não existe uma resposta direta.
� A distribuição dos custos através do processo de software depende do processo usado e do tipo de software a desenvolver.
� Custos de desenvolvimento de um software complexo quando se conseguem definir custos separadamente para especificação, desenho, implementação, integração e testes
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 78Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais os custos da Engenharia de Software?
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 79Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Custo em relação a falhas
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 80Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais os custos da Engenharia de Software?
0 25 50 75 100
Especificação Desenho Desenvolvimento Integração e Teste
�Custos segundo aproximação evolutiva0 25 50 75 100
Especificação Desenvolvimento Evolutivo Testes do Sistema
�Custos relativos entre desenvolvimento e manutenção do software0 25 50 75 100
Desenvolvimento Manutenção
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 81Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais os custos da Engenharia de Software?
� Custos de desenvolvimento de produtos de software genéricos:
0 25 50 75 100
Especificação Desenvolvimento Teste
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 82Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Impacto dos custo de manutenção• Diferentes tipos de manutenção
– Manutenção corretiva [aproximadamente 20%] • 60 a 70% das necessidades de correção são falhas de especificação ou design
– Manutenção evolutiva (melhoria)• Aperfeiçoamento [aproximadamente 60%]• Adaptação [aproximadamente 20%]
• Grande parte dos esforços em qualidade de software têm sido em melhoria dos processos de software de maneira a diminuir os custos da manutenção.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 83Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais são os principais desafios enfrentados pela Engenharia de Software?
� Sistemas de legado • Devem ser mantidos e devem ser atualizado
� Heterogeneidade • Operar com sistemas distribuídos e incluem uma mistura de
hardware e software
� Fornecimento • Entrega mais rápida de software
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 84Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Responsabilidade profissional e ética
� Confiabilidade – respeitar a confiabilidade de seus empregadores ou clientes.
� Competência – os engenheiros não devem aceitar serviços que estejam for a do seu limite de competência.
� Direito de propriedade intelectual – os engenheiros devem estar cientes das leis locais que regulam o uso da propriedade intelectual, como patentes e direitos autorais.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 85Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Resumindo Engenharia de Software
� Aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para o desenvolvimento sistemático de software.
� Aplicação de métodos, técnicas e ferramentas para o gerenciamento do processo de desenvolvimento.
� Produção da documentação formal destinada a comunicação entre os membros da equipe de desenvolvimento bem como aos usuários.
� Encontrar caminhos para se "construir" softwares de qualidade;
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 86Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Resumindo Engenharia de Software
� Ao invés de ser um fator único, a qualidade deve ser vista como a conjunção entre um conjunto de metas;
� Fatores externos, perceptíveis aos usuários e clientes, devem ser distinguidos dos fatores internos, perceptíveis aos projetistas e implementadores;
� A manutenção de software, que consome grande parte dos custos do software, é penalizada pela dificuldade em se implementar mudanças no software produto, e pela excessiva dependência dos programas da estrutura física dos dados que eles manipulam.
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 87Engenharia de Softawre 6º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Prática
� Visualizando a informática na sua empresa, cite exemplos de:• Mitos utilizados pelo analista ou pelo
administrador de sua empresa.• Falhas que ocasionaram grandes custos.• Falhas que ocasionaram mudanças de
projetos.