View
773
Download
0
Category
Preview:
Citation preview
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 wasused in the title ofa NATO conference held in Germany in 1968”
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=crisishttp://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
Discipline
Knowledge
Maintenance
OperationDevelopment
Reliable
Application
Technique
Method
Approach
Quality
Software
Procedures
Methodology
Team
Scientific
PracticalDesign
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, softwareengineer, and computer scientist. He isalso 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 SoftwareAcidentes
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 os acidentes
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
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
xConsidere 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.png
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
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.
Recommended