Engenharia de Software - Introdução e Motivação (Marcello Thiry)

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