Академический Документы
Профессиональный Документы
Культура Документы
ENGENHARIA
DE SOFTWARE
VINICIUS CARDOSO GARCIA
LICENA DO MATERIAL
Este Trabalho foi licenciado com uma Licena
Creative Commons - Atribuio-NoComercialCompartilhaIgual 3.0 No Adaptada.
Mais informaes visite
http://creativecommons.org/licenses/by-ncsa/3.0/deed.pt
DOWNLOAD
http://bit.ly/in0953-2015-w01a01
REFERNCIAS
A biblioteca do Desenvolvedor
de Software dos dias de hoje
http://bit.ly/TDOA5L
SWEBOK
Guide to the Software Engineering
Body of Knowledge (SWEBOK):
http://www.computer.org/web/
swebok
Engineering Software as a
Service: An Agile Approach
Using Cloud Computing (Beta
Edition)
http://beta.saasbook.info/
ORGANIZAO
Introduo a Engenharia de Software
Software como Servio
Arquitetura Orientada a Servio
Computao em Nuvem
Cdigo Bonito vs Cdigo Legado
Garantia de Qualidade de Software: Testes
OBJETIVOS
COMUNICAO
Site da disciplina [material e informaes]:
WDHY
Para facilitar a comunicao via email que no
acontecer pela lista, utilizem [in0953] como parte do
assunto do email.
Comunidade da in0953no Facebook:
IF0953.2014
https://www.facebook.com/groups/237528629769662/
AVALIAO
A avaliao neste curso se dar da seguinte forma:
os aspectos tericos sero avaliados por meio de dois exerccios escolares;
a prtica ser avaliada por meio de projeto de software desenvolvido em
equipe.
A mdia da disciplina ser calculada da seguinte forma:
Mdia = ( 3 * NotaEE1 + 3 * NotaEE2 + 4 * NotaProjeto) / 10, onde
NotaEE1 a nota do Primeiro Exerccio Escolar;
NotaEE2 a nota do Segundo Exerccio Escolar;
A nota do projeto (NotaProjeto) ser calculada assim:
AMBIENTE E FERRAMENTAS
Para reduzir os obstculos de instalar e configurar o mesmo ambiente
de desenvolvimento em diferentes computadores com diferentes
sistemas operacionais, recomendado o uso de uma mquina virtual
que contm todo software necessrios para o desenvolvimento do
projeto
10
CONTROLE DE VERSO
Controle de verso e ferramentas de controle de verso (e.g., git) so
essenciais na ES
A VISUAL GUIDE TO VERSION CONTROL
http://betterexplained.com/articles/a-visual-guide-to-version-control/
11
12
INTRODUO A ENGENHARIA DE
SOFTWARE
1. Software Engineer
38. Nurse
40. Physician
47. Accountant
185. Firefighter
87. Attorney
200. Lumberjack
13
ENGENHARIA DE SOFTWARE
As economias de TODAS as naes desenvolvidas
so dependentes de software.
Cada vez mais sistemas so controlados por
software.
A engenharia de software se dedica s teorias,
mtodos e ferramentas para desenvolvimento de
software profissional
14
Sistemas no-triviais
Com base em um conjunto de requisitos
15
16
17
ALVOS DO SOFTWARE
SW Tradicional: cdigo binrio instalado e rodando
totalmente no dispositivo do cliente
Os usurios precisam atualizar repetidamente
Muitas verses de hardware e muitas verses de SO
Novas verses precisam passar por um ciclo de
release extensivo para garantir a compatibilidade
Uma alternativa onde o desenvolva-se o SW que
necessita rodar em apenas uma plataforma de
HW&SO?
18
19
1.
2.
3.
4.
5.
6.
20
SAAS S2 METODOLOGIAS
GEIS & RAILS
Atualizaes frequentes => Ciclo de Vida gil
Muitos frameworks para gil/SaaS
Djando/Python, Zend/PHP, Spring/Java
Vamos utilizar Ruby on Rails (Rails)
Rails um framework muito popular que utiliza
Ruby (e.g., Twitter, Cloudfoundry, OpenNebula)
21
22
http://bit.ly/1b9QbFj
PERGUNTA
Qual o argumento mais FRACO para a
popularidade das apps como SaaS do
Google ?
No perca dados: Gmail
Grupos cooperativos: Documentos
Grandes conjuntos de dados: Youtube
Sem atualizaes intrusivas ao melhorar o
app: Busca
23
1.
2.
3.
4.
PERGUNTA
Qual o argumento mais FRACO para a
popularidade das apps como SaaS do
Google ?
No perca dados: Gmail
Grupos cooperativos: Documentos
Grandes conjuntos de dados: Youtube
Sem atualizaes intrusivas ao melhorar o
app: Busca
24
1.
2.
3.
4.
25
ARQUITETURA DE SOFTWARE
26
ARQUITETURA ORIENTADA A
SERVIO
SOA: Arquitetura de Software onde todos os
componentes so projetados como servio
Apps so compostas por servios interoperveis
27
28
29
BOOKSTORE: SILO
Todos os
subsistemas
dentro de uma
nica API
(Bookstore)
(Figure 1.3, Engineering Long Lasting
Software by Armando Fox and David
Patterson, Beta edition, 2012.)
reviews
users
orders
Review
Subsystem
User Profile
Service
Buying
Subsystem
Bookstore Service
30
Subsistemas
internos podem
compartilhar
dados diretamente
BOOKSTORE: SOA
Subsistemas
independentes,
como se
estivessem em
datacenters
separados
user
reviews
credit card
processing
editor
reviews
User Profile
Service
Review
Service
orders
Buying
Service
Bookstore Service
Favorite Books
Service
users
Social
Network
Service
31
Pode recombinar
servios para
criar novos
servios
(Favorite
Books)
users
PERGUNTA
Quais afirmaes NO so verdades sobre SOA?
32
PERGUNTA
Quais afirmaes NO so verdades sobre SOA?
33
34
COMPUTAO EM NUVEM
35
INFRAESTRUTURA SAAS?
3 Demandas de infraestrutura para SaaS
36
SERVIOS EM CLUSTERS
Cluster: aglomerado de computadores
conectados
1. Mais escalvel do que servidores
convencionais
2. Mais barato do que servidores convencionais
20X para equivalentes vs. Servidores maiores
37
WAREHOUSE DE
COMPUTADORES ESCALVEIS
Clusters cresceu de 1000 para 100 mil servidores
com base na demanda do cliente para aplicativos
SaaS
Economias de escala empurraram o custo dos
grandes data centers em fatores de 3x a 8x
Comprar, hospedar, operar 100K vs 1K
Data centers tradicionais utilizados, cerca de
10% - 20%
38
COMPUTAO UTILITRIA /
COMPUTAO EM NUVEM PBLICA
Oferece computao, armazenamento,
comunicao a centavos por hora
Sem adicionais por escalabilidade
1000 computadores @ 1 hora, ou
1 computador @ 1000 horas
Iluso de infinita escalabilidade para o usurio
39
$0.06
$0.12
$0.24
$0.48
$0.50
$1.00
$0.15
$0.58
$2.40
$0.41
$0.82
$1.64
$3.50
$3.10
$4.60
$0.02
$2.10
1.0
2.0
4.0
8.0
8.3
16.7
2.5
9.7
40.0
6.8
13.7
27.3
58.3
51.7
76.7
0.3
35.0
Virtual
Cores
1
1
2
4
4
8
2
8
32
2
4
8
32
16
16
1
16
Compute
Units
1.0
2.0
4.0
8.0
13.0
26.0
5.0
20.0
88.0
6.5
13.0
26.0
88.0
35.0
35.0
varies
33.5
Memory
(GiB)
Storage (GB)
1.7
1 x 160
3.8
1 x 410
7.5
2 x 420
15.0
4 x 420
15.0
EBS
30.0
EBS
1.7
1 x 350
7.0
4 x 420
60.5
4 x 840
17.1
1 x 420
34.2
1 x 850
68.4
2 x 840
244.0 2 x 120 SSD
60.5 2 x 1024 SSD
117.0
24 x 2048
0.6
EBS
22.5
2 x 840
40
Per $ Ratio
Instance Type Hour to small
SUPERCOMPUTADOR PARA
ALUGAR
41
42
PERGUNTA
43
PERGUNTA
44
45
SW LEGADO VS SW BONITO
ESTTICA DE PROGRAMAO
Eu me importo com o que os outros pensam
do meu cdigo?
46
SW LEGADO VS SW BONITO
Cdigo legado: SW antigo que continua em
uso (atende aos requisitos dos clientes) mas
de difcil evoluo [problemas de projeto ou
tecnologia ultrapassada]
47
SW LEGADO VS SW BONITO
Cdigo legado: SW antigo que continua em
uso (atende aos requisitos dos clientes) mas
de difcil evoluo [problemas de projeto ou
tecnologia ultrapassada]
48
49
PERGUNTA
Que tipo de SW considerado uma falha
pica?
Cdigo bonito
Cdigo legado
Cdigo inesperadamente com vida curta
Tanto alternativas 2 e 3
50
1.
2.
3.
4.
PERGUNTA
Que tipo de SW considerado uma falha
pica?
Cdigo bonito
Cdigo legado
Cdigo inesperadamente com vida curta
Tanto alternativas 2 e 3
51
1.
2.
3.
4.
52
QUALIDADE DE SOFTWARE
O Que qualidade de SW e como garantimos
ela? (QA)
53
QUALIDADE DE SOFTWARE
Qualidade do produto: adequao ao uso
Valor de negcio para o cliente e o produtor
Garantia de Qualidade: processos/padres =>
produtos com alta qualidade & melhoria da qualidade
Quality Assurance
Qualidade de SW
54
GARANTIA [ASSURANCE]
Verificao: construmos a coisa certa?
Est de acordo com a especificao?
Ex: inspeo de cdigo, anlise esttica
TESTES
invivel termos testes exaustivos
[$$$]
Divide et Conquer: realizar
diferentes testes em diferentes
fases do desenvolvimento
56
TESTES
Testes de___________: programa [integrado]
atende suas especificaes
Teste de ____________: as interfaces entre as
unidades possuem pressupostos
consistentes, comunicam-se corretamente
Teste de ____________: atravs das unidades
individuais
57
TESTES
Testes de sistema ou aceitao: programa
[integrado] atende suas especificaes
Teste de integrao: as interfaces entre as
unidades possuem pressupostos
consistentes, comunicam-se corretamente
Teste de mdulo ou funcional: atravs das
unidades individuais
58
MAIS TESTES
Cobertura: % de cdigo coberto pelos testes
Testes de Regresso: automaticamente
reexecuta testes passados para atestar que
modificaes no quebram o que estava ok
Teste de Integrao Contnua: testes de
regresso contnua vs. Fases finais
gil -> Test Driven Design (TDD)
59
60
61
PERGUNTA
62
PERGUNTA
63
64
PRODUTIVIDADE
65
66
vs _______________________________
assert_greater_than_or_equal_to(a,7)
vs a.should be 7
2. Aumente o nvel de abstrao
67
SNTESE
Sntese de Software
BitBit: gerao de cdigo para atender alguma
situao e remoo de testes condicionais
68
REUSO
Reutilizar cdigo ou escrever cdigo?
Tcnicas (cronologicamente)
69
1. Procedures e funes
2. Bibliotecas padronizadas (reuso de uma vez
s)
3. POO: reuso e gerenciamento de colees de
tarefas
4. Padres de projeto: reuso de uma estratgia
geral independente da implementao
AUTOMAO E FERRAMENTAS
Substituio de tarefas tediosas e manuais por
automao para economizar, melhorando a acurcia
Novas ferramentas podem tornar a vida melhor! (i.e.
Make, Ant)
Preocupaes com novas ferramentas:
Confiabilidade, Qualidade de UI...
Bons desenvolvedores devem aprender
repetidamente como usar novas ferramentas: curva
de aprendizado
70
PERGUNTA
Qual afirmao VERDADE sobre
produtividade?
71
PERGUNTA
Qual afirmao VERDADE sobre
produtividade?
72
DRY
Every piece of knowledge must have a
single, unambiguous, authoritative
representation within a system.
Andy Hunt and Dave Thomas, 1999
Don't Repeat Yourself (DRY)
73
SUMARIZANDO...
74
IN0953
ENGENHARIA
DE SOFTWARE
VINICIUS CARDOSO GARCIA
SUMRIO
Processos de Desenvolvimento de SW: Planejar &
Documentar
Processos de Desenvolvimento de SW: Agile Manifesto
Falcias e Armadilhas
preciso uma equipe: Tamanho e Scrum
Programao em Pares
Viso Geral & Trs Pilares de Ruby
Tudo um objeto, Cada operao uma chamada de
mtodo
76
POO em Ruby
Cascata
Espiral
gil
77
PROCESSOS DE DESENVOLVIMENTO DE
SOFTWARE
78
ENGENHARIA DE SOFTWARE
Trazer a disciplina engenharia para o SW
Termo cunhado ~20 anos aps o 1 computador
Encontrar mtodos de desenvolvimento de SW to
previsveis em qualidade, custo e tempo assim como
engenharia civil
79
1 PROCESSO DE DESENVOLVIMENTO:
WATERFALL (1970)
5 fases do ciclo de vida Waterfall ou Processo de Desenvolvimento em Cascata
A.K.A. Big Design Up Front ou BDUF
Anlise e definio de requisitos
Projeto de sistema e software
Implementao e teste de unidade
Integrao e teste de sistema
Operao e manuteno
Primeiro modelo a organizar as atividades de desenvolvimento
Uma fase tem de estar completa antes de passar para a prxima.
80
81
82
Especificaes que no
mudam: nibus espacial
da NASA, controle de
aeronaves...
83
84
85
PROBLEMAS DO MODELO
CASCATA
Particionamento inflexvel do projeto em estgios
Dificulta a resposta aos requisitos de mudana do
cliente.
Documentos completamente elaborados so
necessrios para fazer as transies entre estgios
Apropriado somente quando os requisitos so bem
compreendidos e quando as mudanas so raras
86
87
88
Evaluate Alternatives,
Identify and Resolve Risks
Prototype 2
Develop and
verify prototype
89
Prototype 1
Operational
Proto- Prototype 3 type
90
ESPIRAL
GOOD & BAD
Gerenciamento de
Riscos no ciclo de vida
Monitoramento do
projeto facilitado
Cronograma e custo
mais realista atravs do
tempo
Iteraes longas de 6 a
24 meses
Tempo para os clientes
mudarem de ideia
Iteraes envolvem o
cliente antes do produto
estar completo
92
FASES DO RUP
93
DISCIPLINAS DE ENGEHARIA
DO RUP
6 disciplinas das pessoas atravs do ciclo de vida do
projeto
1. Business Modeling
2. Requirements
3. Analysis and Design
4. Implementation
5. Test
94
6. Deployment
RUP
GOOD & BAD
Lotes de ferramentas
da Rational (agora
IBM)
Ferramentas de apoio
a melhoria gradual do
projeto
Ferramentas so
caras (!open source)
Muitas opes para
adaptar o RUP para
uma empresa
Apenas bom para
projetos de mdia a
larga escala
96
Prticas de negcios
vinculados a
processo de
desenvolvimento
GERNCIA DE PROJETOS
DIRIGIDA A PLANO (DP)
97
TAMANHO DO TIME DE DP
Adding manpower to a late software project makes it later.
Fred Brooks, Jr., The Mythical Man-Month
Leva tempo para os novos membros do time aprenderem sobre
o projeto
A comunicao do time aumenta,
deixando menos tempo para trabalhar
efetivamente
98
PERGUNTA
99
PERGUNTA
100
101
PROCESSOS DE DESENVOLVIMENTO:
GIL
PROCESSO ALTERNATIVO?
Quo preciso o Dirigido a Plano pode ser em relao
a custo, cronograma e qualidade?
DP requer extensiva documentao e planejamento e
depende da experincia do gerente
102
QUO PRECISO SO OS
PROCESSOS DIRIGIDO A PLANOS?
IEEE Spectrum Software Wall of Shame
31 projetos: desperdiaram $17B
!"#$
&!#$
!"#$%&'()&"*'+,-(./"0'-(12234((
!"#$
'($)*+,$-($
./01+2$
%"#$
342+,$-5+6$./01+2$
%&#$
7+6*8(42+0$-6$
4.4(0-(+0$
&"#$
!"#$
'($)*+,$-($
./01+2$
%&#$
34#$562+,$-7+8$
./01+2$
96:-8$0+;6<=$-8$
2+8*>(62+0$
!"#$%&'()&"*'+,-(./%01"&(23334((
'($)*+,$-($
./01+2$
342+,$-5+6$./01+2,$
-6$2+6*7(42+0$
3/~500 novos
projetos
cumprem os
custos e o
cronograma
103
!"#$%&'()&"*'+,-(./"01-"1(23345(
PERESS LAW
If a problem has no solution, it may not be a problem, but a
fact, not to be solved, but to be coped with over time.
Shimon Peres
104
MTODOS GEIS
A insatisfao com o overhead que envolve os mtodos de
projeto de software dos anos de 1980 e 1990 levou a criao de
mtodos geis. Esses mtodos:
Tm foco no cdigo ao invs de no projeto.
So baseados em uma abordagem iterativa de desenvolvimento
de software.
So planejados para entregar rapidamente o software em
funcionamento e evolu-lo rapidamente para alcanar os
requisitos em constante mudana.
105
106
107
108
ITERAO GIL
(ORGANIZAO DO CURSO)
Converse com
o Cliente
Software
legado
BDD: Estrias
do Usurio
Design
Patterns
TDD: Teste
Unitrio
Implantao
na Nuvem
109
Medio da
Velocidade
Aceito em 2003
110
111
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DESENVOLVIMENTO GIL E
DIRIGIDO A PLANOS
Desenvolvimento dirigido a planos
Para a engenharia de software, uma abordagem dirigida a
planos, baseada em estgios de desenvolvimento separados,
com os produtos a serem produzidos em cada um desses
estgios planejados antecipadamente.
O desenvolvimento incremental possvel no modelo cascata dirigido a planos.
Iteraes ocorrem dentro das atividades.
112
Desenvolvimento gil
Especificao, projeto, implementao e teste so intercalados e
os produtos do processo de desenvolvimento so decididos
atravs de um processo de negociao, durante o processo de
desenvolvimento do software.
PERGUNTA
Qual afirmao VERDADEIRA?
113
PERGUNTA
Qual afirmao VERDADEIRA?
114
115
FALCIAS E ARMADILHAS
FALCIAS E ARMADILHAS
Falcia: Se um projeto de SW est falhando
em relao ao cronograma, melhore-o
adicionando pessoas!
Adicionar mais pessoas piora!
Curva de aprendizado para novas pessoas
Comunicao aumenta quando o projeto cresce, o
que reduz a disponibilidade para concluir o trabalho
116
FALCIAS E ARMADILHAS
117
FALCIAS E ARMADILHAS
Armadilha: Ignore o custo do projeto de SW
118
119
CONCLUINDO: ES MUITO
MAIS DO QUE PROGRAMAO
120
121
122
123
ORGANIZAO ALTERNATIVA
PARA O TIME?
Processo Dirigido a Planos requer uma extensiva
documentao e planejamento e seu sucesso
depende da experincia do gerente
Como devemos organizar um time gil?
124
SCRUM: ORGANIZAO DO
TIME
125
126
PAPIS DO SCRUM
127
PAPIS DO SCRUM
128
RESOLVENDO CONFLITOS
e.g. Diferentes vises em uma determinada
deciso tcnica
Primeiramente liste todos os itens em que os
lados concordam
Ao invs de comear pelas diferenas
Descobriu que esto mais prximos do que
imaginavam?
129
RESOLVENDO CONFLITOS
Confronto construtivo (Intel)
Se voc tem uma forte opinio que uma pessoa est propondo
uma soluo errada tecnicamente, voc obrigado a trazer isso
tona, mesmo que seja o seu chefe
Discordo e compromisso (Intel)
Uma vez tomada uma deciso, todos precisam abra-la e
seguir em frente
Eu discordo, mas eu vou ajudar mesmo que no concorde
130
SUMARIZANDO
SCRUM
O produto dividido em um conjunto de partes gerenciveis e
inteligveis.
Requisitos instveis no impedem o progresso.
Toda a equipe tem viso de tudo e consequentemente a comunicao
da equipe melhorada.
Os clientes recebem a entrega dos incrementos no tempo certo, alm
do feedback de como o produto funciona.
131
PERGUNTA
132
PERGUNTA
133
134
PROGRAMAO EM PARES
135
PROGRAMAO EM PARES
136
PROGRAMAO EM PARES
137
PROGRAMAO EM PARES
138
AVALIAO DA PROGRAMAO
EM PARES
PP acelera quando a complexidade da tarefa
pequena
PP eleva a qualidade quando a complexidade alta
Curiosamente, o cdigo tambm fica mais legvel
Mais esforo do que na programao solo?
Compartilhamento e conhecimento
Idiomas de programao, truques em ferramentas,
processos, tecnologias...
Muitos times prope trocar os pares por tarefa
139
140
PERGUNTA
Qual expresso sobre Programao em Pares
VERDADEIRA?
141
PERGUNTA
Qual expresso sobre Programao em Pares
VERDADEIRA?
142