Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 1Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Leitura:Cap1: Sommerville – Pressman - Ariadne
Introdução
Engenharia de Software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 2Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 3Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 4Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 5Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 6Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 7Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Componentes de Sistemas deComputação
•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.
•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
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 8Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 9Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 10Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 11Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 12Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 13Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 14Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 15Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 16Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Formas do Software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 17Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� SOFTWARE DE SISTEMA: coleção de programas escritos para apoiar outros programas. Forte interação com o hardware.• sistema operacional, compiladores, drivers, etc...
� SOFTWARE DE TEMPO REAL software que monitora, analisa e controla eventos do mundo real• sistema de controle de tráfego aéreo, relógio digital
Aplicações do software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 18Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� SOFTWARE BUSINESS sistemas de operações comerciais e tomadas de decisões administrativas• folha de pagamentos, contas a pagar e a receber,
MIS, ...
• SOFTWARE EMBUTIDO usado para controlarprodutos e sistemas para os mercados industriais e de consumo • produtos inteligentes
Aplicações do software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 19Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� SOFTWARE CIENTÍFICO E DE ENGENHARIAcaracterizado por algoritmos de processamentonumérico• astronomia, vulcanologia, análise de fadiga da
mecânica de automóveis, biologia molecular, projeto CAD, ...
� SOFTWARE DE COMPUTADOR PESSOAL• envolve processamento de textos, planilhas
eletrônicas, computação gráfica, diversões, etc
Aplicações do software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 20Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� SOFTWARE BASEADO NA WEB • páginas Web (websites) recuperados por um
browser (tecnologia web ASP, HTML, CGI, JAVA, XML, etc...)
� SOFTWARE DE COMPUTADOR PESSOAL• envolve processamento de textos, planilhas
eletrônicas, computação gráfica, diversões, etc
Aplicações do software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 21Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
A Evolução do Software� A quarta era (meados de 80 a
meados de 90)o Aplicativos com Interfaces
Gráficaso Redes e Arquitetura Cliente-
Servidor� A quinta era (de meados de 90
a ???)o Software Distribuídos,
Internet, Groupwares e Intranets
� Sexta era??o Computação Pervasiva,
Móvel e Ubíqua
� Os primeiros anos (1950 a início dos 60)o Aplicações científicas e de
engenharia� A segunda era (1960 a
meados de 80)o Aplicações comerciais em
grande-porte (sistemas de informação BD)
� A terceira era (meados de 70 e década de 80)o Aplicativos pessoais em
microcomputadores
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 22Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� 1950-1970: Desafio principal era desenvolver Hardware• Reduzir o custo de processamento e armazenamento de
dados� Hoje: Reduzir o custo e melhorar a qualidade dos
Softwares (potencial da computação)• Impacto na sociedade e cultura é profundo!!!!!!• O software atingiu as grandes massas; tomada de
decisões nos negócios, base para a pesquisa científica, solução de problemas de engenharia e telecomunicações, funcionalidade.
• Comunidade de Software objetiva desenvolver tecnologias para facilitar o projeto de softwares de alta qualidade
A Evolução do Software
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 23Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 24Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 25Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 26Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 27Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 28Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 29Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 30Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 31Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 32Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 33Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 34Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 35Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 36Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 37Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 38Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 39Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 40Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 41Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 42Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 43Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 44Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 45Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Categorias de Tamanho de Softwares
1 a 10 milhões5-10 anos2000-5000Extremamentegrande
1 milhão4-5 anos100-200Muito grande
50 mil a 100 mil2-3 anos5-20Grande
5 mil a 50 mil1-2 anos2-5Médio
1000 a 20001-6 meses1Pequeno
5001-4 semanas1Trivial
Tamanho do Fonte
(linhas de código)
DuraçãoTamanho daEquipe
Categoria
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 6º Edição / ©Ian Sommerville 2000 Slide 46Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 47Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 48Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 49Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 50Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 51Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
O que é Engenharia de Software?
� É uma disciplina que integra métodos,ferramentas e procedimentos 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 6º Edição / ©Ian Sommerville 2000 Slide 52Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Engenharia de Software - Método
� Métodos: proporcionam os detalhes de “como fazer” 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 6º Edição / ©Ian Sommerville 2000 Slide 53Engenharia de Softawre 3º 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.
� 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 6º Edição / ©Ian Sommerville 2000 Slide 54Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
� 80s-90s Métodos orientados a objeto (Booch e Rumbaugh).
� 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 6º Edição / ©Ian Sommerville 2000 Slide 55Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 56Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
• Métodos devem incluir os seguintes componentes:• 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 6º Edição / ©Ian Sommerville 2000 Slide 57Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
• Métodos devem incluir os seguintes componentes (cont):• 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 6º Edição / ©Ian Sommerville 2000 Slide 58Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 59Engenharia de Softawre 3º 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.
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 60Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 61Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 62Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 63Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Quais os custos da Engenharia de Software?
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 64Engenharia de Softawre 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho
Custo em relação a falhas
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 65Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 66Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 67Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 68Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 69Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 70Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 71Engenharia de Softawre 3º 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 6º Edição / ©Ian Sommerville 2000 Slide 72Engenharia de Softawre 3º 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.