(1) O documento introduz o tema de engenharia de software, discutindo sua origem e motivação. (2) Apresenta os principais tópicos que serão abordados, incluindo a crise do software, características de software e qualidade. (3) Define engenharia de software como a aplicação sistemática de métodos científicos e empíricos para criar, melhorar e implementar software.
4. 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
16. 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)
23. 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
25. 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
26. 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
27. 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
30. 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
31. 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
32. 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
34. 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)
35. 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)
36. 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)
37. 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)
38. 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)
44. 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)”.
48. 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
52. 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
53. 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
54. 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
57. 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
62. 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
63. 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
67. 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
…
74. 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
80. 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
84. 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
91. 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.
93. 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.
94. 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
96. 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.
97. 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.
99. 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.
100. 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
101. 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.
107. 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
108. 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)
109. 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
110. 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
111. 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
112. 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)
118. 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.