Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software:...

45
Engenharia de Software I profa. Denise Neves [email protected] 2017

Transcript of Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software:...

Page 1: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de

Software I

profa. Denise Neves

[email protected]

2017

Page 2: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Este curso apresenta métodos e técnicas para o

desenvolvimento de software que abordam especificação,

modelagem, arquiteturas, verificação e testes de software,

bem como para o planejamento e gerenciamento do processo

de desenvolvimento.A disciplina de ES se preocupa em

sistematizar o desenvolvimento através de modelos, técnicas e

ferramentas para o produto e para o processo.

Page 3: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Diferença entre computação e engenharia de

software

A ciência da computação está relacionada com

teorias e fundamentos, engenharia de

software está relacionada com a prática e o

desenvolvimento de SW.

Page 4: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Bibliografia

Engenharia de Software

Ian Sommerville

Pearson Education

Engenharia de Software

Roger Pressman

6ª edição

McGraw-Hill

Artigos sobre Engenharia de Software

Page 5: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Software:

São programas de computadores, em suas diversas formas,

e a documentação associada.

Um programa é um conjunto de soluções algorítmicas,

codificadas numa linguagem de programação, executado

numa máquina real.

Software é um produto conceitual e lógico.

Produtos genéricos : stand-alone. Produzidos e vendidos no

mercado.

Produtos sob encomenda : sistemas encomendados.

Page 6: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos básicos

Características do Software

Invisibilidade – Software é invisível e invisualizável

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.

Se o software esta conforme os requisitos (o ambiente) todo o

suporte operacional deve se adaptar ao software.

[Brooks, F. No Silver Bullet]

Page 7: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

O estabelecimento de objetivos gerais é suficiente para

se começar a escrever programas.

Dê a uma pessoa técnica um bom livro de programação e

você terá um programador.

Mudanças no software podem ser feitas facilmente

porque ele é "flexível".

Até que o programa esteja "rodando" não é possível

verificarmos a sua qualidade.

Uma vez que o programa esteja escrito e funcionando,

nosso trabalho está feito.

Um projeto é bem sucedido se conseguirmos um

programa funcionando corretamente.

Mitos do Software [Pressman]

Page 8: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Falhas de Software

Ariane 5, 1996

O foguete explodiu 40 segundos após a sua primeira decolagem.

Prejuízo de U$ 500 milhões

Foi aproveitado um pacote de software de navegação do Ariane 4 que não tinha erros.

No módulo Sistema de Referencia Inercial uma conversão de valores de 64-bits para 16-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.

Page 9: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Falhas de Software

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.

Page 10: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Falhas de Software

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.

Page 11: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Bug do Milênio

Datas no formato : dd/mm/aa

Na virada do ano 2000 -> 00 que vai ser entendido como 1900

O bug pode aparecer em harware, software (sistemas e aplicativos), bases de dados, arquivos, scripts, enfim, onde houver processamento de datas, ali pode estar o problema.

No caso dos computadores e programas, a solução é relativamente simples (se não considerarmos os custos) - atualização (upgrade) de software, hardware e utilização dos remendos (patches) que estão sendo lançados pelos fabricantes.

Page 12: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Documento : "Testing for The Year 2000 Deadline"

Se uma aplicação não é mais necessária, livre-se dela;

Se você está usando atualmente uma aplicação que planeje desativar antes do ano 2000, então comece a fazê-lo gradualmente;

Se uma aplicação for considerada em conformidade com o ano 2000, realize alguns testes preliminares e passe para o próximo software;

Contacte seu fornecedor de software para verificar se pode ser feito o upgrade das aplicações;

Determine se o software pode ser trocado por um outro pacote adequado e faça a cotação do mesmo;

Se você tiver alguma aplicação que precise ser convertida, comece imediatamente;

Estabeleça um plano para ajudá-lo a navegar por tudo que precisa ser feito, e imponha uma linha de tempo rígida para cada uma das atividades.

Page 13: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Documento "Testing for The Year 2000

Deadline"

Atividades :

Determinar as correções que devem ser aplicadas a cada elemento com problemas;

Determinar os custos para a solução;

Gerar um relatório de custos;

Priorizar e aplicar as correções com base na análise de riscos;

Documentar as correções aplicadas para cada um dos ítens;

Caso as correções afetem outros setores, comunicá-los sobre os planos de correção;

Page 14: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Atividades :

Estabelecer planos de contingência para os elementos chaves, para o caso de haver problemas na passagem para o ano 2000;

Estabelecer processos manuais para processos automatizados;

Manter cópias impressas de informações importantes;

Garantir o processo de backup;

Deixar um estoque razoável de materiais, prevendo falhas nos fornecedores (Ex.: toner de impressoras, papéis para impressão, disquetes, fita DAT, material de escritório, água potável, baterias, pilhas, materiais de limpeza, etc.).

Page 15: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Page 16: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos:Evolução

Os primeiros anos (1950 a início dos 60)

– Aplicações científicas e de engenharia

A segunda era (1960 a meados de 80)

– Aplicações comerciais em grande-porte (sistemas de informação BD)

A terceira era (meados de 70 e década de 80)

– Aplicativos pessoais em microcomputadores

A quarta era (meados de 80 a meados de 90)

– Aplicativos com Interfaces Gráficas

– Redes e Arquitetura Cliente-Servidor

A quinta era (de meados de 90 a ???)

– Software Distribuídos,Internet, Groupwares e Intranets

Sexta era??

– Computação Pervasiva, Móvel e Ubíqua

Page 17: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Conceitos Básicos

Desafios para a Indústria de Software

Sistemas legados

– Sistemas antigos, mas de extrema importância para uma organização e que funcionam bem.

Linguagens antigas – falta de pessoal

Específico de plataformas obsoletas

Heterogeneidade

– Os sistemas são distribuídos e incluem diversidade de

hardware e plataforma operacional

Entrega

– Existe sempre uma pressão forte para diminuir o tempo de entrega.

Page 18: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

É uma disciplina da engenharia dedicada a todos os aspectos da produção de software.

Engenheiros de software devem adotar uma

abordagem sistemática e organizada para o seu

trabalho e usar técnicas e ferramentas

apropriadas, de acordo com o problema a ser

resolvido, e com as restrições e recursos

disponíveis.

Responsabilidade profissional e ética. Fonte: Ian Sommerville

Page 19: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Engenharia

Desenvolvimento de um produto

Processo de desenvolvimento envolvendo

análise, design, implementação e avaliação

Baseado em teoria, princípios, modelos,

métodos, técnicas e ferramentas

Equipe de especialistas

Planejamento e gerenciamento de recursos,

custos e prazos

Page 20: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Objetivos da 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.

Page 21: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Aspectos Históricos

1968 Conferência da OTAN, Garmisch

Objetivo: resolver a “Crise do Software”

Software é entregue

– Atrasado

– Com orçamento estourado

– Com falhas residuais

Custo do hardware decrescente e custo do

software em ascensão

Page 22: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Projeto

Um projeto é um empreendimento temporário

empreendido para alcançar um único

conjunto de objetivos.

(PMI,PMBOK Guide)

Page 23: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Projeto

Projeto de TI

Projetos de desenvolvimento de Softwares, podem ser de

desenvolvimento de um novo projeto ou a atualização de

programas existentes;

A seleção, aquisição e implementação de pacotes de Softwares ,

os quais podem incluir aspectos de customização;

A seleção, aquisição e implementação de Softwares, o que pode

incluir equipamento de mainframe , servidores, estações de

trabalho e outros equipamentos de suporte;

Page 24: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Projeto

Projeto de TI

Produtos de redes e telecomunicações e a seleção de serviços,

aquisição ou implementação;

Integração de sistemas ; e

Alguma combinação dos itens acima

Page 25: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Ciclo de Vida do Software

O ciclo de vida de um software descreve as fases pelas quais o

software passa desde a sua concepção até ficar sem uso algum.

Page 26: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Fases do Ciclo de Vida de Sistemas

Fase de definição

– Análise e Especificação

– Estudo de Viabilidade

– Estimativas Planejamento

Fase de desenvolvimento

– Design

– Implementação e integração

– Verificação e Validação

Page 27: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Fases do Ciclo de Vida

Fase de operação

– Distribuição, Instalação e Configuração

– Utilização e administração

– Manutenção – corretiva, evolutiva e adaptativa

Fase de retirada

– Migração, reengenharia, engenharia reversa

Page 28: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Fases de Definição

Deve-se analisar os requisitos, recursos e restrições para

• apresentar soluções,

• estudar a viabilidade,

• planejar e gerenciar o desenvolvimento

a partir de estimativas e análise de riscos que se utilizam de

métricas

Esta fase encerra-se com o contrato de desenvolvimento.

Page 29: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Fase de desenvolvimento

Design de Software

– Design conceitual, design da interface de usuário,

design da arquitetura de software,

design de algoritmos e estruturas de dados

• Implementação e integração

– Codificação, compilação, integração e verificação

de programas (testes, inspeção, depuração)

• Verificação da qualidade

– Testes beta, avaliação de usabilidade, avaliação

de desempenho, etc.

Page 30: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

Fase de Operação

Distribuição e entrega

Instalação e configuração

Utilização

Manutenção

– corretiva – correção de erros

– evolutiva ou adaptativa – novas versões

Novos requisitos

- novas situações de operação – hardware

- sistemas operacionais

Page 31: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos Básicos

FASE DE RETIRADA

Evolução do software

- Sistemas legado

- Reengenharia de Software

Page 32: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Conceitos

Processos de Software

Conjunto coerente de atividades para especificar,

projetar, implementar e testar sistemas de software

Page 33: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Objetivos :

Apresentar os modelos de processo de software

Descrever os diferentes modelos de processos e quando eles

podem ser utilizados

Descrever em formas gerais os modelos de processo para

engenharia de requisitos, desenvolvimento de software, testes e

evolução

Apresentar a tecnologia CASE para apoiar atividades do

processo de software

Page 34: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Modelos genéricos de modelos de processo de software

O modelo cascata

• Fases de especificação e desenvolvimento separadas e distintas

Desenvolvimento evolucionário

• Especificação e desenvolvimento são interfoliadas

Desenvolvimento formal de sistemas

Um modelo matemático do sistema é transformado

formalmente em uma implementação

Desenvolvimento baseado em reuso

O sistema é montado a partir de componentes existentes

Page 35: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Fases do modelo Cascata

Definição e análise de requisitos

Projeto do sistema e do software

Implementação e testes de unidade

Integração e testes do sistema

Operação e manutenção

A desvantagem do modelo cascata é a dificuldade de acomodar as

mudanças após o processo ter sido iniciado

Page 36: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Modelo Cascata[sommerville]

Page 37: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Problemas da fase do modelo cascata

Particionamento inflexível do projeto em fases distintas

Isso torna difícil responder a requisitos do usuário que mudam

Portanto, esse modelo é apropriado somente quando os

requisitos são bem compreendidos

Page 38: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Desenvolvimento Evolucionário

Desenvolvimento exploratório

O objetivo é trabalhar com os clientes e evoluir um sistema

final a partir de uma especificação genérica inicial. O

desenvolvimento se inicia com as partes do sistema que estão

compreendidas.

Fazer protótipos descartáveis

O objetivo é compreender os requisitos do sistema.

O protótipos e concentra em fazer experimentos com partes dos

requisitos que estejam mal compreendidas

Page 39: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Evolucionários [summerville]

Page 40: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Desenvolvimento Evolucionário

Problemas

- Falta de visibilidade do processo

- Os sistemas freqüentemente possuem pouca estrutura

Podem ser exigidas habilidades especiais (p.ex.em linguagens para desenvolvimento rápido)

Aplicabilidade

-Para sistemas interativos pequenos ou de médio porte

-Para partes de sistemas grandes (p.ex., a interface com o usuário)

-Para sistemas de vida curta

Page 41: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Desenvolvimento formal de sistemas

Baseia-se na transformação de uma especificação

matemática por meio de diferentes representações

para um programa executável

As transformações 'preservam a corretude', de tal

forma que possa ser diretamente mostrado que o

programa está de acordo com a sua especificação

Embutida na abordagem de desenvolvimento de

software chamada ‘Cleanroom’

Page 42: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software

Desenvolvimento Formal

Page 43: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Desenvolvimento Formal

Problemas

Necessidade de habilidades especiais e treinamento para aplicar a

técnica

Dificuldade de especificar formalmente alguns aspectos do

sistema, tais como a interface com o usuário

Aplicabilidade

Sistemas críticos, especialmente aqueles onde um estudo de

segurança deve ser feito antes de pôr o sistema em operação

Page 44: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Processos

Desenvolvimento orientado ao reuso

Baseia-se no reuso sistemático, onde sistemas são

integrados a partir de componentes existentes ou

sistemas COTS (Commercial-off-the-shelf)

Estágios do processo

• Análise dos componentes

• Modificação de requisitos

• Projeto do sistema com reuso

• Desenvolvimento e integração

Esta abordagem está se tornando mais importante, mas ainda há uma experiência limitada com ela

Page 45: Engenharia de Software - denan.com.brdenan.com.br/documentos/aula_introducaoEDSI.pdf · Software: São programas de computadores, ... e a documentação associada. ... Mudanças no

Engenharia de Software Desenvolvimento orientado ao

reuso