Engenharia de Software Profa Denise Neves Profa denisehotmail

  • Slides: 56
Download presentation
Engenharia de Software Profa. Denise Neves Profa. denise@hotmail. com

Engenharia de Software Profa. Denise Neves Profa. denise@hotmail. com

Engenharia de Software Ementa ¡ ¡ ¡ ¡ Projeto de software e engenharia de

Engenharia de Software Ementa ¡ ¡ ¡ ¡ Projeto de software e engenharia de software; o processo de projeto; aspectos fundamentais do projeto; metodologias de desenvolvimento de sistemas; as abordagens do processo; o modelo de processo; desenvolvimento do modelo de processo; aplicação do modelo de processo no projeto de desenvolvimento de aplicação; aplicando o modelo de processo no projeto de infraestrutura;

Engenharia de Software Ementa ¡ ¡ ¡ princípios do modelo de processo; o modelo

Engenharia de Software Ementa ¡ ¡ ¡ princípios do modelo de processo; o modelo de processo para a arquitetura organizacional: perspectiva do negócio, perspectiva da aplicação, perspectiva da informação e perspectiva da tecnologia; o modelo de processo para o desenho de componentes: conceito de desenho, desenho lógico e desenho físico; relacionamento com o modelo de processo;

Engenharia de Software Ementa ¡ ¡ conceito de desenho no modelo de processo: desenho

Engenharia de Software Ementa ¡ ¡ conceito de desenho no modelo de processo: desenho lógico no modelo de processo e desenho físico no modelo de processo; o modelo de aplicação; o modelo em 3 camadas: serviços de usuário, serviços de negócio e serviços de dados; benefícios da aplicação baseada em serviços; documentação de projeto. Ferramentas de modelagem de processos.

Engenharia de Software ¡ Este curso apresenta métodos e técnicas para o desenvolvimento de

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.

Engenharia de Software Bibliografia ¡ Engenharia de Software Ian Sommerville Pearson Education ¡ Engenharia

Engenharia de Software Bibliografia ¡ Engenharia de Software Ian Sommerville Pearson Education ¡ Engenharia de Software Roger Pressman 6ª edição Mc. Graw-Hill Artigos sobre Engenharia de Software

Engenharia de Software Conceitos Básicos ¡ Software: São programas de computadores, em suas diversas

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.

Engenharia de Software Conceitos básicos Características do Software Invisibilidade – Software é invisível e

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]

Engenharia de Software Conceitos Básicos O estabelecimento de objetivos gerais é suficiente para se

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] ¡

Engenharia de Software Conceitos Básicos Falhas de Software ¡ Ariane 5, 1996 ¡ O

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.

Engenharia de Software Conceitos Básicos Falhas de Software ¡ London Ambulance System - despacho

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.

Engenharia de Software Conceitos Básicos Falhas de Software ¡ Máquina de radioterapia com software

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.

Engenharia de Software Conceitos Básicos ¡ Bug do Milênio Datas no formato : dd/mm/aa

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.

Engenharia de Software Documento : "Testing for The Year 2000 Deadline" ¡ ¡ ¡

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.

Engenharia de Software Documento "Testing for The Year 2000 Deadline" Atividades : ¡ ¡

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;

Engenharia de Software Conceitos Básicos Atividades : ¡ ¡ ¡ Estabelecer planos de contingência

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

Engenharia de Software Conceitos Básicos

Engenharia de Software Conceitos Básicos

Engenharia de Software Conceitos Básicos: Evolução Os primeiros anos (1950 a início dos 60)

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 ¡

Engenharia de Software Conceitos Básicos Desafios para a Indústria de Software ¡ Sistemas legados

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.

Engenharia de Software É uma disciplina da engenharia dedicada a todos os aspectos da

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. ¡ Fonte: Ian Sommerville ¡

Engenharia de Software Engenharia ¡ Desenvolvimento de um produto Processo de desenvolvimento envolvendo análise,

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

Engenharia de Software Conceitos Básicos Objetivos da Engenharia de Software Aplicação de teoria, modelos,

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.

Engenharia de Software Conceitos Básicos Aspectos Históricos ¡ 1968 Conferência da OTAN, Garmisch ¡

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

Engenharia de Software Projeto Um projeto é um empreendimento temporário empreendido para alcançar um

Engenharia de Software Projeto Um projeto é um empreendimento temporário empreendido para alcançar um único conjunto de objetivos. (PMI, PMBOK Guide)

Engenharia de Software Projeto de TI ¡ ¡ ¡ Projetos de desenvolvimento de Softwares,

Engenharia de Software 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;

Engenharia de Software Projeto de TI ¡ ¡ ¡ Produtos de redes e telecomunicações

Engenharia de Software 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

Engenharia de Software Projeto Tripé das Restrições ¡ ¡ ¡ Escopo Tempo Custo

Engenharia de Software Projeto Tripé das Restrições ¡ ¡ ¡ Escopo Tempo Custo

Engenharia de Software Projeto Relatório do Standish Group 2003 vs, 1995 O excesso de

Engenharia de Software Projeto Relatório do Standish Group 2003 vs, 1995 O excesso de tempo diminuiu significamente a 63% comparado com 222% O excesso dos custos caiu para 45% comparado com 189% As características e funções requeridas foram até 67% comparadas com 61% 78. 000 projetos dos EUA foram brm sucedidos comparados com 28. 000 28% dos projetos de TI foram bem sucedidos comparados com 16 %

Engenharia de Software Projeto Porque as melhorias ? “As razões para o incremento dos

Engenharia de Software Projeto Porque as melhorias ? “As razões para o incremento dos projetos bem sucedidos variam. Primeiro, o custo médio de um projeto foi cortado pela metade. Melhores ferramentas foram criadas para monitorar e controlar o progresso, assim como também surgiram gerentes de projetos qualificados usando melhores processos de gerenciamento. O fato da existência de tais processos é significativo em si mesmo” The standish Group “CHAOS 2003” ¡

Engenharia de Software Projeto O que é gerenciamento do Projeto? ¡ Gerenciamento do Projeto

Engenharia de Software Projeto O que é gerenciamento do Projeto? ¡ Gerenciamento do Projeto é a aplicação do conhecimento, habilidades, ferramentas e técnicas para as atividades do projeto alcançarem os seus requisitos e satisfazer as necessidades e expectativas dos stakeholders desde a concepção inicial do projeto”

Engenharia de Software Projeto

Engenharia de Software Projeto

Engenharia de Software Projeto Ferramentas e Técnicas da GP As ferramentasé técnicas de GP

Engenharia de Software Projeto Ferramentas e Técnicas da GP As ferramentasé técnicas de GP ajudam aos gerentes do projeto e suas equipes em vários aspectos de GP : Algumas especificas incluem : Project Charter e WBS (escopo) Gráfico de Gantt, Gráfico PERT, Análise do caminho crítico(Tempo) Estimativas de Custo e Earned Value Analysis (badeline e orçamento)

Engenharia de Software Projeto Processo de Iniciação É o processo de autorizar formalmente um

Engenharia de Software Projeto Processo de Iniciação É o processo de autorizar formalmente um novo projeto ou de que um projeto já existente deva prosseguir para sua próxima fase. Escopo Inicialização

Engenharia de Software Projeto Termo de Referência - Project Charter ¡ ¡ Documento que

Engenharia de Software Projeto Termo de Referência - Project Charter ¡ ¡ Documento que reconhece e autoriza formalmente a existência de um projeto e fornece as diretrizes para o seu gerenciamento. Serve como um “contrato” entre o sponsor e o time do projeto. Deve ser uma fonte única de informação. Documento de planejamento tático

Engenharia de Software Projeto Planejamento Quais atividades devem ser realizadas. ¡ WBS – Work

Engenharia de Software Projeto Planejamento Quais atividades devem ser realizadas. ¡ WBS – Work Breakdown Structure ou EAP – Estrutura Analítica do Projeto “É uma representação do trabalho como atividade e esse trabalho leva a um resultado tangível. É um arranjo em uma estrutura hierárquica. Tem um objetivo ou resultado tangível, que é chamado de deliverable. ” PFIFFER(2005)

Engenharia de Software Conceitos Básicos Ciclo de Vida do Software O ciclo de vida

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.

Engenharia de Software Conceitos Básicos Fases do Ciclo de Vida de Sistemas Fase de

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 ¡

Engenharia de Software Conceitos Básicos Fases do Ciclo de Vida Fase de operação –

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 ¡

Engenharia de Software Conceitos Básicos ¡ Fases de Definição Deve-se analisar os requisitos, recursos

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.

Engenharia de Software Conceitos Básicos Fase de desenvolvimento Design de Software – Design conceitual,

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

Engenharia de Software Conceitos Básicos Fase de Operação Distribuição e entrega ¡ Instalação e

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 ¡

Engenharia de Software Conceitos Básicos ¡ FASE DE RETIRADA Evolução do software Sistemas legado

Engenharia de Software Conceitos Básicos ¡ FASE DE RETIRADA Evolução do software Sistemas legado Reengenharia de Software

Engenharia de Software Conceitos Processos de Software Conjunto coerente de atividades para especificar, projetar,

Engenharia de Software Conceitos Processos de Software Conjunto coerente de atividades para especificar, projetar, implementar e testar sistemas de software

Engenharia de Software Processos Objetivos : ¡ Apresentar os modelos de processo de software

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

Engenharia de Software Processos Modelos genéricos de modelos de processo de software ¡ O

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

Engenharia de Software Processos Fases do modelo Cascata ¡ Definição e análise de requisitos

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

Engenharia de Software Modelo Cascata[sommerville]

Engenharia de Software Modelo Cascata[sommerville]

Engenharia de Software Processos Problemas da fase do modelo cascata ¡ ¡ ¡ Particionamento

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

Engenharia de Software Processos Desenvolvimento Evolucionário ¡ Desenvolvimento exploratório O objetivo é trabalhar com

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 ¡

Engenharia de Software Evolucionários [summerville]

Engenharia de Software Evolucionários [summerville]

Engenharia de Software Desenvolvimento Evolucionário Problemas - Falta de visibilidade do processo - Os

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 ¡

Engenharia de Software Processos Desenvolvimento formal de sistemas ¡ Baseia-se na transformação de uma

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’ ¡

Engenharia de Software Desenvolvimento Formal

Engenharia de Software Desenvolvimento Formal

Engenharia de Software Desenvolvimento Formal Problemas Necessidade de habilidades especiais e treinamento para aplicar

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 ¡

Engenharia de Software Processos ¡ Desenvolvimento orientado ao reuso Baseia-se no reuso sistemático, onde

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

Engenharia de Software Desenvolvimento orientado ao reuso

Engenharia de Software Desenvolvimento orientado ao reuso