engenharia de software i profa. denise neves [email protected] 2011

45
Engenharia de Software I Profa. Denise Neves [email protected] 2011

Upload: internet

Post on 16-Apr-2015

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de Software I

Profa. Denise Neves

[email protected]

2011

Page 2: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

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 desenvovlimento de SW.

Page 4: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareBibliografia

Engenharia de Software

Ian Sommerville

Pearson Education

Engenharia de SoftwareRoger Pressman6ª edição

McGraw-Hill

Artigos sobre Engenharia de Software

Page 5: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDocumento : "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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDocumento "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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos Básicos

Page 16: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 dehardware e plataforma operacional Entrega– Existe sempre uma pressão forte para diminuir o tempo de

entrega.

Page 18: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProjeto

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProjeto

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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çãode programas (testes, inspeção, depuração)

• Verificação da qualidade– Testes beta, avaliação de usabilidade, avaliaçãode desempenho, etc.

Page 30: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos Básicos

FASE DE RETIRADA

Evolução do software- Sistemas legado- Reengenharia de Software

Page 32: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareConceitos

Processos de Software

Conjunto coerente de atividades para especificar, projetar, implementar e testar sistemas de software

Page 33: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

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 é transformadoformalmente em uma implementação Desenvolvimento baseado em reuso O sistema é montado a partir de componentes existentes

Page 35: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareModelo Cascata[sommerville]

Page 37: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareEvolucionários [summerville]

Page 40: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDesenvolvimento 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

Desenvolvimento formal de sistemas Baseia-se na transformação de uma especificaçãomatemática por meio de diferentes representaçõespara um programa executável

As transformações 'preservam a corretude', de talforma que possa ser diretamente mostrado que oprograma está de acordo com a sua especificação

Embutida na abordagem de desenvolvimento desoftware chamada ‘Cleanroom’

Page 42: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDesenvolvimento Formal

Page 43: Engenharia de Software I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDesenvolvimento 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareProcessos

Desenvolvimento orientado ao reuso

Baseia-se no reuso sistemático, onde sistemas sãointegrados a partir de componentes existentes ousistemas 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 I Profa. Denise Neves profa.denise@hotmail.com 2011

Engenharia de SoftwareDesenvolvimento orientado ao reuso