Leitura: Sommerville – Pressman - Ariadnemaria/arqan/2012-1/cap1-introd.pdf · Engenharia de...

88
Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / ©Ian Sommerville 2000 Slide 1 Engenharia de Softawre 6º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Leitura: Sommerville – Pressman - Ariadne Introdução Engenharia de Software

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.