Buscar

slides-engenhariadesoftware-introduodemotivaomarcellothiry-pt-151030214434-lva1-app6891

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.

Continue navegando