com
http://www.candidatoreal.com
Sum
ario
I Fundamentos de Computac
ao 16
1 Arquitetura e Organiza c
ao de Computadores 17
1.1 Conceitos Basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 Estrutura e Funcionamento da CPU . . . . . . . . . . . . . . . . 18
1.2.1 Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3 Conjunto de Instrucoes . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Unidade de Controle . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Modos de Enderecamento . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Organizac
ao de Mem oria . . . . . . . . . . . . . . . . . . . . . . . 26
1.7 Desempenho do computador . . . . . . . . . . . . . . . . . . . . . 28
1.7.1 Tempo de execuc ao de um programa . . . . . . . . . . . . 29
1.7.2 Desempenho da CPU . . . . . . . . . . . . . . . . . . . . 29
1.7.3 Programas para medir desempenho . . . . . . . . . . . . . 30
1.7.4 Comparando desempenho . . . . . . . . . . . . . . . . . . 30
1.7.5 Lei de Amdahl . . . . . . . . . . . . . . . . . . . . . . . . 31
2 Componentes de um Computador 33
2.1 Principais componentes de Hardware . . . . . . . . . . . . . . . . 34
2.1.1 Discos Rgidos . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.2 Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.1.3 Mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.4 Placa de rede . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.1.5 Impressora . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.6 Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 Aritmetica Computacional 39
3.1 Numeros Com Sinal e N umeros Sem Sinal . . . . . . . . . . . . . 39
http://www.candidatoreal.com
1
http://www.candidatoreal.com
4 Sistemas Operacionais 44
4.1 Introduc
ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Conceitos B asicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.1 Multiprogramac ao . . . . . . . . . . . . . . . . . . . . . . 46
4.2.2 Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.3 Interrupcoes . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2.4 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 Escalonamento de Processos . . . . . . . . . . . . . . . . . . . . . 49
4.4 Entrada e Sada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.1 Camadas do subsistema de Entrada e Sada . . . . . . . . 51
4.5 Gerencia de Mem oria . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.6 Sistemas de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.6.1 Conceitos b asicos sobre arquivos . . . . . . . . . . . . . . 54
4.6.2 Implementacao de arquivos . . . . . . . . . . . . . . . . . 56
4.6.3 Cache de Sistema de Arquivos . . . . . . . . . . . . . . . 57
4.6.4 Gerenciamento do espaco livre . . . . . . . . . . . . . . . 58
4.6.5 Diretorios . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.6.6 Implementacao de diret orios . . . . . . . . . . . . . . . . . 61
4.7 Sistemas Operacionais Distribudos . . . . . . . . . . . . . . . . . 61
4.7.1 Estruturac ao de Sistemas Distribudos . . . . . . . . . . . 63
II L
ogica de Programac
ao 83
6 Orientac
ao a Objetos 84
6.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
http://www.candidatoreal.com
2
http://www.candidatoreal.com
10 Metricas 118
10.1 Metricas de processo e aperfeicoamento de processo de software . 118
http://www.candidatoreal.com
3
http://www.candidatoreal.com
11 Testes 127
11.1 Teste de caminho b asico . . . . . . . . . . . . . . . . . . . . . . . 127
11.2 Teste de estrutura de controle . . . . . . . . . . . . . . . . . . . . 129
11.2.1 Teste de condic ao . . . . . . . . . . . . . . . . . . . . . . . 129
11.2.2 Teste de fluxo de dados . . . . . . . . . . . . . . . . . . . 130
11.2.3 Teste de ciclo . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.3 Teste caixa-preta . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
11.3.1 Metodos de teste baseados em grafo . . . . . . . . . . . . 131
11.3.2 Particionamento de equivalencia . . . . . . . . . . . . . . 131
11.3.3 An alise de valor limite . . . . . . . . . . . . . . . . . . . . 132
11.3.4 Teste de comparac ao . . . . . . . . . . . . . . . . . . . . . 132
11.3.5 Teste de matriz ortogonal . . . . . . . . . . . . . . . . . . 132
11.4 Teste de ambientes, arquiteturas e aplicac oes especializadas . . . 133
11.5 Estrategia de teste de software . . . . . . . . . . . . . . . . . . . 134
12 UML 136
12.1 Diagrama de caso de uso . . . . . . . . . . . . . . . . . . . . . . . 136
12.1.1 Ator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
12.1.2 Descric
ao do caso de uso . . . . . . . . . . . . . . . . . . . 137
12.2 Diagrama de classe . . . . . . . . . . . . . . . . . . . . . . . . . . 137
12.2.1 Associacoes de classe . . . . . . . . . . . . . . . . . . . . . 138
12.3 Diagramas de seq uencia . . . . . . . . . . . . . . . . . . . . . . . 140
12.4 Diagramas de colaborac ao . . . . . . . . . . . . . . . . . . . . . . 140
12.5 Diagramas de estado . . . . . . . . . . . . . . . . . . . . . . . . . 141
12.6 Diagramas de atividade . . . . . . . . . . . . . . . . . . . . . . . 143
12.7 Elementos auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . 144
12.8 Diagramas de componente . . . . . . . . . . . . . . . . . . . . . . 144
12.9 Diagramas de distribuic ao . . . . . . . . . . . . . . . . . . . . . . 144
13 Gerencia de Configura c
ao e Mudan cas 145
13.1 As Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
13.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
13.3 Papeis e Responsabilidades . . . . . . . . . . . . . . . . . . . . . 147
IV Linguagem de Programac
ao Java 155
15 Conceitos B asicos de Java 156
15.1 Pacotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
15.2 Modificadores de Acesso . . . . . . . . . . . . . . . . . . . . . . . 157
4
http://www.candidatoreal.com
15.3 Vari
aveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.4 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15.5 Express oes, Sentencas e Blocos . . . . . . . . . . . . . . . . . . . 160
15.6 Comandos de Controle de Fluxo . . . . . . . . . . . . . . . . . . 161
15.7 Classes Aninhadas . . . . . . . . . . . . . . . . . . . . . . . . . . 166
15.8 Tipos Enumerados . . . . . . . . . . . . . . . . . . . . . . . . . . 167
15.9 Anotacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
15.10Genericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
15.11Reflex
ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
17 Colec
oes 188
17.1 Interface Collection . . . . . . . . . . . . . . . . . . . . . . . . . . 189
17.2 Interface Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
17.3 Interface List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
17.4 Interface Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
17.5 Interface Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5
http://www.candidatoreal.com
21 Acessibilidade 224
21.1 Definic
ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
21.2 Princpios da acessibilidade . . . . . . . . . . . . . . . . . . . . . 224
21.3 Tecnicas de avaliac
ao de acessibilidade . . . . . . . . . . . . . . . 227
22 Padr
oes Web W3C 229
23 XML 233
23.1 O que e XML? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
23.2 Caractersticas do XML . . . . . . . . . . . . . . . . . . . . . . . 234
23.3 Comparac ao entre XML e HTML . . . . . . . . . . . . . . . . . . 234
23.4 Sintaxe basica do XML . . . . . . . . . . . . . . . . . . . . . . . 234
23.5 Conjunto de tags . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
23.6 NameSpaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
23.7 Gram atica de um documento XML . . . . . . . . . . . . . . . . 239
23.8 Tecnologias XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
23.9 Benefcios da linguagem XML . . . . . . . . . . . . . . . . . . . . 245
23.10Ferramentas de desenvolvimento . . . . . . . . . . . . . . . . . . 246
24 XSLT 247
24.1 O que e uma folha de estilo? . . . . . . . . . . . . . . . . . . . . 247
24.2 Comparac ao entre o CSS e XSL . . . . . . . . . . . . . . . . . . . 247
24.3 O que e o XSL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
24.4 O que e o XSLT? . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
24.5 Caractersticas do XSLT . . . . . . . . . . . . . . . . . . . . . . . 249
24.6 Declarando um documento XSL . . . . . . . . . . . . . . . . . . . 249
24.7 Elemento <xsl:template> . . . . . . . . . . . . . . . . . . . . . . 250
http://www.candidatoreal.com
6
http://www.candidatoreal.com
VI Redes de Comunicac
ao 270
27 Tecnicas B asicas de Comunica c
ao 271
27.1 Base Te orica da Comunicac ao de Dados . . . . . . . . . . . . . . 271
27.2 Taxa M axima de Dados em um Canal . . . . . . . . . . . . . . . 272
27.3 Sinais Digitais Binarios . . . . . . . . . . . . . . . . . . . . . . . 272
27.4 Transmiss ao em Banda Base . . . . . . . . . . . . . . . . . . . . . 273
27.5 Classificac
ao dos Sinais . . . . . . . . . . . . . . . . . . . . . . . . 273
27.6 Tecnicas de Codificac
ao de Linha . . . . . . . . . . . . . . . . . . 274
27.6.1 Codificacao NRZ . . . . . . . . . . . . . . . . . . . . . . . 274
27.6.2 Codificacao RZ . . . . . . . . . . . . . . . . . . . . . . . . 275
27.6.3 Codificacao AMI (Alternate Mark Invertion) . . . . . . . 275
27.6.4 Codificacao HDB-3 (High Density Bipolar with 3 Zero
Maximum Tolerance) . . . . . . . . . . . . . . . . . . . . 275
27.6.5 Codificacao Manchester . . . . . . . . . . . . . . . . . . . 276
27.7 Modulac ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
27.7.1 Modulac ao de Onda Contnua . . . . . . . . . . . . . . . . 277
27.7.2 Modulac ao de Pulsos . . . . . . . . . . . . . . . . . . . . . 279
27.8 Tecnicas de Multiplexac ao . . . . . . . . . . . . . . . . . . . . . . 280
27.8.1 FDM - Frequency Division Multiplexing . . . . . . . . . . 281
27.8.2 TDM - Time Division Multiplexing . . . . . . . . . . . . . 281
27.8.3 OFDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
27.8.4 WDM -Wavelength Division Multiplexing . . . . . . . . . 282
27.9 Protocolos de Acesso M ultiplo . . . . . . . . . . . . . . . . . . . . 283
http://www.candidatoreal.com
7
http://www.candidatoreal.com
31 O Modelo de Refer
encia OSI 314
32 Roteamento 316
32.1 Link State e Distance Vector . . . . . . . . . . . . . . . . . . . . 317
32.1.1 Vetor de Dist
ancias vs. Estado do Link . . . . . . . . . . 319
32.2 Protocolos de Roteamento . . . . . . . . . . . . . . . . . . . . . . 320
32.2.1 RIP - Routing Information Protocol . . . . . . . . . . . . 320
32.2.2 OSPF - Open Shortest Path First . . . . . . . . . . . . . 320
32.2.3 IGRP e EIGRP . . . . . . . . . . . . . . . . . . . . . . . . 321
8
http://www.candidatoreal.com
42 Camada de Aplica c
ao 364
42.1 Proxy Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
VII Ger
encia de Redes 366
43 O protocolo SNMP 367
http://www.candidatoreal.com
VIII Seguran
ca da Informac
ao 370
44 Polticas de Seguran ca de Informa c
ao 371
44.1 Polticas de Seguranca . . . . . . . . . . . . . . . . . . . . . . . . 371
44.2 Projeto de Seguranca . . . . . . . . . . . . . . . . . . . . . . . . . 372
44.3 Plano de Seguranca . . . . . . . . . . . . . . . . . . . . . . . . . . 372
44.4 Normas de Seguranca . . . . . . . . . . . . . . . . . . . . . . . . 373
44.4.1 ISO/IEC 17799 . . . . . . . . . . . . . . . . . . . . . . . . 373
9
http://www.candidatoreal.com
10
http://www.candidatoreal.com
11
http://www.candidatoreal.com
58 Normaliza c
ao 473
58.1 Aspectos desej
aveis em um bom projeto . . . . . . . . . . . . . . 473
http://www.candidatoreal.com
59 Transforma
cao do Modelo Conceitual 475
12
http://www.candidatoreal.com
XII Administra
cao de Bancos de Dados Relacionais 489
62 Ger
encia de Transa
coes 490
63 Controle de Concorr
encia 492
64 Ger
encia de Desempenho 494
66 Administra c
ao de Bancos de Dados SQL Server 506
http://www.candidatoreal.com
13
http://www.candidatoreal.com
XV Ger
encia de Projetos segundo PMBOK 525
69 Gerenciamento de Escopo 526
69.1 WBS e Definic
ao do Escopo . . . . . . . . . . . . . . . . . . . . . 526
14
http://www.candidatoreal.com
75 Gerenciamento da Comunica c
ao 547
75.1 Um mais sobre Planejamento da Comunicac
ao . . . . . . . . . . 547
http://www.candidatoreal.com
77 Gerenciamento da Integra c
ao 550
77.1 Ferramentas de Apoio `
a Integrac
ao . . . . . . . . . . . . . . . . . 550
15
http://www.candidatoreal.com
Parte I
Fundamentos de
Computa
c
ao
http://www.candidatoreal.com
16
http://www.candidatoreal.com
Captulo 1
Arquitetura e Organiza
cao
de Computadores
1.1 Conceitos B
asicos
Dois conceitos fundamentais no estudo dos sistemas de computac ao sao o de
Arquitetura e Organizacao de computadores. O termo arquitetura refere-se aos
atributos do ponto de vista do programador, e portanto, tem impacto direto
sobre sobre a execuc
ao l
ogica de um programa. O termo organizacao, refere-se
as unidades operacionais e suas interconex
` oes. Desta forma, uma mesma ar-
quitetura pode ser implementadas por meio de diferentes organizac
oes.
O ciclo de execuc
ao de cada uma das instruc oes de um programa e divi-
dido nos seguintes estados: (i)Calculo do Endereco de Instruc ao; (ii)Busca da
Instruc
ao (Instruction Fetch); (iii) Decodificac
ao da Instruc
ao; (iv)Calculo do
Endereco do Operando; (v)Busca do Operando (Operand Fetch); (vi)Execuc ao
http://www.candidatoreal.com
A estrutura b
asica de um computador e composta pelos seguintes compo-
nentes:
17
http://www.candidatoreal.com
(iii)Dispositivos de E/S;
(iv)Sistemas de Interconex
ao.
Esses componentes tambem possuem suas subdivis oes. A CPU por exemplo
se subdivide em: Unidade de Controle, Unidade L ogica e Aritmetica (ALU),
Registradores e por fim as Interconexoes da CPU. Cada um desses componentes
er
a melhor descrito posteriormente. Para interconectar dois ou mais dispositivos
em um sistema s ao utilizados os chamados barramentos. Os barramentos s ao
compostos por linhas que podem ser de Dados, Endereco ou Controle. Os
barramentos de controle podem ser utilizados por exemplo para controlar direito
de leitura ou escrita em mem oria ou E/S, interrupc
oes, confirmac
oes, rel
ogio
e reset. O projeto dos barramentos que comp oe um sistema s ao de grande
importancia no desempenho do sistema. Quest oes importantes no projeto de
barramentos sao:
(iv)Largura - n
umero de linhas;
18
http://www.candidatoreal.com
No ciclo de interrupc
ao, o conteudo do registrador PC dever ser salvo, para
que mais tarde a CPU possa retornar sua atividade normal depois de processar
a interrupc
ao. O conte udo do PC e transferido para MBR. A endereco de
mem oria reservado para guardar o valor de PC (ex: topo da pilha) e carregado
para MAR, e ent ao a unidade de controle solicita uma escrita na mem oria. Por
fim o PC e carregado com o endereco da rotina de interrupc ao, para que o no
proximo ciclo de instruc
ao seja feita a busca da instruc
ao apropriada. A figura
1.4 mostra o fluxo de dados do ciclo de interrupc ao.
19
http://www.candidatoreal.com
1.2.1 Pipelines
Como pudemos ver, um ciclo de instruc ao pode subdividido em etapas menores.
Uma divis ao comum e a baseada nos ciclos de busca, indireto, execucao e inter-
rupc
ao. A ideia da tecnica de pipeline e trabalhar as diversas etapas do ciclo
de instruc
ao de forma paralela, e n ao de forma serial, de forma aumentar o
20
http://www.candidatoreal.com
desempenho da CPU.
(2)DI - Decodificac
ao da Instruc
ao;
(3)CO - Calculo dos Enderecos dos Operandos;
Essa subdivisao busca fazer com que os tempos gastos em cada um dos 6
est
agios seja parecido. Se os 6 est
agios pudessem ser executados em paralelo, o
desempenho seria aproximadamente 6 vezes maior.
No entanto, podem existir conflitos de acesso ` a mem oria por parte dos
estagios e nem todas as instrucoes possuem os seis est
agios. Somam-se `a esses
dois problemas, a existencia de instrucoes de desvios, principais inimigas da
tecnica de pipeline. Para lidar com os problemas introduzidos pelas instrucoes
de desvio sao utilizadas tecnicas como:
M
ultiplos Fluxos (duplicac
ao de est
agios iniciais);
http://www.candidatoreal.com
Mem
oria de Laco de Repetic
ao (loop buffer );
Previs
ao de Desvio baseadas no opcode;
Previs
ao de Desvio baseadas em hist
orico (BTB - Branch Target Buffer,
tambem conhecida como BHT - Branch History Table).
21
http://www.candidatoreal.com
s
ao:
(i)C
odigo da operac
ao (opcode): especifica a operac
ao a ser efetuada;
(ii)Referencia `
a Operando Fonte: indica as entradas para a operac
ao;
(iii)Referencia ao operando Destino: A operac
ao pode produzir um resul-
tado;
(iv)Endereco da pr
oxima instruc
ao: Pode ser indicado implicitamente (ex:
registrador PC).
22
http://www.candidatoreal.com
As instruc
oes podem ser classificadas em:
(iv)Controle: instruc
oes de teste e desvio.
Os tipos de operac
oes mais comuns s
ao:
(iii)L
ogicas: and,or,shl/shr;
(iv)Convers
ao de Tipos: jmp,call,loop,int/into;
23
http://www.candidatoreal.com
Os quatro registradores b
asicos da unidade de controle s
ao:
O ciclo de busca ocorre no incio de cada ciclo de instruc ao, fazendo com
que a instruc
ao seja obtida na mem oria no endereco indicado pelo registrador
PC, e armazenada no registrador IR. Uma vez completada essa etapa, pode ser
necess
ario que se busquem operandos para a instruc ao. Isso e realizado no ciclo
de indireto. Ap os o termino do ciclo de execuc ao, e feita uma checagem para
determinar se ocorreu alguma interrupc ao, e neste caso o conte udo de PC e
salvo em mem oria e PC e carregado com um endereco da rotina de interrupc ao
apropriada. Os ciclos de busca, indireto e de interrupc ao envolvem um n umero
pequeno e fixo de microoperac oes. Isso nao ocorre nos ciclos de execucao. Em
uma m aquina com N c odigos de instruc
ao podem existir N diferentes seq uencias
de microoperacoes para o ciclo de execucao.
Todas as microoperac
oes caem em uma das seguintes categorias:
mento);
(iii)Transferencia de dados de interface externa para registrador;
(iv)Execuc
ao de operac
oes l
ogicas e aritmeticas, usando registradores como
entrada e sada.
24
http://www.candidatoreal.com
Indireto: o campo de endereco aponta para uma posicao de mem oria que
contem o endereco de mem oria do operando. Sua principal desvantagem
e a necessidade de dois acessos ` a memoria. A vantagem em relac ao ao
modo de enderecamento direto e o aumento do espaco de enderecamento,
que passa a ser igual 2n onde n e o tamanho da palavra;
25
http://www.candidatoreal.com
1.6 Organizac
ao de Mem
oria
Um sistema de computador tpico e equipado com uma hierarquia de subsis-
temas de mem oria, algumas internas (diretamente acessveis pelo processador,
como registradores, cache e mem oria principal) e outras externas (acessveis
pelo processador por meio de um m odulo de E/S, como disco e cdrom). As
caractersticas fundamentais de um sistema de mem oria s
ao:
1. Localizac
ao - processador, interna (principal), externa (secund
aria);
2. Capacidade - tamanho da palavra e n
umero da palavra;
3. Unidade de Transferencia - palavra, bloco;
4. Metodo de Acesso - seq
uencial, direto, aleat
orio, associativo;
5. Desempenho - tempo de acesso, tempo de ciclo e taxa de transferencia;
6. Tecnologia - semicondutores, magnetica,
optica, magneto-
optico;
http://www.candidatoreal.com
Quanto ao metodo de acesso das mem orias internas, vale a pena destacar os
acessos aleat
orio e associativo. No acesso aleat orio, cada unidade enderec avel
possui um mecanismo de enderecamento u nico e fisicamente conectado a ela. E
o metodo utilizado na mem oria principal. O esquema associativo consiste em
um tipo de mem oria de acesso aleat
orio que possibilita comparar simultanea-
mente um certo n umero de bits de uma palavra com todas palavras da mem oria
(totalmente associativo) ou com um conjunto de palavras de mem oria (associa-
tivo por conjunto). O metodo associativo e empregado pelas mem orias cache.
26
http://www.candidatoreal.com
As restric
oes de um projeto de mem
oria podem ser resumidos por 3 quest oes:
Capacidade, Velocidade e Custo. Neste cen ario, valem as seguintes relac
oes:
A organizac
ao hierarquica dos sistemas de mem oria visa lidar com o dilema
imposto pelas relac
oes apresentadas. A hierarquia e elaborada de forma que as
a medida que nela descemos as seguintes relacoes s
ao tambem v alidas:
A Mem oria Expandida emprega uma tecnologia mais lenta que a mem orias
principais. Ela funciona como um ramo lateral a mem oria principal, n
ao se
http://www.candidatoreal.com
A utilizac
ao de mem orias cache tem por objetivo proporcionar uma veloci-
dade de acesso pr oxima a velocidade de acesso aos registradores, no entanto
oferecendo uma capacidade maior do que o conjunto de registradores, e custo
n
ao muito superior ao da mem oria principal. Os principais elementos de projeto
de mem orias cache sao:
27
http://www.candidatoreal.com
ii Func
ao de Mapeamento - direto, associativo, associativo por conjuntos;
iii Algoritmo de Substituic
ao - LRU, FIFO, LFU, Aleat
orio;
v Tamanho da Linha;
vi N
umero de Mem
orias Cache - um ou dois nveis, unificada/separada.
O terceiro elemento e o n
umero de mem orias cache do sistema. Atualmente,
a organizacao mais comuns e baseada em 2 nveis, um interno ao processador
(L1) e outro externo (L2). Originalmente, a maioria dos projetos de cache
inclui uma u nica memoria cache, que armazenava tanto instruc oes como da-
dos. Recentemente, tornou-se comum a utilizac ao de mem orias separadas para
http://www.candidatoreal.com
instruc
oes e dados. Em processadores modernos que se valem de tecnicas de
busca antecipada de instrucao (Pipeline), tecnicas de Cache Separadas s ao mais
eficientes que as de Cache Unificada.
28
http://www.candidatoreal.com
29
http://www.candidatoreal.com
Programas reais;
N
ucleos ou kernels (pedacos de programas reais);
Toy Benchmarks (programas com 10 a 100 linhas de c
odigo que produzem
um resultado conhecido a priori);
Benchmarks sinteticos (similar em filosofia aos n
ucleos, tentam casar a
freq
uencia media de operac
oes de um grande conjunto de programas).
30
http://www.candidatoreal.com
Computador A Computador B
Programa 1 (s) 1 10
Programa 2 (s) 1000 100
Total (s) 1001 110
1
Media Aritmetica = Tempo (i,n) = (1.4)
n
n
Media Harm
onica = Taxa (i,n) = Pn 1 (1.5)
i=1 T axai
v
u n
uY
Media Geometrica = Tempo Normalizado (i,n) = t
n
T normalizadoi (1.6)
i=1
Alem das media, existem ainda outras medidas de desempenho. Uma das
alternativas e a metrica MIPS (million instruction per second), que e dada por
um das seguintes express oes:
N
umero de instrucoes
MIPS =
Tempo de execucao x 106
Freq
uencia de Clock
=
CPI 106
Existem problemas com o uso da metrica MIPS. Ela especifica a taxa de
execucao de instruc
oes, mas n
ao considera a capacidade de executar mais ou
menos trabalho. Portanto, n ao podemos comparar m aquinas com conjuntos de
instruc
oes diferentes. Outro problema e que os resultados obtidos variam en-
tre programas no mesmo computador, o que impede que determinada m aquina
tenha um MIPS caracterstico.
MFLOPS = (1.7)
ao x 106
Tempo de execuc
Uma operac ao de ponto flutuante pode ser uma operac
ao de adic
ao, sub-
trac
ao, multiplicac
ao ou divis
ao aplicada a operandos expressos em precisao
simples ou dupla.
31
http://www.candidatoreal.com
32
http://www.candidatoreal.com
Captulo 2
Componentes de um
Computador
O computador est
a organizado em dois componentes que s
ao:
33
http://www.candidatoreal.com
Os slots s
ao respons
aveis por ligar os perifericos aos barramentos e suas
velocidades e largura de banda s
ao correspondentes as dos seus respectivos bar-
ramentos. Na placa-m ae s
ao encontrados varios slots para encaixe de placas
(vdeo, som, rede, modem, etc.). Alguns exemplos de slots: ISA, PCI, AGP,
PCI Express, etc.
34
http://www.candidatoreal.com
A descric
ao de cada um dos termos da soma e a seguinte:
35
http://www.candidatoreal.com
2.1.2 Teclado
O teclado e o principal periferico de entrada de dados utilizado na integrac
ao
direta de usu
arios com o computador. O princpio de operacao do teclado e bas-
tante simples: gerar um smbolo para cada tecla pressionada. Mecanicamente,
um teclado pode ser visto como uma matriz de i linhas e j colunas as quais
entram em contato quando uma tecla e pressionada. A cada elemento i,j da
matriz correspondente um caractere.
36
http://www.candidatoreal.com
2.1.3 Mouse
O mouse e um periferico de entrada que historicamente se juntou ao teclado
como auxiliar no processo de entrada de dados, especialmente em programas
com interface grafica. O mouse tem como func ao movimentar o cursor (apon-
tador) pela tela do computador. O formato mais comum do cursor e uma seta,
contudo, existem opcoes no sistema operacional e softwares que permitem per-
sonalizarmos o cursor do mouse.
Existem modelos com um, dois, tres ou mais bot oes cuja funcionalidade
depende do ambiente de trabalho e do programa que est
a a ser utilizado. Clara-
mente, o bot
ao esquerdo e o mais utilizado.
O mouse original possua dois discos que rolavam nos eixos X e Y e tocavam
diretamente na superfcie. O modelo mais conhecido de rato e provavelmente o
mouse baseado em uma esfera, que roda livremente, mas que na pr atica gira dois
discos que ficam em seu interior. O movimento dos discos pode ser detectado
tanto mecanicamente quanto por meio otico.
moveis. De modo muito simplificado, eles tiram fotografias que sao comparadas
e que permitem deduzir o movimento que foi feito.
37
http://www.candidatoreal.com
2.1.5 Impressora
As impressoras sao dispositivos de sada que tem por finalidade imprimir em
papel ou filme pl
astico os resultados do processamento. Da mesma forma que
os monitores, a imagem impressa e resultado de muitos pontos impressos indi-
vidualmente que no conjunto formam o texto ou a imagem desejados. Tambem
de forma semelhante aos monitores, as impressoras evoluram a partir de dis-
positivos que imprimiam apenas caracteres em uma u nica cor para as modernas
impressoras capazes de reproduzir imagens sofisticadas, de alta resoluc
ao gr
afica,
em milhares de cores. As impressoras s ao classificadas em:
primir gr
aficos. Na impress ao de textos, os caracteres s
ao impressos como
pontos, que em determinada configurac ao formam a imagem gr afica do
caractere a ser impresso. Quando se utiliza uma impressora gr afica para
imprimir texto, existe a possibilidade de utilizar um grande n umero de
diferentes fontes graficas, definidas por software.
2.1.6 Monitor
38
http://www.candidatoreal.com
Captulo 3
Aritm
etica Computacional
3.1 N
umeros Com Sinal e N
umeros Sem Sinal
Existe uma grande variedade de opc
oes para representar os n
umeros inteiros
com ou sem sinal. Apenas quatro se destacam: sinal e amplitude/magnitude
(S + M ), complemento de 1, complemento de 2 e notac
ao em excesso (biased ).
3.1.2 Complemento de 1
Neste sistema de representac ao o bit mais a esquerda representa o sinal: 0 (zero)
para indicar o valor positivo e 1 (um) para indicar o valor negativo. Para os
n
umeros positivos, os n-1 bits representam o m odulo. O simetrico de um n
umero
positivo e obtido pelo complemento de todos os seus dgitos (trocando 0 por 1
e vice-versa) incluindo o bit de sinal. A amplitude ou faixa de representac ao
para n bits e [(2n1 1); 2n1 1]. Por exemplo, para n = 8 a faixa de
representacao e [127; 127]. Neste sistema o zero possui duas representac oes,
http://www.candidatoreal.com
3.1.3 Complemento de 2
Neste sistema de representac
ao o bit mais a esquerda representa o sinal: 0 (zero)
para indicar o valor positivo e 1 (um) para indicar o valor negativo. Para os
numeros positivos, os bits restantes representam o m odulo. A amplitude ou
ao para n bits e [(2n1 ); 2n1 1]. Por exemplo, para
faixa de representac
n=8 a faixa de representac
ao e [128; 127]. Este sistema possui representac ao
assimetrica, o n
umero de representacoes negativas e maior do que a positiva.
Este sistema o zero possui uma u nica representac
ao, por exemplo, n=4 (0000).
39
http://www.candidatoreal.com
3.1.4 Nota
cao em excesso
Neste sistema de representac ao o bit mais a esquerda representa o sinal: 1
(um) para indicar o valor positivo e 0 (zero) para indicar o valor negativo. A
amplitude ou faixa de representac ao para n bits e [(2n1 ); 2n1 1]. Por
exemplo, para n=8 a faixa de representac ao e [128; 127]. Neste sistema cada
umero inteiro corresponde ao valor desejado acrescido de um excesso de 2n1 ,
n
onde n pode ser 4, 5, 7, 8, 16, etc.
Este sistema tem uma vantagem em relac ao aos outros sistemas apresenta-
dos anteriormente: o valor em bin ario com todos os bits a 0 (zero) representa o
menor valor inteiro, que este tenha sinal ou n ao, e o mesmo se aplica ao maior
valor em binario, i.e., com todos os bits 1: representa o maior inteiro, com ou
sem sinal.
Bin
ario (4 bits) S+M C1 C2 Excesso de 8 (n=4)
0000 +0 +0 0 -8 (0 - 8)
0001 1 1 1 -7 (1 - 8)
0010 2 2 2 -6 (2 - 8)
0011 3 3 3 -5 (3 - 8)
0100 4 4 4 -4 (4 - 8)
0101 5 5 5 -3 (5 - 8)
0110 6 6 6 -2 (6 - 8)
0111 7 7 7 -1 (7 - 8)
1000 -0 -7 -8 0 (8 - 8)
1001 -1 -6 -7 1 (9 - 8)
http://www.candidatoreal.com
1010 -2 -5 -6 2 (10 - 8)
1011 -3 -4 -5 3 (11 - 8)
1100 -4 -3 -4 4 (12 - 8)
1101 -5 -2 -3 5 (13 - 8)
1110 -6 -1 -2 6 (14 - 8)
1111 -7 -0 -1 7 (15 - 8)
40
http://www.candidatoreal.com
3.2 Adic
ao e Subtra
cao
Numa soma os bits s ao somados um a um da direita para a esquerda, com os
carries sendo passados para o pr oximo bit `a esquerda. A operacao de sub-
trac
ao usa a adic
ao. O subtraendo e simplesmente negado antes de ser somado
ao minuendo. Lembre-se que a m aquina trata com numeros representados em
complemento a 2. O exemplo a seguir mostra as operac oes de soma (6 + 7) e
subtrac
ao (7 6) (complemento 2) bit a bit entre dois n
umeros representados
com 4 dgitos binarios.
7 = 0111
6 = 0110
13 = 1101 (soma)
1 = 0001 (subtrac
ao)
3.3 Operac
oes L
ogicas
Os computadores manipulam palavras, mas e muito u til, tambem, manipular
campos de bits dentro de uma palavra ou mesmo bits individuais. O exame
de caracteres individuais (8 bits) dentro de uma palavra e um bom exemplo
dessa necessidade. Assim, as arquiteturas de conjuntos de instruc oes incluem
instruc
oes para manipulacao de bits.
http://www.candidatoreal.com
41
http://www.candidatoreal.com
3.4 Construc
ao de uma Unidade L
ogica Aritm
etica
A ALU (Arithmetic and Logic Control) e a parte central do hardware de uma
CPU. Ela e respons
avel por realizar operac
oes aritmeticas e l
ogicas b
asicas, e
pode ser implementada com quatro componentes: AND, OR, INVERTER e
MULTIPLEXOR (3.4).
Entrada Sada
a b carry in soma carry out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
As sadas soma e carry out s
ao:
42
http://www.candidatoreal.com
Somar os n
umeros;
Normalizar o resultado;
Arredondar o resultado para o n
umero m
aximo de casas permitidas.
Um hardware para somar n umeros de ponto flutuante tem que fazer as mes-
mas operac
oes com numeros binarios. Vejamos um exemplo:
Exemplo: Somar os n umeros 0.5 e -0.4375 em bin
ario e apresente com 4 bits
de precis
ao; trunque o resultado na fase de arredondamento.
4. Arredondamento
http://www.candidatoreal.com
O n
umero final est
a OK.
43
http://www.candidatoreal.com
Captulo 4
Sistemas Operacionais
4.1 Introduc
ao
O sistema operacional e uma camada de software colocada entre o hardware
e os programas que executam tarefas para os usu arios. O sistema operacional
e responsavel pelo o acesso aos perifericos, ou seja, sempre que um programa
necessita de algum tipo de operac
ao de entrada e sada, ele solicita ao sistema
operacional.
44
http://www.candidatoreal.com
pela interface por meio da qual o usu ario acessa os servicos do sistema opera-
cional. Essa interface e formada pelas chamadas de sistema e pelos programas
de sistema.
N
umero de usu
arios
Monousu arios: projetados para suportar um u
nico usu
ario. Exemp-
los de desse tipo de sistema s
ao o MS DOS, Windows 3x, Windows
9x, etc;
Multiusu
arios: projetados para suportar v
arias sess
oes de usu
arios.
Exemplos desse sistema s
ao Windows NT, UNIX, etc;
N
umero de tarefas
45
http://www.candidatoreal.com
Sistemas Mainframes;
Sistemas desktop;
Sistemas distribudos;
Sistemas handheld;
Sistemas paralelos.
4.2 Conceitos B
asicos
4.2.1 Multiprogramac
ao
A multiprogramac ao torna mais eficiente o aproveitamento dos recursos do com-
putador. Isso e conseguido por meio da execuc ao simult
anea de varios progra-
mas. Em um sistema multiprogramado diversos programas s ao mantidos na
memoria ao mesmo tempo.
4.2.2 Processo
Um processo pode ser definido como um programa em execuc ao. O processo e
considerado um elemento ativo, pois altera o seu estado `
a medida que executa
um programa. E o processo que realiza as chamadas de sistema.
No estado New um novo processo e criado. Apos ser criado, o processo entra
em um ciclo de processador. Ele precisa do processador para executar, mas o
processador podera estar ocupado com outro processo, ele dever a esperar. Di-
versos processos podem estar no nesse mesmo estado. Nesse caso, e necess ario
manter uma fila com os processos aptos a ganhar o processador. Essa fila e
chamada de fila de aptos (ready queue). No estado New, o sistema operacional
46
http://www.candidatoreal.com
O processo fica no estado Blocked ate ser atendido. Com isso, o processador
fica livre. O sistema operacional seleciona outro do processo da fila de aptos
para receber o processador. O estado Exit indica que o processo terminou sua
execucao ou foi abortado.
4.2.3 Interrup
coes
O mecanismo de interrupc ao constitui a base de operac
ao de um sistema mul-
tiprogramac ao. O mecanismo de interrupc ao permite que o controlador de
periferico chame a atenc ao do processador. A func ao basica do controlador
de periferico e conectar o dispositivo em questao ao processador.
47
http://www.candidatoreal.com
Interrupc
oes de software, tambem chamadas de traps, s ao causadas pela ex-
ecuc
ao de uma instruc ao especfica para isso. O efeito e semelhante a uma
chamada de sub-rotina, pois o pr oprio programa interrompido e quem gera a
interrupc
ao. O maior uso para interrupc oes de software e a implementac ao
de chamadas de sistemas, por meio das quais os programas solicitam servicos
ao sistema operacional. N ao e possvel desabilitar as interrupc
oes de software,
mesmo porque n ao e necess
ario.
4.2.4 Threads
Uma thread nada mais e que um fluxo de execuc
ao. Na maior parte das vezes,
cada processo e formado por um conjunto de recursos mais uma u
nica thread.
48
http://www.candidatoreal.com
Filas de Prioridades s
ao a base das polticas de escalonamento nos sistemas
operacionais modernos. A cada processo e associada uma prioridade. O pro-
cesso de maior prioridade e quem toma a posse do processador no momento
oportuno. Uma variante dos algoritmos de prioridades pura, s ao os os algo-
ritmos de Prioridade com Preempc ao. Neste esquema, um processo da fila de
prontos que tenha prioridade maior que o processo em execuc ao pode tomar
49
http://www.candidatoreal.com
O escalonador respons
avel por determinar qual processo receber
a o direito de
executar e chamado Escalonador de Curto Prazo. Existem tambem os escalon-
adores de Longo e Medio Prazo. O escalonador de Medio Prazo e parte por
exemplo do processo swapper e esta intimamente ligado a gerencia de mem oria,
enquanto o escalonador de longo prazo determina quando um processo novo
e de fato admitido no sistema para disputa dos recursos. E o escalonador de
longo prazo quem determina o grau de multiprogramac ao do sistema e tambem
e conhecido como Job Scheduller.
Interrupc
oes: Os perifericos chamam a atenc ao do processador atraves
de um sinal de hardware. Cabe ao processador identificar, priorizar e
mascarar as interrupc
oes geradas pelos perifericos;
Acesso Direto ` a Mem oria (DMA): Em situac oes em que o volume de dados
e muito grande, utiliza-se esta tecnica para permitir que perifericos tenham
acesso direto a mem oria sem a necessidade da intermediac ao por parte do
processador.
O localizac
ao dos perifericos do ponto de vista da arquitetura do sistema
pode ser feita de basicamente de duas maneiras: Mapeamento em Mem oria e
50
http://www.candidatoreal.com
51
http://www.candidatoreal.com
4.5 Ger
encia de Mem
oria
Umas das funcoes fundamentais de um sistema operacional moderno e realizar a
gerencia da mem oria principal do computador de forma permitir que os diversos
processos executem de forma eficiente e protegida. Quando o assunto e gerencia
de mem oria, dois conceitos b
asicos s
ao os de mem oria l
ogica e mem
oria fsica. Os
programas fazem referencia ` a enderecos l
ogicos que no momento da execuc ao s
ao
traduzidos em um endereco real chamado endereco fsico. As primeiras tecnicas
de traduc
ao de enderecos eram baseadas em registradores de base e limites.
52
http://www.candidatoreal.com
Na tecnica de paginac
ao pura, o processo n ao precisa mais ocupar um tre-
cho contguo de mem oria, no entanto, ainda e necessario que todas as pagina
de um processo estejam carregadas na mem oria no momento da execuc ao. Uma
evoluc
ao do esquema de paginacao e a tecnica de Mem oria Virtual. Mem oria
Virtual consiste em um esquema de paginac ao sob demanda, no qual somente
as p
aginas necessarias para a execuc
ao de um processo s ao carregadas para a
http://www.candidatoreal.com
mem oria.
53
http://www.candidatoreal.com
1. Alocac
ao de uma p
agina fsica;
2. Localizac
ao da P
agina Fsica no Disco;
3. Leitura da P
agina no Disco;
4. Atualizac
ao da Tabela de P
aginas;
FCFS: Escolhe a p
agina que est
a a mais tempo na mem
oria;
Otimo: Escolhe a p
agina que vai ser acessada mais remotamente no futuro
(n
ao e implementavel);
O Trashing e a situac
ao em que um processo possui poucas p
aginas fsicas
e o tempo gasto em page-faults e muito alto, predominando no tempo total de
processamento. Uma forma de solucionar este problema e utilizar a tecnica de
swap para permitir que o processo possa executar de forma satisfat
oria.
4.6.1 Conceitos b
asicos sobre arquivos
Um arquivo e um recipiente no qual dados s ao armazenados. Em geral, cada
arquivo contem um conjunto de dados que possui algum significado pr atico para
o usuario ou para o sistema. Um arquivo pode conter um programa execut avel,
um m odulo de um programa fonte, um texto, uma figura, etc. Cada arquivo e
identificado por um nome, o qual permite que o usu ario faca referencias a ele.
Alem do nome, cada arquivo possui uma serie de outros atributos que s ao man-
tidos pelo sistema operacional como tipo de conte udo, tamanho, data e hora
do ultimo acesso, data e hora da u
ltima alterac
ao, lista de usu arios que podem
54
http://www.candidatoreal.com
adas a partir de 0 (ou a partir de 1 em alguns sistemas), sendo que cada posic
ao
corresponde a um byte.
55
http://www.candidatoreal.com
4.6.2 Implementa
c
ao de arquivos
A forma basica de implementar arquivos e criar, para cada arquivo no sistema,
um descritor de arquivo. O descritor de arquivo e um registro no qual s ao
mantidas as informac oes a respeito do arquivo. Essas informac oes incluem os
seus atributos, alem de outros dados que nao s
ao visveis aos usu
arios, mas s
ao
necess
arios para o que o sistema operacional implemente as operac oes sobre os
arquivos.
56
http://www.candidatoreal.com
Uma soluc ao tpica e criar, para cada processo, uma Tabela de Arquivos
Abertos por Processo (TAAP). Cada entrada ocupada na TAAP corresponde a
um arquivo aberto pelo processo correspondente. No mnimo, a TAAP contem
em cada entrada as seguintes informac oes: posic
ao corrente no arquivo, tipo de
acesso (leitura ou leitura e escrita) e apontador para a entrada correspondente
na TDAA. A figura 4.4 mostra as tabelas TDAA e TAAP. Toda TDAA como
as TAAP devem ficar na mem oria do sistema operacional, fora do acesso dos
processos de usuario.
sas func
oes s
ao implementadas baseando-se em tres formas b asicas de alocac
ao
de arquivos: alocacao com areas contguas, alocacao encadeada e a alocac ao
indexada.
57
http://www.candidatoreal.com
func
ao, chamada de sistema ou operac
ao sobre arquivos. Entretanto, caches rep-
resentam um grande aumento no desempenho de qualquer sistema de arquivos,
pois o uso do disco tente a ser intenso em sistemas operacionais de prop osito
gerais. O objetivo do cache e manter na mem oria principal uma certa quanti-
dade de blocos do disco. Dessa forma, se algum bloco for requisitado para leitura
ou escrita, ele ser
a encontrado na memoria principal, evitando o acesso ao disco.
A forma basica de operacao e bem simples. Toda vez que um bloco de disco
e necess
ario para leitura e/ou escrita, a cache e pesquisada. Se o bloco estiver
na cache, essa c
opia e usada. Se o bloco nao estiver na cache, ele e lido do disco,
colocado na cache e ent ao utilizado.
Cada bit presente no mapa representa um bloco fsico do disco. Os bits sao
considerados numerados da direita para esquerda, isto e, o bit menos significa-
tivo do primeiro byte e o bit n
umero zero. Bit ligado indica bloco ocupado,
58
http://www.candidatoreal.com
Para alocar mais um bloco fsico para um arquivo, basta percorrer o mapa
de bits ate encontrar um bit zero. O bit e ent ao ligado para indicar que o
respectivo bloco agora esta ocupado. Quando um arquivo e destrudo e seus
blocos liberados, basta desligar os bits correspondentes. O mapa de bits deve
ser mantido na mem oria principal para que a busca seja r
apida.
O espaco livre em disco tambem pode ser gerenciado por meio de uma lista
contendo os n umeros de todos os blocos fsicos livres (Lista de Blocos Livres).
Como essa lista e grande no caso de um disco quase vazio, ela deve ser mantida
no pr oprio disco. Para acelerar o processo de alocac ao e liberac
ao de blocos
fsicos, alguns blocos da lista sao copiados para a mem oria principal. Logo, so-
mente ser a necessario acessar o disco quando todos os enderecos de blocos livres
copiados para a mem oria principal tiverem sido alocados. Ou ainda, quando
remoc oes de arquivos liberarem blocos fsicos em tal quantidade que alguns blo-
cos de enderecos tenham que ser escritos em disco. Alguns sistemas operacionais
atualizam periodicamente a lista de enderecos em disco para minimizar a cor-
rupc ao do sistema de arquivos em caso de falha no computador.
4.6.5 Diret
orios
http://www.candidatoreal.com
Os diret
orios s
ao as estruturas do sistema de arquivos que contem a informac ao
quais arquivos existem no disco. Um diret orio pode ser entendido como sendo
um conjunto de arquivos ou um conjunto de referencias a arquivos. Existem
diversas formas de estruturar os diret orios de um sistema. A mais simples e ter
um unico diretorio para o disco inteiro. Nesse caso, o diretorio corresponde a
uma lista de todos os (possivelmente milhares) arquivos do disco. Essa soluc ao,
conhecida como diret orio linear, e aceit
avel apenas para sistemas de arquivo
muito pequenos. Por exemplo, pode ser utilizada para discos flexveis de pe-
quena capacidade.
59
http://www.candidatoreal.com
usuario em questao.
60
http://www.candidatoreal.com
4.6.6 Implementa
c
ao de diret
orios
A forma mais simples de implementar diret orios e consider
a-lo como arquivos
especiais, cujo conteudo e manipulado pelo pr oprio sistema operacional. Dessa
forma, todo o mecanismo de alocac ao, liberac
ao e localizac
ao de blocos fsicos no
disco, disponvel para arquivos, tambem e usado para os diret orios. Diret orios
passam a ser arquivos cujo conte udo e definido pelo sistema operacional e cujo
acesso e controlado por parte do usuario.
Em qualquer solucao, cada diretorio nada mais e que uma tabela. Existem
diversas implementac
oes possveis para tabelas que podem ser usadas na im-
plementac
ao de um diretorio. Entre elas, destaca-se a lista n
ao ordenada, lista
ordenada e a tabela hash.
61
http://www.candidatoreal.com
Distribuic
ao inerente: algumas aplicac
oes s
ao distribudas por natureza.
Toler
ancia a falhas: em caso de falha de uma m
aquina, o sistema como
um todo pode sobreviver, apresentando apenas uma degradac ao de de-
sempenho.
E as desvantagens:
A rede de interconex
ao pode causar problemas ou n
ao dar vaz
ao a de-
manda.
u
nico espaco de enderecamento virtual compartilhado por todas as
CPUs).
Multicomputador: m aquinas que n
ao possuem mem oria compartil-
hada, isto e, cada processador possui sua mem
oria privada.
Barramento: um u nico cabo, rede, barramento ou outro meio que
conecte todas as maquinas. Analogia: TV a cabo.
Switch: existem cabos individuais conectando m
aquina a m
aquina,
com v
arios padr
oes possveis.
62
http://www.candidatoreal.com
Outra classificac
ao: Fortemente acoplado(Tightly Coupled): comunicac ao
r
apida entre os processadores (grande n
umero de bits por segundo). Fracamente
acoplado(Loosely Coupled): atraso para troca de mensagem entre m aquinas e
alto.
Com a criac
ao de novas arquiteturas de computadores, surgiram novas de-
mandas de software e, em especial, novas func
oes exigidas ao S.O. Pode-se con-
siderar como uma boa classificacao da evoluc
ao dos Sistemas Operacionais a
tabela abaixo. A tabela 4.1 apresenta uma comparac ao entre as caractersticas
dos S.O modernos
Gerac
ao Sistema Caracterstica Objetivo
1a SO Centralizado Gerenciamento de Processos Gerenciamento de
Gerenciamento de Mem oria recursos
Gerenciamento de E/S Mem oria estendida
Gerenciamento de Arquivos Virtualidade
2a SO de Rede Acesso Remoto Compartilhamento de
Troca de Informac oes recursos
Navegacao na rede Interoperabilidade
3a SO Distribudo Vis
ao global do Sistema de Vis
ao de computador
arquivos,
Unico em sistema
Espaco de nomes de M ultiplos
Tempo, Seguranca Computadores
Poder Computacional Transparencia
4a SO Cooperativo Aplicac
oes Distribudas Trabalho cooperativo
Aut
onomo Abertas e Cooperativas Autonomia
4.7.1 Estrutura
cao de Sistemas Distribudos
Estrutura
cao baseada na distribui
c
ao fsica
Dentre os varios modelos baseados da distribuic ao fsica, encontram-se o modelo
hier
arquico, o do cache de CPU, o usu ario servidor e o modelo de conjunto de
processadores.
No modelo hier arquico, os computadores s ao dispostos em uma rede sob a
forma de arvore, de maneira que quanto mais pr oximos estiverem da raiz, mais
potentes dever ao ser. O computador da raiz tratar a, de forma geral, do sistema
como um todo, enquanto que os computadores distantes da raiz tratar ao de
tarefas especficas e especializadas.
http://www.candidatoreal.com
63
http://www.candidatoreal.com
Estrutura
cao L
ogica
Modelo de processos:
Esses processos podem encapsular tanto elementos ativos com natureza, con-
sistindo dos programas referentes `as atividades do sistema e do usu
ario quanto
elementos naturalmente passivos correspondendo aos recursos e suas respecti-
vas operac
oes, confinados em gerenciadores de recursos. A comunicac
ao entre os
processos, implementada pelo sistema operacional, pode ocorrer de duas formas:
Modelo de objetos:
O modelo de objetos baseia-se no encapsulamento das v arias partes de um sis-
tema em elementos denominados objetos que s ao estruturados de forma a apre-
sentarem um conjunto de operac oes respons
aveis pelo seu comportamento. Para
conseguir acessar um objeto, um processo deve ter capacidade de faze-lo, usando
o conhecimento do nome do objeto e a posse da autorizac ao para cessar algu-
mas ou todas as suas operac oes. Cada objeto distribudo nao opera sozinho. A
princpio ele e construdo para trabalhar com outros objetos e, para isso, precisa
de uma especie de barramento. Tais barramentos fornecem infra-estrutura
para os objetos, adicionando novos servicos que podem ser herdados durante
a construcao do objeto, ou mesmo em tempo de execuc ao para alcancar altos
nveis de colaboracao com outros objetos independentes. CORBA e um exemplo
de barramento.
http://www.candidatoreal.com
64
http://www.candidatoreal.com
Captulo 5
Principais Processadores de
Mercado
Willamette
Os primeiros modelos de Pentium 4 eram baseados no n ucleo Willamette,
que tinha 8 KB de cache L1 para dados; 12 KB de cache L1 para instrucao;
256 KB de cache L2; trabalhava externamente a 400 MHz (100 MHz trans-
http://www.candidatoreal.com
ferindo quatro dados por pulso de clock); padr ao de pinagem soquete 423
e 478; clock interno de 1,30 a 2 GHz; suporte a instrucoes MMX (oferece
um modelo de execuc ao SIMD (Single Instruction Multiple Data, ou seja,
fluxo u
nico de instruc
oes e m
ultiplos de dados) simples, capaz de efetuar
processamentos de dados inteiros, empacotados em registros de 64 bits.
As instruc
oes MMX melhoraram a execuc ao das assim chamadas tarefas
multimdias, como codificar e decodificar vdeo), SSE (Streaming SIMD
Extensions) e SSE2; tecnologia de construcao de 180 nan ometro.
Northwood
Em seguida vieram os modelos de Pentium 4 baseados no n
ucleo North-
65
http://www.candidatoreal.com
wood. Este nucleo e cerca de 60% menor do que o nucleo Willamette dev-
ido ao seu processo de fabricac
ao de 130 nan
ometros. O nucleo Northwood
possui 8 KB de cache L1 para dados; 12 KB de cache L1 para instruc ao;
512 KB ou 2 MB de cache L2; barramento externo rodando a 400 MHz,
533 MHz ou 800 MHz (100 MHz, 133 MHz e 200 MHz transferindo quatro
dados por pulso de clock, respectivamente); clock interno de 1,60 a 3,4
GHz; suporte a instrucoes MMX, SSE e SSE2. Alguns modelos possuem
suporte a tecnologia Hyper-Threading.
Prescott
O n ucleo Prescott e construdo com tecnologia de 90 nanometros e uti-
lizado nos processadores Pentium 4 modernos. Ele pode ser encontrado
com 16 KB de cache L1 para dados; 12 KB de cache L1 para instruc ao;
512 KB, 1 MB ou 2 MB de cache L2; trabalha externamente a 533 MHz
ou 800 MHz (133 MHz e 200 MHz transferindo quatro dados por pulso
de clock, respectivamente); com clock interno de 2,26 a 3,80 GHz; suporte
as novas instruc
` oes MMX, SSE, SSE2 e SSE3. Alguns modelos possuem
suporte a tecnologia Hyper-Threading, XD, EM64T, SpeedStep (permite
que o sistema operacional ajuste o clock do processador, diminuindo-o ao
executar aplicativos que exigem menos poder e economizando energia) e
a VT (Virtualization Technology ), originalmente conhecida como Van-
derpool. A tecnologia VT permite que um processador funcione como se
fosse varios processadores trabalhando em paralelo de modo a permitir
que v arios sistemas operacionais sejam executados ao mesmo tempo em
uma mesma m aquina. Embora o clock de um Prescott seja o mesmo de
um Northwood, alguns softwares de teste mostraram que um Northwood e
ligeiramente mais veloz que um Prescott.
Prescott 2M
O Pentium 4 Extreme Edition foi lancado em novembro de 2003 e foi o
primeiro processador para desktop a possuir o cache L3 integrado, carac-
terstica esta presente apenas em processadores voltados para o mercado
corporativo.
Este processador possui 2 MB de cache L3 sendo acessado na mesma
frequencia de operacao interna do processador. Os primeiros modelos de
Pentium 4 Extreme Edition eram baseados no n ucleo Gallatin, que tinha
8 KB de cache L1 para dados; 12 KB de cache L1 para instruc ao; 512 KB
de cache L2 e 2 MB de cache L3; trabalhava externamente a 800 MHz
e 1066MHz (200 MHz ou 266 MHz transferindo quatro dados por pulso
http://www.candidatoreal.com
66
http://www.candidatoreal.com
Smithfield
Os processadores Pentium D e Pentium Extreme Edition da serie 800 s ao
baseados no n ucleo Smithfield. O n ucleo Smithfield consiste na verdade
em duas pastilhas de silcio do n ucleo Prescott montadas em um u nico
processador.
As principais caractersticas dos processadores Pentium D da serie 800 s
ao:
tecnologia de n
ucleo duplo; 16 KB de cache L1 de dados por n ucleo; 12 KB
de cache L1 de instrucao por n
ucleo; 2 MB de cache L2 (1 MB por n ucleo);
barramento externo de 800 MHz (200 MHz transferindo quatro dados por
pulso de clock), 533 MHz no caso do Pentium D 805 (133 MHz transferindo
quatro dados por pulso de clock); clock interno de 2,66 a 3,20 GHZ para
o Pentium D e 3,20 GHz para o Extreme Edition; suporte ` as instruc
oes
SSE3; soquete 775; processo de fabricac ao de 90 nm; tecnologia EM64T,
XD e SpeedStep (modelos 840 e 830); e tecnologia Hyper-Threading nos
processadores Pentium Extreme Edition. Os processadores Pentium D
n
ao tem esta tecnologia.
Presler
Os processadores Pentium D e Pentium Extreme Edition da serie 900 s ao
baseados no nucleo Presler.
As principais caractersticas dos processadores Pentium D e Pentium Ex-
treme Edition da serie 900 s ao: tecnologia de n ucleo duplo; 16 KB de
cache L1 de dados por n ucleo; 12 KB de cache L1 de instruc
ao por n
ucleo;
4 MB de cache L2 (2 MB por n ucleo); barramento externo de 800 MHz
(200 MHz transferindo quatro dados por pulso de clock) nos processadores
Pentium D ou 1.066 MHz (266 MHz transferindo quatro dados por pulso
http://www.candidatoreal.com
Pentium M
O Pentium M e o processador da Intel voltado para o mercado de notebooks e
utilizado pela plataforma Centrino. A plataforma Centrino da Intel e um con-
67
http://www.candidatoreal.com
Processador Pentium M
Intel Chipsets 855 ou 915
Rede Wireless Intel/PRO
Banias
Os primeiros modelos de Pentium M eram baseados no n ucleo Banias,
que tinha 32 KB de cache L1 de instruc oes e 32 KB de cache L1 de
dados; 1 MB de cache L2; trabalhava externamente a 400 MHz (100 MHz
transferindo quatro dados por pulso de clock); clock interno de 1,10 a
1,50GHz; suporte as instrucoes SSE2; tecnologia Enhanced SpeedStep;
tecnologia de construc
ao de 0, 13m; padr
ao de pinagem soquete 478 e
479.
Dothan
O nucleo Dothan e construdo com tecnologia de 90 nan
ometros e utilizado
nos processadores Pentium M modernos. Ele possui 32 KB de cache L1
de instruc
oes e 32 KB de cache L1 de dados; 2 MB de cache L2; trabalha
externamente a 400 MHz ou 533 MHz (100 MHz e 133 MHz transferindo
quatro dados por pulso de clock, respectivamente); clock interno de 1,10
a 2,26 GHz; suporte as instruc oes SSE2; tecnologia Enhanced SpeedStep,
Execute Disable (alguns modelos); padr ao de pinagem soquete 478 e 479.
Tamanho do cache L2
Clock interno
Clock do barramento externo
Essas diferencas fazem com que o Celeron seja mais barato e tenha um de-
sempenho menor do que os processadores Pentium II, Pentium III e Pentium
4, sendo, portanto, destinado para o mercado de usu arios domesticos ou para
aqueles que nao necessitam de grande poder computacional.
68
http://www.candidatoreal.com
O Celeron D e a vers
ao topo de linha dos processadores Celeron. Esse pro-
cessador e baseado no Pentium 4 com n ucleo Prescott e possui tecnologia de 65
e 90 nan
ometros.
69
http://www.candidatoreal.com
3945ABG.
Core 2 Duo
O Core 2 e a gerac
ao mais recente de processadores lancada pela Intel (os
primeiros modelos foram lancados oficialmente em 27 de julho de 2006). A
chegada do Core 2 significa a substituic
ao da marca Pentium, que estava sendo
usada pela companhia desde 1993. Os modelos mais comuns e conhecidos dessa
linha se chamam Core 2 Duo (com n ucleo duplo), que substitui o Pentium 4 e o
Pentium D, mas existe tambem um modelo Core 2 Quad (com n ucleo quadruplo)
e os modelos Core 2 Extreme (high end), que substitui o Pentium Extreme
70
http://www.candidatoreal.com
Edition.
A diferenca entre o Core 2 Duo e o Core 2 Extreme e que este ultimo tra-
balha com clocks mais elevados e tem o multiplicador de clock destravado, o
que permite fazer overclock alterando o multiplicador de clock do processador.
Cuidado para nao confundir o processador Core 2 Duo com o Core Duo. O
Core Duo (conhecido anteriormente pelo nome-c odigo Yonah) e o nome com-
ercial para um Pentium M com dois n ucleos de processamento construdo com
tecnologia de 65 nm. J
a o Core 2 Duo e o nome comercial para o processador de
nome-c odigo Merom (para notebooks) ou Conroe (para desktops), que utiliza a
nova microarquitetura Core da Intel.
O modelos Core 2 Duo possuem clock interno de 1,80 a 2,66 GHz, o Core 2
Quad possuiu clock interno de 2,40 GHz e o Core 2 Extreme 2,66 e 2,93 GHz.
5.1.4 Xeon
Em 1998 a Intel estabeleceu uma distinc ao entre seus processadores voltados
para o mercado de servidores e estac oes de trabalho dos voltados para o mer-
cado de usu arios domesticos. Desde ent ao, a Intel passou a incluir o termo
Xeon(pronuncia-se zon) no nome dos processadores voltados para o mer-
cado de servidores e estac
oes de trabalho. Esses processadores reconhecem mais
mem oria RAM, permitem trabalhar em ambiente multiprocessado (isto e, com
placas-mae com v arios processadores instalados sobre ela) e possui um desem-
71
http://www.candidatoreal.com
Pentium 4 Xeon
Este processador deveria se chamar Pentium 4 Xeon, mas a Intel optou pelo
nome Xeon. Como comentamos anteriormente, o Xeon e um processador voltado
para o mercado de servidores e estacoes de trabalho baseado no Pentium 4,
sendo, portanto, um processador Intel de 7a gerac
ao. Como vimos, os proces-
sadores anteriores da serie Xeon usavam a arquitetura Intel de 6a gerac
ao (a
mesma do Pentium Pro).
Xeon MP
Como ja explicamos, a diferenca entre o Xeon MP e o Xeon e a quantidade de
processadores suportados no modo de multiprocessamento simetrico: o Xeon
suporta ate dois processadores em uma mesma placa-mae, enquanto que o Xeon
MP suporta ate quatro processadores por barramento.
72
http://www.candidatoreal.com
Xeon N
ucleo Duplo (50xx e 7xxx)
A tecnologia de n ucleo duplo traz dois processadores inteiros dentro de um
mesmo inv olucro. Como os processadores Xeon de n ucleo duplo modelos 50xx
e 7xxx tem a tecnologia HyperThreading ? que simula a existencia de dois pro-
cessadores em cada n ucleo ? o sistema operacional reconhece cada processador
Xeon de nucleo duplo como sendo quatro processadores. Assim, em um servidor
com dois processadores Xeon de n ucleo duplo, o sistema operacional reconhecer
a
oito processadores (quatro n ucleos, dois por processador, e dois processadores
l
ogicos por n
ucleo).
Xeon N
ucleo Duplo (51xx)
Intel lancou recentemente uma nova serie de processadores Xeon (51xx) baseada
na nova microarquitetura Core, a mesma usada pelos processadores Core 2 Duo.
Esta nova serie era conhecida anteriormente por seu nome-c odigo, Woodcrest.
73
http://www.candidatoreal.com
5.1.5 Itanium
O projeto de processadores de 64 bits da Intel j
a se arrasta por muitos anos.
O primeiro processador lancado usando essa tecnologia foi o Itanium e recente-
mente a Intel lancou mais um processador IA-64, o Itanium 2.
J
a o Itanium 2 tem uma mem oria cache L1 de 32 KB, uma mem oria cache
L2 de 256 KB e uma mem oria cache L3 de 1,5 MB ou de 3 MB, dependendo
do modelo. Os mais atuais possuem uma cache L3 de 6, 8, 12, 18 ou 24 MB
dependendo do modelo. Seu barramento externo e de 128 bits, rodando a 400
ou 533 MHz. Possuem suporte a tecnologia Dual-Core, EM64T, VT.
74
http://www.candidatoreal.com
5.2 AMD
5.2.1 Sempron
O Sempron e o processador da AMD voltado para o mercado low-end, ou seja,
ele e destinado a usu
arios que n
ao precisam de grande poder computacional e
que estao mais preocupados com preco do que com desempenho. O concorrente
do Sempron e Celeron D da Intel.
Soquete 462
http://www.candidatoreal.com
75
http://www.candidatoreal.com
Soquete 754
Os processadores Sempron soquete 754 s ao na realidade processadores Athlon
64 com menos mem oria cache e sem as extens
oes de 64 bits, sendo que modelos
lancados mais recentemente passaram a contar com as extens oes de 64 bits.
Soquete AM2
Ao contrario dos processadores Sempron soquete 754, que trabalham apenas
na configurac
ao de um u
nico canal (single channel), os processadores Sempron
soquete AM2 podem utilizar a configurac ao de dois canais (dual channel), do-
brando a taxa de transferencia no acesso `a mem oria desde que voce use dois
ou quatro m odulos de memoria em seu micro. Lembre-se que os processadores
Sempron soquete 754 aceitam somente mem orias DDR, enquanto que os pro-
cessadores Sempron soquete AM2 aceitam somente mem orias DDR2.
concorrente
http://www.candidatoreal.com
5.2.2 Athlon 64
Os processadores mais novos da AMD encontrados no mercado atualmente s ao
baseados na arquitetura do Athlon 64, tambem conhecida como x86-64 ou ham-
76
http://www.candidatoreal.com
Soquete 754
Usado pelas primeiras vers oes de Athlon 64, alguns modelos de Sempron
e Turion 64. Seu controlador de mem oria usa somente um canal (single
channel), o que significa que o processador acessa a mem
oria a 64 bits;
Soquete 939
Usado pelos processadores Athlon 64, Athlon 64 FX, Athlon 64 X2 e o
Opteron. Seu controlador de mem oria usa dois canais (dual channel),
o que significa que o processador acessa `a mem oria a 128 bits, se dois
modulos de mem oria forem usados.
Soquete 940
Usado pelos primeiros processadores Athon 64 FX e pelo Opteron. Seu
controlador de mem oria usa dois canais (dual channel), o que significa que
o processador acessa a mem oria a 128 bits, se dois m
odulos forem usados
(ou um n umero par de m odulos de mem oria for usado). E necessaria a
utilizac
ao de mem
orias do tipo ECC;
Soquete AM2
http://www.candidatoreal.com
Soquete F
Este soquete de 1.207 pinos criado para os novos modelos do Opteron
tambem e usado pelos processadores Athlon 64 FX utilizados na plataforma
77
http://www.candidatoreal.com
Athlon 64
O Athlon 64 pode ser encontrado em vers
oes para o soquete 754, soquete 939 e
o novo soquete AM2. E pode ser encontrado com diferentes vers oes de n
ucleo
(90 nan
ometros ou 130 nanometros). O concorrente direto do Atlhon 64 e o
Pentium 4.
78
http://www.candidatoreal.com
de cache de L1 de instruc
oes e 64 KB de cache L1 de dados; 512 KB ou 1 MB
de cache de mem oria L2; barramento HyperTransport trabalhando a 800 MHz
(3,2 GB/s) ou a 1 GHz (4 GB/s). Esses clocks podem tambem ser referenciados
como 1.600 MHzou 2.000 MHz, respectivamente; configurac ao de mem oria
DDR dual channel nos modelos soquete 939 e AM2 (precisa de dois m odulos de
modulos de mem oria para usar este recurso); conjunto de instruc
oes SSE3 em
alguns modelos.
Athlon 64 X2
O Athlon 64 X2 e um Athlon 64 com tecnologia de n ucleo duplo, ou seja, ele
possui dois processadores dentro de um s
o. Todos os processadores Athlon 64
X2 s
ao encontrados para soquete 939 e AM2. O principal corrente do Athlon
64 X2 e o Pentium D Dual Core.
Athlon 64 FX
Originalmente a diferenca entre o Athlon 64 e o Athlon 64 FX era a quanti-
dade de mem oria cache L2 (512 KB no Athlon 64 vs. 1 MB no Athlon 64 FX)
e maior flexibilidade para overclock, j
a que ele vinha com o multiplicador de
clock destravado.
5.2.3 Turion 64
Lancado para ser o principal concorrente do Pentium M da Intel, o Turion 64 da
AMD e um processador de baixo consumo voltado para o mercado de notebooks.
79
http://www.candidatoreal.com
Turion 64 X2
O Turion 64 X2 e um Turion 64 com tecnologia de dois n
ucleos e com suporte as
memorias DDR2 na configuracao de dois canais (dual channel), o que significa
que o processador pode acessar a memoria a 128 bits.
80
http://www.candidatoreal.com
5.2.4 Opteron
O Opteron e o processador da AMD voltado para o mercado de servidores de
rede. Ele e baseado na arquitetura do Athlon 64. Os principais concorrentes
s
ao o Intel Xeon e Intel Itanium.
Soquete 939
Existem alguns modelos de Opteron da serie 1 para este soquete. Eles
n
ao passam de modelos de Athlon 64 ou de Athlon 64 X2 (se tiver dois
n
ucleos) com outro nome. Estes modelos trabalham com mem orias DDR
http://www.candidatoreal.com
comuns;
Soquete 940
Estes modelos necessitam mem orias DDR registradas(isto e, com buffer),
que e um tipo especialde memoria para servidores;
Soquete AM2
Existem alguns modelos de Opteron da serie 1 para este soquete. Eles
n
ao passam de modelos de Athlon 64 X2 com outro nome (porem com a
tecnologia de virtualizacao, n
ao presente no Athlon 64 X2). Estes modelos
trabalham com mem orias DDR2 comuns;
81
http://www.candidatoreal.com
Soquete F
Estes modelos trabalham com mem orias DDR2 registradas(isto e, com
buffer), que e um tipo especialde mem oria para servidores.
82
http://www.candidatoreal.com
Parte II
L
ogica de Programa
cao
http://www.candidatoreal.com
83
http://www.candidatoreal.com
Captulo 6
Orientac
ao a Objetos
6.1 Introduc
ao
A analise e o projeto orientados a objetos tem como meta identificar o melhor
conjunto de objetos para descrever um sistema de software. O funcionamento
deste sistema se da por meio do relacionamento e troca de mensagens entres os
objetos.
Na programac ao orientada a objetos, implementa-se um conjunto de classes
que definem os objetos presentes no sistema de software. Cada classe determina
o comportamento (definido nos metodos) e os estados possveis (atributos) de
seus objetos, assim como o relacionamento com outros objetos.
As linguagens de programac ao que d
ao suporte a orientac
ao a objetos s
ao:
Smaltalk, Perl, Python, Ruby, PHP, ColdFusion, C++, Object Pascal, Java,
JavaScript, ActionScript, Delphi e C#.
84
http://www.candidatoreal.com
2. Metodos
uma rotina que e executada por um objeto ao receber uma mensagem.
E
Os metodos determinam o comportamento dos objetos de uma classe e
s
ao an
alogos `
as func
oes ou procedimentos da programac
ao estruturada. O
envio de mensagens (chamado de metodos) pode alterar o estado de um
objeto.
3. Atributos
Os atributos s
ao os elementos que definem a estrutura de uma classe. Os
85
http://www.candidatoreal.com
atributos tambem sao conhecidos como vari aveis de classe, e podem ser
divididos em dois tipos b asicos: atributos de inst
ancia e de classe. Os
valores dos atributos de instancia determinam o estado de cada objeto.
Um atributo de classe possui um estado que e compartilhado por todos os
objetos de uma classe. Atributos de classe podem ser chamados tambem
de atributos est
aticos ou constantes.
As mensagens enviadas a um objeto (chamada de metodo) podem mudar
o valor de um ou mais atributos, alterando o estado de um objeto.
4. Classes
Uma classe e um modelo (prot otipo) que defini as vari
aveis (estado) e os
metodos (comportamento) comuns a todos os objetos do mesmo tipo. Na
classe s
ao definidas as vari
aveis e implementados os metodos. Os objetos
s
ao criados a partir de suas classes.
As classes nao s
ao diretamente suportadas em todas as linguagens de ob-
jetos, e n
ao s
ao necess
arias para que a linguagem seja orientada a objetos.
Alem dos metodos e atributos de uma classe, outros possveis membros
s
ao:
Construtor: define o comportamento no momento da criac ao de um ob-
jeto de uma classe; Destrutor: define o comportamento no momento da
destruic
ao do objeto de uma classe. Normalmente utilizado para liberar
recurso (mem oria) do sistema; Propriedade: define o acesso a um estado
do objeto; Evento: define um ponto em que o objeto pode chamar outros
procedimentos de acordo com seu comportamento e estado interno;
Obs.: Lembrar sempre que a classe define as caractersticas comuns e os
objetos s
ao inst
ancias dessa classe, com estado pr
opria.
5. Mensagens
Objetos se comunicam entre si por meio do envio de mensagens. Quando
um objeto A deseja que o objeto B realize um dos seus metodos (de B), o
objeto A envia uma mensagem para o objeto B. Algumas vezes, o objeto
que recebe a mensagem precisa de mais informac oes para saber exata-
mente o que fazer. Por exemplo, quando voce quer trocar as marchas de
uma bicicleta, deve-se indicar qual a marcha desejada. Esta informac
ao
acompanha a mensagem como um par ametro.
Assim, tres componentes fazem parte de uma mensagem:
o objeto para onde a mensagem e enderecada (bicicleta); o nome do
http://www.candidatoreal.com
6. Heranca
A heranca e um mecanismo que permite criar novas classes a partir de
classes j
a existentes, aproveitando-se das caractersticas existentes na classe
a ser extendida. Com a heranca e possvel criar classes derivadas (sub-
classes) a partir de classes bases (superclasses).
86
http://www.candidatoreal.com
classe podem invocar metodos que tem a mesma assinatura (nome, lista
de parametros e retorno), mas comportamentos distintos, especializado
para cada classe derivada, usando para tanto uma referencia a um objeto
do tipo superclasse.
A decisao sobre qual metodo deve ser selecionado, de acordo com o tipo da
classe derivada, e tomada em tempo de execuc ao por meio do mecanismo
de ligac
ao tardia. No caso do polimorfismo, e necessario que os metodos
tenham exatamente a mesma identificac ao, sendo utilizado o mecanismo
de redefinic
ao de metodos. A seguir um exemplo de polimorfismo.
87
http://www.candidatoreal.com
Note que, embora o metodo calcular tenha sido chamado duas vezes no in-
terior de mostrarCalculo, o comportamento apresentado variou de acordo
com a classe ao qual ele representava no momento.
http://www.candidatoreal.com
Os benefcios do polimorfismo s
ao: a clareza e manutenc
ao do c
odigo, a
divis
ao da complexidade e aplicac
oes flexvies.
Algumas linguagens promovem o polimorfismo principalmente por meio
do uso de classes abstratas e interfaces, como e o caso da linguagem Java.
8. Sobrecarga
A sobrecarga e um tipo de polimorfismo que permite a existencia de v
arios
metodos de mesmo nome, porem com assinaturas levemente diferentes, ou
seja, variando no n
umero e tipo de argumentos e o valor de retorno. Ficara
a cargo de o compilador escolher de acordo com as listas de argumento os
procedimentos ou metodos a serem executados. Por exemplo:
88
http://www.candidatoreal.com
9. Interfaces
Uma interface e uma colec
ao de definic
oes de metodos abstratos (sem im-
plementac
ao). E utilizada para os objetos interagirem entre si. A classe
que implementa a interface deve implementar todos os metodos definidos
na interface. Uma interface, tambem, pode incluir declarac oes de con-
stantes.
Apesar de uma classe abstrata implementar metodos abstratos, n ao se
pode confundir interface com classe abstrata. As classes abstratas n ao
podem ser instanciadas, e estas so s
ao utilizadas como superclasses. Por
exemplo, comida no mundo real. N ao existe uma inst ancia (objeto) do
tipo comida. O que existe s
ao inst
ancias de cenouras, mac as, bananas, etc.
Comida representa o conceito abstrato e nao e capaz de criar uma inst
ancia
pr
opria. As classes abstratas podem possuir metodos implementados.
Em Java, para definir uma interface utiliza-se a palavra interface. Emb-
ora, uma classe nao possa conter mais de uma superclasse, a classe pode
implementar mais de uma interface. Por este motivo, muitas das vezes as
interfaces s
ao apresentadas como uma alternativa para heranca m ultipla
de classes.
http://www.candidatoreal.com
10. Pacotes
Para tornar as classes mais f aceis de serem encontradas e utilizadas, para
evitar conflitos de nomes e para controlar o acesso, pode-se agrupar classes
relacionadas em pacotes (packages). Os pacotes organizam as classes e as
interfaces relacionadas. Cada pacote criado corresponde a um diret orio,
ou seja, as classes e as interfaces de um mesmo pacote devem estar em um
mesmo diret orio.
A utilizac
ao de pacotes proporciona as seguintes vantagens:
Fica mais facil para outros programadores determinar quais classes e in-
terfaces est
ao relacionadas; Os nomes das classes de um pacote nao irao
89
http://www.candidatoreal.com
90
http://www.candidatoreal.com
91
http://www.candidatoreal.com
Parte III
Metodologia de
Desenvolvimento
http://www.candidatoreal.com
92
http://www.candidatoreal.com
Captulo 7
Ciclo de Vida
Um modelo de ciclo de vida ou modelo de processo pode ser visto como uma
representacao abstrata de um esqueleto de processo, incluindo tipicamente algu-
mas atividades principais, a ordem de precedencia entre elas e, opcionalmente,
artefatos requeridos e produzidos. De maneira geral, um modelo de processo de-
screve uma filosofia de organizacao de atividades, estruturando as atividades do
processo em fases e definindo como essas fases est ao relacionadas. Entretanto,
ele n
ao descreve um curso de ac oes preciso, recursos, procedimentos e restric
oes.
Ou seja, ele e um importante ponto de partida para definir como o projeto deve
ser conduzido, mas a sua adoc ao n
ao e o suficiente para guiar e controlar um
projeto de software na pr atica.
Ainda que os processos tenham de ser definidos caso a caso, de maneira
geral, o ciclo de vida de um software envolve, pelo menos, as seguintes fases:
Planejamento O objetivo do planejamento de projeto e fornecer uma estru-
tura que possibilite ao gerente fazer estimativas razo aveis de recursos,
custos e prazos. Uma vez estabelecido o escopo de software, com os req-
uisitos esbocados, uma proposta de desenvolvimento deve ser elaborada,
isto e, um plano de projeto deve ser elaborado configurando o processo
a ser utilizado no desenvolvimento de software. A ` medida que o projeto
progride, o planejamento deve ser detalhado e atualizado regularmente.
Pelo menos ao final de cada uma das fases do desenvolvimento (an alise
e especificac
ao de requisitos, projeto, implementac
ao e testes), o planeja-
mento como um todo deve ser revisto e o planejamento da etapa seguinte
deve ser detalhado. O planejamento e o acompanhamento do progresso
http://www.candidatoreal.com
An
alise e Especifica cao de Requisitos Nesta fase, o processo de levanta-
mento de requisitos e intensificado. O escopo deve ser refinado e os req-
uisitos mais bem definidos. Para entender a natureza do software a ser
construdo, o engenheiro de software tem de compreender o domnio do
problema, bem como a funcionalidade e o comportamento esperados. Uma
vez capturados os requisitos do sistema a ser desenvolvido, estes devem
ser modelados, avaliados e documentados. Uma parte vital desta fase e
a construc
ao de um modelo descrevendo o que o software tem de fazer (e
nao como faze-lo).
93
http://www.candidatoreal.com
Implementa c
ao O projeto deve ser traduzido para uma forma passvel de
execuc
ao pela m
aquina. A fase de implementac
ao realiza esta tarefa, isto
e, cada unidade de software do projeto detalhado e implementada.
Testes inclui diversos nveis de testes, a saber, teste de unidade, teste de in-
tegrac
ao e teste de sistema. Inicialmente, cada unidade de software im-
plementada deve ser testada e os resultados documentados. A seguir, os
diversos componentes devem ser integrados sucessivamente ate se obter o
sistema. Finalmente, o sistema como um todo deve ser testado.
Entrega e Implanta c
ao uma vez testado, o software deve ser colocado em
producao. Para tal, contudo, e necessario treinar os usu
arios, configurar
o ambiente de produc ao e, muitas vezes, converter bases de dados. O
proposito desta fase e estabelecer que o software satisfaz os requisitos
dos usu arios. Isto e feito instalando o software e conduzindo testes de
aceitac
ao. Quando o software tiver demonstrado prover as capacidades
requeridas, ele pode ser aceito e a operacao iniciada.
Opera
cao nesta fase, o software e utilizado pelos usu
arios no ambiente de
produc
ao.
Manutenc
ao Indubitavelmente, o software sofrer a mudancas ap
os ter sido en-
tregue para o usuario. Alterac
oes ocorrerao porque erros foram encon-
trados, porque o software precisa ser adaptado para acomodar mudancas
em seu ambiente externo, ou porque o cliente necessita de funcionalidade
adicional ou aumento de desempenho. Muitas vezes, dependendo do tipo
e porte da manutencao necess
aria, essa fase pode requerer a definic
ao de
http://www.candidatoreal.com
94
http://www.candidatoreal.com
7.2 Modelo em V
O modelo em V e uma variac ao do modelo em cascata que procura enfatizar
a estreita relac
ao entre as atividades de teste (teste de unidade, teste de in-
tegrac
ao, teste de sistema e teste de aceitac
ao) e as demais fases do processo,
http://www.candidatoreal.com
95
http://www.candidatoreal.com
96
http://www.candidatoreal.com
Modelagem do neg
ocio. O fluxo de informac
ao entre as func
oes do neg
ocio
e modelado.
Modelagem dos dados. O fluxo de informac
ao e refinado num conjunto de
objetos de dados.
Modelagem do processo. Os objetos de dados s ao tranformados para con-
seguir o fluxo de informac
ao necess
ario para implementar uma funcao do
neg
ocio. Descric
oes do processamento s ao criadas.
Gera
cao da aplicacao. O RAD considera o uso de tecnicas de quarta gerac
ao.
O processo RAD trabalha para reusar componentes de programas exis-
tentes ou criar componentes reus
aveis.
Teste e entrega. Os componentes novos devem ser testados e todas as inter-
faces devem ser exaustivamente exercitadas.
As desvantagens do RAD s
ao:
1. O RAD exige desenvolvedores e clientes compromissados com atividades
continuamente r
apidas.
2. Nem todos tipo de de aplicac
ao s
ao apropriados para o RAD.
3. Quando riscos tecnicos s
ao elevados o RAD n
ao e adequado.
e um pouco de desenho e implementac ao. Numa segunda gerac ao, deve-se con-
cluir a an alise, fazer uma parte significativa do desenho e um pouco mais de
implementac ao. Numa terceira iterac ao, deve-se concluir o desenho, fazer-se
parte substancial da implementac ao, testar e integrar um pouco, etc. Ou seja,
a principal consequencia da aproximac ao iterativa e que os produtos finais de
todo o processo v ao sendo amadurecidos e completados ao longo do tempo, mas
cada iteracao produz sempre um conjunto de produtos finais.
A cada iterac ao sao realizadas as seguintes tarefas:
An
alise. Refinamento de requisitos, refinamento do modelo conceitual.
Projeto. Refinamento do projeto arquitetural, projeto de baixo nvel.
97
http://www.candidatoreal.com
Implementa
cao. Codificac
ao e testes.
Transi
cao para produto. Ddocumentac
ao, instalac
ao, . . ..
an
alise de risco;
engenharia;
construc
ao e liberac
ao;
avaliac
ao do cliente.
O modelo espiral e, atualmente a abordagem mais realstica para desen-
volvimento de software em grande escala, e usa uma abordagem que capacita
a empresa que presta o servico, e o cliente a entender e reagir aos riscos em
cada etapa evolutiva. Este tipo de modelo exige consider avel experiencia na
determinac
ao de riscos e depende dessa experiencia para ter sucesso.
98
http://www.candidatoreal.com
Desvantagens:
Pode ser difcil convencer grandes clientes (particularmente em situac
oes
de contrato) de que a abordagem evolutiva e control avel.
A abordagem deste tipo de modelo exige consider avel experiencia na avaliac
ao
dos riscos e baseia-se nessa experiencia para o sucesso. Se um grande risco
n
ao for descoberto, poder ao ocorrer problemas.
Este tipo de modelo e relativamente novo e n
ao tem sido amplamente
usado.
importante ter em conta que podem existir diferencas entre o prot
E otipo
e o sistema final. O prot
otipo pode n
ao cumprir os requisitos de desem-
penho, pode ser incompleto, e pode refletir somente alguns aspectos do
sistema a ser desenvolvido.
O modelo em espiral pode levar ao desenvolvimento em paralelo de m ultiplas
partes do projeto, cada uma sendo abordada de modo diferenciado, por
isso e necess
ario o uso de tecnicas especficas para estimar e sincronizar
cronogramas, bem como para determinar os indicadores de custo e pro-
gresso mais adequados.
1. Identificac
ao dos principais interessados do sistema ou do subsistema.
2. Determinac
ao das condic
oes de lucro do interessado.
3. Negociac
ao das condic
oes de ganho do interessado para reconcili
a-las no
ambito das condic
oes ganha-ganha para todos os envolvidos.
Alem da enfase na negociac
ao inicial, o modelo espiral ganha-ganha introduz
tres marcos de processo, chamados pontos de ancoragem, que ajudam a esta-
belecer quendo um ciclo e completado em torno da espiral e fornecem marcos
de decis ao antes do projeto de software presseguir. Esses pontos de ancoragem
s
ao:
99
http://www.candidatoreal.com
7.7 Modelo de m
etodos formais
O modelo de metodos formais compreende um conjunto de atividades que de-
terminam uma especificacao matem atica para o software. Uma variante dessa
abordagem e denominada engenharia de software cleanroon (Sala Simpa). Uti-
lizando metodos formais eliminam-se muitos problemas encontrados nos outros
modelos, como p.ex., ambig uidade, incompletitude e inconsistencia, que podem
ser corrigidas mais facilmente de forma n ao ad hoc, mas atraves de an alise
matem atica.
http://www.candidatoreal.com
7.8 T
ecnicas de quarta gera
cao
As tecnicas de quarta gerac
ao concentram-se na capacidade de se especificar o
software a uma m aquina em um nvel que esteja pr
oximo `
a linguagem natural.
Engloba um conjunto de ferramentas de software que possibilitam que:
100
http://www.candidatoreal.com
Obten
cao dos Requisitos. O cliente descreve os requisitos os quais s
ao traduzi-
dos para um prot
otipo operacional. Os principais problemas s ao:
Estrat
egia de projeto. : Para pequenas aplicac oes e possvel mover-se do
passo de obtencao dos requisitos para o passo de implementac ao usando
uma Linguagem de 4G. Para grandes projetos e necess ario desenvolver
uma estrategia de projeto. De outro modo ocorrerao os mesmos problemas
encontrados quando se usa abordagem convencional (baixa qualidade).
Implementac
ao usando 4GL. Os resultados desejados s ao representados de
modo que haja gerac
ao autom atica de c
odigo. Deve existir uma estrutura
de dados com informacoes relevantes e que seja acessvel pela 4GL .
101
http://www.candidatoreal.com
Captulo 8
An
alise Comparativa de
Processos de
Desenvolvimento
102
http://www.candidatoreal.com
Concepc
ao nesta fase, e estabelecido o escopo do projeto e suas fronteiras,
determinando os principais casos de uso do sistema. Esses casos de uso
devem ser elaborados com a precis ao necess
aria para se proceder estima-
tivas de prazos e custos. As estimativas devem ser globais para o projeto
como um todo e detalhadas para a fase seguinte. Assim, a enfase nesta
etapa recai sobre o planejamento e, por conseguinte, e necess ario levan-
tar requisitos do sistema e preliminarmente analisa-los. Ao termino dessa
fase, s
ao examinados os objetivos do projeto para se decidir sobre a con-
tinuidade do desenvolvimento;
Elaborac
ao o prop osito desta fase e analisar mais refinadamente o domnio do
problema, estabelecer uma arquitetura de fundac ao s
olida, desenvolver um
plano de projeto para o sistema a ser construdo e eliminar os elementos
de projeto que oferecem maior risco. Embora o processo deva sempre
acomodar alterac oes, as atividades da fase de elaborac ao asseguram que
os requisitos, a arquitetura e os planos estao suficientemente estaveis e que
os riscos est
ao suficientemente mitigados, de modo a se poder prever com
http://www.candidatoreal.com
Transi
cao nesta fase, o software e disponibilizado `
a comunidade usu
aria. Ap
os
o produto ter sido colocado em uso, naturalmente surgem novas consid-
erac
oes que vao demandar a construc ao de novas vers
oes para permitir
ajustes do sistema, corrigir problemas ou concluir algumas caractersticas
que foram postergadas.
103
http://www.candidatoreal.com
Alem dos conjuntos de iterac oes em cada fase, as fases em si podem ocorrer
de forma iterativa. Como mostra a figura 8.2, elas n ao necessariamente tem a
mesma durac ao. O esforco realizado em cada uma varia fortemente em func ao
das circunst
ancias especficas do projeto.
http://www.candidatoreal.com
104
http://www.candidatoreal.com
8.3 Scrum
Scrum e um processo para construir software incrementalmente em ambientes
complexos, onde os requisitos n ao s
ao claros ou mudam com muita freq uencia.
Em Rugby, Scrum e um time de oito integrantes que trabalham em conjunto
para levar a bola adiante no campo. Ou seja: times trabalhando como uma
unidade altamente integrada com cada membro desempenhando um papel bem
definido e o time inteiro focando num u nico objetivo.
O objetivo do Scrum e fornecer um processo conveniente para projetos e
desenvolvimento orientado a objetos. A metodologia e baseada em princpios
semelhantes aos de XP: equipes pequenas, requisitos pouco est aveis ou descon-
hecidos, e iterac
oes curtas para promover visibilidade para o desenvolvimento.
No entanto, as dimens oes em Scrum diferem de XP.
http://www.candidatoreal.com
105
http://www.candidatoreal.com
prove pr
aticas
ageis de gerenciamento enquanto XP prove pr
aticas integradas
de engenharia de software.
8.4 Crystal
Crystal/Clear faz parte, na realidade, de um conjunto de metodologias criado
por Cockburn. As premissas apresentadas para a existencia deste conjunto s
ao:
N
ao exige nenhum processo especfico de modelagem.
106
http://www.candidatoreal.com
Iterac
ao do modelo funcional (Functional model iteration).
Iterac
ao de projeto e construc
ao (Design and build iteration).
Implementac
ao final (Final implementation).
Pr
aticas:
Usu
ario sempre envolvido.
Adaptac
ao ao neg
ocio e o criterio para entregas.
Construa o produto certo antes de voce constru-lo corretamente.
Mudancas s
ao reversveis utilizando pequenas iterac
oes.
Requisitos s
ao acompanhados em alto nvel.
http://www.candidatoreal.com
107
http://www.candidatoreal.com
108
http://www.candidatoreal.com
Captulo 9
Engenharia de Requisitos
109
http://www.candidatoreal.com
Verifica
cao e Valida c
ao de Requisitos A verificac ao de requisitos avalia se
o documento de Especificac ao de Requisitos est a sendo construdo de
forma correta, de acordo com padr oes previamente definidos, sem con-
ter requisitos ambguos, incompletos ou, ainda, requisitos incoerentes ou
impossveis de serem testados. J a a validac
ao diz respeito a avaliar se esse
documento est a correto, ou seja, se os requisitos e modelos documentados
atendem ` as reais necessidades e requisitos dos usu arios / cliente.
Ger
encia de Requisitos se preocupa em gerenciar as mudancas nos requisi-
tos j
a acordados, manter uma trilha dessas mudancas, gerenciar os rela-
cionamentos entre os requisitos e as dependencias entre o documento de
requisitos e os demais artefatos produzidos no processo de software, de
forma a garantir que mudancas nos requisitos sejam feitas de maneira
controlada e documentada.
9.2 T
ecnicas de Levantamento de Requisitos
9.2.1 Observa
c
ao
A observacao possibilita um contato pessoal e estreito do pesquisador com o
fenomeno pesquisado, o que apresenta uma serie de vantagens. As tecnicas de
observac
ao s
ao extremamente u teis para descobriraspectos novos de um prob-
lema. Isto se torna crucial nas situac oes em que nao existe uma base te orica
s
olida que oriente a coleta de dados. Ao mesmo tempo em que o contato direto
e prolongado do pesquisador com a situac ao pesquisada apresenta as vantagens
mencionadas, envolve tambem uma serie de problemas. Algumas crticas s ao
feitas ao metodo de observacao, primeiramente por provocar alterac oes no am-
biente ou no comportamento das pessoas observadas. Outra crtica e a de que
este metodo se baseia muito na interpretacao pessoal. Alem disso ha criticas no
sentido de que o grande envolvimento do pesquisador leve a uma vis ao distorcida
do fenomeno ou a uma representac ao parcial da realidade.
9.2.2 Entrevista
Entrevista e uma tecnica de elicitac
ao de requisitos muito usada. O engenheiro
de requisitos ou analista discute o sistema com diferentes usu arios , a partir da
qual elabora um entendimento de seus requisitos. H a, basicamente, 2 tipos de
entrevista: a) entrevistas fechadas onde o engenheiro de requisitos procura as
perguntas para um conjunto um pre-definido de quest oes; b) entrevistas abertas
http://www.candidatoreal.com
110
http://www.candidatoreal.com
9.2.3 An
alise de Protocolo
A an alise de protocolo pede a` pessoa se engajar em alguma tarefa e corrente-
mente falar sobre esta tarefa, explicando o seu pensamento do processo. Usu arios
alegam que esse tipo de linguagem pode ser considerada uma verbalizac ao di-
reta do processo cognitivo especfico. A an alise de protocolo nao e um guia
confiavel sobre o que as pessoas est ao pensando, ela est a sujeita a problemas
de interpretacoes pelos analistas. A restric
ao em estudar protocolos e que as
pessoas podem produzir linguagens que oferece um perfil de atividade cogni-
tiva autonoma. Segundo (Goguen, 1997), mesmo se fosse possvel conseguir um
perfil de atividade cognitiva autonoma da pessoa, tal objeto seria inapropriado
para o processo de requisitos, porque o cliente n ao tem qualquer modelo mental
pre-existente do sistema desejado. Os clientes tem conhecimento sobre neg ocios
e necessidades organizacionais, enquanto o time de requisitos tem conhecimento
sobre as possibilidade tecnicas.
9.2.4 JAD
JAD e uma marca registrada da IBM. O tema principal do JAD e colocar
autoridades representativas e gerenciais juntas dentro de um workshop estrutu-
rado para promover decis oes. Segundo (Damian, 1997) JAD consiste de 5 fases:
definic
ao do projeto, pesquisa, preparac
ao para a sess
ao JAD, a sessao JAD, o
documento final. As fases de definic ao de projeto e pesquisa no processo JAD
lidam com a coleta de informac oes. A sessao JAD e entao usada para validar
as informacoes recolhidas nas fases anteriores. O processo JAD concentrase na
sessao JAD, e deste modo JAD contribui para a elicitac ao de requisitos como
significado para validar as informacoes j
a colhidas. Na sess
ao JAD, as pessoas
certas tem que estar envolvidas, e a presenca de um facilitador pode ajudar a
manter a sess ao focalizada e minimizar ataques e defesas emocionais improdu-
tivas. JAD promove cooperac ao, entendimento, e trabalho em grupo entre os
varios grupos de usuarios e o pessoal de sistemas de informac
ao.
9.2.5 PD
Tradicionalmente valores democr aticos, os quais tem sido levados em conta no
processo de projeto, tem sido somente aqueles concentrados em fatores tecnicos
e economicos. Mas com o uso do PD fatores tecnicos-sociais tem sido levados em
conta. O projeto deveria ser feito com o usu ario. Aprendizado m utuo deveria
ser uma parte importante do trabalho em um grupo de projeto, n ao sendo
meramente uma visita aos laborat orios de pesquisa. Trabalhadores e clientes s
ao
http://www.candidatoreal.com
9.2.6 QFD
O termo qualidade e definido como um conjunto de meios para produzir eco-
nomicamente produtos ou servicos, os quais satisfacam os requisitos do cliente.
QFD e um conceito que prove meios de interpretar requisitos do cliente em req-
uisitos tecnicos, apropriados para cada est
agio do desenvolvimento e produc ao
111
http://www.candidatoreal.com
9.2.7 CRC
Como definido em (Zhu, 1998), CRC e uma sess ao de grupo, que e similar ao
JAD, onde os papeis dos participantes e o papel do facilitador sao claramente
definidos. Em CRC, participantes consistem nao somente de usu arios e facilita-
dor, mas tambem de outras pessoas envolvidas indiretamente no sistema. CRC
e diferente de JAD e QFD pois ele foca-se no usuario operativo.
9.2.8 Prototipa
cao
Este metodo para elicitac
ao de requisitos utiliza-se do uso de uma tecnica de
prototipac
ao para a avaliac
ao do usu ario. O conjunto inicial de requisitos e
usado como base para criar o Prot otipo de Interface do Usu ario com o sis-
tema inicial (simplificado). Para essa criac ao, o projetista precisa manter o
prot
otipo tao simples quanto possvel. O ponto forte desta atividade e apre-
sentar muitas alternativas para o usu ario antes de se gastar muito esforco para
qualquer prototipo em particular. Ap os a aceitac
ao do prot
otipo pelos usu
arios,
os desenvolvedores precisam criar um documento de especificac ao dos requisitos
paralelo ao prototipo de interface (McConnel, 1998).
9.2.9 Cen
arios
Usuarios finais e outros agentes do sistema acham a utilizac ao de cen arios mais
f
aceis para relacionar-se aos exemplos da vida real do que descric oes abstratas
das func
oes realizadas pelo sistema. Por essa raz ao, e freq
uentemente u til desen-
volver um conjunto de interacao dos cen arios, e usar estes para elicitar e clarear
requisitos de sistema. Cen arios s
ao exemplos de sess oes de interac
ao as quais
s
ao concentradas com um tipo u nico de interac
ao entre um usu ario final e o sis-
tema. Usu arios finais simulam suas interacoes usando cen arios. Eles explicam
para o time de engenheiros de requisito o que eles est ao fazendo e a informac ao
da qual eles precisam do sistema para descrever a tarefa descrita no cen ario.
9.2.10 FAST
http://www.candidatoreal.com
3. A solicitac
ao de produto e distribuda para todos os participantes antes
da data da reuni ao.
112
http://www.candidatoreal.com
solicitado a cada participante que faca uma lista dos objetos que s
4. E ao
parte do ambiente , uma lista de servicos (processos ou func oes), uma
lista de restric
oes (custo, tamanho, regras de neg
ocio) e criterios de de-
sempenho.
9.3 An
alise de Requisitos
A analise de requisitos e uma atividade de engenharia de software que vence
o especo entre a engenharia de requisitos, no nvel de sistema, e o projeto de
software. As atividades de engenharia de requisitos resultam na especificac ao
das caractersticas operacionais do software (func ao, dados e comportamento).
A analise de requisitos constroi modelos de domnio que fornecem ao projetista
uma vis ao do software.
A especificac
ao de requisitos e produzida no auge da tarefa de an
alise. Alguns
padroes sugerem que uma especificac ao de requisitos deve conter:
http://www.candidatoreal.com
Introdu
cao. Declara as metas e objetivos do software.
Descri
cao da informa c
ao. Fornece uma descric
ao detalhada do problema que
o software deve resolver. O conte
udo, fluxo e estrutura da informac
ao s
ao
documentados.
Descri
cao funcional. Uma narrativa de processamento e fornecida para cada
func
ao.
Descri
cao comportamental. Examina a operac ao do software como consequencia
de eventos externos e caractersticas de controle geradas internamente.
113
http://www.candidatoreal.com
Crit
erios de valida c
ao. Informa como devemos reconhecer uma implementacao
bem-sucedida e quais classes de testes devem ser conduzidas para validar
a func
ao, o desempenho e as restric
oes.
Bibliografia e ap endice. A bibliografia contem todos os documentos que se
relacionam ao software. O apendice contem informacoes que suplementa
as especificac
oes.
9.3.1 M
etodos de an
alise
Entre os mais importantes metodos de an alise, tres se destacam: A an
alise estru-
turada, a an
alise essencial e a an
alise orientada a objetos. A seguir discutiremos
suas principais caractersticas.
An
alise estruturada
A An alise Estruturada adota uma visao de desenvolvimento baseada em um
modelo entrada-processamento-sada. No paradigma estruturado, os dados sao
considerados separadamente das func
oes que os transformam e a decomposic
ao
funcional e usada intensamente.
An
alise essencial
Os metodos orientados a funcoes conduzem o desenvolvimento de software estru-
turando as aplicac oes segundo a otica das func
oes (ac
oes) que o sistema dever
a
realizar. Os metodos orientados a dados, por sua vez, enfatizam a identificac ao
e estruturac ao dos dados, subjugando a an alise das func
oes para um segundo
plano. Esses metodos tem origem no projeto de bancos de dados e, geralmente,
tem no modelo de Entidades e Relacionamentos (ER) sua principal ferramenta.
A an alise essencial e uma metodologia estruturada, sendo uma evoluc ao da
analise estruturada. Essa metodologia procurou conciliar as abordagens ori-
entadas a dados e a func oes em um u nico metodo, utilizando modelos para
dados, func oes e controles (DFDs, DERs e Diagramas de Transic ao de Estados,
respectivamente) como ferramentas para a modelagem de sistemas.
An
alise orientada o objeto
A orientac
ao a objetos pressup
oe que o mundo e composto por objetos, onde
um objeto e uma entidade que combina estrutura de dados e comportamento
funcional. No paradigma orientado a objetos, os sistemas s ao estruturados a
http://www.candidatoreal.com
9.3.2 Modelagem da an
alise
DFDs
Ferramenta de modelagem utilizada para descrever a transformac ao de entradas
em sadas. Representa um sistema como uma rede de processos interligados
entre si por fluxos de dados e dep a ferramenta de modelagem
ositos de dados. E
mais importante da an alise estruturada. Junto com o DER, e a ferramenta mais
importante da an alise essencial. Seus componentes s ao:
114
http://www.candidatoreal.com
Dicion
ario de Dados
O dicionario de dados e uma listagem organizada de todos os elementos de
dados pertinentes ao sistema, com definic
oes precisas para que os usu
arios e
desenvolvedores possam conhecer o significado de todos os itens de dados. Ex-
emplificando para uma estrutura de dados nome: nome = ttulo-cortesia +
115
http://www.candidatoreal.com
primeiro-nome + (nome-intermedi
ario) + u ltimo-nome, ttulo-cortesia = [Sr.
Sra. Srta. Dr. Professor] etc. . .
Aspectos de an
alise essencial
O modelo comportamental determina o comportamento interno do sistema para
que este possa interagir corretamente com o ambiente. Ap
os a construc
ao do
modelo comportamental, teremos os seguintes artefatos:
Especificac
ao da L ogica dos Processos (Mini-especifica c
oes). Descreve
a l
ogica dos processos do DFD que n ao foram detalhados em diagramas
de nvel inferior (l
ogica dos processos primitivos).
Como podemos perceber, a an alise essencial faz uso praticamente das mesmas
tecnicas de modelagem da analise estruturada, a saber a modelagem de dados
(utilizando modelos de entidades e relacionamentos), a modelagem funcional
(utilizando Diagramas de Fluxo de Dados - DFDs) e a modelagem de controle
(utilizando diagramas de transic ao de estados). Isso e bastante natural, j a
que a an alise essencial e, de fato, uma extens ao da analise estruturada. Na
realidade, a principal diferenca entre a an alise essencial e a an
alise estruturada
esta na estrategia para atacar o problema: a primeira defende uma abordagem
baseada em eventos, onde a an alise de eventos passa a ser um passo fundamental,
a segunda e baseada apenas na decomposic ao top-down da funcionalidade do
sistema.
http://www.candidatoreal.com
116
http://www.candidatoreal.com
requisitos s
ao as Matrizes de Rastreabibilidade (Traceability Matrix ), que usual-
mente correlacionam requisitos com casos de testes, e tecnicas de Referencias
Cruzadas. Entre os produtos de mercado utilizadas para realizar gerenciamento
e rastreamento de requisitos podemos citar o Rational RequisitePro, Caliber-RM,
RTS e RDT.
http://www.candidatoreal.com
117
http://www.candidatoreal.com
Captulo 10
M
etricas
letadas com base individual dever ser privadas e servir como indicador apenas
para o indivduo. Exemplo de metricas privadas incluem porporc ao de defeitos
(por indviduo e por m odulo) e erros encontrados durante o desenvolvimento.
Metricas publicas geralmente assimilam informac oes, que eram originalmente
privadas. Porporc oes de defeitos de projeto (absolutamente n ao atribuveis a
um certo indivduo), esforco, tempo transcorrido e dados relacionados s
ao coleta-
dos e avaliados numa tentativa de sescobrir indicadores, que possam aperfeicoar
o desempenho do processo organizacional.
Ha uma sutil diferenca entre erros e defeitos. Um defeito ocorre quando
atividades de garantia de qualidade deixam de descobrir um erro num produto
produzido durante o processo de software.
118
http://www.candidatoreal.com
5. Os dados resultantes s
ao analisados, para descobrir as categorias que pro-
duzem um maior custo para a organizac ao.
6. S
ao desenvolvidos planos para modificar o processo, com o objetivo de
eliminar (ou reduzir a freq
uencia das) classes de erros e defeitos que s
ao
mais dispendiosas.
10.2 M
etricas de projeto
As metricas de projeto s
ao usadas para evitar atrasos, avaliar a qualidade e n ao
ultrapassar os custos permitidos. A primeira aplicac ao das metricas de projeto,
na maioria dos projetos de software, ocorre durante a estimativa. Metricas
coletadas de projetos anteriores s
ao usadas como base e ` a medida que o projeto
prossegue, medidas de esforco e de tempo s ao comparadas com as estimativas
originais. Dessa maneira, o gerente do projeto monitora e controla o progresso.
` medida que o trabalho tecnico se inicia, outras metricas de projeto comecam
A
a ter importancia. A taxa de produc ao, representada em termos de p aginas de
documentac ao, horas de revisao, pontos por func ao e linhas de c odigo fonte
entregue, e medida. A ` medida que o software evolui, metricas tecnicas s ao
coletadas para avaliar a qualidade do projeto.
http://www.candidatoreal.com
10.3 Medic
ao de software
As medicoes sao categorizadas em medidas diretas e indiretas. As medidas di-
retas do processo de engenharia de software incluem custo, linhas de c odigo
(lines of code, LOC) produzidas, velocidade de execucao, tamanho de mem oria
e defeitos relatados durante um certo perodo. Medidas indiretas do produto in-
cluem funcionalidade, qualidade, complexidade, eficiencia, confiabilidade, manuteni-
bilidade e muitas outras habilidades.
119
http://www.candidatoreal.com
10.3.1 M
etricas orientadas a tamanho
Sao metricas baseadas em linhas de c
odigo. Metricas orientadas a tamanho
nao s
ao universalmente aceitas como o melhor modo de medir o processo de
desenvolvimento de software. Os opositores argumentam que essas metricas pe-
nalizam programas curtos e bem feitos e que medidas de LOC s ao dependentes
da linguagem de programacao. Por outro lado, existem muitos modelos de esti-
mativas que usam LOC ou KLOC como entrada chave e essas metricas podem
ser facilmente coletadas. As metricas orientadas a tamanho mais utilizadas
incluem:
Erros por KLOC (milhares de linha c
odigo).
Defeitos por KLOC.
$ por LOC.
P
aginas de documentac
ao por KLOC.
Erros por pessoa-mes.
LOC por pessoa-mes.
$ por p
agina de documentac
ao.
10.3.2 M
etricas orientadas a func
ao
Metricas de software orientadas a funcao usam uma medida da funcionalidade
entregue pela aplicacao como valor de normalizacao.
Pontos por func
ao s
ao calculados completando a tabela 10.1. Cinco carac-
tersticas do domnio da informac
ao s
ao determinadas e as contagens s ao reg-
istradas na tabela. Essas caractersticas s
ao definidas da seguinte maneira:
Quantidade de entradas do usu ario. S
ao contadas as entradas do usu
ario
que fornecem dados distintos.
Quantidade de sadas do usu
ario. S
ao contados telas, relat
orios, mensagens
de erros etc.
N
umero de consultas do usu ario. S
ao contadas consultas distintas. Uma
consulta e definida como um entrada que resulta na gerac
ao de alguma
resposta imediata.
Quantidade de arquivos. Cada grupo de dados l ogico (que pode ser parte
de uma base de dados maior ou um arquivo separado) e contado. Esses
http://www.candidatoreal.com
120
http://www.candidatoreal.com
Par
ametro de medic
ao Contagem Simples Medio Complexo Total
121
http://www.candidatoreal.com
10.3.3 M
etricas de pontos por funcao estendidas
A medida de pontos por func ao foi originalmente projetada para ser usada
em aplicac oes de sistemas de informacao comerciais. A medida de pontos por
funcao ficou inadequada para muitos sistemas embutidos e de engenharia (que
enfatizam func ao e controle).
Uma extens ao de pontos por func
ao, chamada pontos por caracterstica uti-
lizada em eplicac oes de software de sistemas. Para calcular pontos por carac-
terstica, valores de domnio de informacao s
ao novamente contados e ponder-
ados. Alem disso, a metrica pontos por caracterstica trata uma nova carac-
tersitca do software: algoritmos.
Outra extens ao de pontos por funcao, para sistemas em tempo real e pro-
dutos de engenharia, foi desenvolvida pela Boeing. Essa abordagem integra a
dimens ao de dados do software com as dimens oes funcional e de controle para
forncer uma medida orientada a func ao, adequada a aplicacoes que enfatizam
as capacidades de func ao e controle. Essa extens ao e chamada de pontos por
funcao 3D. As tres dimensoes s
ao:
Dimensao de dados. Semelhante a contagem de pontos por func
ao tradi-
cional.
Dimens ao funcional. Considera a quantidade de operac
oes internas necess
arias
para transformar dados de entrada para transformar dados de entrada em
sada.
Dimens medida contando a quantidade de transic
ao de controle. E oes entre
estados.
10.4 M
etricas de qualidade de software
A medic
ao da qualidade de software e uma atividade de natureza subjetiva.
Qualidade de software e uma mistura complexa de fatores que vao variar com
cada aplicac
ao diferente e com os clientes que as encomendam. As principais
medidas sao mostradas a seguir:
Corre
cao. A medida mais comum e defeitos por KLOC. Para fins de avaliac
ao
de qualidade, defeitos sao contados durante um perodo padr
ao, tipica-
mente um ano.
122
http://www.candidatoreal.com
Utiliza
cao. Se e amig avei ao uso. Pode ser medida em quatro t opicos: (1)
aptidao fsica ou intelectual necess
aria para aprender a lidar com o sistema,
(2) o tempo necess ario para se tornar moderadamente eficiente no uso
do sistema, (3) o aumento lquido de produtividade e (4) uma avaliac ao
subjetiva das atitudes dos usu arios com relac
ao ao sistema.
Outra medicao muito utilizada e a eficiencia na remoc
ao de defeitos defect
removal efficiency, DRE). A DRE e uma medida da capacidade de filtragem das
atividades de controle e garantia de qualidade de software, ` a medida que sao
aplicadas. A formula utilizada e DRE = E/(E + D). Onde E e a quantidade
de erros encontrados e D a quantidade de defeitos.
As principais formas de classificar fatores de qualidade sao apresentadas nas
subsec
oes a seguir.
Opera
cao do produto. Correc
ao, confiabilidade, utilizac
ao, integridade e eficiencia.
Revis
ao do produto. Mantenabilidade, flexibilidade e testabilidade.
Transi
cao do produto. Portabilidade, reutilizac
ao e interoperabilidade.
difcil desenvolver medidas diretas desses fatores. Assim, um conjunto de
E
metricas e definido e usado para desenvolver expressoes para cada um dos fatores
de acordo com a seguinte relac ao: Fq = c1 m1 + c2 m2 ... + cn mn , em que
Fq e um fator de qualidade de software, cn s ao coeficientes de regress
ao, mn s
ao
as metricas que afetam o fator de qualidade. Infelizmente, muitas das metricas
definidas podem ser medidas apenas sunjetivamente. As metricas podem estar
em forma de checklist que e usada para atribuir um grau a atributos especficos
do software. O peso atribudo a cada metrica e dependente de produtos e
preocupac oes locais.
10.4.2 FURPS
A Hewlett-Packard desenvolveu um conjunto de fatores de qualidade que re-
cebeu a sigla FURPS: funcionalidade, utilizac
ao, confiabilidade, desempenho e
http://www.candidatoreal.com
Utiliza
cao. Avaliada considerando fatores humanos como estetica, consistencia
e documentacao.
Confiabilidade. Avaliada medindo a freq uencia e a severidade das falhas, a
precis
ao dos resultados de sada, o tempo medio entre falhas (MTTF), a
capacidade de recuperac
ao de falhas e previsibilidade do programa.
123
http://www.candidatoreal.com
Utiliza
cao. Grau em que o software e f acil de usar com os subatributos -
inteligibilidade, adestrabilidade e operabilidade.
Efici
encia. Grau em que o software faz uso otimizado dos recursos do sistema
com os subatributos - comportamento em relac
ao ao tempo e comporta-
mento em relac
ao aos recursos.
Esses fatores n
ao necessariamente se prestam a medidas diretas. No entanto,
fornecem de fato uma base valiosa para medidas indiretas e uma excelente lista
de verificac
ao para avaliar a qualidade de um sistema.
10.5 Estimativas
Muitas vezes, as estimativas s ao feitas usando-se a experiencia passada como
u
nico guia. Mas se um novo projeto for totalmente diferente dos projetos re-
alizados ate o momento? Assim, apenas a experencia passada talvez n ao seja
http://www.candidatoreal.com
2. Metricas de software s
ao utilizadas e o hist
orico e usado como uma base
a partir da qual estimativas sao feitas.
124
http://www.candidatoreal.com
O COCOMO II usa pontos por objeto. Como pontos por func ao, o pontos por
objeto e uma medida indireta de software que e calculada usando-se a contagem
da quantidade de telas (na interface com o usu ario, relat
orios e componentes.
Cada inst ancia de objeto em um dos tres nveis de complexidade (simples, medio,
difcil). Essencialmente, a complexidade e func ao da quantidade e fonte das
tabelas de dados do cliente e servidores, que s ao necess arias para gerar a tela ou
125
http://www.candidatoreal.com
relat
orio, e da quantidade de vistas ou sec
oes apresentadas como parte da tela
ou relat
orio.
Deve-se notar que outros modelos de estimativa mais sofisticados (usando
FP e KLOC) tambem est ao disponveis como parte do COCOMO II.
http://www.candidatoreal.com
126
http://www.candidatoreal.com
Captulo 11
Testes
127
http://www.candidatoreal.com
propriedades:
A probabilidade de que uma ligac
ao (aresta) ser
a executada.
O tempo de processamento gasto durante o percurso de uma ligac
ao.
A mem
oria necess
aria durante o percurso de uma ligac
ao.
Os recursos necess
arios durante o percurso de uma ligac
ao.
Existem algoritmos que podem ser aplicados ` as matrizes de grafo. Usando
essaas tecnicas, a an
alise necess
aria para projetar casos de teste pode ser parcial
ou totalmente automatizada.
128
http://www.candidatoreal.com
tres testes s
ao necessarios para tornar o valor de E1 maior que, igual a, ou menor
que o de E2 .
Para uma express ao booleana com n vari aveis, todos os 2n possveis testes
s
ao necess arios (n > 0), mas e pr atica somente quando n e pequeno.
Caso uma express ao booleana seja singular (na qual cada vari avel ocorre
apenas uma vez), h a como gerar um conjunto de testes com menos do que 2n
testes tal que esse conjunto de testes garante a detecc ao de erros de operadores
booleanos m ultiplos e e tambem efetivo para detectar outros erros. Uma delas e
a tecnica de teste de desvio e operador relacional (branch and relational operator,
BRO). Ela usa restric oes de condic
ao para uma condic ao C. Uma restric ao de
condicao para C com n condic oes simples e definida como (D1 , D2 , . . . , Dn ),
em que Di (0 < i n) e um smbolo que especifica uma restric ao sobre o
resultado da i-esima condic ao simples da condic
ao C. Diz-se que uma restric ao
de condic ao D para uma condic ao C e coberta por uma execuc ao de C se,
durante a execuc ao de C, o resultado de cada condic ao simples de C satisfaz a
correspondente restric ao em D. N ao entendeu nada? Como exemplo, considere
a condicao:
C1 : B1 &B2
http://www.candidatoreal.com
129
http://www.candidatoreal.com
130
http://www.candidatoreal.com
11.3.1 M
etodos de teste baseados em grafo
Os objetos que est ao modelados no software e as relacoes que conectam esses
objetos sao utilizadas para criar um grafo. Os n os representam os objetos, as
arestas representam as ligac
oes, os pesos de n
o descrevem as propriedade de um
objeto, assim como os pesos das arestas representam propriedades das ligac oes.
Uma ligac ao direcionada (representada por uma seta) indica que a relacao se
move em apenas uma direc ao. Ligacoes paralelas s
ao usadas quando diversas
relac
oes s
ao estabelecidas entre os n
os.
Os metodos de teste de comportamento que podem fazer usos de grafos s ao:
Modelagem de fluxo de transa c
ao. Os n
os representam passos em alguma
transac
ao e as arestam representam conexoes l
ogicas.
Modelagem de estado finito. Os n os representam diferentes estados do soft-
ware observ
aveis pelo usu
ario e as aresta representam as transic
oes.
Modelagem do fluxo de dados. Os n os s
ao objetos de daods e as ligac
oes
s
ao transformac
oes que ocorrem para traduzir um objeto de dados em
outro.
131
http://www.candidatoreal.com
11.3.3 An
alise de valor limite
Um grande n umero de erros tende a ocorrer nas fronteiras do domnio de en-
trada. E por essa raz ao que a analise de valor-limite (boundary value analysis,
BVA) foi desenvolvida como tecnica de teste.
A BVA leva ` a selec
ao de casos de teste nas bordas da classe. Em vez de
focalizar somente as condic oes de entrada, a BVA deriva casos de teste tambem
para o domnio de sada.
Se uma condic ao de entrada especifica um intervalo ou um valor limitado
pelos valores a e b, casos de teste devem ser projetados com os valores a e b e
imediatamente acima e imediatamente abaixo de a e b. O mesmo vale para as
condic
oes de sada. Se as estruturas de dados tem limites prescritos, certifique-se
de projetar um caso de teste para exercitar a estrutura de dados no seu limite.
132
http://www.candidatoreal.com
Teste da documenta c
ao e dispositivos de ajuda. Pode ser abordado em
duas fases. A primeira fase, revisao e inspenc ao, examina o documento
quanto `
a clare editorial. A segunda fase, teste ao vivo, usa a documentacao
em conjunto com o uso do programa real. Nesta fase, os v arios metodos
de caixa-preta podem ser utilizados.
de eventos externos.
Testes intertarefas. Tarefas assncornas que se comunicam sao testadas
com diferentes taxas de dados e carga de processamento para detectar
se erros de sincronizac
ao entre tarefas v
ao ocorrer.
Teste de sistema. O software e o hardware s ao integrados e todo um
conjunto de testes de sistema e conduzido numa tentativa de descobrir
erros na interface software-hardware.
133
http://www.candidatoreal.com
11.5 Estrat
egia de teste de software
O projeto efetivo de caso de testes e importante, mas n ao suficiente para o
sucesso da atividade de testes. A estrategia, isto e, a serie planejada de re-
alizac
ao de testes, e tambem crucial. Basicamente, h a tres grandes fases de
teste:
Teste de unidade. Tem por objetivo testar a menor unidade do projeto (um
componente de software que n ao pode ser subdividido), procurando iden-
tificar erros de l
ogica e de implementac
ao em cada modulo separamente.
Teste de integra c
ao. Visa descobrir erros associados `
as interfaces entre os
modulos quando esses s
ao integrados para formar a estrutura do produto
de software.
Teste de sistema. Tem por objetivo identificar erros de func oes (requisitos
funcionais) e caractersticas de desempenho (requisito n
ao funcional) que
n
ao estejam de acordo com as especificacoes.
Tipicamente, os primeiros testes focalizam componentes individuais e apli-
cam testes caixa-branca e caixa-preta. Na integrac ao, o foco e o projeto e a ar-
quitetura do sistema. Finalmente, uma serie de testes de alto nvel e executada
quando o sistema estiver operacional, visando descobrir erros nos requisitos.
No teste de unidade, faz-se necess ario construir pequenos componentes para
permitir testar modulos invidualmente, os ditos drivers e stubs. Um driver e um
programa respons avel pela ativac
ao e coordenac
ao do teste de uma unidade. Ele
e responsavel por receber dados de teste fornecidos pelo testador, passar esses
dados para a unidade que est a sendo testada, obter os resultados produzidos e
apresenta-los ao testador. Um stub e uma unidade que substitui, na hora do
teste, uma outra unidade chamada pela unidade que est a sendo testada. Em
geral, um stub simula o comportamento de uma unidade chamada com o mnimo
de computac ao ou manipulac ao de dados.
A abordagem de integracao de m odulos pode ter impacto na quantidade de
drivers e stubs a ser construda. Sejam as seguintes abordagens:
Integrac
ao ascendente (bottom-up). Cada m odulo no nvel inferior da hi-
erarquia e testado individualmente. A seguir, s
ao testados m odulos que
chamam os previamentes testados. Neste caso, apenas drivers sao necess
arios.
Integrac
ao descendente (top-down). Comeca de cima para baixo. Apenas
stubs s
ao necess
arios.
http://www.candidatoreal.com
134
http://www.candidatoreal.com
Teste de aceita c
ao. Realizado pelos clientes. Assegura que o sistema solici-
tado e o que foi construdo.
Teste de instalac
ao. Necess ario quando os testes de aceitac
ao n
ao s
ao feitos
onde o software ser
a realmente instalado.
http://www.candidatoreal.com
135
http://www.candidatoreal.com
Captulo 12
UML
12.1.1 Ator
Um ator e uma entidade externa (fora do sistema) que interage com o sistema
participando (e freq
uentemente iniciando) um caso de uso. Atores podem ser
pessoas reais (por exemplo usu
arios do sistema), outro sistema de computador
ou eventos externos.
136
http://www.candidatoreal.com
Atores nao representam as pessoa fsica ou sistemas, mas sua regra. Isto
significa que quando uma pessoa interage com o sistema de diferentes maneiras
(assumindo diferentes regras) ela ser
a representada por diversos atores. Por ex-
emplo, uma pessoa que fornece suporte ao cliente por telefone e recebe ordens do
cliente para o sistema pode ser representado por um ator da equipe de suporte.
12.1.2 Descri
cao do caso de uso
Descric
ao do caso de uso s
ao narrativas de texto do caso de uso. Elas usualmente
tomam a forma de uma nota ou um documento que e de alguma maneira ligado
ao caso de uso, e explana o processo ou atividades que tomar ao lugar no caso
de uso.
137
http://www.candidatoreal.com
+ indica atributos p
ublicos.
# indica atributos protegidos.
indica atributos privados
As operac oes tambem sao exibidas com pelo menos seu nome, e podem
tambem mostrar seus par ametros e valores de retorno.
Classes podem ter modelos, um valor que e usado para uma classe ou tipo n ao
especificado. O tipo de modelo e especificado quando uma classe e iniciada (isto
e um objeto e criado). Modelos existem no C + + moderno e foram introduzidos
no Java 1.5 onde eles sao chamados de genericos.
12.2.1 Associa
coes de classe
Classes podem relacionar-se (ser associada com) com outras de diferentes maneiras:
http://www.candidatoreal.com
Generaliza
cao
EM UML, uma generalizac ao entre duas classes coloca-as numa hierarquia rep-
resentando o conceito de heranca de uma classe derivada de uma classe base.
Em UML, Generalizac oes sao representadas por uma linha conectando duas
classes, com uma seta no lado da classe base.
Associa
coes
S
ao o mecanismo que permite objetos comunicarem-se entre si. Elas descrevem
a conex
ao entre diferentes classes (a conex
ao entre os objetos atuais e chamada
138
http://www.candidatoreal.com
Agrega
cao
Agregac
oes s
ao um tipo especial de associac
ao no qual as duas classes partici-
pantes nao possuem em nvel igual, mas fazem um relacionamento todo-parte.
Uma agregac ao descreve como a classe que possui a regra do todo, e composta
(tem) de outras classes, que possuem a regra das partes. Para agregac oes, a
classe que age como o todo sempre tem uma multiplicidade de um.
Em UML, agregac oes s
ao representadas por uma associac ao que mostra
um romb oide no lado do todo. Representac ao visual de um relacionamento
Agregac
ao em UML.
http://www.candidatoreal.com
Composi
cao
Composic oes s
ao associac
oes que representam agregacoes muito fortes. Isto
significa que composic
oes formam relacionamentos todo-parte tambem, mas o
relacionamento e t
ao forte que as partes n
ao pode existir independentes.
Em UML, composic oes s
ao representadas por um romb oide s
olido no lado
do todo.
139
http://www.candidatoreal.com
140
http://www.candidatoreal.com
pelos diagramas de seq uencia, mas neste, a enfase e colocada em como as in-
terac
oes ocorrem no tempo, enquanto os diagramas de colaborac ao colocam os
relacionamentos entre os objetos e sua topologia em destaque.
Em diagramas de colaborac ao, as mensagens enviadas de um objeto para
outro sao representadas por setas, mostrando o nome da mensagem, par ametros,
e a sequencia da mensagem. Diagramas de colaborac ao sao especialmente in-
dicados para mostrar um fluxo ou situac ao especfica do programa e podem,
rapidamente, demonstrar ou explanar um processo na l ogica do programa.
tence a exatamente uma classe e representa um resumo dos valores dos atributos
que uma classe pode tomar. Um estado UML descreve o estado interno de um
objeto para uma classe em particular
Observe que nem toda mudanca em um dos atributos de um objeto pode ser
representada por um estado, mas somente aquelas mudancas que podem afetar
significativamente o trabalho do objeto.
Existem dois tipos especiais de estados: inicial e final. Eles s
ao especiais
porque nenhum evento pode fazer com que um objeto retorne para seu estado
inicial, e da mesma maneira nenhum evento pode tirar um objeto de seu estado
final, uma vez que ele j
a o tenha alcancado.
141
http://www.candidatoreal.com
142
http://www.candidatoreal.com
143
http://www.candidatoreal.com
Linhas de texto. S
ao u
teis para adicionar informac
oes curtas de texto ao di-
agrama. S
ao textos livres.
Notas. S
ao u teis para adicionar informac
oes mais detalhadas sobre um objeto
ou situacao especfica. Elas possuem a grande vantagem de poderem ser
ancoradas a elementos UML para mostrar que a nota pertence a um objeto
especfico ou situacao.
Caixas. S
ao ret
angulos de forma livre que podem ser usados para agrupar itens,
tornando os diagramas mais legveis.
144
http://www.candidatoreal.com
Captulo 13
Ger
encia de Configura
cao e
Mudancas
A gestao da configurac
ao do software e uma atividade guarda-chuva e e aplicada
ao longo de todo o processo de software. O gerenciamento de configurac ao e de
solicitac
oes de mudanca envolve os seguintes itens:
Identificac
ao dos itens de configurac
ao;
Restric
ao das mudancas nesses itens;
Definic
ao e o gerenciamento das configurac
oes desses itens.
Sem o controle dos in umeros artefatos produzidos pelas muitas pessoas que
trabalham em um projeto, s ao criados artefatos conflitantes, gerando um grande
desperdcio para a organizacao. Os principais problemas s ao a atualizac
ao si-
http://www.candidatoreal.com
mult
anea, a notificac
ao limitada e a existencia de v
arias vers
oes. A seguir, cada
uma delas e descrita em detalhes.
Atualizac
ao simultanea:
Quando dois ou mais membros da equipe trabalham separadamente no
mesmo artefato, o ultimo membro a fazer mudancas desfaz o trabalho re-
alizado pelo anterior. O problema b asico e que se um sistema n
ao permite a
atualizac
ao simult
anea, isso leva as mudancas em serie e diminui o ritmo do
processo de desenvolvimento. Entretanto, com a atualizac ao simultanea,
o desafio e detectar se ocorreram atualizac oes simultaneamente e resolver
145
http://www.candidatoreal.com
Notificac
ao limitada:
Quando um problema e corrigido nos artefatos compartilhados por v
arios
desenvolvedores e alguns deles n
ao s
ao notificados da mudanca.
Varias vers
oes:
A maioria dos programas de grande porte e desenvolvida em v arias vers
oes
evolutivas. Uma vers ao pode estar sendo usada pelo cliente, enquanto
outra esta em teste e uma terceira ainda est a em desenvolvimento. Se
forem encontrados problema em qualquer uma das vers oes, as correc
oes
devem ser propagadas entre elas. Isso pode levar a confus oes que levam
a confusoes dispendiosas. Um sistema de Gerencia de Configurac ao e u
til
para gerenciar as diversas variantes de sistemas de software em desenvolvi-
mento pois controla as versoes que sao utilizadas em determinadas builds
do software ao compilar builds de programas individuais ou de uma nova
vers
ao do software de acordo com a especificacao definida pelo usuario e ao
impor polticas de desenvolvimento do sistema. Os principais benefcios
do gerenciamento da mudanca s ao:
Suporte a diversos metodos de desenvolvimento;
Preservac
ao da integridade do produto;
Garantia da abrangencia e precis
ao do produto configurado;
Ambiente est
avel no qual o produto ser
a desenvolvido;
Restric
ao das mudancas feitas nos artefatos com base nas polticas
do projeto;
Trilha de auditoria indicando por que, quando e por quem um artefato
foi alterado.
Alem disso, ele armazena dados detalhados sobre as alterac
oes, tais como,
quem criou uma vers ao especifica, quais vers
oes dos c
odigo fonte foram
utilizadas em determinado build, alem de outras informac oes relevantes.
13.1 As Atividades
http://www.candidatoreal.com
Configurar ambiente;
Estabelecer polticas;
Escrever plano;
Criar unidade de implantac
ao;
Relatar status de configurac
ao;
Realizar auditorias de configurac
ao;
146
http://www.candidatoreal.com
Criar baselines;
Fazer mudancas;
Liderar mudancas;
Enviar solicitac
ao de mudanca;
Atualizar solicitac
ao de mudanca.
13.2 Artefatos
Na disciplina de Gerencia de Configurac
ao os principais artefatos s
ao:
Reposit
orio do projeto;
Unidade de implantac
ao;
Metricas do projeto;
Registro da auditoria de configurac
ao.
13.3 Pap
eis e Responsabilidades
Na disciplina de Gerencia de Configurac
ao os principais papeis e responsabili-
dades s
ao:
http://www.candidatoreal.com
Gerente de configurac
ao
Configurar ambiente;
Estabelecer polticas;
Escrever plano;
Criar unidades de implantac
ao;
Relatar status de configurac
ao;
Realizar auditoria de configurac
ao.
147
http://www.candidatoreal.com
Integrador
Criar espacos de trabalho de integrac
ao;
Criar baselines;
Promover baselines.
Outros papeis
148
http://www.candidatoreal.com
Captulo 14
CMM - Capability
Maturity Model
1. Inicial
2. Repetitivo
3. Definido
4. Gerenciado
5. Em Otimizac
ao
excelencia na gest
ao de software. O objetivo principal nas transic oes desses
nveis de maturidade e a realizac
ao de um processo controlado e mensurado
como a fundacao para melhoria contnua. Cada nvel de maturidade possui um
conjunto de praticas de software e gest
ao especficas, denominadas
areas-chave
do processo (KPA). Estas devem ser implantadas para a organizac ao atingir o
nvel de maturidade em questao.
O CMM identifica os nveis atraves dos quais uma organizacao deve evoluir
para estabelecer uma cultura de excelencia na engenharia de software. Como
cada nvel de maturidade do CMM forma a base necess aria sobre a qual o
pr
oximo nvel ser
a construdo, normalmente tentar pular nveis e improdutivo,
149
http://www.candidatoreal.com
A adoc
ao de um processo de desenvolvimento ajuda a garantir que pr aticas
existentes s
ao utilizadas em momentos de stress. Quando estas pr
aticas s
ao ado-
tadas, os projetos decorrem e sao gerenciados de acordo com o planejamento
inicial.
http://www.candidatoreal.com
150
http://www.candidatoreal.com
As
areas chaves de processo desse nvel de maturidade s
ao:
Acompanhamento e Supervis
ao de Projeto de Software (SPTO);
As
areas chaves de processo desse nvel de maturidade s
ao:
Definic
ao do Processo da Organizac
ao (OPD);
Coordenac
ao entre Grupos (IC);
Revis
oes Tecnicas Formais (PR).
151
http://www.candidatoreal.com
Organizac
oes neste nvel conseguem metas qualitativas para o processo de
desenvolvimento de software e de manutenc
ao.
As
areas chaves de processo desse nvel de maturidade s
ao:
As
areas chaves de processo desse nvel de maturidade s
ao:
http://www.candidatoreal.com
Prevenc
ao de Defeitos (DP);
152
http://www.candidatoreal.com
As
areas-chave do Nvel 3 est
ao focadas tanto nas quest
oes do projeto, quanto
da organizac
ao, conforme a organizac ao estabelece uma infra-estrutura que efe-
tivamente institucionaliza os processos de engenharia de software e de gerenci-
amento de todos os projetos.
Figura 14.2: Areas-chave de processo no modelo CMM
153
http://www.candidatoreal.com
de maturidade.
Pessoas
Nvel 1: Sucesso depende de indivduos e her
ois. Regime constante
de emergencia (apagar incendio). Relacionamento entre grupos e
descoordenado e muitas vezes conflitante;
Nvel 2: Sucesso ainda depende de indivduos, mas passam a contar
com apoio gerencial. Os compromissos s ao compreendidos e gerenci-
ados. Existe treinamento para algumas func oes;
Nvel 3: Grupos de projeto trabalham de maneira coordenada. O
treinamento e planejado de acordo com as necessidades de cada papel
e aplicado convenientemente;
Nvel 4: Existe um forte sentido de trabalho em equipe;
Nvel 5: Todos est
ao engajados em atividades de melhoria contnua.
Tecnologia
Nvel 1: A introduc
ao de novas tecnologias e arriscada;
Nvel 2: Atividades bem definidas facilitam a introduc
ao de novas
tecnologias;
Nvel 3: Novas tecnologias s
ao avaliadas qualitativamente;
Nvel 4: Novas tecnologias s
ao avaliadas quantitativamente;
Nvel 5: Novas tecnologias s
ao planejadas e introduzidas com total
controle.
Medidas
154
http://www.candidatoreal.com
Parte IV
Linguagem de Programa
c
ao
Java
http://www.candidatoreal.com
155
http://www.candidatoreal.com
Captulo 15
Conceitos B
asicos de Java
15.1 Pacotes
Em projetos pequenos e comum colocar todos os arquivos java em um u nico
diret
orio. Essa e uma abordagem r apida, simples. No entanto, se o pequeno
projeto comecar a crescer, o n
umero de arquivos aumentar
a e administr
a-los em
um unico diret
orio pode se tornar um problema.
Pacotes nao s
ao nada mais que uma forma de organiza os arquivos que inte-
gram o projeto em diferentes diret
orios de acordo com suas funcionalidades ou
categoria a qual eles pertencam.
156
http://www.candidatoreal.com
Para indicar que uma classe pertence a um determinado pacote basta inciar
o arquivo java como mostrado no exemplo a seguir.
//Somente c
odigo pode vir antes dessa linha
package world;
Uma classe p ublica pode ser acessada por qualquer outra classe. Caso seja
declarada sem o modificador public, a classe ser
a package-private, ou seja, s
o
podera ser acessada por classes do mesmo pacote.
15.3 Vari
aveis
Na linguagem de programac
ao Java s
ao definidos os seguintes tipos de vari
aveis:
Vari
aveis de Inst
ancia (Atributos n
ao est
aticos): Um objeto armazena seu
estado individual em atributos n ao est
aticos, ou seja, declarados sem o
157
http://www.candidatoreal.com
Vari aveis de Classe (Atributos est aticas): Uma vari avel de classe e todo
atributo declarado com o modificador static. Isso indica ao compilador
que existe apenas uma c opia da variavel, n
ao importando o n umero de
vezes que essa classe foi instanciada. Portanto, quando o valor de uma
variavel de classe e alterada em um dos objetos, o novo valor se torna
visvel para todos os outros objetos da mesma classe. Para impedir que
uma vari avel de classe tenha seu valor alterado ela deve ser declarada com
o mofificador final.
Variaveis Locais: As vari aveis locais sao utilizadas para armazenar o es-
tado tempor ario dos metodos. A sintaxe de declarac ao de uma variavel
local e similar a de declarac ao de uma vari avel de inst
ancia. O que deter-
mina se uma vari avel e local e a parte do c
odigo em que ela e declarada
- entre as chaves que determinam o incio e o fim de um metodo. Uma
vari
avel e visvel apenas para o metodo no qual foi declarada; n ao pode
ser acessada do resto da classe.
// Vari
avel de Inst^
ancia
public int velocidade = 0;
// Vari
avel de Classe
public static int qtdRodas = 2;
// Vari
avel de Classe com valor constante
public static final String marca = "Caloi";
}
http://www.candidatoreal.com
15.4 Operadores
A lista abaixo sumariza os operadores suportados pela linguagem Java:
Operador de Atribuic
ao Simples
= Operador de Atribuic
ao Simples
158
http://www.candidatoreal.com
Operadores aritmeticos
+ Adic
ao (Tambem utilizado para concatenac
ao de Strings)
- Subtrac
ao
Multiplicac
ao
/ Divis
ao
% Resto da Divisao
Operadores Un
arios
+ Operador un
ario mais
Operador un
ario menos; Inverte o sinal de uma vari
avel
++ Operador de Incremento; Incrementa um valor de 1
Operador de Decremento; Decrementa o valor de 1
! Operador L
ogico de complemento; Inverte o valor de um boolean
Operadores de Comparac
ao
== Igual
!= Diferente
> Maior
>= Maior ou Igual
< Menor
<= Menor ou Igual
instanceof Compara um objeto a um tipo especfico
Operadores Condicionais
159
http://www.candidatoreal.com
15.5 Express
oes, Senten
cas e Blocos
Uma express ao e uma construc
ao feita de vari
aveis, operadores e chamadas de
metodos, descrita de acordo com a sintaxe da linguagem. A seguir, exemplos
de express
oes:
//Declara
c~ao e inicializa
c~ao de uma v
ari
avel do tipo int
int cadence = 0;
//Atribui
c~ao de valor a uma posic~
ao de um vetor de int
anArray[0] = 100;
//Imprimindo um valor na tela
System.out.println("Element 1 at index 0: " + anArray[0]);
//Atribui
c~ao de valor baseado no resultado de uma operac~ao de adi
c~ao
result = 1 + 2;
//Utiliza
c~ao de par^
entesis para explicitar ordem de execu c~
ao das opera
c~oes
zaz = x / (y+10);
// Statement de atribuic~
ao
aValue = 8933.234;
// Statement de incremento
aValue++;
// Statement de chamada de metodo
System.out.println("Hello World!");
// Statement de cria
c~ao de objeto
Bicycle myBike = new Bicycle();
class BlockDemo {
public static void main(String[] args) {
boolean condition = true;
if (condition) { // begin block 1
System.out.println("Condition is true.");
} // end block one
else { // begin block 2
System.out.println("Condition is false.");
} // end block 2
}
}
160
http://www.candidatoreal.com
If-Then
void applyBrakes(){
if (isMoving){ // the "if" clause: bicycle must moving
currentSpeed--; // the "then" clause: decrease current speed
}
}
If-Then-Else
//Exemplo 1
void applyBrakes(){
if (isMoving) {
currentSpeed--;
} else {
System.err.println("The bicycle has already stopped!");
}
}
//Exemplo 2
class IfElseDemo {
public static void main(String[] args) {
grade = B;
} else if (testscore >= 70) {
grade = C;
} else if (testscore >= 60) {
grade = D;
} else {
grade = F;
}
//O resultado ser
a C pois, uma vez que a condi
c~ao
e atendida,
//o restante do c
odigo If-Then-Else n~
ao
e mais avaliado
System.out.println("Grade = " + grade);
161
http://www.candidatoreal.com
}
}
Switch
class SwitchDemo {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
http://www.candidatoreal.com
While e Do-While
//Exemplo While
class WhileDemo {
public static void main(String[] args){
int count = 1;
//Teste realizado antes da execu
c~ao do bloco de c
odigo
162
http://www.candidatoreal.com
//Exemplo Do-While
class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
//Teste ao fim da execu
c~ao do bloco de c
odigo
//C
odigo
e executado ao menos uma vez
} while (count <= 11);
}
}
For
//Exemplo 1
class ForDemo {
public static void main(String[] args){
for(int i=1; i<11; i++){
System.out.println("Count is: " + i);
}
}
}
//Exemplo 2
for ( ; ; ) { //infinite loop
// c
odigo
}
//Exemplo 3
class EnhancedForDemo {
http://www.candidatoreal.com
Break
//Exemplo 1
class BreakDemo {
163
http://www.candidatoreal.com
//Exemplo 2
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {{32,87,3,589},
{12,1076,2000,8},
{622,127,77,955}};
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length; j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
http://www.candidatoreal.com
if (foundIt) {
System.out.println("Found " + searchfor + " at " + i + ", " + j);
} else {
System.out.println(searchfor + " not in the array");
164
http://www.candidatoreal.com
}
}
}
Continue
//Exemplo 1
class ContinueDemo {
public static void main(String[] args) {
//Exemplo 2
class ContinueWithLabelDemo {
public static void main(String[] args) {
test:
for (int i = 0; i <= max; i++) {
int n = substring.length();
int j = i;
int k = 0;
while (n-- != 0) {
if (searchMe.charAt(j++)!= substring.charAt(k++)) {
//Interrompe a itera
c~ao do loop while e vai
//para proxima itera
c~ao do loop for,
//marcada pelo label test
continue test;
165
http://www.candidatoreal.com
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ? "Found it" : "Didnt find it");
}
}
Classes Aninhadas
Classes Instanciadas
Classes Membro
Classes Locais
Classes An
onimas
http://www.candidatoreal.com
//Classe externa
class Par {
166
http://www.candidatoreal.com
//Classe interna
static class Chave {
private String nome;
public Chave(String nome) {
this.nome = nome;
}
}
as vari
aveis podem assumir. Por exemplo: estacoes do ano, naipes ou cartas do
baralho, planetas do sistema solar etc. Originalmente, a forma padrao utilizada
para representar tipos enumerados era o chamado int Enum Pattern (tipos enu-
merados baseados em inteiros).
167
http://www.candidatoreal.com
Valores imprimidos n
ao s
ao explicativos: Como os valores s
ao int, quando
impressos n
ao apresentam a informacao que representam diretamente.
private printSeasons() {
//Loop recuperando cada um dos valores poss
veis de Season
for (Season s : Season.values()){
System.out.println(s);
}
}
}
15.9 Anotac
oes
Anotacoes (annotations) proveem dados sobre o programa mas n ao s
ao parte do
do programa propriamente dito. Elas n ao possuem efeito direto na operac
oes do
c
odigo com o qual est ao relacionadas. Esse recurso da linguagem Java permite
que o programador n ao se preocupe em escrever c odigo auxiliar (arquivos de
configurac
ao, por exemplo). A ideia e que o programador diga o que tem que
ser feito utilizando as anotacoes e ferramentas auxiliares facam o restante do
http://www.candidatoreal.com
Informac
oes para o compilador: Anotac
oes podem ser utilizadas pelo com-
pilador para detectar erros ou sumprimir mensagens de warning;
Processamento em tempo de Compilac ao ou Deploy: Ferramentas aux-
iliares podem processar as anotac
oes para gerar c
odigo, arquivos XML
etc;
Processamento em tempo de Execuc ao: Algumas anotac
oes podem ser
processsadas em tempo de execuc
ao;
168
http://www.candidatoreal.com
Documentac
ao: Anotacoes podem ser utilizadas para substituir coment
arios
no c
odigo.
Os tres pre-defindos de anotac
oes utilizadas pelo compilador s
ao:
@Deprecated: Indica que o elemento marcado est
a deprecated e n
ao deve
ser mais utilizado. O compilador gera um warning sempre que um pro-
grama utilizar um uma classe, um metodo ou um atributo marcado como
@Deprecated;
//Indica que o m
etodo ir
a sobrescrever o m
etodo da superclasse
@Override
int overriddenMethod() { //c
odigo }
15.10 Gen
ericos
http://www.candidatoreal.com
Os genericos s
ao um recurso introduzido a partir Java 5 e permite ao progra-
mador escrever c odigo abstraindo tipos de dados. Os genericos s
ao tipicamente
utilizados em conjunto com interfaces ex: List) que herdam da interface Collec-
tion ou de classes que a implementam (ex: AbstractList, ArrayList, LinkedList,
Vector)
169
http://www.candidatoreal.com
//Criac~
ao de uma collection do tipo LinkedList
List myIntList = new LinkedList();
//Adi
c~ao de um elemento do tipo Integer a collection
myIntList.add(new Integer(0));
//Recuperando um elemento da collection. Cast para Integer
e necess
ario
Integer x = (Integer) myIntList.iterator().next();
//Criac~
ao de uma collection LinkedList para armazenar objetos do tipo Integer
List<Integer> myIntList = new LinkedList<Integer>();
//Adi
c~ao de um elemento do tipo Integer a collection
myIntList.add(new Integer(0));
////Recuperando um elemento da collection. Cast n~ao e necess
ario
Integer x = myIntList.iterator().next();
//Wildcards ou Coringas
//M
etodo com par^
ametro Casulo. Aceita Casulo de qualquer tipo
void imprimir (Casulo<?> c) {
// c
odigo do m
etodo ...
}
170
http://www.candidatoreal.com
15.11 Reflex
ao
A Reflection permite um programa Java examinar ou fazer a introspecc ao nele
mesmo, ou seja, olhar e examinar suas propriedades e estrutura. Com isso, voce
pode, por exemplo obter o nome de todos os membros de uma classe, como
atributos e metodos, bem como executar um metodo usando a Introspection.
Esse recurso e utilizado, por exemplo, pelos ambientes de desenvolvimento (as
IDEs) para examinar e exibir a estrutura e conte udo das classes e beans. A
seguir um exemplo do uso de refetions.
import java.lang.reflect.*;
171
http://www.candidatoreal.com
System.out.println("exce
c~ao #" + j + " " + evec[j]);
//Sa
da da execu
c~ao da classe Classe1:
//Lista de m
etodos da Classe1 com todas as suas propriedades
-------------------------------------
nome = funcao1
-------------------------------------
membro de:class Classe1
modificador:private
par^
ametro #0 class java.lang.Object
par^
ametro #1 int
excec~
ao #0 class java.lang.NullPointerException
tipo de retorno = int
-------------------------------------
nome = main
-------------------------------------
membro de:class Classe1
modificador:public static
par^
ametro #0 class [Ljava.lang.String;
tipo de retorno = void
http://www.candidatoreal.com
172
http://www.candidatoreal.com
Captulo 16
Classes Essenciais
16.1.1 Exce
coes tpicas
Em Java excecoes s
ao objetos. A classe Exception e a superclasse de todas as
excec
oes. Exemplos tpicos de excec
oes s
ao:
Indice de uma array fora do intervalo permitido (ArrayIndexOutOfBound-
sException);
Problemas em operac
oes aritmeticas, como overflows e divis
oes por zero
(ArithmeticException);
173
http://www.candidatoreal.com
Argumentos inv
alidos numa chamada a um metodo (IllegalArgumentEx-
ception);
Uso de uma referencia que n
ao aponta para nenhum objeto (NullPoint-
erException);
Acesso a um arquivo inexistente (FileNotFoundException);
Erros de banco de dados (SQLException);
//Exemplo 1: M
etodo indica que todas exce
c~oes ser~
ao lan
cadas, ou seja,
// n~
ao ser~
ao tratadas internamente.
//Exemplo 2: M
etodo indica que as exce~
oes do tipo excecao1
http://www.candidatoreal.com
174
http://www.candidatoreal.com
try {
http://www.candidatoreal.com
// C
odigo que pode gerar exce
c~oes dos tipos
// ExceptionType1 e ExceptionType2
}catch(ExceptionType1 opa1){
// C
odigo para lidar com uma exce
c~ao do tipo
// ExceptionType1
175
http://www.candidatoreal.com
}finally{
// C
odigo que deve ser executado em qualquer caso
Threads s
ao comumente chamadas de processos leves. Processos e threads
proveem um ambiente de execuc
ao, mas criar uma thread requer menos recursos
que criar um processo. As threads existem dentro dos processos - cada processo
possui pelo menos uma. As threads compartilham os recursos do processo, in-
cluindo mem oria e arquivos abertos, favorecendo a eficiencia da comunicac
ao,
porem a tornando potencialmente problem atica.
Cada aplicac
ao possui pelo menos uma thread - ou v
arias, se considerarmos
a threads de sistema. Do ponto de vista do programador, uma aplicacao comeca
com apenas uma u nica thread chamada main, e essa possui a habilidade para
criar novas threads.
http://www.candidatoreal.com
176
http://www.candidatoreal.com
177
http://www.candidatoreal.com
16.2.3 Interrup
coes
Uma interrupcao indica que a thread deve parar o que est
a fazendo e comecar
a fazer outra coisa. E o programador quem deve definir como a thread deve
responder a uma interrupcao. O uso mais comum de interrupc oes e finalizar a
execuc
ao de uma thread.
16.2.4 Joins
O metodo join e usado para fazer com que uma thread aguarde ate que outra
thread termine. Em geral, o join e utilizado para a thread esperar pelo termino
da execuc
ao de suas threads filhas. Imagine uma aplicac ao que dependa da
execuc
ao de tres tarefas independentes A, B e C. A aplicac
ao s
o pode continuar
quando cada uma das tarefas estiver sido completada. Portanto, a aplicac ao
(thread principal) deve executar o metodo join para cada uma das tarefas A,B
e C. O codigo java para essa situac
ao teria a seguinte estrutura:
//C
odigo inicial da thread main
//Threads auxiliares A, B e C
Thread a = new thread_tarefaA();
Thread b = new thread_tarefaB();
Thread c = new thread_tarefaC();
http://www.candidatoreal.com
//C
odigo restante da thread main
178
http://www.candidatoreal.com
16.2.5 Sincroniza
c
ao
As threads se comunicam entre si essencialmente por meio de compartilhamento
no acesso de atributos e referencias a objetos. Essa e uma forma de comunicac ao
eficiente, porem permite a ocorrencia de dois tipos de erros: interferencia entre
threads e erros de consistencia de mem oria. Para contornar esses problemas o
Java oferece o recurso de sincronizac ao.
//Interfer^
encia entre threads
int a = 0;
thread_incrementa_a.start();
thread_decrementa_a.start();
thread_imprime_a.start();
statements sincronizadas.
179
http://www.candidatoreal.com
private int c = 0;
//M
etodos sincronizados para manipular um contador
public synchronized void increment() {c++;}
public synchronized void decrement() {c--;}
public synchronized int value() {return c;}
private long c1 = 0;
private long c2 = 0;
private Object lock1 = new Object();
private Object lock2 = new Object();
(new Thread(r)).start();
e.execute(r);
180
http://www.candidatoreal.com
Na primeira forma, uma nova thread seria criada para realizar a tarefa
definida em r, enquanto na segunda, isso dependeria da implementac
ao da in-
terface executora.
Streams de Bytes
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
181
http://www.candidatoreal.com
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {in.close();}
if (out != null) {out.close();}
}
}
}
Streams de Caracteres
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
}
}
import java.io.FileReader;
182
http://www.candidatoreal.com
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;
No exemplo 1 o c
odigo utiliza operac
oe de I/O n
ao bufferizadas. Isso significa
que a cada requisic
ao de leitura ou escrita expressa no c odigo e prontamente
tratada pelo sistema operacional, disparando, por exemplo, acesso ao disco ou
a rede.
`
Para reduzir esse tipo de overhead a plataforma Java implementa I/O streams
bufferizados. Os input streams leem dados de uma area de buffer; a API in-
put nativa so e chamada quando esse buffer est a vazio ou n
ao contem os dados
procurados. Similarmente, os output streams escrevem dados para uma area de
buffer, enquanto a API nativa de output s o e chamada quando o buffer de es-
crita est
a cheio ou quando algum comando que implique no flushing e utilizado,
por exemplo, println.
16.3.2 Serializa
c
ao - Streams de Objetos
Os streams apresentados ate agora s ao chamados data streams. Assim como
http://www.candidatoreal.com
183
http://www.candidatoreal.com
import java.io.*;
try {
// Serializa o objeto para um arquivo
ObjectOutput out = new ObjectOutputStream(
new FileOutputStream("pessoa.ser")
);
out.writeObject(p);
out.close();
}catch (IOException e) {
//Pode ser gerado na serializac~
ao ou desserializa
c~ao
System.out.println(e.getMessage());
}catch (ClassNotFoundException e) {
//Pode ser gerado desserializac~
ao
System.out.println(e.getMessage());
}
}
184
http://www.candidatoreal.com
185
http://www.candidatoreal.com
#Esta
e uma linha de comentario
#Mon Jun 11 22:37:16 BRT 2007
app.diretorio=/zaz/traz/bin
app.usuario=camatchones
app.mododeoperacao=producao
import java.util.Properties;
import java.io.*;
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
186
http://www.candidatoreal.com
187
http://www.candidatoreal.com
Captulo 17
Colec
oes
s
ao:
188
http://www.candidatoreal.com
Reduc
ao do esforco de aprendizado de APIs, eliminando a necessidade de
se aprender v
arias APIs de colec
oes diferentes;
Reduc
ao do esforco de projetar e implementar APIs, eliminando a neces-
sidade de se criar APIs de colec
oes pr
oprias;
As colec oes s
ao necess
arias, devido o uso dos arrays possuir uma serie de
limitac
oes, como por exemplo:
Um array n
ao pode ter o tamanho modificado depois de criado;
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element); //optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); //optional
189
http://www.candidatoreal.com
// Array operations
Object[] toArray();
<T> T[] toArray(T[] a);
// Basic operations
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element); //optional
boolean remove(Object element); //optional
Iterator<E> iterator();
// Bulk operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); //optional
boolean removeAll(Collection<?> c); //optional
http://www.candidatoreal.com
// Array Operations
Object[] toArray();
<T> T[] toArray(T[] a);
Existem 3 implementac
oes da interface Set:
190
http://www.candidatoreal.com
HashSet: Implementac ao de Set que utiliza uma tabela hash para guardar
seus elementos. N ao garante a ordem de iterac
ao, nem que a ordem per-
manecer a constante com o tempo (uma modificac ao da colec
ao pode al-
terar a ordenac
ao geral dos elementos). Por utilizar o algoritmo de tabela
hash, o acesso e r
apido, tanto para leitura quanto para modificac
ao.
LinkedHashSet: Implementac ao de Set que estende HashSet, mas adi-
ciona previsibilidade ` a ordem de iterac
ao sobre os elementos, isto e, uma
iterac
ao sobre seus elementos (utilizando o Iterator) mantem a ordem de
inserc
ao (a inserc
ao de elementos duplicados nao altera a ordem anterior).
Internamente, e mantida uma lista duplamente encadeada que mantem
esta ordem. Por ter que manter uma lista paralelamente ` a tabela hash, a
modificacao deste tipo de colec
ao acarreta em uma leve queda na perfor-
mance em relac ao ` a HashSet, mas ainda e mais r
apida que uma TreeSet,
que utiliza comparac oes para determinar a ordem dos elementos.
A seguir s
ao mostrados alguns exemplos:
import java.util.*;
Rodando o programa:
A sa
da produzida ser
a:
191
http://www.candidatoreal.com
Duplicate detected: i
Duplicate detected: i
Rodando o programa:
A sa
da produzida ser
a:
Duplicate detected: i
Duplicate detected: i
Rodando o programa:
A sa
da produzida ser
a:
Duplicate detected: i
Duplicate detected: i
import java.util.*;
192
http://www.candidatoreal.com
dups.add(a);
// Destructive set-difference
uniques.removeAll(dups);
System.out.println("Unique words: " + uniques);
System.out.println("Duplicate words: " + dups);
}
Ha duas implementac
oes Set com finalidades especiais: EnumSet e CopyOn-
WriteArraySet.
// Positional access
E get(int index);
E set(int index, E element); //optional
boolean add(E element); //optional
void add(int index, E element); //optional
E remove(int index); //optional
boolean addAll(int index,
Collection<? extends E> c); //optional
http://www.candidatoreal.com
// Search
int indexOf(Object o);
int lastIndexOf(Object o);
// Iteration
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
// Range-view
List<E> subList(int from, int to);
193
http://www.candidatoreal.com
Existem 2 implementac
oes da interface List:
A seguir s
ao mostrados alguns exemplos:
import java.util.*;
c.add("Jose");
Iterator i = c.iterator();
while( i.hasNext() ) {
System.out.print( i.next() + " " );
}
System.out.println();
System.out.println(c.get(2));
System.out.println(c);
}
194
http://www.candidatoreal.com
Ha uma implementac
ao List com finalidades especiais: CopyOnWriteAr-
rayList.
// Basic operations
V put(K key, V value);
V get(Object key);
V remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
// Bulk operations
void putAll(Map<? extends K, ? extends V> m);
void clear();
// Collection Views
http://www.candidatoreal.com
195
http://www.candidatoreal.com
Existem 3 implementac
oes da interface Map:
HashMap: Implementac ao de Map que utiliza uma tabela hash para ar-
mazenar seus elementos. O tempo de acesso aos elementos (leitura e mod-
ificac
ao) e constante (muito bom) se a func
ao de hash for bem distribuda,
isto e, a chance de dois objetos diferentes retornarem o mesmo valor pelo
metodo hashCode() e pequena.
A seguir s
ao mostrados alguns exemplos:
import java.util.*;
196
http://www.candidatoreal.com
Rodando o programa:
A sa
da produzida ser
a:
8 distinct words:
8 distinct words:
8 distinct words:
H
a duas implementac
oes Map com finalidades especiais: EnumMap, WeakHashMap
e IdentityMap.
E element();
boolean offer(E e);
E peek();
http://www.candidatoreal.com
E poll();
E remove();
197
http://www.candidatoreal.com
podem usar regras diferentes de colocac ao. Cada implementac ao de queue deve
especificar suas propriedades.
possvel que algumas implementac
E oes de queue restrinja o numero de el-
ementos que prende; tais filas s ao conhecidas como limitadas. Algumas im-
plementacoes de queue em java.uitl.concurrent s ao limitadas, mas as imple-
mentacoes em java.util nao sao.
As implementac oes da queue geralmente n ao permitem a inserc
ao de elemen-
tos nulos. A implementac ao de LinkedList, que foi adaptada para implementar
uma queue, e uma excec ao.
A seguir e mostrado um exemplo:
import java.util.*;
198
http://www.candidatoreal.com
Captulo 18
18.1 Conceitos B
asicos
Java Database Connectivity ou JDBC e um conjunto de classes e interfaces
(API) escritas em Java que faz o envio de instruc
oes SQL para qualquer banco
de dados relacional.
As 4 categorias de driver s
ao:
199
http://www.candidatoreal.com
}
A classe Class tem como func
ao instanciar a classe identificada entre parenteses
e registr
a-la com a JVM, que ir a utiliz
a-la para acessar o SGBD. Em nosso ex-
emplo, utilizamos a ponteODBC-JDBC. A Class e uma classe no pacote de
java.lang.
18.3 Conex
ao
Feito o carregamento dos drivers, o proximo passo e o estabelecimento da
conexao. Tipicamente uma aplicac
ao JDBC conecta ao banco de dados usando
200
http://www.candidatoreal.com
Para abrirmos uma conex ao, normalmente teremos que entrar em contato
com o SGBD. A linha mostrada abaixo d
a a ideia geral de como e feita `
a conex
ao
atraves do mecanismo DriverManager:
try{
Connection con = DriverManager.getConnection(url,"user", "password");
}catch( SQLException x ){
System.out.println( "Couldnt get connection!" );
}
banco de dados e o programador pode utiliz a-lo para enviar statements SQL
para o banco.
18.4 Statements
necess
E ario criar um objeto da classe Statement para armazenar o pedido
que ser
a enviado ao SGBD. O programador deve simplesmente criar um objeto
deste tipo, informar a cadeia de strings que representa seu comando SQL e
depois executa-lo, usando metodos especiais dependendo do tipo de comando
desejado. Para um SELECT, usa-se o executeQuery. Para INSERT, UPDATE
e DELETE executeUpdate. Por exemplo:
201
http://www.candidatoreal.com
202
http://www.candidatoreal.com
Note que voce pode possuir diversos tipos de campos diferentes, e nem por
isso precisa usar aspas duplas, aspas simples ou nenhuma aspas na hora de
passar os valores para serem incluidos/consultados/alterados no banco. Esta e
uma das principais vantagens de se usar PreparedStatement.
Lembre-se que a ordem dos sets dever ao ser dadas na mesma ordem que
foi inserido os sinais de interrogac
ao. A seguir e mostrada uma operac
ao de
UPDATE usando Statement e PreparedStatement.
//Usando Statement
updateSales.setString(2, "Colombian");
pstmt.executeUpdate();
18.6 Transac
ao
Existem situac
oes onde nao se deseja que uma instruc
ao tenha efeito a n
ao ser
que outras tambem tenham. Algumas situac oes necessitam que dados sejam
includos em mais de uma tabela para que sejam considerados consistentes. Ou
os dados estao presentes em todas as tabelas ou n
ao devem estar presentes em
nenhuma.
203
http://www.candidatoreal.com
con.setAutoCommit(false);
con.commit();
Caso algo nao tenha dado certo, podemos executar o metodo rollback para
que todo o statement seja descartado.
con.rollback();
importante lembrar algumas coisas quando lidamos com a transac
E ao de
maneira manual. Os recursos de banco normalmente ficam presos, esperando
um commi() ou rollback(). Assim, se um programa tratar ou entrar em loop
(ou mesmo demorar muito) o acesso ao banco fica prejudicado. Existe ainda a
possibilidade de um dirty read, onde outro programa recupera dados do disco
que voce est
a alterando, mas ainda nao validou. Esse tipo de comportamento
pode ser evitado aumentando o nvel de isolamento entre transac
oes. Verifique
o metodo setTransactionIsolation() da classe Connection.
18.7 Informac
oes Complementares
Ocasionalmente, voce ira sentir necessidade de obter mais informac
oes sobre o
resultado de um SELECT ou mesmo sobre a tabela em quest ao. Pode-se obter
esses dados utilizando a classe ResultSetMetaData, que pode ser criada segundo
o exemplo:
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData meta = rs.get.MetaData();
http://www.candidatoreal.com
...
Statement stmt = conn.createStatement();
204
http://www.candidatoreal.com
import java.sql.*;
//estabelecendo a conex~
ao
Connection con = DriverManagerSet.getConnection("jdbc:obc:bd");
//criando statement
Statement stmt = con.createStatement();
//Executando a consulta
ResultSet rs = stmt.executeQuery("SELECT LOGIN, NOME FROM ATENDENTE");
//Percorrendo o resultset
While(rs.next()){
String login = rs.getString("LOGIN");
http://www.candidatoreal.com
205
http://www.candidatoreal.com
con.setAutoCommit(false);
}
http://www.candidatoreal.com
206
http://www.candidatoreal.com
Captulo 19
A plataforma J2EE
Sistemas de Informac
ao (EIS-tier ).
As caractersticas mais comuns dos componentes J2EE s
ao o fato deles serem
unidades de software auto-contidas e a capacidade de comunicac ao com outros
componentes. O que distingue um componente J2EE de uma classe comum e o
fato deles poderem ser combinados para formar uma aplicac ao J2EE, alem de
serem disponibilizados, executados e gerenciados por um servidor J2EE, comu-
mente chamado de servidor de aplicac ao.
207
http://www.candidatoreal.com
Seguranca;
Gerenciamento de Transac
oes;
Busca de Nomes e Diret
orios utilizando JNDI (Java Naming and Directory
Interface);
Conectividade Remota entre clientes e EJBs;
http://www.candidatoreal.com
Criac
ao de Destruic ao de EJBs e Servlets (Ciclo de Vida dos Compo-
nentes). S ao utilizados pools de componentes para atender as requisic
oes
dos usu arios. N ao e o programador instancia um componete no c odigo
do cliente, porem a criac ao efetiva do objeto acontece no servidor de
aplicac
ao, onde o componente existe e e executado de fato;
Acesso `
as APIs da plataforma;
208
http://www.candidatoreal.com
Clientes Web: P aginas Web din amicas geradas por componentes Web
(JSP ou Servlets) e que s
ao exibidas no browser. Existe ainda os applets,
que s
ao pequenos clientes de aplicac
ao escritos em Java e que rodam na
JVM embutida no browser.
209
http://www.candidatoreal.com
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
/**
* Method to receive get requests from the web server
* (Passes them onto the doPost method)
* @param req The HttpServletRequest which contains the
* information submitted via get
* @param res A response containing the required response
* data for this request
**/
/**
* Method to receive and process Post requests from the web server
* @param req The HttpServletRequest which contains the information
* submitted via post
* @param res A response containing the required response data for this request
**/
"<BODY>\n"+
"<CENTER><BR><B>\n"+
"Hello "+name+"\n"+
"</B></CENTER>\n</BODY>\n</HTML>";
210
http://www.candidatoreal.com
<HTML>
<HEAD><TITLE>My Name Servlet Demonstration</TITLE></HEAD>
<BODY>
<CENTER>
<FORM ACTION="/servlet/MyNameServlet" METHOD=POST>
Please Enter your name <INPUT TYPE=TEXT NAME="yourname">
<INPUT TYPE=SUBMIT VALUE=Submit>
</FORM>
</CENTER>
</BODY>
</HTML>
<HTML>
<HEAD><TITLE>My Name Servlet Response</TITLE></HEAD>
<BODY>
<CENTER><BR><B>
Hello zazaza
</B></CENTER>
</BODY>
</HTML>
211
http://www.candidatoreal.com
As sessoes s
ao representadas pelo objeto HttpSession. Uma sess ao pode ser
acessada chamando o metodo getSession do objeto request. Esse metodo re-
torna a sess
ao corrente associada com o request, e se ela ainda n
ao existir, uma
212
http://www.candidatoreal.com