Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Engenharia de Fundamentos de Engenharia de SoftwareSoftware Luiz CamargoLuiz Camargo Quem?Quem? Doutorando em Engenharia de Software pela UFPR. Possui mestrado em Ciência da Computação pela UFSC (2001), especialização em Sistemas de Informação e Software pela UFRGS (1998), especialização em Análise de Sistemas pelo Instituto Filadélfia de Londrina – PR (1995), graduação em Tecnologia em Processamento de Dados pelo Centro de Ensino Superior de Maringá-PR (1993). Atualmente é Professor (Graduação e Pós-Graduação (UTFPR e UNC ) no Centro Universitário Tupy (UniSociesc), Consultor adhoc da FAPESC (Fundação de Amparo à Pesquisa e Inovação de Santa Catarina) e MIC Manager – Microsoftt Inovation Center - possui experiência profissional (Cocamar, Usina de Açúcar e Álcool Santa Terezinha, American Entretenimento, Data Sul e Agencia DMG – co-fundador) em desenvolvimento, implantação e gestão de projetos de software. Mais de 14 anos de experiência na docência do ensino superior (Unipar – Universidade Paranaense e UnISociesc). Quais as perspectivas? Pós-Graduação ESW - Fundamentos de Engenharia de Software EmentaEmenta ● Agenda ● Software: produto ou serviço. ● Características e propriedades do software. ● Visão geral e princípios fundamentais da Engenharia de Software. ● Processos de Desenvolvimento de Software. ● RUP (Rational Unified Process). ● Tendências em Engenharia de Software. Pós-Graduação ESW - Fundamentos de Engenharia de Software Fundamentos de Engenharia de Fundamentos de Engenharia de SoftwareSoftware Pós-Graduação ESW - Fundamentos de Engenharia de Software IntroduçãoIntrodução ● O que é software? ● Há mais de 25 anos software era considerado programa de computador. ● O que era uma visão muito restritiva. IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PARA-1. DISPLAY "Hello, World!!". * STOP RUN. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é software?O que é software? ● Software é, além do programa, todos os dados de documentação e configuração associados, necessários para que o programa opere corretamente. ● Existem dois tipos básicos: – Produtos genéricos (de prateleira); e – Produtos sob encomenda (personalizados). Pós-Graduação ESW - Fundamentos de Engenharia de Software O softwareO software ● O software está presente em grande parte das nossas atividades do dia a dia. ● Está presente em todos os setores da economia; Primário Secundário Terciário Pós-Graduação ESW - Fundamentos de Engenharia de Software ● Computação ubíqua ● The Aware Home Research Initiative ● Interação homem-máquina ● Wii, PS Move, X-Box, Kinect ““Onipresente”Onipresente” Pós-Graduação ESW - Fundamentos de Engenharia de Software Algumas mudanças nos últimos Algumas mudanças nos últimos 25 anos25 anos ● Livros de engenharia de software publicados há mais de 20 anos, escritos em terminal “burro”, agora lidos em iPad, Kindle, HP slate, Galaxy tab, etc.; Pós-Graduação ESW - Fundamentos de Engenharia de Software ● Grande capacidade de criação de softwares complexos; ● Infra-estrutura nacional (energia, comunicação, …) com sistemas mais complexos e confiáveis; ● Surgimento de muitas tecnologias para sistemas de negócio (JEE, JME, .NET, EJB, C#, SOAP, BPEL4WS, CBSE, MDE, entre outras siglas...). Ficaram mais complexos...Ficaram mais complexos... Pós-Graduação ESW - Fundamentos de Engenharia de Software ● Tecnologias do filme “Avatar” ● Estímulos cerebrais refletidos em avatares remotos... ● Imagens 3D... Tentam representar a realidadeTentam representar a realidade Pós-Graduação ESW - Fundamentos de Engenharia de Software Estão na rede pública...Estão na rede pública... ● Sistemas para Web – Home bankings – Comércio eletrônico – Jogos on-line – etc. Pós-Graduação ESW - Fundamentos de Engenharia de Software Apóiam decisões...Apóiam decisões... ● ERP – Enterprise Resource Planning Pós-Graduação ESW - Fundamentos de Engenharia de Software E a engenharia de software E a engenharia de software mudou tanto assim? mudou tanto assim? ● Nem tanto..., segundo Sommerville (2008). ● Estudos IEEE software (2003) mostraram que 40% das empresas usam um modelo de processo criado há mais 20 anos (Cascata); ● Teste é, ainda, a técnica dominante de verificação de programas, apesar que inspeções tenham sido bastante usadas a partir da década de 70; ● As ferramentas CASE (Computer-Aided Software Engineering), apesar de usarem UML (Unified Modeling Language), ainda são essencialmente editores de diagramas com alguma geração de código. Pós-Graduação ESW - Fundamentos de Engenharia de Software Os clientes estão satisfeitos?Os clientes estão satisfeitos? ● Apesar dos métodos e técnicas atuais de ES terem capacidade de criar softwares mais complexos... ● Muitos projetos continuam atrasando, ultrapassando os orçamentos e produzindo softwares que não atendem as necessidades dos clientes. Pós-Graduação ESW - Fundamentos de Engenharia de Software Estimativas...Estimativas... ● Uma pesquisa no Reino Unido sobre um sistema para tribunais de justiça (pequenas causas) constatou: ● Custo estimado: 156mi libras; – Prazo estimado: 2001; ● Custo = 390mi libras; – Em 2004 ainda não estava todo operacional. ● Projeto Crédito Imobiliário da CAIXA. Pós-Graduação ESW - Fundamentos de Engenharia de Software Muitos projetos são canceladosMuitos projetos são cancelados Pós-Graduação ESW - Fundamentos de Engenharia de Software Outros problemasOutros problemas O caso Ariane 5O caso Ariane 5 ● Explodiu após 40 seg. ● Projeto de +$300 milhões ● Pagaria 100 programadores durante um século a $2,500.00/mês. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que causou o acidente?O que causou o acidente? ● Os computadores, principal e back-up, deram shut- down ao mesmo tempo depois de um runtime error; ● Devido a um programa que convertia um valor de ponto flutuante para um inteiro de 16 bits (recebeu como entrada um valor que estava fora da faixa permitida). Pós-Graduação ESW - Fundamentos de Engenharia de Software Ainda existe muito amadorismo Ainda existe muito amadorismo no desenvolvimento de software...no desenvolvimento de software... Pedido Entendido Projetado Entregue Pós-Graduação ESW - Fundamentos de Engenharia de Software Informações LocaisInformações Locais ● Quantas empresas de software existem na cidade? ● Quantas dessas empresas empregam “engenharia” de software na construção de seus produtos? ● Talvez muitas sigam alguns métodos... ● Será que de forma sistemática? ● Como compará-las? Pós-Graduação ESW - Fundamentos de Engenharia de Software Portanto...Portanto... ● Existe uma necessidade urgente de ensinar engenharia de software. [Sommerville, 2008] Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é Engenharia?O que é Engenharia? ● Desenvolvimento e aplicação sistemática de modelos de comprovada eficácia gerando soluções tecnológicas para Problemas da Humanidade. Pós-Graduação ESW - Fundamentos de Engenharia de Software Atividades Típicas de uma Atividades Típicas de uma Disciplina de EngenhariaDisciplina de Engenharia ● Uso de Materiais; ● Uso de Ferramentas; ● Criação de processos baseados em métodos; ● Projeto e implementação; ● Uso de produtos e serviços; ● Gestão de projetos ● Planejamento, organização, direção, controle, gestão de pessoal. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é Engenharia de O que é Engenharia de Software?Software?● É um ramo da engenharia cujo foco é o desenvolvimento dentro de custos adequados de sistemas de software de alta qualidade. [Sommerville] ● Engenharia de software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais. [Pressman apud Fritz Bauer] ● Aplicação de uma abordagem sistemática, disciplinada e quantificável, para o desenvolvimento, operação e manutenção de software. [IEEE] Pós-Graduação ESW - Fundamentos de Engenharia de Software HistóricoHistórico ● O termo foi inicialmente proposto na década de 1960 e utilizado oficialmente em 1968 na Conferência sobre Engenharia de Software da OTAN com a participação da ACM - Association for Computing Machinery. Pós-Graduação ESW - Fundamentos de Engenharia de Software HistóricoHistórico ● Sua criação surgiu numa tentativa de contornar a chamada “crise do software” e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. ● Problemas tratados desde a primeira vez que o termo Engenharia de Software foi usado na OTAN em 1968: ● Cronogramas não observados; ● Projetos com tantas dificuldades que são abandonados; ● Módulos que não operam corretamente quando combinados; ● Programas que não fazem exatamente o que era esperado; ● Programas tão difíceis de usar que são descartados; ● Programas que simplesmente param de funcionar. Pós-Graduação ESW - Fundamentos de Engenharia de Software HistóricoHistórico ● Algumas conclusões: ● Houve muito avanço desde 1968; ● Hoje entendemos melhor as atividades envolvidas no desenvolvimento de software; ● Novos métodos, notações e ferramentas reduzem o esforço de produção de software; ● Não existe uma abordagem “ideal” de engenharia de software; ● Diante da diversidade de sistemas é necessário uma diversidade de abordagens de desenvolvimento. ● Enfim, sem softwares complexos não teríamos explorado o espaço, não teríamos a Internet, etc. Pós-Graduação ESW - Fundamentos de Engenharia de Software ● Nos últimos anos, os avanços mais importantes: ● UML (Unified Modeling Language) como padrão para descrição de sistemas orientados a objetos; ● Métodos Ágeis (XP, Scrum, Lean, etc.); ● RUP (IBM Rational Unified Process); ● Modelos de Maturidade, como CMMI e MPSBR. Principais Avanços na ESPrincipais Avanços na ES Pós-Graduação ESW - Fundamentos de Engenharia de Software ● 691 artigos das 7 melhores Revistas e 7 melhores conferências de Software e Engenharia de Software. ● 77% dos artigos em revistas e conferências focam 20% em Engenharia de Software: ● Teste e Depuração (D.2.5); ● Verificação de software/programa (D.2.4); ● Gestão (D.2.9). [CAI e CARD 2008] Quais são os assuntos mais Quais são os assuntos mais pesquisados atualmente em ES?pesquisados atualmente em ES? Pós-Graduação ESW - Fundamentos de Engenharia de Software ACM computing classification ACM computing classification system: Software Engineeringsystem: Software Engineering ● D.2.0 General ● D.2.1 Requirements/Specifications ● D.2.2 Design Tools and Techniques ● D.2.3 Coding Tools and Techniques ● D.2.4 Software/Program Verification ● D.2.5 Testing and Debugging ● D.2.6 Programming Environments ● D.2.7 Distribution, Maintenance, and Enhancement ● D.2.8 Metrics ● D.2.9 Management ● D.2.10 Design ● D.2.11 Software Architectures ● D.2.12 Interoperability ● D.2.13 Reusable software ● D.2.m Miscellaneous Pós-Graduação ESW - Fundamentos de Engenharia de Software 691 papers 691 papers Pós-Graduação ESW - Fundamentos de Engenharia de Software Ênfase do encontroÊnfase do encontro 1. Introdução à engenharia de software e modelos de processo 2. Planejamento - gerência de projetos 3. Métodos orientados a objeto - requisitos de software 4. Métodos orientados a objeto - análise e projeto 5. Verificação e Validação de software 6. Manutenção de software 7. Qualidade de software Pós-Graduação ESW - Fundamentos de Engenharia de Software Introdução a engenharia de Introdução a engenharia de software e modelos de processosoftware e modelos de processo Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é Engenharia de O que é Engenharia de Software?Software? ● Engenharia de Software é uma tecnologia em camadas, onde a camada que dá apoio a engenharia de software é o Foco na Qualidade. A camada de Processos é o fundamento da engenharia de software, o que mantém unidas as camadas de tecnologia e permite o desenvolvimento racional de software. Os Métodos fornecem a Técnica de como fazer para construir software. E as Ferramentas fornecem apoio automatizado ou semi automatizado para o processo e para os métodos. Uma Tecnologia em Camadas. [Pressman] Pós-Graduação ESW - Fundamentos de Engenharia de Software QualidadeQualidade ● A qualidade é relativa. O que é qualidade para uma pessoa pode ser a falta de qualidade para outra. G. Weinberg. ● A idéia de qualidade é aparentemente intuitiva, porém quando examinado mais longamente, o conceito se revela complexo. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é qualidade?O que é qualidade? ● É uma área de conhecimento da Engenharia de Software que objetiva garantir a qualidade do software através da definição e normatização de processos de desenvolvimento [Pressman]. ● É o grau em que um conjunto de características inerentes a um produto, processo ou sistema cumpre os requisitos inicialmente estipulados para estes [ISO 9000 - 2000]. Pós-Graduação ESW - Fundamentos de Engenharia de Software Garantia da QualidadeGarantia da Qualidade ● O propósito da área de garantia da qualidade é assegurar que os objetivos planejados no início do projeto serão cumpridos. ● Através de: ● Atividades de V&V (verificação e validação); ● Auditorias. Pós-Graduação ESW - Fundamentos de Engenharia de Software ProcessoProcesso ● No latim procedere é verbo que indica a ação de avançar, ir para frente (pro+cedere). ● É conjunto sequencial e peculiar de ações que objetivam atingir uma meta. É usado para criar, inventar, projetar, transformar, produzir, controlar, manter e usar produtos ou sistemas. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é processo de software?O que é processo de software? ● Processo de software, ou processo de engenharia de software, é uma sequência coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. ● Estas práticas englobam as atividades de especificação, projeto, implementação, testes; ● Caracteriza-se pela interação de ferramentas, pessoas e métodos. Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo de softwareProcesso de software ● Segundo Sommerville, é um conjunto de atividades e resultados associados que produz um produto de software. ● Existem 4 atividades fundamentais que são comuns a todos os processos de software; ● Especificação de software; ● Desenvolvimento de software; ● Validação de software; ● Evolução de software. Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo de softwareProcesso de software ● Diferentes tipos de sistemas necessitam de diferentes processos de desenvolvimento. ● Por exemplo: ● Um software de tempo real de aeronave deve ser completamente especificado antes do início do desenvolvimento; ● Um sistema de comércio eletrônico a especificação e o programa são, geralmente, desenvolvidos em conjunto. Pós-Graduação ESW - Fundamentos de Engenharia de Software Ciclos de vida de Ciclos de vida de desenvolvimentode softwaredesenvolvimento de software ● Cascata Pós-Graduação ESW - Fundamentos de Engenharia de Software Ciclos de vida de Ciclos de vida de desenvolvimento de softwaredesenvolvimento de software ● Prototipação Pós-Graduação ESW - Fundamentos de Engenharia de Software Ciclos de vida de Ciclos de vida de desenvolvimento de softwaredesenvolvimento de software ● Iterativo Pós-Graduação ESW - Fundamentos de Engenharia de Software CBSE – Component Based CBSE – Component Based Software EngineeringSoftware Engineering Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo UnificadoProcesso Unificado Pós-Graduação ESW - Fundamentos de Engenharia de Software Como melhorar os processos de Como melhorar os processos de software?software? Qualidade do produto de software Qualidade do processo de desenvolvimento de software Modelos de maturidade (CMMI/MPS.BR) É obtida por meio de É alcançada mais facilmente se baseada em Pós-Graduação ESW - Fundamentos de Engenharia de Software Modelos de Melhoria de Modelos de Melhoria de ProcessosProcessos ● É uma coleção de elementos estruturados que descrevem as características e melhores práticas de processos efetivos; ● Auxilia na definição de objetivos e prioridades do esforço de melhoria de processos; ● Fornece um guia para a melhoria de processos organizacionais. Pós-Graduação ESW - Fundamentos de Engenharia de Software Modelos de melhoria de Modelos de melhoria de ProcessosProcessos ● CMMI - Capability Maturity Model Integration ● http://www.sei.cmu.edu/cmmi/index.cfm ● MPS.BR - Melhoria de Processo do Software Brasileiro ● http://www.softex.br/mpsbr Pós-Graduação ESW - Fundamentos de Engenharia de Software MR-MPS e CMMIMR-MPS e CMMI Em Otimização Gerenciado Quantitativamente A B DefinidoC Largamente DefinidoD Parcialmente DefinidoE GerenciadoF Parcialmente Gerenciado G 2 3 4 5 MR-MPSCMMI Gerenciado Definido Gerenciado Quantitativamente Otimizado 1Iniciado Pós-Graduação ESW - Fundamentos de Engenharia de Software Modelo de maturidade de Modelo de maturidade de processosprocessos Fonte: [SIQUEIRA, 2010] Pós-Graduação ESW - Fundamentos de Engenharia de Software ● CMMI Níveis e áreas de processo Pós-Graduação ESW - Fundamentos de Engenharia de Software Maturidade dos construtores de Maturidade dos construtores de softwaresoftware Pós-Graduação ESW - Fundamentos de Engenharia de Software Maturidade dos construtores de Maturidade dos construtores de softwaresoftware Fonte:http://www.sei.cmu.edu/cmmi/why/profiles/upload/2012MarV3CMMI.pdf Pós-Graduação ESW - Fundamentos de Engenharia de Software CMMI: Números – Mar CMMI: Números – Mar 20132013 Pós-Graduação ESW - Fundamentos de Engenharia de Software CMMI: Números – Mar CMMI: Números – Mar 20132013 Pós-Graduação ESW - Fundamentos de Engenharia de Software Por nível de Por nível de maturidade/categoriamaturidade/categoria Pós-Graduação ESW - Fundamentos de Engenharia de Software Avaliações de MaturidadeAvaliações de Maturidade ● Para ver as organizações avaliadas e seus níveis de maturidade: ● http://sas.sei.cmu.edu/pars/pars.aspx Pós-Graduação ESW - Fundamentos de Engenharia de Software ● MPS.BR – Níveis e áreas de processo Pós-Graduação ESW - Fundamentos de Engenharia de Software Métodos ágeisMétodos ágeis ● Não são as espécies mais fortes que sobrevivem, nem as mais inteligentes, mas aquelas mais sensíveis a mudanças. C. Darwin Pós-Graduação ESW - Fundamentos de Engenharia de Software Métodos ÁgeisMétodos Ágeis ● Tornaram-se populares em 2001, quando 17 especialistas em processos estabeleceram princípios comuns, criaram a Aliança Ágil e estabeleceram o “Manifesto Ágil”. [Beck, et al., 2001]. Pós-Graduação ESW - Fundamentos de Engenharia de Software Manifesto ÁgilManifesto Ágil (http://www.agilemanifesto.org/)(http://www.agilemanifesto.org/) ● 4 Valores Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas Indivíduos e interações - mais que processos e ferramentas; Software em funcionamento - mais que documentação abrangente Colaboração com o cliente - mais que negociação de contratos Responder a mudanças Pós-Graduação ESW - Fundamentos de Engenharia de Software 12 Princípios12 Princípios 1. Softwares funcionais são entregues frequentemente (semanas, ao invés de meses); 2. Softwares funcionais são a principal medida de progresso do projeto; 3. Até mesmo mudanças tardias de escopo no projeto são bem-vindas; 4. Cooperação constante entre pessoas que entendem do ‘negócio’ e desenvolvedores; 5. Projetos surgem através de indivíduos motivados, e que deve existir uma relação de confiança; 6. Design do software deve prezar pela excelência técnica; 7. Simplicidade; 8. Rápida adaptação às mudanças; 9. Indivíduos e interações mais do que processos e ferramentas; 10.Software funcional mais do que documentação extensa; 11.Colaboração com clientes mais do que negociação de contratos; 12.Responder a mudanças mais do que seguir um plano. Pós-Graduação ESW - Fundamentos de Engenharia de Software XP – eXP – eXXtreme treme PProgrammingrogramming ● Criado em 1996, por Kent Bech, no Departamento de Computação da montadora de carros Daimler Crysler. ● O Extreme Programming é uma disciplina de desenvolvimento de software baseada nos valores simplicidade, comunicação, feedback e coragem. Ela funciona através da união da equipe, uso de práticas simples, feedback suficiente para permitir que a equipe saiba onde está e ajustes das práticas para cada situação. ● http://www.extremeprogramming.org/ Pós-Graduação ESW - Fundamentos de Engenharia de Software Valores do XPValores do XP ● Comunicação ● Conversas pessoais entre clientes e desenvolvedores; ● Simplicidade ● Código enxuto que não deve possuir funcionalidades desnecessárias; ● FeedBack ● Ter informações constantes sobre o código (testes unitários) e clientes (avaliação); ● Coragem ● Para implantar os três valores anteriores. Por exemplo, no feedback disponibilizar constantemente código para avaliação do cliente pode conduzir a mudanças constantes. Pós-Graduação ESW - Fundamentos de Engenharia de Software Ciclo de vida do XPCiclo de vida do XP Pós-Graduação ESW - Fundamentos de Engenharia de Software Práticas do XPPráticas do XP Pós-Graduação ESW - Fundamentos de Engenharia de Software XP – pair programmingXP – pair programming Pós-Graduação ESW - Fundamentos de Engenharia de Software Problemas do XPProblemas do XP ● [Silva] ● Sentimento de processo caótico “Codifica-remenda”; ● Falta de uso de boas práticas de diagramas na análise; ● Informalidade no levantamento de requisitos; ● [Beck] ● Resistência a programação em pares; ● Equipes geograficamente separadas. Origins of Lean Software Origins of Lean Software DevelopmentDevelopment ● Lean - desenvolvido na Toyota ● Original author : Taiichi Ohno ● Inventor of Just-In-Time manufacturing ● “Costs do not exist to be calculated. Costs exist to be reduced.” ● Taiichi Ohno ● Implementation at Toyota ● Lean vs Batch and Queue Pós-Graduação ESW - Fundamentos de Engenharia de Software Principios Lean SoftwarePrincipios Lean Software 1. Eliminar todos os desperdícios que não agregam valor ao negócio; 2. Aplificar a aprendizagem; 3. Retardar as decisões do projeto o máximo possível; 4. Capacitea equipe; 5. Entregas rápidas (cuidado! Velocidade x cronograma); 6. Manter a integridade (conceitual e percebida); 7. Veja o todo. Pós-Graduação ESW - Fundamentos de Engenharia de Software Planejamento - gerenciamento Planejamento - gerenciamento de projetosde projetos Pós-Graduação ESW - Fundamentos de Engenharia de Software Gestão de ProjetosGestão de Projetos “Visitei dezenas de instalações comerciais, tanto boas como ruins, e observei um grande número de gerentes de processamento de dados, tanto bons quanto ruins. Frequentemente, observei como esses gerentes lutavam inutilmente com projetos que constituíam um verdadeiro pesadelo, espremidos por prazos de entrega inexequíveis, ou entregavam sistemas que irritavam seus usuários e prosseguiam devorando enormes parcelas de tempo de manutenção”. (PRESSMAN, 2002 apud Meiler Page-Jones) Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é gerenciamento de O que é gerenciamento de projetos?projetos? ● É a arte de confrontar os objetivos da concorrência, gerenciar riscos e superar obstáculos para liberar com êxito um produto que atenda às necessidades dos clientes e de seus usuários (RUP, 2008). Pós-Graduação ESW - Fundamentos de Engenharia de Software Gerenciamento de ProjetosGerenciamento de Projetos ● É a aplicação de conhecimentos, habilidades, ferramentas e técnicas com o objetivo de satisfazer os requisitos do projeto. ● Gerenciar um projeto envolve ● Identificar as necessidades; ● Estabelecer os objetivos; ● Balancear qualidade, escopo, prazo e custo; ● Adaptar o planejamento para atender aos stakeholders; ● Gerenciar interesses e interessados, com necessidades e expectativas diferentes. [PMBoK, 2008] Pós-Graduação ESW - Fundamentos de Engenharia de Software Ciclo de vida de gestão, PMBoKCiclo de vida de gestão, PMBoK ● 5 grupos de processos ● 9 áreas de conhecimento Pós-Graduação ESW - Fundamentos de Engenharia de Software Framework ScrumFramework Scrum Pós-Graduação ESW - Fundamentos de Engenharia de Software Kaban “cartão”/”sinalização”Kaban “cartão”/”sinalização” Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é projeto?O que é projeto? ● É um empreendimento temporário com o objetivo de criar um produto ou serviço de resultado único. [PMBoK, 2008] ● TEMPORÁRIO significa que cada projeto tem um começo e um fim bem definidos . ● ÚNICO significa que o produto ou serviço produzido é de alguma forma diferente de todos os outros produtos ou serviços semelhantes. Pós-Graduação ESW - Fundamentos de Engenharia de Software Métodos para estimativa de Métodos para estimativa de projetos de softwareprojetos de software ● LOC – Lines of code ● UCP – Use Case Point ● APF – Análise de Pontos de Função Pós-Graduação ESW - Fundamentos de Engenharia de Software ● LOC – Lines of code ● É uma das medidas mais antigas para determinação do tamanho, esforço e, consequentemente, produtividade no desenvolvimento de software. LOCLOC Pós-Graduação ESW - Fundamentos de Engenharia de Software ● UCP – Use Case Point ● Técnica proposta em 1993 por Gustav Karner para medir o tamanho de projetos de software orientados a objeto; ● Metodo_UCP.pdf UCPUCP Pós-Graduação ESW - Fundamentos de Engenharia de Software ● APF – Análise de Pontos de Função ● A mais utilizada para mensuração do tamanho de projetos de desenvolvimento e melhoria de software; ● Criada no início da década de 70 por Alan Albrecht na IBM; ● Consiste na determinação do tamanho funcional do sistema através da visão do usuário do mesmo, independente da tecnologia utilizada. ● Metodo_APF_Hazan_2001.pdf APFAPF Pós-Graduação ESW - Fundamentos de Engenharia de Software Motivos para medir o tamanho Motivos para medir o tamanho dos softwaresdos softwares ● Determinar esforço, recursos, duração e custo do desenvolvimento; ● Gerenciar contratos de software; ● Indicar a qualidade do produto; ● Formar uma baseline para estimativas; ● Avaliar a produtividade do processo. Pós-Graduação ESW - Fundamentos de Engenharia de Software Como estimar custo e prazo?Como estimar custo e prazo? ● O método de análise por pontos de função (APF) ● A APF é um método padrão para a medição de tamanho de software, com base na funcionalidade a ser implementada, sob o ponto de vista do usuário. ● [HAZAN 2001] http://www.scribd.com/doc/18175946/Analise-de-Pontos-de-Funcao Pós-Graduação ESW - Fundamentos de Engenharia de Software APFAPF Pós-Graduação ESW - Fundamentos de Engenharia de Software APFAPF Pós-Graduação ESW - Fundamentos de Engenharia de Software Exemplo: sistema webExemplo: sistema web Pós-Graduação ESW - Fundamentos de Engenharia de Software Atividade 1Atividade 1 Estimar esforço, prazo, custo e faturamentoEstimar esforço, prazo, custo e faturamento Realizar em equipe de até 3 estudantes – avaliação in loco ● Considerando: ● Produtividade média mundial Java = 17h/PF ● Custo médio da hora/homem = R$25,00 ● Produtividade real da equipe Java = 20h/PF ● Custo fixo = 25% ● ROI esperado = 12% ● Estimar ● Esforço total em horas, prazo em dias, custo e valor de venda em reais. Pós-Graduação ESW - Fundamentos de Engenharia de Software Planejamento – (atividade I)Planejamento – (atividade I) ● Distribuir o esforço pelas fases do processo (considerar o RUP) Pós-Graduação ESW - Fundamentos de Engenharia de Software Ferramentas para gestão de Ferramentas para gestão de projetosprojetos ● OpenProject ● http://openproj.org/ ● APF plus ● http://www.ivanmecenas.ecn.br/apf.htm Pós-Graduação ESW - Fundamentos de Engenharia de Software Métodos orientados a objeto - Métodos orientados a objeto - Requisitos de softwareRequisitos de software Pós-Graduação ESW - Fundamentos de Engenharia de Software Introdução à modelagem Introdução à modelagem orientada a objetos com UMLorientada a objetos com UML ● Requisitos ● Modelo de casos de uso ● Análise e Design ● Modelo de análise ● Modelo de design ● Modelo da arquitetura ● Modelo de implementação ● Modelo de implantação Pós-Graduação ESW - Fundamentos de Engenharia de Software Introdução à UML – Unified Introdução à UML – Unified Modeling LanguageModeling Language ● O que é modelagem? ● Uma técnica de engenharia aprovada e bem aceita que tem o objetivo de permitir um maior entendimento do sistema e para comunicar esse entendimento a outras pessoas. ● O artefato oriundo desta técnica é o modelo, que resumidamente pode ser definido como “uma simplificação da realidade”. ● Quais os objetivos da modelagem? ● Visualizar o sistema como é ou como deverá ser; ● Especificar a estrutura ou o comportamento do sistema; ● Proporcionar um guia para a construção do sistema; ● Documentar as decisões e soluções. Pós-Graduação ESW - Fundamentos de Engenharia de Software UML – Unified Modeling UML – Unified Modeling LanguageLanguage ● Autores: ● Grady Booch (Booch method); ● James Rumbaugh (OMT-object modeling technique); e ● Ivar Jacobson (OOSE-object oriented software engineering). ● Em 1997 a UML foi aprovada como padrão pelo Object Management Group (OMG). ● É uma linguagem visual para modelar sistemas orientados a objetos. Pós-Graduação ESW - Fundamentos de Engenharia de Software O que é requisito de software?O que é requisito de software? ● Um requisito é definido como "uma condição ou uma capacidade com a qual o software deve estar de acordo". ● A IEEE [IEEE-Std-830-1998] define algumas características para uma especificação de qualidade: ● Correção – requisito a ser construído; ● Precisão – única interpretação; ● Completude– completo em relação a funcionalidade e restrições; ● Consistência – consistente com outros requisitos; ● Priorização – de acordo com a importância (essencial e opcional); ● Verificabilidade – não deve ser ambíguo e qualitativos; ● Modificabilidade – estruturado e sem redundância; ● Rastreabilidade – deve permitir a localização da origem e permitir mudança. Pós-Graduação ESW - Fundamentos de Engenharia de Software Técnicas de levantamento de Técnicas de levantamento de Requisitos de SoftwareRequisitos de Software ● Entrevistas ● A técnica mais comum. AS perguntas devem ser objetivas e quantitativas; ● Etnografia ● Observação. Quando os usuários não querem ou não têm tempo; ● Questionários ● Quando não é possível nenhuma das acima; ● Pode ser combinado com entrevista para esclarecimento de dúvidas; ● Cenários ● Casos de uso ou histórias do XP. Pós-Graduação ESW - Fundamentos de Engenharia de Software Diagrama de caso de usoDiagrama de caso de uso ● Ator: Alguém ou algo fora do sistema que interage com ele. ● Caso de uso: Especificação de uma seqüência de ações que um sistema pode executar, interagindo com atores do sistema; ● Pacote de casos de uso: Um pacote de casos de uso é um conjunto de casos de uso, atores, relacionamentos, diagramas e outros pacotes; ele é usado para estruturar o modelo de casos de uso dividindo-o em partes menores. Pós-Graduação ESW - Fundamentos de Engenharia de Software Fluxo de trabalho de Requisitos Fluxo de trabalho de Requisitos [RUP, 2008][RUP, 2008] Pós-Graduação ESW - Fundamentos de Engenharia de Software Ferramentas para Gestão de Ferramentas para Gestão de RequisitosRequisitos http://easyweb.easynet.co.uk/~iany/other/vendors.htm#Contour Comerciais ● IBM Rational Requisite Pro ● Borland CaliberRM ● Free ● TigerPro ● TRUEReq Pós-Graduação ESW - Fundamentos de Engenharia de Software Métodos Orientados a Objeto - Métodos Orientados a Objeto - Análise e DesignAnálise e Design Pós-Graduação ESW - Fundamentos de Engenharia de Software Análise e DesignAnálise e Design ● Finalidades da disciplina Análise e Design: ● Transformar os requisitos em um design do sistema a ser criado; ● Desenvolver uma arquitetura sofisticada para o sistema; ● Adaptar o design para que corresponda ao ambiente de implementação, projetando-o para fins de desempenho. ● Qual o propósito da análise? ● Para ajudar no entendimento do negócio; ● É independente de tecnologia ● Qual o propósito do design? ● Dar solução ao problema ou necessidade. ● É dependente de tecnologia e Pós-Graduação ESW - Fundamentos de Engenharia de Software Técnicas de modelagem OOTécnicas de modelagem OO Diagrama de classes e sequenciaDiagrama de classes e sequencia Pós-Graduação ESW - Fundamentos de Engenharia de Software Fluxo de trabalho A&D do RUPFluxo de trabalho A&D do RUP Pós-Graduação ESW - Fundamentos de Engenharia de Software Ferramentas para Análise e Ferramentas para Análise e DesignDesign ● Comerciais ● IBM Rational Rose ● Astah-professional ● Free ● Astah-Community Pós-Graduação ESW - Fundamentos de Engenharia de Software Atividade 2 - ModelagemAtividade 2 - Modelagem Realizar em equipe de até 3 estudantes – avaliação in loco ● Modelar o requisito abaixo ● Um banco trabalha com três tipos de contas: conta corrente comum; conta corrente com limite; conta poupança. Em todos os casos é necessário guardar o número da conta, o nome do correntista e o saldo. Para a conta poupança é necessário guardar o dia do aniversário da conta (quando são creditados os juros). Já para a conta com limite é necessário guardar o valor do limite. As contas também armazenam uma lista de transações. Uma transação é definida por uma data, valor da transação e descrição. Se o valor for negativo, a transação é considerada um débito (crédito caso contrário). As operações possíveis são: depósito, retirada e impressão de extrato. Essas operações devem ser definidas numa classe denominada Conta. A operação de depósito é igual nos três tipos de conta. A retirada só é diferente na conta com limite, pois esta admite que o saldo fique negativo até o limite estabelecido. Finalmente o extrato é diferente para as três: na conta comum exibe o número da conta, nome do cliente, transações e o saldo; na conta limite imprime também o valor do limite; na conta poupança imprime também o dia do aniversário. Implemente um modelo de casos de Uso e um modelo de hierarquia de classes das contas explorando polimorfismo. Pós-Graduação ESW - Fundamentos de Engenharia de Software Verificação e Validação de Verificação e Validação de SoftwareSoftware VV&T VV&T Pós-Graduação ESW - Fundamentos de Engenharia de Software Verificação e ValidaçãoVerificação e Validação (Sommerville, 2008)(Sommerville, 2008) ● Ver&Val é a denominação dada as atividades para verificar e analisar se o software em desenvolvimento está de acordo com sua especificação e se atende às funcionalidades esperadas pelo cliente e seus usuários. ● Verificação ● Estamos construindo o produto corretamente? ● Validação ● Estamos construindo o produto certo? (Sommerville, 2007 apud Boehm, 1979) Pós-Graduação ESW - Fundamentos de Engenharia de Software Ver&ValVer&Val ● O objetivo principal é estabelecer confiança de que o software está adequado a seu propósito. ● O nível de confiabilidade depende do propósito do software e das expectativas dos usuários: ● Função do software: quão critico é? ● Expectativas do usuário: quão tolerante a defeitos? ● Ambiente de mercado: quão concorrente é o mercado? Pós-Graduação ESW - Fundamentos de Engenharia de Software Inspeção e TesteInspeção e Teste ● Dentro do processo de V&V, há duas abordagens complementares para a verificação e análise do software: ● Inspeção de software ou revisões por pares; – Verificação estática ● Testes de software – Verificação dinâmica Pós-Graduação ESW - Fundamentos de Engenharia de Software V&V dinâmica e estáticaV&V dinâmica e estática Pós-Graduação ESW - Fundamentos de Engenharia de Software V&V dinâmica - TesteV&V dinâmica - Teste ● Teste será sempre a técnica principal de verificação e validação de software, apesar da inspeção ser usada amplamente, atualmente. ● Há dois tipos distintos de testes (não excludentes): ● Teste de validação ● Teste de defeitos Pós-Graduação ESW - Fundamentos de Engenharia de Software Finalidades dos processos de Finalidades dos processos de V&V e DebuggingV&V e Debugging ● V&V - são dedicados a verificar a existência de defeitos no software; ● Debugging - são dedicados a localizar e corrigir esses defeitos. Pós-Graduação ESW - Fundamentos de Engenharia de Software DebuggingDebugging Pós-Graduação ESW - Fundamentos de Engenharia de Software O modelo V de desenvolvimentoO modelo V de desenvolvimento ● É uma instância do modelo cascata genérico; ● Mostra que o plano, a especificação e o projeto podem ser feitos em paralelo ao desenvolvimento. Pós-Graduação ESW - Fundamentos de Engenharia de Software Estrutura de um plano de testesEstrutura de um plano de testes ● Processo de teste ● Fases do processo a ser executado ● Rastreabilidade de teste ● Cobertura dos requisitos ● Itens a serem testados ● Os produtos a serem testados ● Cronograma de testes ● Alocação de recursos ● Procedimento de registros de teste ● Controle do ciclo de vida do defeito ● Ambiente de teste ● Requisitos de hardware e software Pós-Graduação ESW - Fundamentos de Engenharia de Software V&V estática - InspeçãoV&V estática - Inspeção ● Inspeção de software é o processo de V&V estático, no qual o software é revisto para se encontrar erros,omissões e anomalias. ● Geralmente focam código, porém qualquer representação do software: requisitos, modelo de projeto, planos, etc. ● Segundo Fagan (1986), mais de 60% de erros em um software podem ser detectados por inspeção informal de programa. ● Mills, et al. (1987), sugerem que uma abordagem mais formal pode encontrar até 90% dos erros de um programa. Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo de inspeçãoProcesso de inspeção ● Ainda, gerentes de projetos relutam em usar as inspeções por considerarem custoso e duvidam da eficiência; ● Organizar as inspeções leva tempo, porém não dúvida da sua eficiência. Pós-Graduação ESW - Fundamentos de Engenharia de Software Check-list análise estáticaCheck-list análise estática ● Falha de dados ● Todas as variáveis foram inicializadas? ● O limite dos arrays é igual a tamanho -1? ● … ● Defeitos de interface ● Os parâmetros estão na ordem correta? ● ... Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo de inspeçãoProcesso de inspeção ● Nota: Tecnica_Inspecao.pdf ● Artigo: Artigo_padraoIEEE1028_revisoes_1988.pdf Pós-Graduação ESW - Fundamentos de Engenharia de Software Analise estática automatizadaAnalise estática automatizada ● Inspeções são uma forma de análise estática ● O código é analisado sem ser executado. ● Analisadores estáticos são ferramentas de software que varrem o código fonte e detectam possíveis defeitos e anomalias. ● Ferramentas: ● Lint – analisador estático para C ● FindBugs – analisador estático para Java Pós-Graduação ESW - Fundamentos de Engenharia de Software Teste de softwareTeste de software ● Teste é um processo realizado pelo testador de software que permeia outros processos da Engenharia de Software, e envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito. ● O objetivo é encontrar defeitos nos produtos, para que estes possam ser corrigidos pela equipe de programadores, antes da entrega final. Pós-Graduação ESW - Fundamentos de Engenharia de Software Teste de softwareTeste de software ● Teste é um processo de execução de programas com a finalidade de encontrar erros; ● Um bom caso de teste é aquele que tem alta probabilidade de encontrar erros; ● Um teste bem sucedido é aquele que descobre um erro ainda não descoberto. Pós-Graduação ESW - Fundamentos de Engenharia de Software Metas do testeMetas do teste ● Demonstrar ao desenvolvedor e ao cliente que o software atende aos requisitos; ● Teste de validação ● Descobrir falhas ou defeitos no software que apresenta comportamento incorreto, não desejável ou em não conformidade com sua especificação. ● Teste de defeitos Pós-Graduação ESW - Fundamentos de Engenharia de Software Modelo geral de testes de Modelo geral de testes de softwaresoftware ● Fases ● Processo geral Pós-Graduação ESW - Fundamentos de Engenharia de Software Técnicas de TesteTécnicas de Teste ● Caixa branca ● Teste estrutural ● Caixa preta ● Teste funcional Pós-Graduação ESW - Fundamentos de Engenharia de Software Fases de testeFases de teste ● Teste unitário ● Teste de integração ● Teste de sistema ● Teste de aceitação ● Outros ● Teste de operação ● Teste de regressão Pós-Graduação ESW - Fundamentos de Engenharia de Software Fluxo de trabalho de testeFluxo de trabalho de teste [RUP, 2008][RUP, 2008] Pós-Graduação ESW - Fundamentos de Engenharia de Software Considerações finais sobre V&VConsiderações finais sobre V&V ● Bartié – origem dos defeitos ● 56% em requisitos; 27% A&D; e 7% Implementação ● Myers – regra 10 ● A propagação do defeito aumenta em 10 vezes o custo da correção. Verificação e Validação Pós-Graduação ESW - Fundamentos de Engenharia de Software Técnica para criação de casos de testeTécnica para criação de casos de teste ● Caso de uso Pós-Graduação ESW - Fundamentos de Engenharia de Software CenáriosCenários ● Identificar cenários a partir dos fluxos do caso de uso. Pós-Graduação ESW - Fundamentos de Engenharia de Software CenáriosCenários ● Identificar casos de teste para cada cenário ● Testes positivos e negativos Pós-Graduação ESW - Fundamentos de Engenharia de Software Ferramentas de V&VFerramentas de V&V ● IBM Rational Robot (teste funcional e de carga) ● BadBoy (teste de funcionalidade, web) ● Jmeter (teste de desempenho, Java) ● FindBugs (inspeção de código, Java) ● Lint (inspeção de código, C) ● Mantis (controle de defeitos) Pós-Graduação ESW - Fundamentos de Engenharia de Software Evolução de Evolução de softwaresoftware Pós-Graduação ESW - Fundamentos de Engenharia de Software Evolução de SoftwareEvolução de Software ● Depois de os sistemas terem sido implantados, eles devem inevitavelmente mudar para permanecerem úteis. ● Influências após colocado em uso: ● Os negócios mudam; ● Novos requisitos surgem e os existentes mudam; ● Novos erros são descobertos; ● As tecnologias mudam; ● etc. Pós-Graduação ESW - Fundamentos de Engenharia de Software Evolução de softwareEvolução de software ● Segundo Erlikh (2000) 90% dos custos de software estão na evolução. ● Após a implantação pode-se pensar na engenharia de software como um processo em espiral. ● Esse modelo é normalmente utilizado quando a equipe de desenvolvimento é a mesma que vai evoluir o software. Pós-Graduação ESW - Fundamentos de Engenharia de Software A dinâmica de evolução de A dinâmica de evolução de softwaresoftware ● Leis de Lehman (5) ● Mudança contínua ● Complexidade crescente ● Evolução de programa de grande porte ● Estabilidade organizacional ● Conservação de familiaridade ● Crescimento contínuo ● Qualidade em declínio ● Sistema de feedback Pós-Graduação ESW - Fundamentos de Engenharia de Software Manutenção de softwareManutenção de software ● A manutenção é um processo geral de mudanças de um sistema depois que ele é entregue. ● Esse termo é normalmente aplicado ao software sob encomenda no qual grupos separados são envolvidos antes e depois da entrega. Pós-Graduação ESW - Fundamentos de Engenharia de Software Tipos de manutençãoTipos de manutenção ● Manutenção corretiva ● Reparo de defeitos ● Manutenção adaptativa ● Mudança de ambiente, hardware, sistema operacional, etc. ● Manutenção evolutiva ● Mudanças organizacionais ou de negócio Pós-Graduação ESW - Fundamentos de Engenharia de Software Distribuição de esforço de Distribuição de esforço de manutençãomanutenção ● Pesquisas feitos por ● Lientz e Swanson, 1980; ● Nosek e Palvia, 1990; Pós-Graduação ESW - Fundamentos de Engenharia de Software Custos de desenvolvimento e Custos de desenvolvimento e manutençãomanutenção ● Pesquisas feitas por Guimarães (1983) ● O custo de manutenção depende do investimento em criar sistemas de fácil manutenção. Pós-Graduação ESW - Fundamentos de Engenharia de Software Fatores que elevam os custos de Fatores que elevam os custos de manutençãomanutenção ● Estabilidade da equipe ● Normalmente a equipe é desfeita após o término do desenvolvimento; ● A equipe de desenvolvimento tem que aprender. ● Responsabilidade contratual ● Normalmente é separado do contrato de desenvolvimento do de manutenção; ● Quem desenvolve não se preocupa em criar sistemas de fácil manutenção. Pós-Graduação ESW - Fundamentos de Engenharia de Software Fatores que elevam os custos de Fatores que elevam os custos de manutençãomanutenção ● Habilidade do pessoal ● Há um certo preconceito entre os engenheiros de software, pois normalmente são sistemas com tecnologias antigas e sem documentação. ● Idade e estrutura doprograma ● Com as mudanças as estruturas vão sendo desestruturadas e cada vez mais difícil de ser entendida. ● Documentação não atualizada. Pós-Graduação ESW - Fundamentos de Engenharia de Software ReengenhariaReengenharia ● O processo de evolução envolve a compreensão do programa a ser mudado e, depois, a implementação das mudanças. ● Os sistemas legados, mais antigos, são difíceis de entender e mudar. ● A reengenharia está relacionada à reimplementação de sistemas legados para torná-los mais fáceis de manter. Pós-Graduação ESW - Fundamentos de Engenharia de Software ReengenhariaReengenharia ● Pode envolver: ● Nova documentação; ● Organização e reestruturação do software; ● Conversão de linguagem; ● Modificação e atualização da estrutura e dos dados. ● A funcionalidade não é alterada e a arquitetura normalmente permanece a mesma. Pós-Graduação ESW - Fundamentos de Engenharia de Software Engenharia avante e Engenharia avante e reengenhariareengenharia ● Chikofsky e Cross, denominam o desenvolvimento convencional de Engenharia Direta para distingui-lo da Reengenharia. Pós-Graduação ESW - Fundamentos de Engenharia de Software Processo de reengenhariaProcesso de reengenharia Pós-Graduação ESW - Fundamentos de Engenharia de Software Reúso de SoftwareReúso de Software Pós-Graduação ESW - Fundamentos de Engenharia de Software Reúso Software - consideraçõesReúso Software - considerações ● O Reúso é inerente ao processo de solução de problemas utilizado pelos seres humanos. ● Na medida em que soluções são encontradas, estas são utilizadas em problemas similares. ● Nossa capacidade de abstração garante a adaptação necessária ao novo contexto. ● O problema, portanto, não é a falta de reutilização na Engenharia de Software, mas a falta de uma sistemática ampla e formal para realizá-la Pós-Graduação ESW - Fundamentos de Engenharia de Software ● Reutilização de software é o processo de incorporar em um novo produto: ● um novo código ● especificações de requisitos e projeto ● planos de teste, ● qualquer produto gerado durante ● desenvolvimentos anteriores, ● conhecimento em geral Pós-Graduação ESW - Fundamentos de Engenharia de Software Gerência de ReúsoGerência de Reúso Pós-Graduação ESW - Fundamentos de Engenharia de Software Diagrama de Contexto - Diagrama de Contexto - DomínioDomínio 155 Gang of Four (GoF)Gang of Four (GoF) ● E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. ● Descreve 23 padrões soluções genéricas para os problemas mais comuns do desenvolvimento de software orientado a objetos obtidas através de experiências de sucesso na indústria de software. Pós-Graduação ESW - Fundamentos de Engenharia de Software Por enquanto – Parte IPor enquanto – Parte I Pós-Graduação ESW - Fundamentos de Engenharia de Software Referências BibliográficasReferências Bibliográficas SOMMERVILLE, Ian. Engenharia de Software. 8ª edição, São Paulo, Addison-Wesley, 2007. PRESSMAN, Roger S. Engenharia de Software. 6ª edição, São Paulo, McGraw-Hill, 2006. KRUCHTEN, Phillippe. Uma introdução ao RUP: Rational Unified Process. Ciência Moderna. 2003. CAI, Kai-Yuan; CARD, David. An analysis of research topics in software engineering. The Journal of Systems and Software, v.81, pp. 1051–1058. 2008. RUP. Rational Unified Process. Disponível em: http://www.wthreex.com/rup/, Acessada em: 06/08/2008. APF. Análise de Pontos de Função. Disponível em: http://www.inf.ufes.br/~falbo/download/aulas/es- g/2005-1/APF.pdf/. Acessada em: 19/08/2009. BFPUG- Brazilian Function Point Users Group. Disponível em: http://www.bfpug.com.br/. Acessada em: 19/08/2009. IEEE. IEEE Standard for Software Reviews and Audits. American National Standards Institute. USA. 1989. RAGHAVAN, Sridhar; ZELESNIK, Gregory; FORD, Gary. Lecture Notes on Requirements Elicitation. Software Engineering Institute. 1994. Notas de Aulas – UFPE e UFPR Pós-Graduação ESW - Fundamentos de Engenharia de Software Luiz Camargo UNISOCIES – Centro Universitário Tupy UFPR – Universidade Federal Paraná camargho@gmail.com Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Origins of Lean Software Development Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139 Slide 140 Slide 141 Slide 142 Slide 143 Slide 144 Slide 145 Slide 146 Slide 147 Slide 148 Slide 149 Slide 150 Slide 151 Slide 152 Slide 153 Slide 154 Gang of Four (GoF) Slide 156 Slide 158 Slide 159
Compartilhar