710 likes | 1.35k Views
Engenharia de Software. Profa. Denise Neves Profa.denise@hotmail.com. 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;
E N D
Engenharia de Software Profa. Denise Neves Profa.denise@hotmail.com
Engenharia de SoftwareEmenta • 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 SoftwareEmenta • 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 SoftwareEmenta • 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 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 SoftwareBibliografia • Engenharia de Software Ian Sommerville Pearson Education • Engenharia de SoftwareRoger Pressman6ª edição McGraw-Hill Artigos sobre Engenharia de Software
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.
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]
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]
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.
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.
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.
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.
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.
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;
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.).
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
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 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 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, 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 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.
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
Engenharia de Software Projeto Um projeto é um empreendimento temporário empreendido para alcançar um único conjunto de objetivos. (PMI,PMBOK Guide)
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;
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
Engenharia de SoftwareProjeto Tripé das Restrições • Escopo • Tempo • Custo
Engenharia de SoftwareProjeto 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 SoftwareProjeto 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 SoftwareProjeto 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 SoftwareProjeto 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 SoftwareProjeto 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. Inicialização Escopo
Engenharia de SoftwareProjeto 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 SoftwareProjeto • 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 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.
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
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
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.
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çã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 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
Engenharia de SoftwareConceitos Básicos • FASE DE RETIRADA Evolução do software • Sistemas legado • Reengenharia de Software
Engenharia de SoftwareConceitos Processos de Software Conjunto coerente de atividades para especificar, projetar, implementar e testar sistemas de software
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
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 é transformado formalmente em uma implementação • Desenvolvimento baseado em reuso O sistema é montado a partir de componentes existentes
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
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
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