Baixe o app para aproveitar ainda mais
Prévia do material em texto
marcello.thiry@gmail.comIntrodução e motivação O que você está fazendo aqui? http://c4.quickcachr.fotos.sapo.pt/i/o51010754/6042055_Jtk8U.jpeg Eu deveria ter a resposta!? Aqui diz que iremos aprender Engenharia de Software!! http://i0.wp.com/www.nerdglaze.com/wp- content/uploads/2013/08/nerdy-dude.jpg?resize=450%2C305 marcello.thiry@gmail.com http://ideas.scup.com/pt/files/2013/06/conte%C3%BAdo.jpg 1. Engenharia 2. Crise do Software 3. Relevância do software 4. Engenharia de Software 5. Software e suas características 6. Qualidade e Qualidade de Software 7. Tipos e domínios de software Conteúdo. marcello.thiry@gmail.com criar, fabricar, construir, fazer, compor, inventar, ... Engenhar. https://awordfromafriend.files.wordpress.com/2014/10/blocktower.jpg?w=500 marcello.thiry@gmail.com criar, fabricar, construir, fazer, compor, inventar, ... Engenhar. marcello.thiry@gmail.com Engenharia. Aplicar métodos científicos ou empíricos marcello.thiry@gmail.com Engenharia. Aplicar métodos científicos ou empíricos para criar, melhorar e implementar marcello.thiry@gmail.com Engenharia. Aplicar métodos científicos ou empíricos para criar, melhorar e implementar utilidades marcello.thiry@gmail.com Uma utilidade deve realizar uma determinada função ou objetivo Como desenvolver algo útil? marcello.thiry@gmail.com Estudar o problema Planejar uma solução Verificar a viabilidade econômica e técnica Coordenar a construção Mas o que é Software? marcello.thiry@gmail.com John Tukey (1915-2000) https://en.wikipedia.org/?title=John_Tukey “In 1958, John Tukey, the world-renowned statistician, coined the term software” (SWEBOK, 2014) marcello.thiry@gmail.com Conjunto de programas de computador, procedimentos e possível documentação associada, e dados relacionados à operação de um sistema de computador Software. (IEEE Std 610.12.1990) marcello.thiry@gmail.com Documentação?! Sim, documentação! Mas, falaremos mais sobre isso durante a disciplina marcello.thiry@gmail.com Apenas um lembrete: A parte difícil é produzir documentação útil!!! Logo, Engenharia de Software... marcello.thiry@gmail.com Engenharia de Software. Aplicar métodos científicos ou empíricos para criar, melhorar e implementar software marcello.thiry@gmail.com “The term software engineering was used in the title of a NATO conference held in Germany in 1968” http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ Como surgiu a Engenharia de Software? Back in the day... Popular Science, Jan 1965, 107 Business Week, Nov 5, 1966, 127. http://thecomputerboys.com/?tag=crisis http://thecomputerboys.com/?tag=crisis marcello.thiry@gmail.com “Software Crisis” or “Software Gap” Late 1960s, early 1970s... marcello.thiry@gmail.com Late 1960s, early 1970s... •Vários projetos de software estavam falhando ou sendo abandonados •Atrasos •Acima do orçamento •Software não confiável e de difícil manutenção •Dificuldade em atender aos requisitos dos clientes A crise... https://kathleenkerridge.files.wordpress.com/2015/02/depre ssion-week-image-300x300.jpg?w=300 marcello.thiry@gmail.com Late 1960s, early 1970s... •Computadores mais potentes e linguagens de programação mais robustas • Crescimento da demanda •Software mais complexos •Mais pessoas envolvidas A crise... https://pamsblog666.files.wordpress.com/2011/06/computer20studies.jpg marcello.thiry@gmail.com Late 1960s, early 1970s... •Formação de profissionais •Metodologias • Comunicação com clientes • Trabalho em equipe A crise... http://eolocomunicacion.com/wp-content/uploads/2015/05/fusionyadquisiciondempresas-e1431067600969.png E hoje? Software is everywhere... marcello.thiry@gmail.com The avionics system in the F-22 Raptor consists of about 1.7 Million LOC The Boeing’s 787 Dreamliner contains about 6.5 million LOC A premium-class automobile contains close to 100 million LOC http://spectrum.ieee.org/transportation/systems/this-car-runs-on-code LOC = lines of software code http://3.bp.blogspot.com/-- ae42w82PVo/VEU2EOJmQXI/AAAAAAAABoM/x5vv azR_BQM/s1600/homer-screaming.gif marcello.thiry@gmail.com Computação ubíqua ou pervasiva? As pessoas nem percebem mais como a computação faz parte do dia a dia delas E qual o impacto disso no software? http://betanews.com/wp- content/uploads/2014/09/Internet-of-things.jpg marcello.thiry@gmail.com Você percebe a relevância do software nos dias de hoje? E qual é o seu papel nisso tudo? https://portalbuzzuserfiles.s3.amazonaws.com/ou- 15436/userfiles/images/pointing%20finger.jpg Vamos definir Engenharia de Software formalmente marcello.thiry@gmail.com (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610.12.1990) marcello.thiry@gmail.com (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610.12.1990) marcello.thiry@gmail.com (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610.12.1990) marcello.thiry@gmail.com (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610.12.1990) marcello.thiry@gmail.com (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE Std 610.12.1990) marcello.thiry@gmail.com marcello.thiry@gmail.com http://mrbakersgrade6.weebly.com/uploads/ 2/4/7/6/24767728/6979844.jpg?339 marcello.thiry@gmail.com Systematic Principles D is c ip li n e Knowledge M a in t e n a n c e O p e r a t io nDevelopment R e li a b le A p p li c a t io n T e c h n iq u e M e t h o d Approach Q u a li t y S o ft w a r e P r o c e d u r e s Methodology Team Scientific Practical Design Tool Productivity marcello.thiry@gmail.com E se você tivesse que explicar a natureza do software agora? Isso era uma pergunta! Eu preciso entender a natureza do software... marcello.thiry@gmail.com Frederick Phillips Brooks, Jr. (1931-) https://en.wikipedia.org/wiki/Fred_Brooks “In 1986, Fred Brooks wrote the famous paper No Silver Bullet – Essence and Accident of Software Engineering” http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/no-silver-bullet.pdf American computer architect, software engineer, and computer scientist. He is also the author of the seminal book “The Mythical Man-Month (1975)”. marcello.thiry@gmail.com http://www.polyvore.com/cgi/img- thing?.out=jpg&size=l&tid=32131103 “… building software will always be hard. There is no silver bullet.” (Brooks, 1986) Não há uma técnica ou tecnologia única que pode melhorar algum aspecto do desenvolvimento de software 10x em 10 anos… Por que? marcello.thiry@gmail.com Essência Dificuldades no Desenvolvimento de Software Acidentes Inerente à natureza do software Mapear a especificação para o software e Verificar se a solução realmente atende às necessidades do negócio Relacionados com a produção do software e não são inerentes Brooks, 1986 A maioria dos métodos e técnicas atacam osacidentes marcello.thiry@gmail.com Apenas um lembrete: Acidental Acontecer ao acaso Incidente Brooks “refired” his paper 10 years later in the book The Mythical Man-Month, 20th Anniversary Edition, 1995 problemas que os engenheiros criam e podem resolver Relacionado com o processo de implementação Vamos iniciar com a Essência… marcello.thiry@gmail.com marcello.thiry@gmail.com Simple huh!? http://www.ideo.com/work/atm-interface marcello.thiry@gmail.com Não existem duas partes iguais Se elas existem, deveríamos usar sub-rotinas Diferença com elementos usados em outros domínios Alta quantidade de estados Impossível enumerar todos marcello.thiry@gmail.com Não há como abstrair completamente a complexidade por que ela é essencial Domínios complexos Aviação Telecomunicações Sistema bancário Área da saúde … Nós ainda precisaremos modelar e implementar estas complexidades marcello.thiry@gmail.com Consequências técnicas Dificuldades de comunicação Falhas no produto, custos acima do planejado, atrasos, … Dificuldade de enumerar, entender e antecipar todos os estados possíveis Baixa confiabilidade, quebras de segurança Dificuldade de manutenção Introdução de defeitos, difícil de entender, difícil de usar marcello.thiry@gmail.com Consequências gerenciais Visão geral do projeto é difícil Fraca gerência de conhecimento Rotatividade é um grande problema marcello.thiry@gmail.com marcello.thiry@gmail.com Software deve estar em conformidade com limitações arbitrárias Impostas por instituições humanas e sistemas normas e regras Sujeitas a alterações arbitrárias É difícil planejar Pode ocorrer mais tarde no projeto marcello.thiry@gmail.com Software precisa estar em conformidade com sistemas existentes Software precisa estar em conformidade com seu ambiente http://www.ktckids.com/images/puzzlePieces.png marcello.thiry@gmail.com marcello.thiry@gmail.com Mudança contínua das necessidades dos usuários Ilusão de fácil maleabilidade http://pipllp.com/wp-content/uploads/2014/09/evolution-of-cars_CKO.jpg Maior pressão para modificar o software marcello.thiry@gmail.com marcello.thiry@gmail.com Onde está o software? Produto intangível http://img.gfx.no/806/806035/original.628x353.jpg Não há uma representação geométrica marcello.thiry@gmail.com Nós precisamos usar diferentes representações para modelar diferentes aspectos do software Na UML 2.2 existem 14 tipos de diagramas http://i.stack.imgur.com/8tmN9.jpg Como atacar a essência… marcello.thiry@gmail.com Refinamento dos requisitos Desenvolvimento incremental Fazer o software crescer, não construi-lo Grandes projetistas Prototipação rápida Identificá-los, desenvolvê-los e mantê-los Reusar Comprar ao invés de desenvolver E sobre os acidentes… marcello.thiry@gmail.com Alguns avanços ajudaram a reduzir dificuldades acidentais… Linguagens de alto-nível Time-sharing Ambientes e ferramentas de programação Desenvolvimento orientado a objetos Verificação … marcello.thiry@gmail.com http://www.infoq.com/articles/No-Silver-Bullet-Summary Leitura interessante… No Silver Bullet Reloaded Retrospective OOPSLA Panel Summary http://cliparts.co/cliparts/dc9/6kL/dc96kLRc7.png http://www.infoq.com/articles/No-Silver-Bullet-Summary Mas espere, tem mais… marcello.thiry@gmail.com marcello.thiry@gmail.com O Software se DESGASTA com o tempo? http://chrishowardbooks.com/img/easter-egg-graphics/car.png Claro que não! Mas... Estava funcionando antes... ... da maldita atualização! https://www.careeraddict.com/Surprised_Businessman.jpg marcello.thiry@gmail.com O Software se DETERIORA quando... introduzimos um defeito ao modificá-lo ocorrem mudanças no ambiente que não puderam ser previstas pelo projetista marcello.thiry@gmail.com Pressman, 2015 marcello.thiry@gmail.com Claro, estamos considerando que o software não veio “podre” de fábrica! http://spc.fotolog.com/photo/44/42/36/deselingue/1200006994_f.jpg marcello.thiry@gmail.com E qual é o seu papel nisso tudo? marcello.thiry@gmail.com Devemos nos preocupar com a qualidade do que entregamos! http://www.aw3i.com/images/posts/sid_zen_dressdown.jpg marcello.thiry@gmail.com Qualidade? https://pbs.twimg.com/profile_images/434052607297191936/ZRHhp8Fx.jpeg marcello.thiry@gmail.com x Considere estes dois produtos... http://hobby-armada.com/images/item/tamiya/sportscar/292.jpg http://cdn.inaxiom.net/web/wp-content/uploads/2011/08/Ford-Ka-2011-06.jpg Qual tem mais qualidade? http://www.tvmost.com.hk/most/uploads/images/2015/Article/2015.07/2015.07.23/pigteammate/005.jpg marcello.thiry@gmail.com Quais as características esperadas de cada um? Qualidade é o “grau no qual um conjunto de características inerentes satisfaz a requisitos” ISO 9000, 2015 marcello.thiry@gmail.com Problemas com a qualidade O carro esportivo não alcançou a potência estabelecida O carro popular está com um consumo superior ao esperado marcello.thiry@gmail.com Classe * é uma “categoria ou classificação atribuída a diferentes requisitos da qualidade para produtos, processos ou sistemas que têm o mesmo uso funcional” Diferentes características técnicas 1 linha, 1 classe, ... 2 linha, 2 classe, ... Em inglês: Grade. PMBOK (2013) adota o termo “grau”* ISO 9000, 2015 marcello.thiry@gmail.com Pegou a ideia!? http://www.clickgratis.com.br/fotos-imagens/saca- rolha/aHR0cDovL2lzaG9wLnM4LmNvbS5ici9wcm9kdXRvcy8 wMS8wMS9pdGVtLzI4OC82LzI4ODY2N18zR0cuanBn.jpg http://www.clickgratis.com.br/fotos-imagens/saca- rolha/aHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi9lL 2U1L0tvcmtlbnppZWhlcl8wMV9LTUouanBnLzIwMHB4LUtvcmtlbnppZWhlcl8wMV9LTUouanBn.jpg marcello.thiry@gmail.com marcello.thiry@gmail.com Difícil definir Difícil medir Diferentes percepções http://www.bms.co.in/wp-content/uploads/2014/11/Customer-Decision.jpg http://businessanalytics.pt/wp- content/uploads/2013/01/Lupa- 300x268.jpg E Qualidade de Software? marcello.thiry@gmail.com http://images.clipartpanda.com/happy-computer-user-happy-computeruser.png http://images.clipartpanda.com/stressor-clipart-computer-stress.jpg marcello.thiry@gmail.com Capability of software product to satisfy stated and implied needs when used under specified conditions (ISO/IEC 25000, 2014) Software Quality. marcello.thiry@gmail.com Capacidade de um produto de software de satisfazer às necessidades explícitas e implícitas quando utilizado sob condições especificadas (ISO/IEC 25000, 2014) Qualidade de software. marcello.thiry@gmail.com Produto? https://pixabay.com/pt/caixa-papel%C3%A3o- pacote-parcela-brown-158523/ Artifact that is produced, is quantifiable, and can be either an end item in itself or a component item. Additional words for products are material and goods. (PMBOK, 2013) also used by (ISO/IEC 25000, 2014) Product. marcello.thiry@gmail.com O PMBOK diferencia os termos PRODUTO (tangível) e SERVIÇO (intangível) Um produto pode ser: um componente de outro item um aprimoramento de outro item um item final PMBOK - Um Guia do Conhecimento em Gerenciamento de Projetos marcello.thiry@gmail.com Produto de software Pronto para ser liberado ao usuário Precisa ser verificado e validado marcello.thiry@gmail.com Capacidade de um produto de software de satisfazer às necessidades explícitas e implícitas quando utilizado sob condições especificadas (ISO/IEC 25000, 2014) Qualidade de software. marcello.thiry@gmail.com Capacidade de um produto de software de satisfazer às necessidades explícitas e implícitas quando utilizado sob condições especificadas (ISO/IEC 25000, 2014) Qualidade de software. Especificação do software http://blog.axen.pro/wp-content/uploads/2013/06/Writing-Quality-Software-Requirements.pngmarcello.thiry@gmail.com Capacidade de um produto de software de satisfazer às necessidades explícitas e implícitas quando utilizado sob condições especificadas (ISO/IEC 25000, 2014) Qualidade de software. marcello.thiry@gmail.com E o que não está escrito? O que o usuário espera? http://www.handymanstartup.com/wp- content/uploads/2013/02/IMG_Customer_rating_buttons.jpg marcello.thiry@gmail.com Capacidade de um produto de software de satisfazer às necessidades explícitas e implícitas quando utilizado sob condições especificadas (ISO/IEC 25000, 2014) Qualidade de software. marcello.thiry@gmail.com Does the USE really matters? https://d3ui957tjb5bqd.cloudfront.net/images/screenshots/products/7/79/79359/hammer-o.jpg?1393432661 Ok, entendi! Mas todo software é igual? marcello.thiry@gmail.com Nós podemos classificar produtos de software? http://blog.globalknowledge.com/wp- content/uploads/2011/08/squarehole95615108.jpg marcello.thiry@gmail.com marcello.thiry@gmail.com marcello.thiry@gmail.com Um produto de software pode ser: De prateleira - COTS http://tynmedia.com/tynmag/wp-content/uploads/sites/3/2015/07/comercio_electronico.jpg marcello.thiry@gmail.com Definido por uma necessidade de mercado, disponível comercialmente e cuja adequação para uso foi demonstrada por um largo espectro de usuários Software de prateleira. COTS (commercial off-the-shelf) (ISO/IEC 25030, 2007) marcello.thiry@gmail.com Um produto de software pode ser: De prateleira – COTS Sob encomenda - FD http://www.spd-haimhausen.de/wp-content/uploads/2010/02/bausteine.jpg marcello.thiry@gmail.com Desenvolvido para uma aplicação específica a partir de uma especificação de requisitos do software (ISO/IEC 25030, 2007) Software sob encomenda. FD (fully developed) or custom software development marcello.thiry@gmail.com Um produto de software pode ser: De prateleira – COTS Sob encomenda – FD De prateleira modificável – MOTS http://www.sundlep.com/wp-content/uploads/2015/02/web12.jpg marcello.thiry@gmail.com Similar ao COTS, mas permite algum grau de adaptação (modificação de suas funcionalidades) a partir de necessidades específicas dos usuários Software de prateleira modificável. MOTS (modified off-the-shelf) marcello.thiry@gmail.com Pressman considera 7 categorias gerais Desafios! Pressman, 2015 marcello.thiry@gmail.com Software básico Software aplicativo Sw para engenharia e aplicações científicas Software embarcado Linhas de produto de software Aplicações web e móveis Inteligência Artificial marcello.thiry@gmail.com E mais... http://betanews.com/wp-content/uploads/2014/09/Internet-of-things.jpg http://1.bp.blogspot.com/-7WLjdMquht4/VAANOVyBZSI/AAAAAAAAEZ8/JDIrrYWeJyc/s1600/Cloud-computing-concept_nobg.png marcello.thiry@gmail.com E qual é o seu papel nisso tudo? marcello.thiry@gmail.com http://mrbakersgrade6.weebly.com/uploads/ 2/4/7/6/24767728/6979844.jpg?339 References. (Brooks, 1986). No Silver Bullet: Essence and Accident in Software Engineering. Proceedings of the IFIP Tenth World Computing Conference: 1069–1076. (Brooks, 1995). The Mythical Man-Month. Anniversary Edition. Addison Wesley. (IEEE Std 610.12.1990). IEEE Standard Glossary of Software Engineering Terminology. (ISO 9000, 2015). Quality management systems — Fundamentals and vocabulary. (ISO/IEC 25000, 2014). Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) — Guide to SQuaRE. (ISO/IEC 25030, 2007). Software engineering — Software product Quality Requirements and Evaluation (SQuaRE) — Quality requirements. (PMBOK, 2013). A Guide to the Project Management Body of Knowledge (PMBOK® Guide). 5th ed. Project Management Institute (PMI). (Pressman, 2015). Software Engineering: A Practitioner's Approach. 8th ed. McGraw-Hill Education. (SWEBOK, 2014). SWEBOK - Guide to the Software Engineering Body of Knowledge. Version 3.0. IEEE.
Compartilhar