profa. maria auxiliadora fonte: pressman, roger - engenharia de software - 6° edição sommerville...

Post on 22-Apr-2015

147 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Introdução à Engenharia de Software

2Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Conceitos de Engenharia de Software.Produto e processo de desenvolvimentode software. Extração, análise e especificaçãode requisitos. Métodos de desenvolvimento desoftware. Verificação, validação e manutençãode especificações de software. Planejamentoe gestão de projetos. Estimativas: métricas emodelos de custo, estudo de viabilidade

Engenharia de SoftwareEmenta

3Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de SoftwarePrograma

1. INTRODUÇÃO

1.1 Definições e Objetivos 1.2 Conceitos Básicos

1.3 Características do Software 1.4 Componentes e Aplicações do Software

4Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de SoftwarePrograma

2. PROCESSO DE SOFTWARE2.1 Modelo de Processo2.2 Ciclo de Vida Clássico/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

5Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

3. REQUISITOS DE SOFTWARE

3.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

Engenharia de SoftwarePrograma

6Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

4. GERENCIAMENTO DE CUSTO

4.1 Planejamento4.2 Estudo de Viabilidade4.3 Estimativa

4.4 Métricas de Software4.5 Gerenciamento de Pessoal4.6 Gerenciamento de Grupos

Engenharia de SoftwarePrograma

7Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

5. MODELOS DE SISTEMA

5.1 Modelos de Contexto 5.2 Modelos de Comportamento5.3 Métodos Estruturados5.4 Métodos Orientado a Objeto

– Casos de Uso

Engenharia de SoftwarePrograma

8Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

6. MODELO PARA PROJETO

6.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

9Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

7. MODELO DE DADOS

7.1 Diagrama de Entidade e Relacionamento 7.2 Tipos de Entidades7.3 Tipos de Relacionamento7.4 Normalização

Engenharia de SoftwarePrograma

10Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

8. VERIFICAÇÃO, VALIDAÇÃO E TESTE

8.1 Planejamento de verificação e validação8.2 Inspeções de Software8.3 Teste de Software

Engenharia de SoftwarePrograma

11Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

9. EVOLUÇÃO DE SOFTWARE

9.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

Engenharia de SoftwarePrograma

12Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

10. GERENCIAMENTO DE QUALIDADE

10.1 Qualidade de Processo e de Produto

10.2 Padrões de Qualidade10.3 Controle de Qualidade

Engenharia de SoftwarePrograma

13Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de Software

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.

14Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de Software

Bibliografia de Apoio ― http://wps.prenhall.com/br_pfleeger_engsoftware_2― www.aw.com/sommerville_br― http://www.computer.org/portal/web/swebok/html/copyright

15Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

16Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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?

17Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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:

Desafio

18Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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)

Desafio

19Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Desenvolver software é um problema de métodos e técnica, em suma, de atividade humana.

• Gerenciar projetos de TI é gerenciar riscos assumidos e vencidos por seres humanos inteligentes.

Desafio

20Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Evolução do SoftwarePeríodo Evolução

1950-1960 Orientação a batchSoftware totalmente customizadoDistribuição limitada

1960-1970 MultiusuáriosTempo RealBanco de Dados

21Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

DesafioPeríodo Evolução

1980-1990 Sistemas distribuídosInteligência EmbutidaHardware de baixo custo

1990-2000 Sistemas de desktop poderososTecnologia orientada a objetoSistemas Especialistas....

22Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

DesafioPeríodo Evolução

2000 - atual As tecnologias orientadas a objetosUso das técnicas de "quarta geração" para o desenvolvimento de softwareOs sistemas especialistas e o software de inteligência artificial.

23Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Aplicação do Software

Bá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).

24Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

25Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

O que é Sistema?

é um conjunto de elementos inter-dependentes que realizam

operações visando atingir metasespecificadas.

26Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Sistema de Computação

é aquele destinado ao suporte ouautomação de tarefas através deprocessamento de informações.

27Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Componentes de Sistemas deComputação

Hardware Computadores,periféricos e redes.

Software Os programas e arquivos de dados.

Usuários Usuários e operadores que realizam as tarefas e procedimentos.

28Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Componentes de Sistemas deComputação (cont.)

Procedimentos

Atividades realizadas pelos usuários e operadores, bem como pelos programas.

Documentação

Manuais e formulários que descrevem as operações do sistema.

29Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Exemplos de Sistemas Computacionais

• Automação Bancária• Frequê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

30Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

O que é Software?• Programas de computadores

associados a documentação.

• É um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real.

31Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

32Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Componentes do Software

Plano Especificaçãode Requisitos

Projeto Listagem

Plano deTestes

Estruturasde Dados

ProgramaFuncionando

33Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Características do Software

• Complexidade

• Conformidade

• Mutabilidade

34Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Características do Software

• Complexidade– Software é mais complexo do

que qualquer outro produto construídos por seres humanos.

35Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Características do Software• Conformidade

– O software deve ser desenvolvido conforme o ambiente. Não é o ambiente que deve se adaptar ao software.

–Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (industrial).

–Sucesso é medido pela qualidade e não quantidade.

36Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Características do Software• Mutabilidade

– Existe sempre uma pressão para se fazer mudanças em um software.

–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).

37Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Falhas do Hardware

tempo

“desgaste”“mortalidade infantil”

índice de falhas

Defeitos de projeto e manufatura

ProblemasAmbientais(poeira, vibração, abuso, temperaturas, ...)

38Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Falhas do Softwaremudanças

índice de falhas

curva real

curva idealizada

tempo

39Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

40Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Formas do Software

41Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Crise do Software• Refere-se a um conjunto de problemas encontrados no desenvolvimento de software.

• Problemas não se limitam a softwares que não funcionam

adequadamente.

42Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Crise do Software

• Prazos ultrapassados

• Custos acima do previsto

• Não atendimento dos requisitos do usuário

43Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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

Crise do Software

44Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• As estimativas de prazo e de custo são imprecisas:– 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

Crise do Software

45Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• As estimativas de prazo e de custo são imprecisas (cont.)– 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.

Crise do Software

46Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Crise do Sofware• A produtividade das pessoas da área

de software não tem acompanhado a demanda por seus serviços

– Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente

47Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Crise do Sofware• O software existente é muito difícil 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.

48Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Crise do Sofware

Solução para a Crise do Sofware

Engenharia de Software aliada a:

TÉCNICAS E FERRAMENTAS

49Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Causas dos problemas associados à crise de software

• Filosofia do Software.

• Falhas das Pessoas Responsáveis pelo Desenvolvimento de Software.

• Mitos do Software.

50Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Filosofia do Software

O software é um elemento de sistemalógico e não físico.Consequentemente, o sucesso é medidopela qualidade de uma única entidade enão pela qualidade de muitas entidadesmanufaturadas.

51Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Falhas das Pessoas Responsáveis pelo Desenvolvimento 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.

52Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Software

Mitos do Administrativos, do Cliente e do Profissional

53Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Problemas Administrativos

• Gerentes se encontram sob pressão– manter orçamentos– evitar que os prazos sejam ultrapassados– melhorar a qualidade

54Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos

• Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software.

55Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos

• Realidade:– Será que o manual é usado?– Os profissionais sabem que ele existe?– Ele reflete a prática moderna de

desenvolvimento de software? –Ele é completo?

56Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos

• Mito: Meu pessoal tem ferramentas de desenvolvimento de software de última geração; afinal compramos para eles os mais novos computadores.

57Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos• Realidade:

—É preciso muito mais do que os mais recentes computadores para se fazer um desenvolvimento de software de alta qualidade.

—Ferramentas de Engenharia de Software Auxiliada por Computador - CASE (Computer-Aided Software Engineering) são mais importantes do que o hardware.

58Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos

• Mito: Se nós estamos atrasados nosprazos, podemos adicionar maisprogramadores e tirar o atraso.

59Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos Administrativos

• Realidade:– O desenvolvimento de software não é

um processo mecânico igual à manufatura.

– Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas.

60Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos dos Clientes

• Mito: Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde.

61Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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.

Mitos dos Clientes

62Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos dos Clientes

• Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.

63Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Realidade:– Requisitos podem ser mudados, mas o

impacto varia de acordo com o tempo que é introduzido (projeto e custo).

– Uma mudança, quando solicitada tardiamente num projeto, é mais dispendiosa do que a mesma mudança solicitada nas fases iniciais.

Mitos dos Clientes

64Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional

• Mito: Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo.

65Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional• 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

66Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional

• Mito: Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.

67Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional

• 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.

68Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional

• Mito: A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando.

69Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Mitos do Profissional• 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

70Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

71Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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 disciplinar o processo de desenvolvimento do software.

.

72Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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 disciplinar o processo de desenvolvimento do software.

.

73Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

74Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Eles não encontraram uma solução, mas definiram uma meta: Engenharia de Software.

• Custo do hardware decrescente e custo do software em ascensão.

Aspectos históricos da Engenharia de Software

75Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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”

76Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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”

O que é Engenharia de Software?

77Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

O que é Engenharia de Software?

78Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• É 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.

O que é Engenharia de Software?

79Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de Software - Método

• 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.

80Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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

81Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Década de 70 (DeMarco e Jackson):–Orientado à função.

• 80s-90s (Booch e Rumbaugh):–Métodos orientados a objeto.

• Atualmente os diferentes métodos estão integrados numa aproximação unificada baseada em Unified Modeling Language (UML).

Engenharia de Software - Método

82Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Engenharia de Software - Método

83Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Métodos devem incluir os seguintes componentes:

–Descrição gráficas –Regras–Recomendações –Diretrizes de processo

Engenharia de Software - Método

84Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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.

Engenharia de Software - Método

85Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Regras Restrições que se aplicam a modelos desistema. Ex.Cada entidade deve ter um único nome.

• Recomendações Conselho em prática de projeto. Ex.Nenhum objeto deve ter mais que sete

subobjetos.

Engenharia de Software - Método

86Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Diretrizes de processo – Descrição das atividades que podem ser seguidas.

–Atributos de objetos devem ser documentados.

Engenharia de Software - Método

87Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Fornecem suporte automatizado ou semi- automatizado 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.

Engenharia de Software - Ferramentas

88Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

O que é CASE (Computer-Aided Software Engineering)

• 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 ..)

89Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

– Constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software.

– Sequência em que os métodos serão aplicados.– 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

90Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Procedimentos

Engenharia de Software - Procedimentos

Métodos

Ferramentas

Resultados

91Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

92Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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.

Princípios da Engenharia de Software

93Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Separação de interesses Separar 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.

Princípios da Engenharia de Software

94Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Modularidade Consiste na divisão de sistemas

complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento).

Princípios da Engenharia de Software

95Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Modularidade (cont.)– 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.

Princípios da Engenharia de Software

96Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Antecipação de mudanças Sistemas 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.

Princípios da Engenharia de Software

97Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Generalidade / Especialidade Soluçõ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.

Princípios da Engenharia de Software

98Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Incrementabilidade Caracteriza 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.

Princípios da Engenharia de Software

99Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Quais os custos da Engenharia de Software?

• 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.

100Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Quais os custos da Engenharia de Software?

101Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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

Quais os custos da Engenharia de Software?

102Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Custos de desenvolvimento de produtos de software genéricos:

0 25 50 75 100

Especificação Desenvolvimento Teste

Quais os custos da Engenharia de Software?

Custos relativos entre desenvolvimento e manutenção do software0 25 50 75 100

Desenvolvimento Manutenção

103Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Custo em relação a falhas

104Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Impacto dos custo 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%]

105Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

106Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

107Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• Direito de propriedade intelectual – os engenheiros devem estar cientes das leis locais que regulam o uso da propriedade intelectual, como patentes e direitos autorais.

Responsabilidade profissional e ética

108Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

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.

• Produção da documentação formal destinada a comunicação entre os membros da equipe de desenvolvimento bem como aos usuários.

109Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Resumindo Engenharia de Software

• Encontrar caminhos para se "construir" softwares de qualidade.

• Fatores externos, perceptíveis aos usuários e clientes, devem ser distinguidos dos fatores internos, perceptíveis aos projetistas e implementadores.

110Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

• 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.

Resumindo Engenharia de Software

111Profa. Maria Auxiliadora

Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° EdiçãoSOMMERVILLE - Engenharia de Software - 8° Edição

Prática• Visualizando a informática em uma

empresa, cite exemplos de:–Mitos utilizados pelo analista ou pelo

administrador de uma empresa específica.

–Falhas que ocasionaram grandes custos.–Falhas que ocasionaram mudanças de

projetos.

top related