Engenharia de Software

Download Report

Transcript Engenharia de Software

Introdução à Engenharia de Software

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 1

Engenharia de Software Ementa

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 2

Engenharia de Software Programa

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 3

Engenharia de Software Programa 2. PROCESSO DE SOFTWARE

2.1 Modelo de Processo 2.2 Ciclo de Vida Clássico/Modelo Cascata 2.3 Modelo Evolucionário 2.4 Modelo Espiral 2.5 Técnicas de Quarta Geração 2.6 Desenvolvimento Rápido de Software 2.7 Combinando Paradigmas Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 4

Engenharia de Software Programa 3. REQUISITOS DE SOFTWARE

3.1 Classificação de requisitos 3.2 Técnicas de extração de requisitos 3.3 Documento de requisitos de software 3.4 Processos de Engenharia de Requisitos Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 5

Engenharia de Software Programa 4. GERENCIAMENTO DE CUSTO

4.1 Planejamento 4.2 Estudo de Viabilidade 4.3 Estimativa 4.4 Métricas de Software 4.5 Gerenciamento de Pessoal 4.6 Gerenciamento de Grupos Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 6

Engenharia de Software Programa 5. MODELOS DE SISTEMA

5.1 Modelos de Contexto 5.2 Modelos de Comportamento 5.3 Métodos Estruturados 5.4 Métodos Orientado a Objeto – Casos de Uso Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 7

Engenharia de Software Programa 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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 8

Engenharia de Software Programa 7. MODELO DE DADOS

7.1 Diagrama de Entidade e Relacionamento 7.2 Tipos de Entidades 7.3 Tipos de Relacionamento 7.4 Normalização Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 9

Engenharia de Software Programa 8. VERIFICAÇÃO, VALIDAÇÃO E TESTE

8.1 Planejamento de verificação e validação 8.2 Inspeções de Software 8.3 Teste de Software Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 10

Engenharia de Software Programa 9. EVOLUÇÃO DE SOFTWARE

9.1 Manutenção de Software 9.2 Tipos de Manutenção 9.3 Previsão de mudanças 9.4 Processo de Evolução 9.5 Evolução de Sistemas Legados Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 11

Engenharia de Software Programa 10. GERENCIAMENTO DE QUALIDADE

10.1 Qualidade de Processo e de Produto 10.2 Padrões de Qualidade 10.3 Controle de Qualidade Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 12

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 13

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 14

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 15

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?

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 16

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: Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 17

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

)

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 18

Desafio

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 19

Evolução do Software

Período Evolução

1950-1960 Orientação a batch Software totalmente customizado Distribuição limitada 1960-1970 Multiusuários Tempo Real Banco de Dados Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 20

Desafio

Período Evolução

1980-1990 Sistemas distribuídos Inteligência Embutida Hardware de baixo custo 1990-2000 Sistemas de desktop poderosos Tecnologia orientada a objeto Sistemas Especialistas....

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 21

Desafio

Período Evolução

2000 - atual As tecnologias orientadas a objetos Uso das técnicas de "quarta geração" para o desenvolvimento de software Profa. Maria Auxiliadora Os sistemas especialistas e o software de inteligência artificial.

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

Aplicação do Software

Básico

Coleção de programas escritos para apoio a outros programas.

Tempo Real Comercial

Software que monitora / analisa / controla eventos do mundo real.

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 23

Aplicação do Software

Embutido

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 24

O que é Sistema?

é um conjunto de elementos inter dependentes que realizam operações visando atingir metas especificadas.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 25

Sistema de Computação

é aquele destinado ao suporte ou automação de tarefas através de processamento de informações.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 26

Componentes de Sistemas de Computação Hardware Software

Computadores,periféricos e redes.

Os programas e arquivos de dados.

Usuários

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 27

Componentes de Sistemas de Computação (cont.) Procedimentos Documentação

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

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 28

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 29

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 30

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 31

Componentes do Software

Plano Especificação de Requisitos Projeto Estruturas de Dados Listagem Programa Funcionando Profa. Maria Auxiliadora Plano de Testes Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 32

Características do Software

• Complexidade • Conformidade • Mutabilidade Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 33

Características do Software

Complexidade

– Software é mais complexo do que qualquer outro produto construídos por seres humanos.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 34

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 35

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 36

índice de falhas Profa. Maria Auxiliadora

Falhas do Hardware

Defeitos de projeto e manufatura “desgaste” “mortalidade infantil” Problemas Ambientais (poeira, vibração, abuso, temperaturas, ...) tempo Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 37

índice de falhas

Falhas do Software

mudanças

curva real Profa. Maria Auxiliadora curva idealizada tempo Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 38

• •

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 39

Formas do Software

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 40

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 41

Crise do Software

• Prazos ultrapassados • Custos acima do previsto • Não atendimento dos requisitos do usuário Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 42

Crise do Software

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 Profa. Maria Auxiliadora – Hoje = 1:9 Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 43

Crise do Software

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 44

Crise do Software

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 45

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 46

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 47

Crise do Sofware

Solução para a Crise do Sofware 

Engenharia de Software aliada a: TÉCNICAS E FERRAMENTAS

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 48

Causas dos problemas associados à crise de software

• Filosofia do Software.

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

• Mitos do Software.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 49

Filosofia do Software

O software é um elemento de sistema lógico e não físico.

Consequentemente, o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 50

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 51

Mitos do Software Mitos do Administrativos, do Cliente e do Profissional

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 52

Problemas Administrativos

Gerentes se encontram sob pressão

– – manter orçamentos evitar que os prazos sejam – ultrapassados melhorar a qualidade Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 53

Mitos Administrativos

Mito: Já temos um manual repleto

de padrões e procedimentos para a construção de software. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 54

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? Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 55

Mitos Administrativos

Mito: Meu pessoal tem

ferramentas de desenvolvimento de software de última geração; afinal compramos para eles os mais novos computadores.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 56

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 57

Mitos Administrativos

Mito:

Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 58

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. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 59

Mitos dos Clientes

Mito: Uma declaração geral dos

objetivos é suficiente para se começar a escrever programas podemos preencher os detalhes mais tarde.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 60

Mitos dos Clientes

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 61

Mitos dos Clientes

Mito: Os requisitos de projeto

modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 62

Mitos dos Clientes

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 63

Mitos do Profissional

Mito: Assim que escrevermos o

programa e o colocarmos em funcionamento nosso trabalho estará completo.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 64

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 65

Mitos do Profissional

Mito: Enquanto não tiver o

programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 66

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 67

Mitos do Profissional

Mito: A única coisa a ser entregue

em um projeto bem sucedido é o programa funcionando.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 68

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 69

Categorias de Tamanho de Softwares Categoria Trivial Pequeno Médio Grande Muito grande Extremamente grande Tamanho da Equipe 1 1 2-5 5-20 100-200 2000-5000 Duração 1-4 semanas 1-6 meses 1-2 anos 2-3 anos 4-5 anos 5-10 anos Tamanho do Fonte (linhas de código) 500 1000 a 2000 5 mil a 50 mil 50 mil a 100 mil 1 milhão 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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 70

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.

.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 71

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.

.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 72

• •

Aspectos históricos da Engenharia de Software

• 1968 Conferência da OTAN Objetivo: resolver a Software é entregue

“Crise do Software”

– Atrasado – Com orçamento estourado – Com falhas residuais Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 73

Aspectos históricos da Engenharia de Software

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 74

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” Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 75

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

Profa. Maria Auxiliadora máquinas reais” PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 76

O que é Engenharia de Software?

Programador (técnicas)

1. Paradigma de tentativa e erro 2. Estrutura de Dados 3. Linguagens de Programação

Engenheiro (técnicas)

1. Paradigma adaptado ao escopo do sistema 2. Análise e Projeto 3. Ferramentas CASE e SGBD ´s Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 77

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 78

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 79

Engenharia de Software - Método

• Todos os métodos pretendem – Criar modelos do sistema que possam ser representados graficamente; – Usar estes métodos como especificação.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 80

Engenharia de Software - Método

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 81

Engenharia de Software - Método

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 82

Engenharia de Software - Método

Métodos devem incluir os seguintes componentes: –Descrição gráficas –Regras –Recomendações Profa. Maria Auxiliadora –Diretrizes de processo Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 83

Engenharia de Software - Método

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 84

Engenharia de Software - Método

Regras

Restrições que se aplicam a modelos de sistema.

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 85

Engenharia de Software - Método

Diretrizes de processo

– – Descrição das atividades que podem ser seguidas.

– Atributos de objetos devem ser documentados. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 86

Engenharia de Software - Ferramentas

• 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. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 87

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 ..) Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 88

Engenharia de Software - Procedimentos

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 89

Engenharia de Software - Procedimentos Métodos Procedimentos Ferramentas Resultados

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 90

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 Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 91

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 92

Princípios da Engenharia de Software

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 93

Princípios da Engenharia de Software

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). Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 94

Princípios da Engenharia de Software

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 95

Princípios da Engenharia de Software

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 96

Princípios da Engenharia de Software

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 97

Princípios da Engenharia de Software

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.

Profa. Maria Auxiliadora PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 98

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. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 99

Quais os custos da Engenharia de Software?

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 100

Quais os custos da Engenharia de Software?

100 0 25 Especificação Desenho 50 75 Desenvolvimento Integração e Teste

Custos segundo aproximação evolutiva 0 25 50 75 100 Especificação Desenvolvimento Evolutivo Testes do Sistema

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 101

Quais os custos da Engenharia de Software?

Custos relativos entre desenvolvimento e manutenção do software 0 25 50 75 100 Manutenção Desenvolvimento

Custos de desenvolvimento de produtos de software genéricos: 0 25 50 75 100 Especificação

Profa. Maria Auxiliadora

Desenvolvimento Teste

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

Custo em relação a falhas

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 103

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%] Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 104

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. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 105

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 106

Responsabilidade profissional e ética

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 107

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 108

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.

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 109

Resumindo Engenharia de Software

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

Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 110

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. Profa. Maria Auxiliadora Fonte: PRESSMAN, ROGER - Engenharia de Software - 6° Edição SOMMERVILLE - Engenharia de Software - 8° Edição 111