Upload
marcello-thiry
View
773
Download
0
Embed Size (px)
Citation preview
[email protected]çã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
[email protected] 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.
criar, fabricar, construir,
fazer, compor, inventar, ...
Engenhar.
https://awordfromafriend.files.wordpress.com/2014/10/blocktower.jpg?w=500
Engenharia.
Aplicar métodos científicos ou
empíricos para criar, melhorar e
implementar
Engenharia.
Aplicar métodos científicos ou
empíricos para criar, melhorar e
implementar utilidades
Como
desenvolver
algo útil?
Estudar o problema
Planejar uma solução
Verificar a viabilidade
econômica e técnica
Coordenar a construção
Mas o que é
Software?
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)
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)
Documentação?!
Sim, documentação!
Mas, falaremos mais sobre
isso durante a disciplina
Logo,
Engenharia de
Software...
Engenharia de Software.
Aplicar métodos científicos ou
empíricos para criar, melhorar e
implementar software
“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
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
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
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...
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
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
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
(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)
(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)
(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)
(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)
(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)
Systematic
Principles
Discipline
Knowledge
Maintenance
OperationDevelopment
Reliable
Application
Technique
Method
Approach
Quality
Software
Procedures
Methodology
Team
Scientific
PracticalDesign
Tool
Productivity
E se você tivesse que explicar
a natureza do software agora?
Isso era
uma pergunta!
Eu preciso
entender a
natureza do
software...
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)”.
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?
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
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…
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
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
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
Consequências gerenciais
Visão geral do
projeto é difícil
Fraca gerência de
conhecimento
Rotatividade
é um grande
problema
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
Software precisa estar
em conformidade com
sistemas existentes
Software precisa estar em
conformidade com seu ambiente
http://www.ktckids.com/images/puzzlePieces.png
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
Onde está o software?
Produto intangível
http://img.gfx.no/806/806035/original.628x353.jpg
Não há uma
representação
geométrica
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…
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…
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
…
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…
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
O Software se DETERIORA
quando...
introduzimos um defeito ao
modificá-lo
ocorrem mudanças no ambiente que
não puderam ser previstas pelo
projetista
[email protected] Pressman, 2015
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
Devemos nos
preocupar com
a qualidade do
que entregamos!
http://www.aw3i.com/images/posts/sid_zen_dressdown.jpg
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
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
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
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
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
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?
http://images.clipartpanda.com/happy-computer-user-happy-computeruser.png
http://images.clipartpanda.com/stressor-clipart-computer-stress.jpg
Capability of software product to satisfy
stated and implied needs when used under
specified conditions
(ISO/IEC 25000, 2014)
Software Quality.
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.
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.
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
Produto de software
Pronto para ser liberado
ao usuário
Precisa ser verificado
e validado
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.
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
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.
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
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.
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?
Nós podemos
classificar
produtos de
software?
http://blog.globalknowledge.com/wp-
content/uploads/2011/08/squarehole95615108.jpg
Um produto de software pode ser:
De prateleira - COTS
http://tynmedia.com/tynmag/wp-content/uploads/sites/3/2015/07/comercio_electronico.jpg
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)
Um produto de software pode ser:
De prateleira – COTS
Sob encomenda - FD
http://www.spd-haimhausen.de/wp-content/uploads/2010/02/bausteine.jpg
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
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
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)
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
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
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.