Você está na página 1de 117
http://www. candidatoreal.com http://www.candidatoreal.com Parte II Légica de Programagao http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 6 Orientagao a Objetos 6.1 Introdugio A analise © o projeto orientados a objetos ttn como meta identificar o melhor tonjunta de objelos para descrever umm sistema de software. O funcionamesto deste sistema ee dé por meto do relacionamenta e troca de meneagens entros os objetos ‘Na programagéo orientade objetos, implementa-se wm conjunto de classes que definem os objetor presentes no sistema de software, Cada classe determaina © comportamento (definido nos métodos) ¢ os estados possiveis (atributes) de seus abjetos, assim coto 0 relacionamento cota outsos objetos ‘As linguagens de programagao que dio suporte a orientagio a objetos sao: Smaltalk, Perl, Python, Ruby, PIP, ColdFusion, C+, Object Pascal, Java, JavaScript, ActionScript, Delphi e Cz 6.2 Conceitos fundamentais 1. Objotos Os abjetos do mundo real compattitham duas caracterfstias: possuem win estado e tem um comportamento, Por exemplo, eachorro tem wm estado (nome, cor, raga) © um comportamento (latinda, comendo, lamabendo}. Analogamente, objetos de software s30 modeladas de acordo vom os o! jetos do mundo real, ou seja, possuem estado e comportamento (objeto & ‘uma abstragio do mundo real). Um objeto de software armazena seu et tado em varisveis e implementa seu comportamento com métodos. Estas ‘variéveis © métodos so formaalmente chamados de varidveis de instancia © métodos de instncia a fim de distinguf-los de varidveis e métodos de classe [As varidveis de um objeto faxom parte do seu micleo (contro). Os métodos tenvolvem e escondem o micleo do objeto de outros componentes da aplicagio, 1. Empacotar as varidweis de um objeto sobre proteeao de seus métodos chamado de encapsulamento. O encapsulamento é uilizado para esconder dotalhes de implementacdo pouco importante. Este 6 um dos principios fandamentais da programas otientada a objetos 84 http://www. candidatoreal.com http://www.candidatoreal.com Figura 6.1: Representagio de ura objeto As weres, por razies de eficiéncia ou implomentagio, um objeto deseja fexpor algumas de suas varidveis ou esconder alguns de seus métodos. Esta ‘capacidade de controlar quais componentes podem acessar seus métodos fe suas varidveis é chamada de Controle de Acosso. Cada objeto tem sua identidade que significa que dois objetos sio dis- Lintos mesmo que eles apresentem exatamente as mesmas caracteristicas {atsibutos igusis). Ksta identificagdo de objeto deve ser tnica, uniforme e Independente do conteido do objeto, A cestrutura de dados de um objeto é representada em termos de atributos (também chamados do campos (Selds)), ou soja, os dados ou informagées do objeto A1 mostra um exemplo da representagio de abjeto do mundo real para objeto de software. Os atribulos Raio, x e y so as varhiveis de instancia, Em Java, para declarar unna varidvel de classe basta acrescentar a palavea static, O mesmo vale para 0 método, ao aaah Ga => Figura 6.2: Representagio do objeto do mundo real para o objeto de software 2. Métodos E uma rotina que 6 exccutada por um cbjeto ao rocober uma mensager, Os métodos determinam 0 comportamento dos objetos de uma classe & ‘20 andlogos is fungSes ou procedimentos da programagio estruturada. 0 envio de mensagens (chamado de métodos) pode alterax o estado de um objeto. 3. Atribatos Os atributos si0 of elew mos que definem a estrutura de uma classe, Os http://www. candidatoreal.com http://www.candidatoreal.com tsibutos também sio conhecides como vartiveis de clasee, © podem ser Aivididos em dois tipos hisicas: atributos de instincia e de classe. Os valores dos atributos de instincia determinam o estado de cada objeto, ‘Um ateibuto de classe possui um estado que é compartilhado por todos os objetos de uma classe, Atrbutos de classe podem ser chamados também de atributos estaticos ot constantes. ‘As monsagens onviadas a um objeto (chamada de método) podem mudar 9 valor de um ou mais atributos, aterando o estado de um objeto. Classes ‘Uma classe é um modelo (protétipe) que defini as varisveis (estado) e os rétodos (comportamento) comuns a todos os objetos do mesmo tipo. Na ‘classe sio dofinidas as varidveis e implomentados os métodos. Os objetos ‘so criados a partir de suas classes [As clasces nio sio diretamente suportadas em todas as linguagens de ob- Jtos, endo sao novessérias para que a linguagem seja orientada a objelos Alf dot métodos ¢ atributos do wma classe, outzos possiveis membros Construtor: define o comportamento no momento da criagio de um ob- Jota de uma classe; Destrutor: define o comportamento no momento da esteuigio do objeto de uma classe, Notmalmcnte ulidizado para iberar recurso (meméria) do sistema; Propriedade: define o acesso « um estado do objeto; Evento: define um ponto em que o objeto pode chamar outros procedimentos de acordo com set comportementa e estado interno; Obs: Lembrar sempre que a classo define as caractor objetos sdo instancias dessa classe, com estado propria, Mencagons Objetos se comunicam entre si por meio do envio de mensagens, Quando tum objeto A deseja que o objeto B realize um dos seus métods (de B), 0 objeto A envia uma mensagem para o objeto B, Algumas wezes, 0 objeto ‘que recebe a mensagom precisa de mais informagies para saber cxata- mente 0 que fazer. Por exemplo, quando voce quer trocar as marchas de uma bicilota, dove-se indicar qual a marcha desejada, Esta informagio companha a mensagem como un parannetro, Assim, tvés componentes fazem parte de uma mensegem: 9 objeto para onde a mensagem é enderecada (bicileta); o nome do rétodo a realizar (mudar marcha); pardmetro(s) necessitios para realizar ‘0 métode (segunda marcha} ‘A monsagem, também, pode sor direcionada dizetamente a una classe por meio da invocagio de um método dinamico. Heranga ‘A hovanca é uma mecanismo que permite criar novas elastes a partir de ‘lasses jéexistontes, aproveitando-se das caracteristicas exstontes na classe 1 ser extendida. Com a heranca é possivel criar classes derivadas (sub- lasses) e partir de classes bases (superclasses) 8 http://www. candidatoreal.com http://www.candidatoreal.com ‘As subclasses herdam todas as caractersticas de sas superclasses, como suas variveis (estado) e seus métodos (compartamento). Entetanto, as subclasses no estao limitadas ao comportamento herdado de sua super classe. As subclasses podem adicionar vatidveis e métodos a aqueles her~ dados As subclasses, também, podem redefinir (override) métodos herdados © oferecer implementagbes especializadas para estes métodos. © conceito de heranga pode ser aplicado para mais de um nivel. A frvore de heranga, ou hierarquia de classe, pode ser to profunda quanto necessitio, Os métodos e varisveis sio herdados por meio dos niveis, Em eral, quanto mais baixa na hierarquis for a posigio da classe, mais es- pecffico 6 0 seu comportamento, Como benefice do conceito de heranca, podemos citar Subclasses oferecem comporlamentos expecializados a partir de elementos bisicos comuns, oferecidos pela superclasse. A utilizagio do conceito de hheranga & muito interessante, pois promove um grande reuso e reaproweita- mento de eédigo existente; Programadores podem defnir classes abstratas ‘que determinam comportamentos genéricas. A superclasse abstrata define © pode implementar parcialmente o compertamento de uma classe, mas a rmaioria das informagies da classe fica indefinida ou nao 6 imaplementada, ‘A heranga miltipla ovorre quando wma classe pode estender earacteristicas de virias outras classes ao mesmo tempo, ou soja, quando a subelasse possui mais de uma superclasse. Algumas linguagens evitam utilizar este maccanisino, pois pode levar uma codificagso confusa o que dificulta a rmanutencio do eéiligo. A.linguager Java nio suport heranca miltipla, apenas heranga simples. Ji a linguagem C+} oferoce suporte & heranga vit ‘Uma linguagem a0 utilizar heranga miltipla esté sujeita a dois proble- tas: colisio de nomes (nomnes idénticas nas classes superiores) « heranga ropetida (classe herda de uma classe superior que hurda de uma classe Polimorfismo Segundo a terminologia de orientagéo a objetos, polimorfismo significa que tama mesma mensagem enviada a diferentes objetae resulta em um com portsmento que é dependente da natureza do objeto que esté recebendo a rmensagem. Ou seja, duss ou mais classes derivadas de urea mesma super- classe podem invocar métodes que tém a mesma assinatura (nome, lista de parimetros e retorno), mas comportamentos distintos, especializado pata cada clasee derivada, usando para tanto uma referéneia a um objeto do tipo superclass. ‘A deciséo sobre qual método deve ser selecionaudo, de acordo com 0 tipa da ‘classe derivada, é tomada em tempo de exceugao por meio do mocanismo de ligagio tardia. No caso do polimorfimo, 6 necessirio que os métodos tenham exatamente a mesma identifieagdo, sendo utilizado 0 mecanicmo de vedefinigio de maétodos. A seguir um exemplo de polimorfsma http://www. candidatoreal.com http://www.candidatoreal.com public abstract class Operacaotlatenatica 4 public abstract double calcular(double x, double y); > public class Sona extends OperacaoMatenatica 4 public double calcular(double x, double y) < return xty; , > public class Subtracao extends OperacaoMatenatica < public double calcular(double x, double y) < return xy; > > public class Contas 4 public static void mostrarCalcule(Operacaotlatenatica opsracao, double x, double y) £ aysten.out.println("0 resultade é: " + operacas-caleular(e, 9); , public static void main( String args) ) < //erimeire calculazes una soma Concas.nostrarCaleulo(ney Soma(), 5, 5); //Inprine 9 resulvade ¢: 10 Contas.nostrarCalculo(nev Subtracao(), $, 5); //Inprine 0 resultado 6: 0 > y Note que, embora 0 método caleulas tena sido chamado duas vexes no terior de mostrarCalculo, o comportamento apresentado variou de acordo com a classe a0 qual ele reptesentava no momento, Os beneficios do polimorfismo sio: a clareza © menutengio do cédigo, a Aivisio da complexidade e aplicagdes flexivies Algumas Tinguagens promovem 0 polimorfismo principalmente por meio do uso de classos abstratas ¢ interfaces, como 6 0 caso da linguagem Java, Sobrecarga. A sobrecanga 6 um tipo de polimorfiemo que permite « existéncia de vérios rétodos de mesmo nome, porém com assinaluras levemente diferentes, ou seja, variando no nimero e tipo do argumontas eo valor deretorno. Ficaré ‘cargo de o compilador escolher de acordo com as listas de argumento os procedimentes ou métodos a serem executados. Por exemplo: 8 http://www. candidatoreal.com http://www.candidatoreal.com public class Sona < public int Soma (int x, int y) ¢ return x+y; ? public String Soma (String x, String y) { return xtys > public double Soma (double x, double y) ¢ return x+y; ? > 9, Interfaces ‘Uma interface é uma colegio de definigSes de métodos abstratos (sor im- plementacio). K utiiaada para os objetos interagirem entre si A classe ‘que implementa a interface deve implementar todos os métodos definidos na interface. Umaa interface, também, pode ineluir declaragses de con- stantes Apesar de uma classe abstrata implementar métodos abstratos, nao se pode confundir interface com classe abstrata. As classes abstratas nio podem ser instanciadas, v estas 36 sio utilizadas como superclasses. Por ‘exemplo, comida no mundo real. Nio existe uma instincis (objeto) do tipo comida O que existe aio instancias de eonouras, magis, bananas, ete Comida representa o conceito sbstrata e nto é capas de eriar uma instincia prépria. As classes abstratas podem possuir métodos implementados. Bm Java, para define uma interface utilia-se a palavra interface. Bmmb- ‘ora, uma classe nio posta conter aaaie de wma superclasee, a classe pode implementar raais de ura interface. Por este motivo, muitas das veses as interfaces si0 apresontadas como wma alternativa para heranga mnitipla de classes, 10, Pacotes ara tomar as classes mais fécsis de serem encontradas e utilizadas p evitar confit de nomes ¢ para controlar 0 acess0, pode-se agrupar classes relacionadas em pacotes (packages). Os pacotes organizam as classes as interfaces relacionadas. Cada pacote eriado corresponde a um ditet6rio, fo soja, as classes eas interfaces de wm mesmo pacote devem estar em sim saestno diretcrio, A uitilizagio de pacotes proporciona as seguintes vantagens: ica male fdeil para outros programadores determinat quais classes & texfaces estdo relacionadas; Os nomes das classes de um pacote nio irdo 30 http://www. candidatoreal.com http://www.candidatoreal.com cconflitar com nomes © classes de outros pacotes; Pode-se permitir que classes dentro de um mesmo pacote tenham acesso imestrito entre si, © restzingir 0 acesso por parte de classes definidas fora do pacote. Em Java, para etiar um pacote coloca-e a palavra chave package no inicio do arquivo onde a classe ou interface é definida, Obs. Aponas os membros (classe, varidveis © métodos) piblicos sio acessiveis fora do pacote onde foram definidos (Obs: Para uma linguagem ser considerada verdadeinamente orientada a objetos, a linguagem de programagao deve oferecer, no minimo, as carac- ‘eriticas de: encapeulamento, heranga ¢ polimorfisao. 6.3. Princfpios de programacio orientada a ob- jetos Bacicsmunte, os principios do programagio orientada a objetos sia Classes, objetose instancias; Campos, métodos e propriedades Heranga e classvs bierarquicas; Polimorfismo; Interfaces 6.4 Tratamento de excegdes 0 termo excesio éusado para designar um evento que ocorte durante a exeeuséo do um programa que deavia o fuxo normal de instaugSes, Em outras palavras, 10 provoceda por uma situagdo excepcional que requer uma agio especifica imediata. Muitos tipos de erros podem causar excesses: problemas que variam desde erros sérios de hardware, tal como uma falba no disco rigido, a eros simples de programagio, tal como tentar acessay una indice inexistente de um votor, divisio por zero, um abjeto nao initializado, ote Ertos causatn excogies, mas podem existir excegdes que nio eio erros. Por exemplo, numa fungao que Ié dados de um arquivo, a chegada ao final do arquivo ‘6:uma condicio exceptional que pode ser considerada como excogéo. Linguagens como ADA, C++, JAVA e EIFFEL possuer mecanismos préprios do tratamento do excegdes que faclitam a vida dos programadores tornando ainda 0 eédigo mais logivel uma ver que separam o eSdigo principal do eédigo die tratamento do ert. Quando uma excegaa occrre, cla necessita ser tratada, A unidade ox bloco de céiligo que manipula a exceyo 6 denominada tratador de excepio e a alo de indicar a ocorréneia de excegio e traneferit 0 controle para o tratador de excegio denominada sinalizagio da excesio. ‘Tratadores de excegio so comportam como procedimentos chaanados implici- ‘tamente pela ocorréneia de uma exeegio. Como tratadores de excegio nio sio chamados diretamente, cles nlo possuem nome, Em sua definigao costumam conter varidveislocais & bloco de eédigo de tratamento. Jé as excegées deve passuir nome hem definida para que postam ser identifeadas Caso o tratador que capturow a excegio no tenha conhecimento sufciente pata tratar a excegio ele pode lancar a excegio para utn nivel superior (propagacio da excegao). Assim pode-se gorar uma cadeia de propagagio até quo um trata- dot capture a excegio ou até atingit-se o nivel mais alto da hierarquia dos 90 http://www. candidatoreal.com http://www.candidatoreal.com tratadores onde normalmente um tratedor padrao sord exccutado na sada do programa, Outra questio importante 6 0 ponto de retorno apés a exeeuyio do bloco de cédigo do tratador. Isto dependers do modelo de continuagdo adotado pelo rmecanismo de tratamento de exeegdo, Em geral, adota-se um dos seguintes rodeos de continua ‘Torminagio: assume que o erro ertico © que no existem eondigies de retomar a0 ponto onde a excogio foi gerada, retornando o controle para o nivel superior. Nesta alternativa a unidade onde ocorreu a excegio ¢ todas as uniddades na pilha de chamada de subprogramas até onde o tratador de excegio f ‘ado sao encerradas, continuando-se a exccucio do programa na unidade onde o tratador foi encontrado, apés a regido de tratamento; Retomada; assumes que 0 erro pode ser corrigido e a exocugéo pode retornar para 0 bloco onde cortew a excegio. Portanto, 0 retorno & feito pata o bloco getador do erro. Embora, em principio, essa solugao paroga ser a mais apropriada, a experiéncia ‘om mostrado que essa alternativa raramonte é efetiva. ‘Normalmente, as linguagens tém adotado o modelo de terminagio. Em Java, ss excesio é ums tipo especial de objeto que é eriado quando algo sai de etraco em um programa, ApOs criar uma excegio, o ambiente de execusio envia este ‘objeto a0 sou programa, numa agio denominada leventar uma exceeéo. E re- sponsabilidade do programa capturar esta excegao, Para capturar uma exceyo Ulilizam-se as cléusulas try (Blocos de eédigor protegides) o catch (tratadotes de excogses). Para passar para frente a exeegio, utiliza-se a palavra trhows. As excoydes em Java sio instincias da classe Exception (superclasse) ou de suas herdeiras 1 http://www. candidatoreal.com http://www.candidatoreal.com Parte III Metodologia de Desenvolvimento 2 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 7 Ciclo de Vida ‘Um modelo do clo do vida ou modelo de proceso pode ser visto como uma ropresentagio abstrata de um esqueleto de process, inclu tipicamente a ras atividades principais, « ordem de precedéncia entre clas e, opcionalmente, artefatos requeridas e produzidos. De maneira geval, um modelo de processo de- serewe uma filosofia de organizagao de alividades, estruturando as atividades do processo om fascs © definindo como essas fases esti relacionadas. Entrctanto, tle nio desereve um curso de agies preciso, recursos, procedimentos e restrigges Ou seja, ele é um importante ponto de partida para definir como o projeto deve ser condusido, mas a sua adogio nia é 0 suficiete para guiar e eontyolar um projeto de software na prética. ‘Ainda que of processos tenham de ser definidos caso a caso, de maneita eral, o ciclo de vida de tum softwase envolve, pelo menos, as segues fases Planejamento 0 objetivo do planejamento de projeto ¢ fornecer uma estru- ‘ura que possbilite ao getente fazer estimativas razodvels de recursos, ‘eastos e prazos. Uma vex eatabelecido o eseapa de software, com os req- uisitos esbogados, uma proposta de desenvolvimento deve ser elaborada, so 6, um plano de projeto deve ser elaborado configurando 0 processo ‘ser utilizado no desenvolvimento de software, A medida que o projeto progride, o planejamento deve ser detalhado e atvalizado regularmente, elo mence ao final de cada tuma das fasee do desenvolvimento (andlise # especificagio de requisites, projeto, implementagio e testes), o planeja- mento como um todo deve ser zevisto co plancjamento da etapa soguinte dove ser detalhado. © planejamento e o acompanhemento do progeesso favor parte do processo de gerincia de projet ise © Especificagio de Requisitos Nesta fase, o procesto de levanta- mento de roquisitos ¢ intensfieado. O escopa deve ser refinado © of teq- uisitos mais bem definides Para entender » naturezs do software a ser construido, 0 engenheira de software tem de compreender 0 dominio do problema, bom como a funcionalidade e o comportamento esperados. Usa ‘ver capturados os requisites do sistema a ser desenvolvido, estes devern ser modelados, avaliados © documentados Uma parte vital desta fate & 1 construgdo de um modelo descrevendo o que o software tem de fazer (¢ 180 como fas). http://www. candidatoreal.com http://www.candidatoreal.com Projeto Esta fase é stsponsivel por incorporar requisites tecnolégioos as req uisitos exsenciais do sistema, modelados na fase anterior ¢, portanto, xe- quer que a plataforma de implementagao seja conhecida. Basicamente, fenvolve dias grandes etapas: projeto da anquitetura do sistema e projeto Aetalhado, O objetivo da primeira etapa & definir a arquitetura geral do software, tendo por base © modelo construido na fase de andliso de req- uisitos. Basa arquitetura deve descrever a estrutura de nivel mais alto {da aplicagao e identifcar seus principais componentes. O propésito do projeto detalhado é detalhar 0 projeto do software para cada componente ‘dentificado na etapa anterior. Os componentes de software devem ser su- cessivamente refnados em niveis maiores de detalhamento, até que poses ser codificados o testados Implementagio O projeto deve ser treduride para uma forma passive de fexecugdo pela maquina. A fase de implementagio realiza esta tarefa, isto ‘ada unidade de software do projeto dotalhado 6 implementada. ‘Testes inclui diversos niveis de testes, a saber, teste do unidade, teste de in- twgragio e teste de sistema. Inicialmente, cada unidade de software im- plementada deve ser testada e of resultados dacumentados. A seguir, of Aiversos eomponentes devern ser integtados sucessivamente até se obter 0 sistema. Finalmente, o sistema como um todo deve sor testado. Entrega ¢ Implantagio uma vez testado, 0 software deve ser colocado em produgio, Para tal, contudo, 6 necessirio treinar os usvérios, configura 9 ambiente de produgio e, muitas vezes, converter basas de dados. O propésito desta fase 6 estabelecer que o software satisfaz os requisitos dos ususrios. Isto € feito instalando o software e conduzindo testes de aceitagio, Quando o software tiver demonstrado prover as capacidades requeridas, cle pode ser accito e a operagio iniciada, Operacio neste fase, 0 software & utilizado pelos usuétios no arxbiente de produgao. Manutengao Indubitavelmente, o software soffers mudancas apés ter sido en- tregue para 0 usuitio. Alteragies ocorrerdo porque ertos foram encon- trados, porque o softwace precisa ser adaptado pars acomodar mudangas 1m sou ambiente extermo, ou porque o cliente necessita de funcionalidade adicional ou aumento de desempenho. Muitas vezes, dependendo do tipo fe porte da mamatencia necessitia, essa fase pode requerer a defimigio de tum novo procesto, onde cada uma das fases precedentes & reaplicada no ccontexto de tum software existente aa invés de wm nove, (Os modelos de processo, de manciva geral, contomplan as fos Ansliae © Bape. eagio de Requistos, Projeto, Implementacio, Testes e Entrega e Implantacio, Aescolha de um modelo de processo é fortemente depencente das earacteristicas do projeto, Assim, & importante conhecer alguns modelos de cielo de vida e em que situagses sio aplieéveis. % http://www. candidatoreal.com http://www.candidatoreal.com 7.1 Modelo seqitencial linear Algumas vores chamado de ciclo de vida elssico ou modelo em cascate, 0 modelo segiencial linear requor uma abordagem sistemética seqiencial pare 0 desem- penko do software. Abrange as seguintes atividades: Modelagem ¢ engenharia do sistema. Estabelecimento de todos os requi- sitos do sistema, alocagio de algum esses requisitos para o softwar. Anillise de requisites de software. 0 processo de definigio de sequisitos 6 Intensificado ¢ focalizado especificamente no software, Os requisites do sistema do spftware sao documentados ¢ rovistos com 0 cliente. Projeto. Tradus os requisitos para uma representagio do software, que pode ser avaliada quanto & qualidade, antes quo a codificayio tenba inicio. Ex- foca quatro atributos distintos: estrutura de dados, arquitetura do soft- ware, representagdes da interface e detalhes procedimentais (algoritinicos, Geragio de eédigo, 0 projeto é tradurido para linguagor de maquina, ‘Teste. Sio conduridos para descobrir erros e garantir que entradas definidas produsirio resultados reais, que concordat com of resultadas exigides Manutengao. 0 software irdinevitavelmente sofrer modificagées. A manutengio reaplica cada uma das fases precedentes a um programa existente 0 modelo seqiencial linear 60 mais amplamente usado, Entre os problemas ‘eucontrados quando esse modelo é aplicado s 1. Modificagies podem causat confusio & medida que 0 projeto prossegue, pois © modelo acomoda interagao apenas indiretamente 2. Exige que o cliente estabeloga todos os requisitos explicitamente 3. Uma versio executavel do programa 86 ficaré disponivel quando 0 projeto 7.2 Modelo em V (© modelo em V 6 uma vatiagio do modelo em caseata que procura enfatizar a estreita relagao entre as atividades de teste (teste de unidade, teste de in- ‘tegracio, teste de sistema e teste de accitagio) e as demais fases do processo, como mostra a Ggura 7.1 ( modelo em V sugore que os testes de unidade sio utlizados basicamente pata verifeat a implomentagio © o projeto detalbado. Uma vex que 08 testes de integragio esta focados na integravio das unidades que compoem o soft- ‘wate, eles também si0 usados para avaliax o projeto detalbado. Assim, testes de unidade e integracia devem garantir que lodos vs aspectos do projeto do sistema foram implemoatados corretamente no eSdigo. Quando os tostos de in tegragio atingem o nivel do sistema camo ua todo (teste de sistema), © projeto da arquitetura passa a ser © foco. Neste momento, busca-so verficar so 0 sis- ‘tema atende aos requistos definidos na especificagio. Finalmente, os testes de aceitacio, conduzidos tipicemonte pelos usuirios o clientes, valida os roquisito, http://www. candidatoreal.com http://www.candidatoreal.com confirmanda que of requisitos corretor foram implementados no sistema (teste de validagio). A conexio entre os lados dliteito e esquerdo do modelo em V implica que, caso sejam encontrados problemas em uma atividade de teste, a contespondente fase do lado esquerdo e suse fases subseqientes podem ter de ‘sor executadas novamente pata corrigit ow melhorar estes problemas, a Tena Requisitos | < ‘Eatega ¢ Implantacio) ™ ine |< Saco [7 “Tent tinge | Figura 7.1: O modelo em V Os modelos seqiiencias pressupsem que o sistema 6 entrogue completo, apse a realizagio de todas as alividades do desenvolvimento, Entretanto, nos dias de hoje, os cliontes néo esto mais dispostos a esperar o tempo nocessério para tal, sobretudo, quando se trata de grandes sistemas. Dependenda do porte do tema, podom so passar anos até que o sistema fique pronto, sendo invidvel esperar. Assim, outtos modelos foram propostas visando a, dentre outros, re- duzir o tempo de desenvolvimento, A entzega por partes, possbilitando 80 uusuério dispor de algumas funcionalidades do sistema enquanto outras estao ssendo ainda desenvolvidas, é um dos principais mecanismos utilizados por estes taodeloe, como veremos a seguir 7.3. Modelo de prototipagem 0 parnitigma de prototipagem comesa com a definigao dos requistos, Um projeto ripido 6 realizado e concentra-se na represontagao daqueles aspoctos que ficaréo visiveis pelo cliente. © protétipa é criado e avaliado e 6 ajustado para satisfazer ss necessidades do cliente Tdealiente, 0 protétipo serve como um mecanistno para identifcasio dos requisitos do software. A prototipagem pode ser problemstica, pais o cliente ve ‘0 que parece ser uma versio executvel do software, ignorando que o protétipo apenas consegue fancionar precasiamente 7.4 Modelo RAD 0 desenvolvimento répido de aplicagdo (rapid application development, RAD & tum modelo incremental que enfatiza o ciclo de desenvolvimento extremamente curto, Abrango as soguintes fases: 96 http://www. candidatoreal.com http://www.candidatoreal.com Modelagem do negécio, 0 fluxo de informacio entre as fangées do negScio & modelado, Modelagem dos dados. © fluxo de informagio 6 refinado num conjunto de ‘objetos de dados. Modelagem do proceso. Os objetos de daddos sio tranformados para con- seghir o fuxo de informagio necessirio para implementar uma fungio do regio. Descrigéos do processamento sio ctiadas, Geragio da aplicagio. 0 RAD considera o uso de téenieas de quarta geragio, (© procesto RAD trabalha para rousar componentes de programas cxis- tontes ou criar componentes reusiveis. ‘Teste © entrega. Os componentes novos devem ser Vestados e todas as inter~ faces devern ser exaustivamente exereitedas [As desvantagons do RAD sio: 1. © RAD exige desenvolvedores e clientes compromissados com atividades continuamente ripidas 2. Nem todos tipo de de aplicagao sdo apropriados para o RAD. 3. Quando riscos téenicos sio elevados o RAD no & adequado, 7.5 Modelos de processo de software evolucionarios 7.5.1 Modelo incremental Este modelo ¢ uma extensio do modelo espiral sendo porém mais formal & rigorcso, O desenvolvimento de um produto comercial de software é uma grande tarefa que pode ser extendida por visios meses, possivelmente um ano ou mais. Por isso, é mais priticodividiro trabalho em partes monores ow steragaecs. Cada iteragio resultaré num incremento. Iteragies sio passos om fuxo de trabalho e incrementos sio erescimentot do produto, (principio subjacente ao processo incremental e iterative & que a equipe envolvida possa refinare alargar paulatinamente a qualidade, detalke e irmbito do sistema envalvido. or exemplo, numa primeiza iteragio dove-se identificar a visio global e de terminar a viabilidade econémica do sistema, efvtuar a maior parte da anilise ‘eu pouco de desenbo ¢ implementacio. Numa segunda geragio, deve-se con cluir a andlise, fazer uma parte significative do desenho © um poco mais de implementagéo, Numa terecire iteragéo, devese concluir o desoao, fazeree parte substancial da inaplementagio, testar e integrar um pouca, ete, Ou seja, principal consequincia da aproximsgio iterativa 6 que os produtos finais de ‘todo 0 processo vio sendlo amadureeidas ¢ completados ao longo do terapo, mas cada iteragio produ sempre um conjunto de produtos fais. A cata iteragio sio realizadas as seguintes tarefas: Anallise. Refinamento de requisitos, refinamento do modelo eonceitual Projeto, Refinamento do projeto arquitetural, projeto de baixo nivel. 7 http://www. candidatoreal.com http://www.candidatoreal.com Implementagao. Codificagao ¢ testes. ‘Transigdo para produto. Ddocumentagio, instalacio, Vantagens do processo incremental e iterative: Possbilidade de avaliar mais ceda os riscos © pontos erlicos do projeta, © identifcar medidas para os climinar ou controlar Reducio dos riscos envolvendo custos a um nico incremento. Se a eqsipe que desonvolve o software precisar repetix a iteragio, a organizagio pexde somente o esforgo mal ditecionado de ums steraglo, mio © valor de wm produto inteito, Definigéo de ums arquitetura que melhor posea orientar todo o desenvolvi= Disponiblizagéo natural de um conjunto de regras para melhor controlar os inovitaveis podides de alteragies futras Permite que os vétios intervenientes postara trabalhar mais efetivamente pela interagao e partilha de comunicagao das resultante, 7.5.2 Modelo espiral (0 modelo original em espiral organiza o desenvolvimento como tm procesto it- exativo em que vérios conjuntos de fases se sucedem até se obter o sistema final Um cielo so inicia com a determinagdo de objetives, alternativas e restrigées (primeita tarefa) onde ocoxve o comprometimento dos envolvidos @ o estabelec mento de uma estratégia para alcangar os objotives. Na segunda tarefa, anise ‘© avaliagio de altemnativas, identifcacio e solugio de riscos, exccuta-se uma angle de risco, Prototipagio é uma boa ferramenta para tratar riscos. Se o isco for considerado inaceitavel, pode parar o projeto. Na tercera tarefa ocome 9 desenvolvimento do produto. Neste quadrante pade-se considerat 0 modelo cascata. Na quarta tarefa o produto 6 avaliado e so propara para iniciar um novo cielo, ‘Variagdes do modelo espiral consideram entre Urésw seis Larofas ou setores da espiral, que podemn ser: * comunicagao com o cliente; planejamente, analise de riseo; engenharia; * construyio e liberagao; avaliagio do cliente 0 modelo espiral 6, atualmente e abordagem mais realistica para desen- volvimento de software em grande escala, ¢ usa uma abordagem que eapacita fa empresa que presta o servigo, ¢ © clionte a entender o reagir aos riscos em ada etapa evolutiva, Este tipo de modelo exige considerdvel experiéncia na doterminayio de rivos e depende dessa experidncia para ter sucesso. 98 http://www. candidatoreal.com http://www.candidatoreal.com Vantagens deste modelo: #0 modelo em espiral permite que ao longo de cata iteragio se obtenham vversons do sistema cada ver mais completas, recorrondo & prototipagem pata reduzir 08 tiscos. * Este tipo de modelo permite @ abordager do refinamento seguido pelo modelo om cascata, mas que incorpora um enquadramento iterative que reflete, de urea forma bastante realistica, 0 processo de desenvolvimento. ‘Desvantagens: Pode ser diffeil convencer grandes clientes (particularmente em situagies de contrato) de que a abordagem evolutiva 6 controlével A shordagem deste tipo de modelo exige considersvel experiéneia na avaliagéo tos riseos e baseiaate nessa experiéucia para o sucesso, Se um grande riseo rio for descoberto, poderio ocorrer problemas. Este tipo de modelo é relativamente nove e néo tem sido stmplamente sade, # importante ter em conta que podem exist diferengas entre o protétipo ‘eo sistema final. O protitipo pode nio cumprir os tequistos de desem- penho, pode ser incompleto, ¢ pode relletir somente alguns aspectos do sistema «ser desenvlvido, +O modelo em espiral pode levar so desenvolvimento em paralelo de miltiplae partes do projeto, cada uma sendo abordada de modo diferenciado, por Isso 6 nocessirio o uso de tdenicas espocificas para estimar e sincronizar exonogramas, hem como para determinar os indicadores de custo © pro- reso mais adoquados 7.5.3 Modelo espiral ganha-ganha ‘As melhores noegociagées buscam ums resultado ganhe-ganha. Isto 6, 0 cliente igatha obtendo um produto ot sistema quo satisfxz 8 maior parte das nocessi- dades do client, e 0 desenvolvedor ganha trabalhando com orgamentos e prazos dd entrega realisticos e possiveis de setem eurapridos. (© modelo espiral gouha-ganka define ur conjunto de stividades de nego- ago no comego de cara passagem, em torno da espiral. Ao invés de uma tiniea atividade de comunicagao com o cliente,as soguintes atividades #20 definidas 1. Ientificagio dos prineipaisinteressados do sistema ou do subsistema, 2, Determinagio das condigies de luero do interessado, 3. Negoviagio das condigbes de ganho do interessado para recouciliélas no “mbito das condigdes ganha-ganha pata todos os envolvidos. Além da énfase na nogociagio inicil, o modelo espiral ganha-gana introdus tués marcos de provesso, chamados pontos de ancoragem, que ajudam & esta- belecer quondo um ciclo 6 completado em torno da espiral ¢ fornecem marcos de devisio antes do projeta de softwate presseguir. Eases pontos de ancoragem 99 http://www. candidatoreal.com http://www.candidatoreal.com Objetivos de ciclo de vida (life cycle objectives, LCO). Define um con- junto de objetivos para cada atividade principal Arquitetura do ciclo de vida (life cycle architecture, LCA). Estabelece objetives que precisam ser satisfcitos, & medida que a arquitetura do sis- tema, edo software, é definida, Capacidade operacional inicial (initial operational capability, IOC). Reprosenta uum conjunto de objetivos associado com a preparagio do software para instalagio e distribuigdo 7.5.4 Modelo de desenvolvimento concorrente © modelo de desenvolvimento concorrente 6 representado como uma série de srandes stividades téenicas, tarefas ¢ seus estados associados. le define uma série de eventos que podem disparar transigSes de uum estado pata outto, para cada uma das atividades da engezharia de software. I freqitntemente usado como um patadigma para o desenvolvimento de aplieagies Cliente/Servidor Pode ser aplicado a todo tipo de desenvolvimento de software e forncce uma visio exata de como esté o estado do projeto. 7.6 Desenvolvimento baseado em componentes 0 desenvolvimento bascado em componentes incorpora caracteristicas de tec- nologias orientadas a objetos no modelo espiral. A atividade de engenharia comoga com a identificagso de classes candidatas, So a clase existe, ela sors ro- ttilizada. Se a classe nao existe, ela sor deeenvolvida nos moldes do paradigraa Ae orientagao a objetos 7.7 Modelo de métodos formais © modelo de métodes formas compreende um conjunto de atividades que de- terminam uma especificagio matemdtica para o software. Uma vatiante dessa shordagem ¢ denomineda engenharia de software cleanroon (Sale Simpa). Ui- liaando métodos formais eliminara-e muitos problemas encontrads nos oxtnos modelos, como pcx, ambighidade, incompleitade e inconsisténcia, que podem sor cotrgidas thai facitwente de fortsa ndo ad hoc, mas atravée de andlise rmatemétien 7.8 Técnicas de quarta geragio As técnicas de quatta gerasio concentram-se na eapacidade de se especificar 0 software a uma maquina em um nfvel que esteja proximo & linguagem natural “Engloba un conjunto de ferramentas de software que possibilitars que: + 0 sistema soja especificado om uma linguagem de alto nivel + 0 cédigo fonte soja gerado automaticamente a partir dessas espe Atividades das téenicas de quarta geragéo englobam: 100 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 9 Engenharia de Requisitos 9.1 O Processo de Engenharia de Requisitos As doscrigdes das fungies que umn sistema deve inconporar e das restrigées que dover sot satisfeitas sio os requisitos para o sistema, Isto ¢, os requisitos de tum sistema dofinem o que o sistema dove fazer e as circunstincias sob as quais dove operat. Km outras palavras, os requisitos definem os servigos que o ssten deve fornecer e dispiera sobre as restrigies & operagio do mesmo. Requisitos si0, normalmente, clasificados em requisitor funcionsis ¢ néo funcionais. Reguisites funcionais, como o préprio nome indica, apontam as fangdes que o sistema deve fomecer e como o sstersa deve se comportar em de- terminadas situagdes, J os requisitos nao fancionais descrever restrigbes sobre as fungoes oferecidas, tais como restrigGes de tempo, de uso de recursos etc. Al- {guns requisitos no funcionais dizem respeito ao sistema como umn todo e no a fancionalidade especifica. Dependendo da naturera, os roquistos néo funcionais podem ser clasificados de diferentes maneizas, tais como requisitos de desem- penho, requisites de portabilidade, requisits legais, requistos de conformidade Os provessos de engenharia de requisites variam muito de uma organizagio para outra, mas, de manoira goral, « maioria des processos de Engenharia de Roquisitos 6 composta das seguintes atividades: Levantamento (ou Descoberta ou Elicitagio) de Requisitos Nesta fase, os usuétios, clientes e especialistas de dominio sio identificados e trabal- hham junto com os engonkeiros de requisitos para descobrir, articular © entender a organizacio como um todo, o dom{nio da aplicagio, os proces- sos de negicio especifos, as necessidades que o software deve atender © os problemas e defciéncias dos sistemas atuais. Anilise de Requisitos visa a estabelecer um conjunto acordado de requisitos cconsistentes © sem ambigtidades, que possa ser usado como base para © desenvolvimento do software. Para tal, diversos tipas de madelos so construides. Documentagao de Requisitos és stividade de representar of resultados da Engenharia de Requisitos em um documento (ou conjunto de documentos), ‘contend os requisitos do software 109 http://www. candidatoreal.com http://www.candidatoreal.com Vorificagao © Validagao de Requisitos A vorificagio de requisites avalia so 9 documento de Kspecifcagio de Requisitas esta sendo construido de forma corzeta, de acordo com padrées prevismente definidos, sem con ter tequisitos ambiguos, incompletos ou, ainda, requisitos incoerentes ou Impossiveis de gerom testados, J4 a validagio diz reapeito a avaliar se esse orreto, ou soja, s0 0s requisites © modelos documentados atendem as reais necessidates ¢ requisitos dos ususos / cliente, Geréncia de Requisitos se preocupa em gerenciar as mudangas nos requis ‘tof jd acordados, manter uma trilha dessas raudancas, gerenciar os rela~ cionamentos entre os requisitos e as dependéncias entre © documento de requisites © o¢ demais artefatos produzides no proceseo de software, de forma » garantir que midangas nos requisitos sejam feitas de maneica ccontrolada e dacumentada, 9.2 Técnicas de Levantamento de Requisitos 9.2.1 Observagao A observagio possbilita um contato pessoal e estreito do pesquisador com 0 fendmeno pesquisado, 0 que apreseuta uma série de vantagens. As téenicas de observaglo sio extretnamente iteis para "descobrie”aspectos novos de um prob- lema. Isto se tora crucial nas situagdes em que no existe uma base tesrica sélida que criente @ coleta de dados. Ao mesmo tempo et que o contato direto prolongado do pesquisador com a situasio pesquisada apresenta as vantagens rmencionadas, envolve também uma sirie de problemas. Algumas criticas sio feitas ao método de observasao, primeiramente por provocar alteragies no am- biente ou no comporlamento dis pessoas obsorvadas. Outra eritica 6 a de que ‘ste método se bascia muito na interpretagio pessoal. Além disso hé eriticas no sentido de que o grande envolvimento do pesquisador leve a uma visio distoreida do fonémeno ou a uma representagao parcial da realideds, 9.2.2 Entrevista Entrovista 6 uma téenica de elicitagdo de roquisitos muito usada. O engenbeiro Ade equisitos ou analista discute o sistema com diferentes uswisios , a partir da qual elabora um entendimento de seus roquisites. Ili, basicamenta, 2 tipas de ‘entrevista: a) entrevistas fechadas once o engenkeixo dle requisitos procara 9s perguntas para um conjunto um prédfinido de questdes; b) entrevistas abertas ‘onde nio hé agenda prédefinida e o engenheiro de requisitos discute, de modo aberto, o que os usustios quetem do sistema, Entrevistas podem set efetivas para desenvolvor um entendimento do problema e para eliciter muitos requisitos jerais do sistema. Usadtios finais sia usualmente felizes para descreverem seus trabalhos © as difculdades que oles enfrontam do forma relativamente natural, ientretanto eles podem ter expectativas nio realistas sobre o suporte que 0 eom= putador dats. Portanto, entrevislas si0 muito menos efetivas para entendimento ‘do dominio da aplicagso e para o entendimento das questaes otganizacionais as ‘quais afetam os requisites no http://www. candidatoreal.com http://www.candidatoreal.com 9.2.3 Anilise de Protocolo A anilise de protocolo pede & pestoa se engajar em alguma tarefa e com mente falar sobre esta tarefa, explicando seu pensamento do processo, Ustirios legam que esse tipo de linguagem pode ser considerada uma "verbalizagio die rota do process cognitive especifico”. A anilise de protocolo nio é um guia confivel sobre o que as pessoas esto pensando, ela esté sujesta a problemas de interprotaydes pelos analistas. A restrigao em estudar protocolos & que as pessoas podem produnir inguagens que ofercce tn perfil de atividade cogui- tiva auténoma. Segunda (Goguen, 1997), mesmo se fosse possivel conseguir wm perl de stividade cognitive auténoma da pessoa, tal objeto seria inaproprisdo pata o procesto de requisitos, porque o elente nio tem qualquer modelo mental pr&existonte do sistema desejado. Os clientes tém conkccimento sobre negScios ‘ necessidades organizacionais, enquanto o time de requisitos tem conhecimento sobre as possbilidade t6enicas, 9.24 JAD JAD 6 uma marca registrads da IBM. O tema principal da JAD 6 colocar futoridades representativas ¢ gerenciais juntas dentro de urn workshop estrutt- rado para promover decisdes. Segundo (Damian, 1997) JAD consiste de 5 fases Adefinigio do projeto, pesquisa, preparagio para a sessio JAD, a sessio JAD, o documento final. As fases de definigao de projeto e pesquisa no processo JAD lidam com a coleta de informagies. A sessio JAD é entéo usada pers validar as informagies recolbidas nas fases anteriores, 0 processo JAD concentrase na sessio JAD, deste modo JAD contribui para a clcitagio de requisites como ssgoificado para validar as informagies j4 calhidas. Na sessio JAD, as pessoas certas tém que estar envolvidas, © a presenga de um faciitader pode ajudar a rmanter a sessio focalizada e minimizar staques e defesas emocionais improdu- tivas, JAD promove cooperagao, entendimento, ¢ trabalho em grupo entre os ‘irios grupos de ususrios © 0 pessoal de sistemas de informacéo. 92.5 PD ‘Tradicionalmente valores demoersticns, a8 quais tem sido lovados em conta no processo de projeto, tem sido somente aqueles concentrados em fatores técnicos ‘eeconémicos. Mas com 0 uso do PD fatores téenicas-socisi tem sido levados ema. conta, O projeto deveria ser feito com o vsuitio, Aprendizado miituo deveria er uma parte importante da trabalke em um grupo de projeto, néo sondo rmeramente uma visita aos laboratorios de pesquisa. Trabathadores e clientes sao inteligentes e criativos, contribuidores produtivos para as organizagoes, desde ‘que sejam encorajados a exprestarem seus desejos, aplicarem sua esperteza & cexercitazem suas capacidades de tomar decisées, assuminda responsallidades flo impacto de suas agies. 9.2.6 QFD © termo qualidade 6 definido coma "um conjunto de meios para produzir ooo nomicamente produtos ou servigos, os quais sitisfacam os requistos do cliente” QED €" um conceito que prove meios de intexpretar requisitos do cliente ex uisitos tGenicos, apropriados para cada estgio do desenvolvimento e produgso m http://www. candidatoreal.com http://www.candidatoreal.com do produto” (Damian, 1997). As fases iniciais do QFD podem sor descritas como sondo "siraplesmente ur sistema de identifieagio e priorizagio das necessidades do cliente abtidas de cada recurso avaliado”. QFD ¢ um conceito que apliea-se bem pata a elicitagio de requisites, especialmente mum modelo de slictagéo onde a vor do cliente & 0 guia para a eriagao de requisitos 9.2.7 CRC Como definide em (Zhu, 1998), CRC 6 uma sessio de grupo, que 6 similar a0 JAD, onde os papéis dos participantes e o papel do faclitador sio claramente ‘leinidos. Em CRC, participantes eonsistem nio somente de usustios efaclitae dor, mas também do outras pessoas envolvidas indiratamento no sistoma, CRC diferente de JAD e QFD pois ele foca-se no usustio operativo, 9.2.8 Prototipacao Este método para elictagio de requisitos utiliza-ze do uso de uma téenica de prototipagio para a avaliagdo do usuétio, O conjunto inicial de requisitos 6 tusado como base para eriar 0 Protétipo de Interface do Usustio com o sis- toma inicial (simplificade). Para essa etiagio, o projetista precisa manter 0 protétipe to simples quanto possivel. O ponto forte desta atividade é apre- sontar muitas alternativas para o usuario antes de se gastar muito esforgo para qualquer protétipo em particular. Apés a aceitagao do protétipo pelos usustos, fs desenvolvedores precisatn criar um documenta de especificagao dos requisitos paralelo ao prot6tipo de interface (McConnel, 1998) 9.2.9 Cenérios Usuitios finalise outros agentes do sistema acham a utilizagio de censrios mais fceis para relacionar-se aos exemplos da vida real do que descrigées abstratas dias fungies vealizadas pelo sistema. Por easa ratio, 6 feqientemente itil desen- ‘volver um conjunto de interagio dos cenérios, © usar estes para clicitar¢ clarear roquisitos de sistema. Conétios sio exemplos de sessses de interagio as quais ‘io concentradas com wm tipo tinico de interagia entre um ustdcio fil eo sis- ‘tema. Usutios finais simular suas interagies usando cendrios. Bles explicana para o time de engenheiros de requisito 0 que cles estav fazendo e a informagao da qual cles procisam do sistema para descrover a tarefa descrita no condrio, 9.2.10 FAST ‘Técnicas facilitadas de espocificacio de aplicagées (facilitated application spec- ifeation techniques). Consiste nos seguintes pastos 1, Rounides iniciis entre o cliente © 0 desenvolvedar (eossia de porguntas © respostas). Produzem como resultado a solicitagao de produto 2, Sio selocionatdos local, horétio e data para o FAST ¢ ¢ escothido wm fail- itador. 3. A solicitagio de produto é distribuida para todos os pattieipantes antes Ga data da rouniio, m2 http://www. candidatoreal.com http://www.candidatoreal.com 4B solicitado a cada participante que faga uma lista dos objetes que sio parte do ambiente , uma lista de servigos (processos ou fancies), uma lista de restrigées (custo, tamanko, regras de negécio) ¢ crtétios de de- sempenho, 5. Quando a reunido a FAST comega, o primeiro t6pien de discussio 6 a necessidade e a justifieativa do produto. 6. Cada um apresenta suas lista eitiease debates sio proibidos nesta etapa. 7. Uma lista combinada que elimina objetos redundantes 6 produsida, mas io apaga nada, 5. A lista 6 modificada com uma diseussio dirigda pelo facilitador. © pro Guta & a lista de consenso, 9. A oquipe 6 sublvidida em equipes menores; cada uma trabalha para produzir miniespecificapses, ou svja, detalham cada objeto da lista de 10. As equipes apresentam suas miniespeciicayies e a lista & modificada no- ‘vamente através de discustoes 11, Cada participante da reuniso exia os eritérios de valdagao para os clemen- tos da lista, 12. Uma lista de consenso de ertérios de validagio 6 eriada 18, Alguém fica responsivel em reigir 0 rascunho completo das especificagio 9.3 Analise de Requisitos A anilise do roquisitos 6 uma atividade de engenharia do software quo vonce © expego entre a engenharia de requisitos, no nivel de sistema, e 0 projeto de software. Als atividedes de engenhatia de requisitos rsultam na especifcagio dag catacteristicas operacionais do software (funcio, dados comportamento}. ‘A anilise de requisitas constréi modelos de dominio que fornecema a0 prajetista uma visio do software A especificaydo de requisitos 6 produsida no auge da tarefa de anslise. Alguns padrdes sugerem que uma especificacio de requisitos deve conter: Introdugio. Declata as metas ¢ objetivos do software Descrigio da informagio, Fornece uma descrigio detalhada da problema que 9 software deve resolver. 0 conteido, fluxo e estrutura da informagio sio ocamentacos, Descrigao funcional. Uma narrativa de proceseamento & formecida para cada fungao. Descrigae comportamental. Examina a operagiio do software como conseqiténcia de eventos extemnos e caracteristicas de controle geradas internamente, ne http://www. candidatoreal.com http://www.candidatoreal.com Critérios de validagao, Informa como dovemos reconhecer uma implemontagio bem-sucedida e quais classes de testes devem ser condusidas pata validar 1 fungdo, o desempenho © a restrigoes, Bibliografia e apéndice. A bibliografia contém todos os documentos que so relacionam a0 software. O apéndice contém infornagies que suplemesta as especificagies 9.3.1 Métodos de andlise Entre os mais importantes métodos de anslise, tis se destacam: A anslise etre ‘vurada, a anslise essencial ea andlisecrientada a objetos. A seguir discutiremoe ‘suas principais caracterfstcas, Andlise estruturada A Anslise Estruturada adota uma visio de desenvolvimento bascada em um modelo entrada-provessamento-saida. No patadigma estruturado, os dados si considerados soparadamente das fungées quo os transformam ¢ a decompasigio funcional 6 usada intonsamente Anilise essencial (Os métodos orientados a fungies conduzem o desenvolvimento de software estru- ‘urando as aplicagbes segundo a dtica das fungies (agdes) que o sistema deverd realizar. Os métodos orientados a dades, por sua ver, enfatizam a identificagio fe estruturagio dos dados, subjagando a andliso das fungSes para um segundo plano, Esses métodos tém origem no projeto de bancos de dados e, geralmente, ‘tm no modelo de Entidades e Relacionasnentos (ER) sua principal ferramenta, A andlise essencial 6 uma metodologia estruturada, sendo uma evolugdo da anilio estraturada. Fssa metodologia procurou concliar as abordagens ori- entadas a dados e fangées em um nica método, utiizando madelos para dado, fangoes e controles (DFDs, DERs e Diagramas de Transicio de Estados, respectivamente) como ferramentas para a modelagers de sistemas. Anilise orientada 0 objeto A crientayio a objetos pressupde que o mundo 6 composto por objetos, onde lum objeto é uma extidade que combina estrutura de dados comportamento funcional. No paradigma orientado a objetos, os sistemas sio estruturadas a partir dos objetas quo existem no dominio do problema, isto 6, os sistemas sio rmodelados como tum mimera de objetos que interagem. 9.3.2 Modelagem da andlise DFD’s Forramenta de modelagom utilzada pare descrever a transformagéo de entradas fom saidas. Representa tum sistema como uma rede de processor interigados ‘tre si por Buxos de dados e depésitos de dados. E a forramonta do modelagem rmais importante da anslise estruturada Junto com o DER, é ferramenta mais importante da anilise escencial. Seus componentes so: m4 http://www. candidatoreal.com http://www.candidatoreal.com Processo. Também chemado de funyio, bolha ou transformagi, 0 processo representa as transformaagses vealizadas sobre os dads em um sistema comespondem a funges o8 pracedimentos que um sistema tem que prover E representado graficamente por cireulos e deve ter um note composto por uim verbo e wim objeto, Fluxo de dados. Representa uma colegio de itens de dados em movimento. B repreentado graficamente através de uma seta entrando ou sainda de wr processo, com a ponta indicando o sentido do fluxo. Devo ter associado ‘um nome o mais significative possivel, de modo a facilitar a validagio do diagroma com of ustios, Esse nome deve ser um substantivo que facile fs identigcasio da colegio de dados transportada, Depésito de dados. 0 depésito de dados 6 uilizado para modelar um repositéxio ‘de uma colegio de pacotes de dados ema repouso, E representade grafica= mente por duas linbas paralelas com urn nome que tepresente seu contetilo fe que normalmente & o plural do nome dos pacotes transportadas pelos fBuxos para dentro ¢ para fora do depésit. ‘Terminador ou entidade externa. Enlidades externas ou terminadotes si fontes ou destinos de dados do sistema. Represontam os elementos do am- biente com o8 quis o sistema se comunica. Tipicamente, uma entidade cetera 6 uma possoa (p.cx. um clionte), um grupo de pessous (p. ex. um epartamento da empresa ou outras instituigdes) ow um outro sistema que interaja com o sistema em questi, Uma entidade externa deve ser iden- ‘ificada por um nome e representada por um retingulo. Assim como no aso dos depdsitos de dados, em diagramas complexos, podemos desenhar tum mesmo terminador mais do uma ver, para se eviter o cruzamento de Tinhas de luxor de dacdos ow para impedir que longas linhas de fuxos de ‘dados ssism de um Indo « outro do disgrama. Quando o software é complexo, devemnos organizar o DFD eta niveis. Dois DEDs eepeciais esto preseutes em qualquer modelo funcional Contexto. Mostre o sistema como uma eaixe-prota, trocando informagées (fos be dados) com entidades externas ao sisteroa. Nivel 0 - Geral ou de Sistema, E ums docomposigio do disgrama de con- texto, mostrando o funcionamento do sistema em questio, isto é, as grandes fangies do sistema © as interfaces entze elas. Os processos nesse dingrama recebetn of miimmeros 1, 2,3, etc... E necessério aseegurar a coeréncia en tre o¢ diagramas de contexto ¢ de nivel 0, isto 6 assegurar que os fuxos de dados entrando ou saindo do diagram sfotivamonte reproduzem as ‘radas esaidas do diagrama de contexto. Neste diagrama, dover aparccer os depésitos de dados necessérios para a sincronizagao dos processes, Di © diciondrio de dados & wma listagem organizada de todos of elementos de dados pertinentes ao sisteme, com dofinigoos procisas para que os usuirios \desenvolvedores possam conhecer o significado de todos os itens de dados. Ex- ‘emplifcendo para uma estrutura de dados “nome”: nome = titulo-cortesia + mnério de Dados http://www. candidatoreal.com http://www.candidatoreal.com primeiro-nome + (nomeintermodiésio) + ftimo-nome, titule-cortesia = (Sr. — Sra. — Srta. — Dr. — Professor] ete Aspectos de andlise essencial (0 modelo comportamental determina o comportamento interno do sistema para ‘que este possa interagir corretamente com © ambiente. Apés a construgio do modelo comportamental, teromos os soguintes artefatos: Diagrama de Entidades ¢ Relacionamentos, Diagramas de Fluxos de Dados Preliminar (DFD Particionado por Eventos) ara cada evento do sistema, deve ser construida wim DFD. Diagramas de Fluxos de Dados Organizados em Niveis Hierérquicos, Representa os processos em niveis hierérquices, a partir do diagrama zere, Diagramas de Transicio de Estados. Representa o comportamenta das en- Lidades e relacionamentos com alributes ao longo do tempo, Sets con strufdo um DTE para cada entidade ow relacionatsento cot atzibuto do DER que possuir comportamento significativ isto é, possuir mais de wm ‘estado ao longo de seu ciclo de vida Diciondrio de Dados. Desereve os dados representados no DER, nos DFDs nos TEs. Especificagio da Légica dos Processos (Mini-especificagées). Descreve a logica dos processus do DFD que nao foram detalhados em diagramas de nivel inferior (Légica doe procesene primitivas) Como podemos perceber, a anslise essencial faz uso praticamente das mesmas téenicas de modelagem da anslie estruturada, a saber » modelagem de dados (utilinando modelos de entidades e relacionamentos), a modelagem funcional (utilizando Diagramas de Fluxo de Dados - DFDs) e a modelagem de controle (utilando diagramas de transigio de estador). Iseo bastante natural, 34 ‘que a andliso essencial 6, de fato, uma extensio da andlise estruturada. Na realidade, a principal diferenga entre a anélise osconcial ¢ a andlise estruturada esta na estratégia para atacar o problema: a primeita defende uma abordagem baseada em eventos, onde a anilise de oventos passa a ser um passo fundamental, 1 segunda é baseada apenas na decomposigio top-down da funcionalidade do 9.4 Gerenciamento de Requisitos Gorenciar requisites consiste de procedimentos para coletar, verificar © avaliar rmudancas, de forma melhor administré-las. Bo considerado wm das primeitas Sreas chave para melhoria de qualidade. No gorenciamenta de requisttas wn eoneeito importante 6 0 de rastyeabilidade A rastreabilidade pode ser vista como a habilidade de acompanhar o descrover a vida de um requisito em ambas as divogéos. Rastrear envolve identifcar links ontxe requisitas,fontes dos req silos © design do sistema, As ferramentas mais uliizadas para rastzeamento de 6 http://www. candidatoreal.com http://www.candidatoreal.com requisites sio as Matrizes de Rastreabiblidade (Traceability Matna), que usual- mente comrelacionam requisitos coma casos de testes, e téenieas de Referéncias Cruzodas. Entre 0s produtos de mercado utiizadas para realizar gerouciamento ‘erastreamenta de requisites podemos citar o Rational RequtsitePro, Calsber-RM, RTS o RDT. 7 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 11 Testes ‘Test 6 um process de exceugdo de um programa com a finalidade de encontrar uum erro. Os tose poder ser planejadoseprojetados antes que qualquer efdigo tenha sido gered, Os primzus testes plancjados © exorutados geralmente concentrara-se nos components indviduais. A medida que o teste progide, 0 foco se dosloca numa tentative de encontrar efras em conjuntos intogrados de componente e fzalmente em todo 0 sistema ‘A testaildade de softare ¢ a Tacildade com que o programa pode ser testado, Existom mtricas que podam medi testabthdade do software. Quando o software para computador &considerado, teste caizn-preta referee 0 a testes que sio conluidos aa interface do software ‘Um teste de catza-branca & baseado num exame rigoroso do detalhe pro- cedimental. Camsinhos Iigieos interno do software sio testa, definindo ca- sos de testes que exercitam conjuntas especiscas de condigies ou ciclo. Teste Caixa-branca completo & impossie! para grandes sistemas de software, Um teste caixarbranca nio deve, no entanto, eer descartado como nao prético, Ua ssimetoliitado de caminhos lige importantes pode ace slecionado ¢exerci- lado, Hts motives importantes pels quais se dove usar testes caixacbranca Os erros tendem a ocorrar em condigées ou controle que estio fora da fango principal + Frogliontemente acroditamas quo um caminko ldgico nao é provicel de sor sxocutado quando, na vealidade, cle pode sor exeeutado er base regular + E provavel que um erro tipogréfico exista Lanto num caminho logivo ob- soure quanto num caminko principal 11.1 Teste de caminho basico Teste de caminho bisico € uma técnica de teste caixa-branca proposta inicial- mente por Tom McCabe, O método de caminko bisico permite a0 projetista de casos de teste otiginar uma medida da couplexidade ldgica de uim projeto procedimental e usar essa medida como guia para definit um eonjunto tisico die caminhor de execugso. Casos de testes devivados para exercitar o canjusto bisico executam garantidamente eada comando programa pelo menos ua vex durante 0 teste 127 http://www. candidatoreal.com http://www.candidatoreal.com © grafo de Guxo mostra mostra 0 Guxa de contzole légica, Cada né do srafo de fuxo representa um ou mais comando procedimentais. As arestas representam o Guxo de controle, As reas dlimitadae por areatras ¢ née so hamadas regides. Cada né que contém uma condigio é chamado de né predicado © 6 caracterizada por duas ou mais arestas saindo dele, Complezidade cielomatica é a anétsica de software que fornce uma medida quantitativa da complexidade Iégiea do programa, O valor calculado para a complexidade ciclomitica define o mimero de caminhos independestes no con- Junto base de um programa e nos fornece um limite superior para a quantidade de testes que deve ser condusida para garantir que todos os comandos tenho sido executados pelo menos uma vez. Um caminko independente 6 qualquer caminko ao longo do programa que introdur pelo menos um novo conjunto de comandos de processamento ou uma nova condicio. Um conjunto-base & um conjunto de caminkos em que todo comando do programa teré sido garantidamonte exccutado polo menos uma vor 1 cada condigio tord sido exccutada no acu lado verdadero o no sou lado falso. ‘A complexidade ciclomstica & caleulada de trés manciras 1. O miimero de rogides do grafo de fuxo 2. V(G) = E-N 42am que £60 mimero de arestas ¢ N o asimero de nds. 3. V(G) =P 410m que P é 0-mimero do nés predicados. Os soguintes passos podem sor aplicados para drivagio de casos de teste: 1, Usendo © projeto ou eédigo como base, desenhe o grafo de fuxo corre- spondente, 2. Determine a complexidade ciclomética do grafo de fuxo resultante, 3, Determine um conjunto-base de caminbos linearmente independentes 4. Prepare casos de teste que vio forgar a execucio de eada camino do conjunto-base ‘Uma matriz de grafo 6 uma matriz quadrada, cujo mimero de colunas © linhas & igual ao mimero de nés do grafo de fuxo, Adicionando um peso de ligagdo a cada entrada da matriz, a matriz de grafo pode tornar-so uma possante fervamonta para avaliar a estrutura de controle do progtama durante o teste. Em sus forma mais simples, o peso da ligagio é 1 (existe uma conexie) ot 0 {ado existe uma conexio). Outros pesos podem ser atribuidos com outras propriedades: + A probabiidade de que uma ligagio (atest) seré exocutada + 0 tempo do processamento gasto durante o porcurso de wma ligase. + A moméria necessiia durante o percureo de uma lige. + Os recursos necesivios durante o percurso de ums ligagio Existem algoritmos que podem ser aplicados is matrizes de grafo. Usando essaas téenicas, a andlise necessiria para projetar casos de teste pode sex parcial fou totalmente sutomatizada, 128 http://www. candidatoreal.com http://www.candidatoreal.com 11.2 Teste de estrutura de controle ‘A técnica de teste de estrutura de controle ampliam a cobertura da téeniea de teste de camino bisico © melhoram a qualidade do teste caixa-branca. 11.2.1 Teste de condicdo Teste de condipéo 6 um método de projoto de caso de teste que exercita as condigies Idgicas contidas exs umm médulo de programa. Uma candigdo simples 6 uma variével booleana ou uma expressio relacional, possivelmente precedida por um operador de negagéo. Uma condipéo composta & composta do duas ou mais condigoes simples, operadores booleanos e parénteses Divorsas estratégias para testo de condigao tém sido propostas. O teste de desvio & provavelmente a estratégia de teste de condigio mais simaples. Para tama condicio composta C of ramos verdadeizo e falso de Ce cada condigio simples de C’ precisa ser executadas pelo menos uma vez © teste de doménio requer que tris ow quatro Lostes stjam derivadas para uma expressio telacional, Para ums expressio relacional da forma Ey < operador ~ relacional > Ey ‘és testes aio necessévios para tornar o valor de Fy maior que, igual a, ou menor que 0 de Ey Para usa expresso booleana com n variéveis, todos os 2° possiveis testes ‘0 necessérios (n > 0), mas 6 pritica somente quando n 6 pequeno. Caso uma expresséo booleana soja singuler (na qual cada variével ocome apenas uma vez), hi como gerar um conjunto de testes cor menos do que 2” testes tal que esse conjunto de testes garante a detocyie de erxos de operadores booleanos miltiplos ¢ é também efetivo para deteetar outros ervos. Uma delas & 1 téenica de teste de desvio e operaior relacional (branch and relational operator, BRO). Fla usa restrigées de condigdo para uma condigdo C. Uma restrigio de condigda para C com n condigdes simples & definida como (Dy,.Ds,...,Ds), fom quo D,(0 <1 > 15.2 Modificadores de Acesso Os modificadores de acesso sio keywords adicionadas ao eédigo para detorminar se atributos, métodos ou classes poderam ser acessadas a partir de outras clases (Os modificadores de scesso prosentes na linguagem Java sio: public, privat, protected e package-private (implicito quando nio é usado nenhur modifieador za declaragio da classe, atributo ou método) Uma classe publica pode ser acessada por qualquer outra classe, Caso seja declarada sem o modificador public, a classe sors package-private, ou seja, s6 poders ser acessada por classes do mesma pacate, Os métodas © atributos accitam outros modificadotes além do public. rodificador private dé acesso somente dentro da classe, enquanto 0 modlifieador protected permite acesso dentro do pacote e as subclasses Assim como nas classes, caso nenhum modifieador seja declarado, fea implicito ‘© modiicador package-private, ‘A tabela 15.1 abaixo resumo as permigdes do acesso impostas por cada um dos modifiadores: ‘Modifcador | Paste | Subelasse [ Todor public am [ai private mao ate. protected —|~ sim [aime ena mim mae. ‘Tabela 15.1: Modificadores de Acesso 15.3 Varidveis Na linguagem de programacio Java sio definidos os seguintestipos de varidveis: + Vatiéveis de Instancia (Atvibutos nao estéticos): Um objeto armazena seu estado individual em atrbutos nio estéticos, ow seja, declarados sem o http://www. candidatoreal.com http://www.candidatoreal.com modificadar static, Atributos nio estéticas sio conbecidos com variSveis de instancia por que sous valores so tnicos para cada instincia de uma classe ‘Variiveis de Classe (Atributos estiticas): Uma variével de classe & todo atributo declarada com @ modifieaor static, Taso indica ao compilador ‘que existe apenas uma edpia da variaval, nao importando o mimero de veres que essa classe foi instanciada, Portanto, quando 0 valor de un varidvel de classe 6 alterada em um dos objelos, © novo valor se torna ‘isivel para todos os outros abjetos da mesma classe. Para imspedir que uma variével de classe tena svt valor alterada ela deve ser declarada com (9 mofifcador final Varidveis Locais: As varigveis locais io utiligadas para armazenar 0 et- tado temporitio dos métodos, A sintaxe de declaragio de ura variével local 6 similar a de declaragio de uma varidvel de instancia. O que deter- rina se uma varidvel 6 local 6 a parte do eédigo em que ela & declarada entre as chaves que determinam o inicio © 0 fim de um método. Uma varidvel 6 visfvel apenas para o método no qual foi declarada; no pode ser acessada do resto da clase. public class Bicicleca ¢ 11 Vaxiével de Inevsneia public int velocidade = 0; 11 Variavel de Classe public static int qrdRedas = 2; 11 Variavel de Classe con valor constante public static final String marca = "Calei"; public void ounenta¥elocidade (int increnente){ Uf Naziavel Local int novaVelocidade; = velocidade + increnento; velociéade = novaVelocidade; 15.4 Operadores lista sbaixo sumatiza os operadores suportadoe pela linguagem Java * Operador de Atribuigio Simples = Operador de Atribuigso Simples http://www. candidatoreal.com http://www.candidatoreal.com # Operadores aritméticos Subtragio Multiplicagdo Divisio % Resto da Divisio + Adigdo (Também utilizado para concatensgio de § } * Operadores Unstios + Operador unio mais = Operador unatio menos; Inverte o sinal de uma varidvel ‘Operador de Incremento; Increment urn valor de L ‘Operador de Decremonto; Decrementa o valor de 1 1 Operador Légico de complemento; Inverte o valor de um boolean # Operadores de Comparagio Igual Diferente Maior Maior ou Igual Menor Menor ou Igual instanceof Compara um objeto a um tipo expeeifico + Operadores Condiciona ek AND Condicional I] OR Condicional 7 ‘Temsrio (Forma eurta para iéther-else) + Operadores Bit » Bit e de Deslacamenta (Shift) Complemento bit a bit unstio shift para esquerda Shift para diveita Shift para direita sem sinal AND bit a bit OR exclusive bit a bit | OR Bit a bit http://www. candidatoreal.com http://www.candidatoreal.com 15.5 Expressdes, Sentengas e Blocos Uma expressio 6 uma construgio feita de variévels, operadores ¢ chamadas de rétodos, deserita de acordo com a sintaxe da linguager. A seguix, exemplos de expressoes [eclaragio ¢ inicializagéo de usa véridvel de tape int int cadence = 0 (Jhexibuigo de valor a usa posigio de un vetor de int andrray{0} = 100; (/imprimindo om valor aa tela Systen.out-printin("Elenent 1 at index 0: * + antyray[0l); Jikeribaigio de valor bazeado no resultado de una operagio de adisio result = 1 + 2: {Meilizagio de paréatesis para explicitar orden de execusio das operasées paz = x / (y+10); Em java uma sentenga (statements) 6 definida como uma unidade completa do exccugio. Os soguintes tipos de expresses podam so tornar sontengas quando terminadas com um posto e vitgula: (i) Bxpressies de Atvibuigio; (i) Bx- presses com ++ ou ~~; (ji) Chamada de métodos (iv) Expressdes de Criagio de objetos. [i Statenent de atribuisio a¥alue © 8933.34; W/ Statenens de incr: Vatuet+; 11 Statezent de chanada do nétodo Systen.out.printin("Helle Werld!") 11 Statenent de eriagio de objeto Bacyele ayBike = nev Bicyele() Essas sip as chamadas statements de expressio. Existem ainda as state rents de doclaracao de variével e de controle de fuxo, Um bloco ¢ um grupo de zero ou mais statements entre um par de chaves (© exemplo a seguir astra o uso de blocs em Java class BlockDeno { public static void sain(string{] args) { boolean conditian = true: Af (condition) { // begin block t Systen.out.printin(*Condition 18 true."); 3 // end block one else { // begin block 2 Systen,out.printin("Condition is false."); 3 /f end dlock 2 160 http://www. candidatoreal.com http://www.candidatoreal.com 15.6 Comandos de Controle de Fluxo ‘As statements de umm eddigo geralmente io executadas na medida na ordem em aparecem. No entanto, os comandos de controle de flaxo podom ser utilizadas ara interromper o fluxo de exeeucio empregando decisdes, looping e desvios, permitindo que ao programa executar condicionalmente blocas de eédigo par- ‘eulares. Os principais comandos de controle de fuxo da linguagem Java sio rmostrados a seguir Ie-Then, void applyBrakes(){ Af GaMoving){ 11 the “36 clause: bicyele must moving currentSpeed--; // the “chen” clause: decrease current speed > > If-Then-Else (exemple 1 void applybrakes()< Sf Gatoving) rhe bicycle has already stopped!" [exemple 2 class IfEleeDene < public static void main(String() args) { int testscore = 76; char grade; Af (tostscore >= 80) grade = 0) } elee if (eestscore >= 80) ¢ grade = "3" } else if (eestacore >= 70) ¢ grade = 'C" } else if (eestscore >= 60) { grade = 'D delse ¢ grade = > 119 resultado ser4 ¢ pois, una ver que » condigie 6 atendiaa, W/o restante do cédigo If-Then-Else nio é sais avaliado Systen.out.printin("Grade = " + grade) 161 http://www. candidatoreal.com http://www.candidatoreal.com Switch class Suitendene ¢ public static void sn (String[) args) { ant month = 2: nt year = 2000; ant nunDays = 0; suited (eonth) < case 1 case 3. cage &. case 10 cage 12 pumDays = 31; break, case 4. case 6. case 11 munDays = 30; break; case 2. if ( (year K4 (year 1 400 nunDays = 29; else nunDays = 28; break; detent Syston. out. println break; 0) kk Myear % 100 == 0)) 0) invalid zonth + mumdaya) 5 While © Do-While (exemple Vaile class WhileDeno { public static void sain(String{] arge){ orn //Teste realizado antes a execugio do bloce de cédigo 162 http://www. candidatoreal.com http://www.candidatoreal.com [Pode acontecer do codigo née ser executade nenhuna vez while (count < 11) Systen.out.printin("Count is: " + count) > [exemple Do-hile class DovnileDeno { public static void ant count = 1; aot (String(] args) ein(*Count ie: " + count); [Teste a0 fim da execugio do bloce de c6aigo //G8digo @ executade a0 menos usa vez } waile (count < > > For [exemple 1 clase Forbeno { public static void sain(String{) arge)¢ for(int iat; ety HC System.out.printin(*Count is: " + 3); , [exemple 2 fer (3 3) { //infinite loop UI e8asg0 > [exemple 3 class EnhancedFerbene { public static void ane(] nusbers an (String{] args)< €1,2,3,4,5,8,7,8,9, 10); for (int item : numbers) { Systen.out.prantla("Count is: " + iter); y > Break [exemple 1 class BreakDono { 163 http://www. candidatoreal.com http://www.candidatoreal.com public static void nain(string{] args) ant([] arrayOsInte = {82,87,3,589,12, 1076,2000,8,622, 127) searchfor = 125 boolean foundIt = false; for (i= 0; i < arrayOfinte length; i++) Lf (arrayOrTatsLi] == searehfor) { Toundlt = true; U/encerra © loop for break: y > At Gounate) ¢ Syaten.out.printin(*Found " + searchfor +" } else { Syates.out.println(searchfer +" net in the array"); index" +); > [exemple 2 class BreakiiithLabelDene < public static void nain(String{] args) { ane(J) arrayOrInes = {{32,87,3,589), 12, 1078, 2000.8. 4622,,127,77,955)); ant searchfor = 12; Foundlt = false; for (i = 0; 4 < arrayOfints.longth; t+) { for (j= 0; } < arvayOrIate(i] lengeh; j++) € if (arrayostnts[i] [j] == searchfor) { founalt //Encorra © loop for mais interne We deavia para © label search > t¢ (foundle) < out printin ("Found " + searchfor +“ at "+ i+ sn.out printin(searchfor + " not in the array"); 164 http://www. candidatoreal.com http://www.candidatoreal.com Continue class ContinueDere ( public static void main(String{] args) { String searchlle = "peter piper picked a peck of pickled pepper: amt max = searchile Length Ant nunPs = 0; for (int 1 0; 4 < mex; 19) //sxcezested only in p's 4 (searehMe.charAe (a) t= 'p! (as. para 0 préxino loop ren executar Mo xestante do céaigo de blece for process >’ (exemple 2 class Continue¥ithLabelDene ( public static void main(String{) args) { String searchMe = “Look for « substring in me"; String substring boolean foundIt = false; rnax = gearchMe Length() ~ subs for (int 4 = 0; 4 <= many $94) ¢ int n= substring lengthO; = 0; while (n-~ != 0) ¢ Af (soarchife, charade (j++) != substring. charat(kt#)) € ‘/[Txcerzonpe a iterasio de loop while e vai UIpara proxina iteragie do leep for, ‘V/aaxcada polo label test http://www. candidatoreal.com http://www.candidatoreal.com > > foudit = true; break cost: > Syeven.out.printin(foundlIt ? "Found it" ; "Didn't find it"); 15.7 Classes Aninhadas No Java existe a possibidade de se definr classes dentro de outra classe, como se fossem atributos ou métodos. Algumas das vantagens do se utilizar esse recurso do Java sia + Logibilidade: Classes podem ser sgrupadas por similaridade; + Ocultamento: Podem sor privadas ou protogidas; + Redigibilidade: Classes internas possuem acesso aos membros privados da classe quo a definis e vice-versa, Na verdad, o recurso de classes interna ssurgiu no Java 11 com esse propésita Come sio definidas dentro de outras classes, 0 oédigo fonte fea no mesmo arquivo java, Ao compilar, geraqse vétins arquivor lass, compondo o nome da laste externa e interna, Exemplo: Externa java contém a classe Externa, que define unas classe interna chamada Interna. Ao compilar, gers-se Extera class ExtemaSIntema class. E importante ressaltar que a classe interna nio pode ter o moma nome da classe externa que a define, [No Java existem os soguintes tipos de classes internas: + Classes Aninhadas + Clastes Instanciadas = Classes Membro = Classes Loeais ~ Classes Andnimas ‘As classes aninhedas sio os tipos mais simples de classes intornas. Uma lasse€definida dentzo da outra como se fosse um menbro static. Elas permite ddefinir acesso privado ow protegido ¢ agrupa classes logicamente relacionadas, Sio referenciadas via Externa Intema, como se fosse um atributo estatico. A ‘soguir um exemplo de classe aninhada e le como referencié-la Jiciasse externa class Par private Chave chave; 166 http://www. candidatoreal.com http://www.candidatoreal.com private Valor valor; public Par(Chave chave, Valor valor) { ‘this.chave = chave; this. valor = valor: > //classe interna static class Chave ( private String nose; public Chave(Scring nome) { ‘this.none = none; y > //2lasse interna com protesio de acesse protected static class Valor { private int valor: public Valor(int valer) { ‘this.valor = valor; > > public class Teste ( public static void main(Sering() ergs) ¢ Par.Chave chave = nev Par.Chave("Neta"); Par-Valer valor = nev Par. Valer(10) ; Par par = ney Par(chave, valer); > 15.8 Tipos Enumerados ‘Tipos emumerados aio aqueles que possuem um conjunto Snitos de valores que as varidveis podem assumir. Por exemplo: estagies do ano, naipes ou eartas do Daralho, planetas do sistoma olay ete. Originalmonte, a forma padvio utilzada para representartipos enumerados era o chamado int Enum Pattern (tipos em- rmerados basoados em inteirs). 1 sxe Baus Pattern Public static final int SEASON_WINTER ~ 0; public staric final int SEASON SPRING = 1; public static final int SEASON_SUNMER = 2; public staric final int SEASON_PALL = 3; 167 http://www. candidatoreal.com http://www.candidatoreal.com sso tipo de padronizagio aprosentava os soguintes problemas: = Nao seguro quanto 20 tipo: Como uma season & representada por wn int, pode-se passar qualquer valor intro (inclusive diferente de 0,1,2,3) ‘quando uma season for requetidas Sem namespace: B nevessério criar um padrdo de nomenclatura para evi- tar colisio cot outros tipos enumerados. (Exempla: SEASON.) + Valores imprimidos nao sao explicativos: Como os valores so int, quando impressos nio apresentam a informagéo que representam dirctamente Para contoznat esses problemas a partir do Java 5 foi introduside 0 Typesafe Enum Pattern, a partir do qual os tipos enumscrados podem sor expressos de forma mais simples. O eddigo abaixo mostra ¢ uso do nava padvio pata tipos ‘enumerados: public class Weather { ‘//betine tipo enunerado Refrigerante public enum Season = (winter, spring, eunmer, fall}; private printSeasona() { (Loop recuperande cada uz dos valores possiveis de Season for (Season s : Season.valves()){ Systen.out.printin(s) ; > 15.9 Anotagies Anotagdes (annotations) provéers dados sobre o programa mas nio sio parte do {do programa proptiamente dito, Hlas nao possuem efeto direto na operagies do ‘digo com o qual estao relacionadas. Esso recurso da linguagem Java permite ‘que 0 programador néo se proocupe om oxcrower eSdigo auxiliar (arquivos de configuracio, por exermplo). AV idéia 6 que o programador diga o que tema que sor feito utilzando as anotagdes e ferramentas ausiliares fagam o restante do trabalho, Alguns exemplos do uso de anotagdes sia + Informagies para o compilador: Anotagées podem ser utilizadas pelo com= pilador para detoctar erros ou sumprimir mensagens de warning; * Processamento em tempo de Compilagio ou Deploy: Ferramentas aux- iiares podem processar a¢ anotagies para gerar eéligo, arquivos XML + Processamento em tempo de Bxecugio: Algumas anotagies podem ser processsadas em tempo de execusio; 168 http://www. candidatoreal.com http://www.candidatoreal.com # Documentagdo: Anotages podem ser uilizadas para substituir comontérios no eddigo. Os trés pré-defindos de anotagGes utilizadas pelo compilador s @Deprocated: Indica que o clemento marcado est deprecated © nao deve sor mais utilizado. O compilador gera um warning sempre que ura pro~ grama utilizar um uma classe, um método ou um atributo mareado como ‘Deprecated; GOverride: Informa ao compilador que o elemento marcado deve sobre- screver 0 elemento de mesmo nome declarado na superclasee, Embora 1 anotasio nao seja obrigatério para sobescrever um método, utilizé-la ajuda a prevenir es; ‘@SuppressWarnings: Indica ao compilador situagdes em que os warnings dover ser suprimaidos; A seguir alguns exemplos de ulilizagio das anotagies descritas, [Maxca 0 =érode cone deprecated edeprecated static void deprecatedethed() { //cédige > [/tndica que 0 nétodo iré cobrescrever 0 nécode da superciasse eoverride int overriddentlethod() { //cédigo > (indica a0 conpilador para suprinir warning gerados pelo uso U/ae nétedos deprecaced @Suppressivarnings ("deprecation") void useDeprecatedmethod() { 1/0 use de un nétodo deprecated geraria ux warning objectOne. deprecatedMethod(); 15.10 Genéricos Os genéricos sio umm recurso intradusido a partir Java 5 e permite a0 progra- rmador escrovor oSdigo abstraindo tipos do dados. Os genéricos sio tipicamente utilizados om conjunto com intorfacos ex: List) que herdam da interface Collee- tuon ou de classes que a implementam (ex: AbstractList, ArrayList, LinkedLis Vector) Quando um clemento é retirado do uma Collection é necessério roalizar wn ast para o tipo do elemento armazenado na Collection. Além de incoveniente, iseo 6 insoguro. O compilador nao checa se 0 east realizado é do mesmo tipo do armazenado na colegio. Desa forma, o cast pode falhat em tempo de execucio, 169 http://www. candidatoreal.com http://www.candidatoreal.com U/oriacdo de una collection do tipo LiskedList List myintList = nev Linkedlist 0; [héigio do um elezento do tipo Integer a collection nyIntList-add(new Integer(0)); {Racuperando wn slenento da collection. Cast para Integer & necessério Integer x = (Integer) nyIntList .iterator() next); Os genéticos proviem uma forma de comunicar ao compilador 0 tipo ar raazenado na colesio, permitinds que a checagem sea feta etn tempo de cox pilagdo. Além de evitar erros em tempo de execugio, a utilizagio de genéricos climina a necessidade de casts ([criacde de ona collection LinkedList para armazenar objetos do tipo Integer ListcInteger> mylneList = new LinkedlisteInceger>(; (héigie do um clezento do tipo Integer a collection nyIntlist add(new Integer(0)) U/[/recuperande un clenento a collection. Cast nio € necessério Integer x = nylntList.iterater() next() Os tipos genéricos tém como grande vantagem o aproveitamento de eédige, A interface Collection & umm exemplo diseo. As operagies de adicionar ow re- mover um novo elemento, determinar o tamanho, verifiear se a collection est ‘varie ou tecuperar o fadice de um determinado elemento, por exemplo, cer ‘tamente sio aplicdveis a collections do tipo Integer, String ou de outra classe qualquer. Exemplos de interfaces genéricas so List ¢ Iterator. A soguir, alguns twechos dessas duas interfaces como definidas no pacote java.util public interface Teerater ¢ E next: boolean hasNext (); Iinaie e6dsgo y public interface Liste> ¢ void ada(E x); Ieerator iterator(); Iisais céaige > Gonéricos permitem implementagies mais sofsticadas como: [fwsidcards 0% Coringss {/Método con parinetro Casule. Aceita Cagule de qualquer tipo void inprinir (Casulo c) { U cédige do névedo > [Limitande © tipo genérico aceite pelo nétode U/Mevodo 56 aceita Casulo de Forsa ou Casulos de subclasses de Forma 170 http://www. candidatoreal.com http://www.candidatoreal.com void decenhar (Casuloc? extends Forma> o){ 11 ebaige do néredo > 15.11 Reflexio ‘A Reflection permite umm programa Java examinar ou fazer a introspecio nele tmestno, ot seja, olhar e examinat suas propriedades eestrutura, Com isso, voce pode, por exemplo abter o nome de todos os metabros de uma classe, coro atributos e métodos, hem como exeetar tum método usando a Introspection, Esse recurso é utilizado, por exemplo, pelos ambientes de desenvolvimento (as IDEs) para examinar e exibir a estyutura e contetda das classes © beans. A seguir um exemple do uso de refetions. import jave-lang.reflect-*: public class Classet { private int funcaoi( Object p, int x) throzs Nul1PointerFxception Af (p == null) throv new NullPointerExeeption() ; > public static void main(String arge(]) ¢ try //Carrega a class: Class cle = Claes. tortane("Classet") ; //Aecupera a lista de zétodes da classe Method nevhlist () = cls.getDeclaredMethoas(); //Imprine inforaagées (aétodos, moditicadores, excesées) //sobre cada us dos nétodos da classe for Gant i= 0; 4 < methlist Length; arr) ¢ Method m = methlist [i] Syeten.out.printin(*~ Syston. out. printin(*none = Syeten.out, System. out. printin(*nenbro de: + m.getDeclaringClass()); Syeven,out.println(*modificador:" + Modifier toString(a.getModifiers())) ; + m.gocvane()); UMnecupera Lista de parazetros do aétodo Chase pvec() = n.getParaneterTypes(); for Gint j = 0; j < prec.tengta; j++) Systes.out.prantin("pardmetre #" +) +" "+ pvee[3))s UJnecupera a lista de excesses do nécode Class evec() ~ m.getExceptiontypes(); for Gint j= 0; 3 < evec-lengea; j++) im http://www. candidatoreal.com http://www.candidatoreal.com Systen.out.printia(Yexcegze #* + j +" "+ evec[j]): U/Recupera 0 tipo do retorno do nétodo Systen.out.printin(*tipe de retorn "+ m.getReturntype()); > > catch (Throwable 9) Systen.err.prantin(e) ; > {Sada da execugSe 42 classe Classet {Lista de dos da Classe con todas as suas propriedades none = funcael ebro de:class Classel oditicador:private parinetro #0 class java.lang.Object pardnetre #1 int excegdo #0 class java. lang-¥ulPointerException tipo de revorno = int nesbro de:class Classel nodificador:public etatic parinetro #0 class (Ljava.lang. String; tapo de retorno = void in http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 19 A plataforma J2EE A plateforma J2BE é uma solugio basoada em componentes para projeto, de- Sonvolvimento, montagem ¢ disponibilizagio de aplicagies disteibutdas em am bientes corporstives. O J2EE oferece, entre outras tecnologias # Modelo multivcamada de aplicagies distribuidas (multi-tier); + Componentes Reutiliveis; *# Moselo do sogurange unificado; + Controle de transagies flexes # Suporte a servigos Web (web services) No modelo multi-camada distribuido da arquitetura J2EB as seguintes eat- acteristicas sio importantes: Os componcntes que compéem a aplicagio podem estar em diferentes maquina; # Suas localizagdes dependem da camada a que pertence. ‘Tipicamente, as aplicagées J2BE sio divididas em 4 camadas que sio: + Cliente (elient-tier; # Web (web-tier) # Nogécios (bussiness-tier) * Sistomas de Informacao (EIS-tier). ‘As caractorfsticas mais comuns dos componontes J2EE sio o fato doles sorem Uunidades de software auto-contidas ¢ a eapacidade do comunicagio com outros componentes, O que distingue wm componente J2EE de uma classe comum 0 fato doles poderem ser combinados para formar uma aplicagio J2EE, além de serem disponibilrados, executados e gerenciados por um servidor J2EE, comi- taente chatnado de servidor de aplicagso. ‘A tabela a sopuir mostra exemploe de componentes J2EE eo sous respectivas ‘ipo e local de execugio. 207 http://www. candidatoreal.com http://www.candidatoreal.com Pigura 19.1: Arquitetma J2EB, ponent Tipo ___Toeal de Exec ‘Clientes da aplicagao © Applets Cliente J2EE Thente Servlets e Paginas JSP Web Servidor Entorprise Java Beans Nogécios Servidor ‘Tabela 19.1: Componentes J2EE 19.1 Containers J2EE Na arguitelura J25E um container é um ambiente que fornece umm conjusto de servigor para os componentes, Uma componente deve ser colocado em um container apropriado pata que posta ser executado. Um exemplo simples de container 6 Apache Tomcat, quo na arquitetura J2EE funciona como um con- ‘ainer Web, fornecendo servigos para rodar paginas JSP e Servlets Algumas dos servigos prestados pelos containers podem ser configurados. Exemplo deles sao » Soguranga; + Geren mento de Transagies; 1 Busca de Nomes e Diretérios utilizando JNDI (Java Naming and Ditectory Interface + Conectividade Remota entre clientes ¢ BB's; No entanto, alguns dos servigor oferecidos pelos containers nio podem ser configurados, uma ver que contstuem o miele de arquitetura e conferem a sscalabilidade da solugio. Exemplo de servigos no configursveis 0 + Criagio de Destruigéo de EJB's ¢ Servlets (Cielo de Vida dos Compo- nentes). Sio ulilizados pools de componentes para atender as requisigGes dos usuarios. Nao é 0 programedor instancia um componete no eédigo do cliente, porém « eriagia efetiva do objeto acontece no servidor de aplicagao, onde o componente existe e 6 executado de fato, # Acesso as API's da plataforma; 208 http://www. candidatoreal.com http://www.candidatoreal.com # Geronciamento de conexes com bancos de dados. Os sorvidores de aplicagao implementam o conceito de pools de conextes. 0 progranaador nio pre- cisa escrever 0 védigo para abertura © encerramento da conexio, pois isso papel do servidor de aplicasio; + Persiténcia do estado dos componentes 19.2 Clientes JZ2EE Na asquitctura JOEB existem basicamente dois tipos de clientes que aio + Clientes Wel Péginas Web dinimicas geradas por components Web SP ov Servlets) « que sio exibidas no browser. Existe ainda os applets, que so pequenos clientes de aplicagao escritos em Jaya e que rodam na IVM emsbatida no browser, (Centos de Aplicagio: Permitem que 0 usustio interaja com o servider de aplicagso através de interfaces mais commplexas, geralmente feitas uti- lizando as APT's Swing ao AWT (Abstract Window Toolkit) # importante ressaltar que toda a légiea de nogécio & implementada pelos BJB's, que rodam no servidor de aplicagio. Assim como os JB's , os Servlets © piginas JSP também estio em um servidor de aplicagio, porém nia no mesmo container Os Servlets sio classes Java que processam dinamicamento as requisigdes © controom respostas na forma de péginas HTML. As pSginas JSP permiter ine serir eddigo java diretamente em wan documento HMTL, sendo spropriadas para car contetdo dindmaico ¢, em geral, para descrover a légica de apresentagao. 19.3 Um pouco mais sobre Servlets ‘Um servlet é uma classe java que extende as capacidades do servidor que aces- ‘sam aplicaydes num modelo de programa requisigao e resposta. Os servlets, come definidos na interface Servlet disponfvel no pacote javax serv, sio in- Hlependentes de protocolo, e definem os métodos que todos os servlets dover implemontar. Os servlets sGo especialmente populares no desenvolvimento de aplicagées Web, cuja comunicagio é baseada no protocolo HTTP. ‘A classe HtxpServict, disponivel no pacote javaxcscrvlet.http, implementa a Interface Serviet v prové a base para implementagao de aplicagoes Web empre- sgando 0 protocolo IITTP. Do ponto de vista do conte, um servlet funciona atendendo ume requisigio « gerando contaido dinimsico om forma de piginas web, em HTML por exemplo, como resposta, O cédigo a seguir exemplifica a eriagia de um servlet 209 http://www. candidatoreal.com http://www.candidatoreal.com sport javax. serv’ import Javex servlet. http.+; import java.io.» Smport java.util public class MyNazeServiet extends HetpServiet « fe + Method to receive get requests from the web server = Passes ethea) + aparan req Tae HetpServietRequest which contains the ed via get res A response containing the required response + data for this request 7; public void deGer HetpServletRequest req, HttpServletResponse res) throws ServletException, I0Except “doPost(req,res) ; h = Method 12 fron the ueb server receive and process Post reque pServletRequest which contains the information + aparan req The I = subnitred via post = Gparen res A response containing the required response data for this request Public void doPost (HttpServietAequest req, HttpServletResponse res) ‘throws ServletException, 12 'yournane! paraneverseens 'yourname") (0) ; /Jwevesconatruct a response in KTMLessee ng. reply="\n \\ ‘\n"
<2R>\n"+ Hello "names*\n"4 "\nc/HTHL>"; U/sevansond the replyrenee res.setContentType(*text/aeal") Printlriter outeres.getirster(); our, printn (reply) out close (ds m0 http://www. candidatoreal.com http://www.candidatoreal.com © servlet interpreta a informarao dos formulério HTML para gerar uma pégina, também ITML, como resposta & requisigio do cliente. O trecho a seguir mostra o eédigo HITML da pagina que contem 0 formalério. erm
Pleaae Enver your name
Enquanto o trecho de cddigo a soguir mostra a pigina ITTML retormada como resposta pelo servlet, supondo que o usitio tenha digitado azaza, mM
lieLlo zaznza

19.3.1 Ciclo de Vida dos Servlets 0 inicio do clico de vida de um servlet ocorre quando o administrador do sis- ‘oma inicia uma aplicagio baseada em um servlet. Nesse momento, 0 container responsivel polos servlets no servidor de aplicagao cria uma instancia de um servlet, O container também passa os parimetros de inicializagdo do servlet através do método init, Ox parimetzos de iniializacio persister até o servlet ser destruito, ‘Seo processo de incilizagio ocorter com sucesso, o servlet se torna dispansvel para servigo (atendimento de requisigses). Se 0 processo falhar 0 container doscarrega o servlet ApSs a que um serviet se torna disponivel, o administrador pode optar para colocé-lo em um estado de indisponival, assim cle permancceré até que 0 ad- rministrador execute a operagio contrat, Quando um requisigio de um cliente choga ao servidor de aplicagio, © con tainer cria os objetos request e response, que sio passados de parimelro para ‘o método service, mm http://www. candidatoreal.com http://www.candidatoreal.com © método service recupera informagies sobre a requisigio a partir do ob- Jota request, processa a requisicio, e em seguida utiliza 0 objeto response para car uma resposta para o cliente.0 método service pode ainda chamar outros tétodos para processar a requisigio, como doGet(), doPost(), ou métodas es tritos pelo proprio programador. Quando 0 administrador encerra a aplicagao, 0 container invoca 0 método Aestroy() © descarroga o servlet. A figura 19.2 representa o diagrama de estados do cielo de vida de una servlet. Figura 19.2: Ciclo de vide do 19.3.2 Mantendo o estado do cliente Muitas aplicagGes requerem que uma série de requisigées de un mesmo cliente Sojarn associadas uma com a outra, para que uma determinada operacio faca sentido. Um exemplo pritico & uma aplicagio de carrinho de compras, ex que fo cliente vat navegando durante as paginas escolhendo os produtor © ao final realiza a compra de fate, © perfodo que compreende a entrada no site, pas- sando pela escolha dos produtes e chegando ao pagamento cu ao cancelamento S-comumonte chamada de sessio. A aplicagio 6 responsive] por manter 0 estado da sessio, tendo em vista que 0 protocolo HTTP é um protocolo stateless. Para suportar aplicagSes que precisam manter um estado, os servlets ofere- com APT's para implementar o concsito de sesso. As sessées sito ropresuntadas polo objeto IlttpSession. Uma sessio pode ser aceasada chamando 0 método getSession do objeto request. Kase método re- torna a sossio corrente associada com o roquest,¢ se cla ainda nio existir, uma m2 http://www. candidatoreal.com http://www.candidatoreal.com sessio 6 criada, Como o método getSession pode modificar o header da resposta (Gesponse header), esse método deve ser chamado antes de yeeuperados o Print- Writer ou o ServletOutputStream (objetos que servem para mandar dados para co cliente). |Atributos podem ser associados a ttma sessio pelo note. Tais atribmtos podem ser acessados por qualquer componente Web que pertenga ao mesmo contexto esteja atendendo uma requisigao que seja parte da mesma sessio, A seguir ura exemplo de Servlet que mantém sesabes, public class CashierServiet extends HttpServlet { public void dotet (HetpServletRequest request,ttpServletResponse response) ‘hrous ServletException, IOException { // Get the user's session and shopping cart HetpSession session = request getSession(); ShoppingCart cart = (ShoppingCart) session. getActribute( a books 1 Devernine the total price of the us double total = cart.getTotal(; Come nio hé nenbiuma forma de um cliente HTTP sinalizar que wma s rio 6 mais necesséria (a nao scr via eplicagio), cada sesséo possui um valor de timeout. O valor de timeout pode ser acessad atraves dos métodos getMaxe Inactivelnterval © Maxlnactivelnterval. Geralmente 0 tempo mixin de inatividade permitide para uma sessio também ¢ feita no servidor de aplicagio. 19.4 Um pouco mais sobre paginas JSP Jova Servor Pages (JSP) é uma tecnologia que permite embutir eédigo java em ‘wma pagina HTML para gevar contesido dindmico. Um exemplo simples de urna pigina JSP 6 a seguinte hint a= 143; Hello! 0 valor dea € cle a i> ‘Todo eddigo java aparece na pigina jp deve estar entre as tage 1% e Mi Para imprimir algum valor ne pigina é utilizada as tag i%= © %, ou alter ‘ivamente 0° métods aut print() au out.println(}, como mostrado no exernplo a seguir: «U2 page inports"jave.util-e, java-lang.** 1 a3 http://www. candidatoreal.com http://www.candidatoreal.com Hello! The tine is now h UJ This seripelet generates HTML output out printin( String.valueDf( date )); »

‘A primeira linha da pigina 6 um exemplo de dietiva JSP, Blas sempre si definidas entre as tags iJ601 © %j. No exemplo 6 utiizads uma diretiva de im- Port, que tem por objetivo importar pacotes assizn como em uma classe java comum. Existem outros tipos de dretivas, sondo as mais conhocidas a include o taglib A dixetiva include inclue o contetido do arquivo especificado durante a fase de compilagao da pagina JSP, ou seja, quando esta 6 convertida em, um Servlet, Neste aso, os dois arquiver sia combinadoe para gorar um x6. E muito til fquando uma pégina 6 estruturada em partes bem definidas (topo, mem, 10- ddapé, etc). A seguir am exemplo da tso de traa diretiva include. right nemu.jep" Io ehi> Noticias de dia COECA aprova maiz de 30 ex 2007. A soma dos salaries j4 chegs a RS 150.000! ‘Um outro recurso das piginas JSP sio as chamedas taghibs, que sio um rmecanismo portdvel pata encapsular funcionalidades reuséveis em pginas da Web. As tags podem ser de dois tipos: carregadas de wma biblioteca externa de ‘age ou préedefinidas, As tags prédefinidas sempre se iniciatn com jsp. Exemplo de chaomadas a tag pré-definidas sio mostrados abaixo: 1 Bxomplo 1 // Tnclui una pagina dentro de outra no sco da compilaséo. 1 Exenpio 2 11 Lacaliza e instancia us bean con 0 determinade none ¢ escope a http://www. candidatoreal.com http://www.candidatoreal.com caecking" property="balance” value="0.0" /> Para utilizar uma tag carregada de ume biblioteca extema antes de mais nada ¢ preciso utilizar a ditetiva taghib para especifiear onde a biblioteca de tag (tag Werary) esté loealizada,

  • Waat's your naze?
    Wnat’s your e-mail address? <2R> Wnat’s your age?

    19.4.1 JSP vs. Servlets Quando uma pigina JSP 6 requisitada pela primeira ver, o container eompila ‘pagina JSP gerando um servlet, Nas chamadas sucessivas essa elapa no 6 mais necesséria, a nio ser que pégina JSP tenha sido modificada. Portanto, as péginas JSP sio, em sltima instincia, processadas como servlets Polo fato de ser transformada em una servlet, durante 0 processamenta de paginas JSP, o container também cria os abjetos request v response. O objeto Fequest armazena informagdes enviadas na requisigio do cliente, por exemplo, os campos de tm formulévio de cadastzo. O seguinte trecho de eédigo mostra como 0 objeto request 6 utilizado em uma pégina JSP. <20n> Pa Uf Captura © valor do campo tx_nane do form submetido String none = request getParaneter("tx.nane"); //captura o ip de origen da requisisie String ip = request..getRenoteHost(); » DLS <> , © endereso IP da sus mégina & http://www. candidatoreal.com http://www.candidatoreal.com 19.5 Um pouco mais sobre EJB's Os EIB's (Enterprise Java Beans) sio componentes de software simples, re- utiizdveis © portdveis, que podem ser combinados para eriar aplicagbes eorpo- rativas, Eles encapsulam a ldgica de negicio, ou soja, 0 e6digo que realiza 0 propésito da aplicapio. Teenicamente falando, os EJB's também sio classes Java, com seus proprio atributos e métodos [As instincias dos BIB's aio executadas ema containers de EJB nos servidores de aplicagio. Sio os containers que gerenciam o ciclo de vida dos EJB's, de- tidindo quando eles devern ser criados ou destruidos Os principais beneficios ds utilizagéo dos beans si: + 0 desenvolvedor dos clientes pode se concentra na Idgiea de apresentacio; + Os clientes sio menos pesados, jé que os EJB's sio executados nos eon trainers do eorvidor de aplicagio; Maior reutiizasio de eomponentes. Os dois tipos mais importantes de EJB's sio: session Beans Modelarm of procesta da légiea de nogéeios, exeeutara tatefas para ot clientes e podean implementar web serstces. No momento da requisigéo do cliente, ur session bean é alpcaclo para atendimento, tornando exclusive até o fim do atendimento da requisigao, Os sessions beans podem ser de dois tipas: stateless ou stateful. Os beans stateless ndo mantém 0 estado da conversagao, ou seja, apds o término da execugao de wm método todo estado (valor dos atributos do EB) so perder, 0 mosmo é iberado, se tornando livre para atender outta requisigio, J com os beans stateful, 0 ‘estado pode ser modificados e recuperado entre sucessivas invocagoes de métodos. Todos os métodos invocados pelo cliente sio enviados a mesma instancia, que mantém o estado até que a sessio termine ou © bean seja Aestruid. Entity Beans Sao responsive pela porsisténcia dos dados da aplicagio, goralmente uti- Tizando bancos de dados. Nesse contexto, bean desse tipo osté associado ‘uma tabela om um BD, enquanto cada intancia de um entity bean rep- resenta um reyistro de tal tabela. sso tipo de bean pode ser compartl- hhado por miliplos usuitios, sendo necessatio para isto o gerenciamesto de traneagies, que é utn dos scrvigos prestados pelo container EJB, Cada bbean tem um identifiador inioo que permite encontré-lo, Como na tabela ‘do um BD relacional, um entity bean pode estar relacionado a outros, po- ddendo este relacionamento set implementado pelo proprio bean ow pelo ‘container. Com os entity beans, 0 coutainer 6 responsivel por todas a= 16 http://www. candidatoreal.com http://www.candidatoreal.com ‘chamadas ao banco de dados (Ex: Uma atuolizagio de um entity bean faz ‘com que o container dispare um SQL Update, enquanto a eriagio de ura novo entity bean ird fazer o container disparar um SQL Insert.) A idéia ‘Geliminar ao mximo a necessidade de escrever comandos SQL. Todos o= ‘comanddos SQL envides a0 banco fazer uso das conexies disponfveis em. ‘um pool de conexocs, que também é umm servigo gerenciado pelo servider de aplicagao, 19.5.1 Ciclo de Vida dos EJB's Um EJB passa por vtios estados ao longo de seu cielo de vida, sendo ‘que cada tipo de EJB tem um ciclo de vida especifca, No easo dos ETB's stateless, o ciclo de vida & descrito pelos seguintes estados e eventos: ~ 0 bean inicia em estado Does Not Exist = O cliente invoca um método exeate() na interface local = 0 container instancia 0 bean © os métodos setSessionContext() © ejbCreate(), implementados no bean, si0 invacados. A partir dal, 0 EJB passa para o estado Ready, = Ao final, o cliente invoca © método remove() na interface local © em seguida 0 container invoca o método ejbRemove(),implementado no bean, © 0 EJB wolta para o estado Does Not Exist; Figura 19.3 Ciclo de vide de um BB stateless 0 ciclo de vida dos EIB's statefull, por sua ver, & descrito pelo seguintes ‘estados ¢ eventos: = 0 bean inicis em estado Does Not Exist; = 0 dliente invoca uin método exeate() na interface local = 0 container instancia o bean © o8 métodos setSessionContext() © ejbCreate(), implementados no bean, s80 invocados. A partir dai, 0 EJB passa para o estado Ready; aT http://www. candidatoreal.com http://www.candidatoreal.com = Quando no estado Ready, o container pode optar por desativar © bean, o4 seja, transfen-lo para memétia secundétia invocando 0 mnétodo jbPassivate(). Nesse caso, o EJB vai para 0 estado Pas ~ Pera roativar o bean, o container dove chamar 0 método ejbActi- vate(), levando-o para o estado Ready novamente; — Ao final, assim como nos BJB's stateless, o cliente invoca 6 métodlo romovo() na interface local e em seguida o container invoca o método ejbRemove(), implementado no bean, ¢ © EJB volta para o estado Does Not Exist; Os processos de desativagio ¢ ativagio de um BIB consistem em salvar seu estado em memeéria socundéria ¢ restaurélo, respectivamente, Nestes procestos os containers utiliza técnicas de serializagao. Atualmente, os containers (Gm implementado a serializagio wliizando arquivos XML. Como foi discutido, os containers fazem uso dos chamades pools de EJB's, que aio um conjunto de beans designados a stender as requisigdes dos uisuérice. Em determinados momentos, os beans de utm pool podem estar completamente alocedos para atendimento de usuérios, Um cliente que Hlesejasse ter sua requisicao atendida teria que aguatdar a desalocagio de tum boan por parte de um cliente No entanto, alguns dos beans no pool podem estar inatives, aguardando invocayio de métodos por parte dos clientes. E papel do container decidir quando um bean deve ir para o estado passivo (ser serializado) para iberar recursos, que em Gllima instineia se tradws em meméria no servidor de splicagao, permitindo que novas requisigées sejam atendidas. Quando um eliente que teve seu bean serializado decidie realizar uma nova requisicio, tum bean deve ser alocado o sou estado dove ser restaurado da meméria sceundinia para a meméria principal a8 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 28 Topologias de Redes A topologia de uma rede de comunicagio refere-se & forma como os enlaces fisicos 0-08 nés estio organizados, determinando o8 carainhos fisicos existontes © utilizdveis entre quaisquer pares de estagées conectadas a essa rede. A topologia dde uma rede muitas vezes caracteriza 0 seu tipo, eficiiucia e velocidade. As topologias mais comuns so as soguintes Matha A interconexio 6 total garantindo alla confiabilidade, porém complexi- dade da implementagio fisiae o custo inviabilizam seu uso comercial, Batrela A conexio 6 feta através do um né central que exerce controle sobre a ‘comunicagio. Sua confiabilidade é limitada & confabildade do né contral, cujo mau fancionamento prejudica toda a rede; Barramento ‘As estagies sio conectadas através de ura eabo com difusio da informagio para todos os nés. F necesséria a adocio de um método de acesso para fs ostagies em rede compartilharem a meio de comunicagio, evitando colisies. E de ficil expansio, mas de baixa confabilidade, pois qualquer problema no barramesto irapossibilita a comunicagio em toda a rede; Arnel ( barramsento toma a forma de tum ancl, com ligages unidirectonais posto ‘ ponto, A mensagem é repetida de estagio para estacio até retornat 3 ‘estagao de origem, sendo entao retirada do anel. Como o sinal é recebido por um cixcuito e reprodusido par outro hi a regeneragio do sinal no meio Ge comunicagio; entrotanto hs também a insergio de um straso a cada ‘estagio. 0 tréfogo passa por todas as estagbas do anel, sondo que somente ‘eslagio destino interpreta a mensager; Asvore a expansio da topologia em barra herdanado suas eapacidadese Jimitagies. barremento ganha ramificagées que mantém as caracteristicas de difusio das mensagens e compartilhamento de meio estye as estagies; 284 http://www. candidatoreal.com http://www.candidatoreal.com Mistae Combinama duss ou mais topologias simples. Alguns exemplos sio 0 de es trelas concctadas em anel eas davores conectadas em barramenta, Proc ram explorar as melhores caracteristicas das topologias envolvidas, procu- rando em geral realizar a conexio em um barramento tinico de médulos ‘concentradores aos quais sio ligadas as estagdes em configuragées mais complexas © mais confisvels ON woeoee Met See Figura 28.1; Topologias de Rede http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 29 Arquitetura de Redes 29.1 Organizagao em Camadas Para redurir a complexidade do projeto, a maiotia das redes 6 orgenizada coro tama piha de camadas colocadas mas sobre a8 outras, O niimero de eamadas fe suas funcées podem sor diferentes de uma rede para outra, No entanto, ett ‘todas as redes o objetivo principal da implementagio em camadas ¢ fazer com. que uma camada oferoga servigos as camadas superiores, isolando a camada superior dos detalhes de implementacio. A camada n de uma méquisa se co- rmunica com a camada n de outra miquina ulilizando um conjunto de regras ‘© convensoes chatsado protocolo. Essas entidades situadas em méquinas difer- ents sio chamadas de pates, Na verdade, a camada n de wma maquina nio se comunice com a camada n da outra maquina diretamente. As informayées ‘io passadas para as camadas inferiotes até que se alcance a camada mais baixa Abaixo desta esta o meio fisico através do qual a comunicagio propriamente dita ocorre, Entre as camadas adjacentes existe uma interface. A interface define o conjunto de operagées ¢ servigos que a camada inferior pode oferceer a camada imediatamente superior Em uma arquitelura em camadas devose festarem bem definidos quais sio as famgdes de cada uma das camades Este tipo de arquitetura proporciona a indopendéncia das camadas por- rnitindo que a implementagso de uma camnada passa ser totalmente substituida tendo como tinico requisito da nova implementacio oferecer no minimo os mes- aos servigos oferecidos pela taplementasao anterior. Uma arquitetura em o proveupar com diversos aspetos camo: Enderegamento, Modo de ‘Transmisséo Simplex Half Duplex, Pull-Suplex), Canais Légicos(Dados Controle), Conttolede Brros, Controle de Fluxo, Fragmentagio / Montagens, Multiplexagso Demultiploxagao e Roteamento. rmaudas deve 286 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 31 O Modelo de Referéncia OSI 0 modeto de referdncia OSI (Open Systems Interoonnection) foi o primero passo para 2 padronizagdo internacional dos processos de comunicagio de sistemas abertos. Sistemas abertor so aqueles que esto abertos a comunieagdo com ‘outros sistomas. Os principios aplicados para so chegar ao modelo de 7 camadas foram os seguintes: + Uma camada dew sor criada onde houver necessidade de abstrayao acional + Cada caraada deve exeoutar tarefa bem definidas + 0 limite das camadas deve minimizar © fuxo de informagaes sobre as interfaces, 0 modelo OSI nio 6 uma arquitetura, pois nio especifica servigos e proto culos exatos de cada camada, Ele apenas indica © que cada camada deve fazer ‘As 7 camadas propostas no todelo OSI e suas respectivas funges so: 1. Gamada Fisica - Responsive pela transmissia de bits brutos por um canal do comunicagao. As questéas mais comuns sio represostagio dos bits 0 © 1, tempo de vida de um bit, permitir ou nio transmissoes simultineas nos dois sentidos, pinagens, etc; (2) 2. Camada de Enlace - Transformar 0 canal de comunicagio bruto em uma linha que pareca livre de erres pare a camada de rede. Deve implementar rmecanismos de fragmentagio e montagem, controle de fluxo,tratamentos de erros © mecanismos do confirmagio caso o servigo soja confidvel. Para relhorar o deserpenbo pode-se utilizar a téenica de Pipelining. Deve possuir também mevanismos de retransmissio; 8. Camada de Rede - Deverminar como os pacotes sio roteados da rigem a0 destino. Bvitar congestionamentos © atrasos excessivos. Dove se prcocu- par também com enderecamento e tamanhos de pacotes,que podem ser ‘diforontes nas diversas redes. H papel da camada proporcionar interoper- abilidade entre as redes. Deve implementar servigas orientados a conexio (Gareuitos virtuais) e nio orientados a conexia (datagrams) 3 http://www. candidatoreal.com http://www.candidatoreal.com Camade de Trasnporte - Dove receber dados da cameda acime, dividilos fem unidades menores e repassar easas unidades para a camada de rede. ‘A camada de transporte deve assegurar que todos as dados chegarao cor~ Tetamente ao destino, Ha camada que realize o controle fine acim, Unt processo em uma méquina hé mantém uma conversayio dirvtamente com tum processo om alguma outra miquina. Entre as tarcfas mais comms realizadas pelos protocolos dossa camada estio transferéncia bésica de dados, multiplexacio, abertura de conexies, controle de Gusa © comges- Camada de Sessdo - Permite que usuirios de diferentes méquinas esta belogaza sessies entre eles. Os scrvigos sio controle de didlogo (quctn dove transmitir a cada momento), gerenciamento de token (impedindo ‘que duss miquinas tentem executar sessio critica ao meszo tempo) © a sincronizagio (que permite que transtissbes longas parem e teiniciem do ponto onde ocotrew interrupcia); Camada de Apresentagdo - Preacupa-se com a sintaxe ¢ a semintica das informagies transmitidas, O objetivo ¢ permitir a transferéncia de dados ‘entre entidades com diferentes representacées de dados. Definer as estru~ tras de dados a setem intercambiadas juntamente com a codifieagao dos dads Camada de Aplicagao - Contim os protocolos que implementam de fato as aplicagées dos usutios http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 41 Arquitetura TCP/IP 41.1 Visio geral A exquitetura ‘TCP/IP surgiu com a ctiagéo de ume rede chatoada ARPANET, ‘que foi uma rede eriada para manter comunicagio entre os dngios do governo doe EVA e as universidades. A ARPANET erescou e tornowse a rede mundial Ade computadores, a Internet Aarquitetura TCP/IP trata do um conjunto de protocoles divididos em qua- ‘ro camadas: Fisica (host/Rede), Rede (Inter-Rede ou Internet), Transporte & Aplicagao; onde cada uma exccuta um conjunto bem definido de fangbes de eo- taunieagio. Nesta arquitetura nao existe uma estruturagéo formal para cada ca- mada confortne ocorre no modelo OSI, Ela procura definit wma protocolo proprio pata cada camada, assim como a interface de comunicagso entre duas eatmadas adjacentes. A figura ?2 1 mostra a arquitetura TCP/IP. 41.2 Comparagio entre a arquitetura OSI e TCP/IP Os modelos de referéncia OST © TCP/IP vim masito ex comum. Os dois so ba- seiam no concsito de pilha de protocolos independentes. Além diaeo, as eamadas tém praticamente as mesmas fungdes. Apesar dessas semellangas, os modelos ‘tm muitas difereneas. 0 modelo OST torna explicita a diferenga do conceito de servigo, de interface fe de protocolo. Enquanto que o modelo TCP/IP nao diferencia com clareza fesse8 Coneeitos. Por esse motivo, o modelo OSI os protacolos sio bem mais en= capsuladas quo os do TCP/IP ¢ podem sor substituidos com rlativa facilidade. 0 modelo TCP/IP nio é nem ura pouco abrangente ¢ nio consegue deserever ‘outras pilhas de protocolo que nio a pilha TCP/IP. ‘Uma diferonca explicita exté no nimero de camadas. 0 modelo OSI possui sete © 0 TCP/IP possui quatro, Outrs diferenga esté na érea de eomunicagio sem conexio c orientada a concxées. Na camada de rede, 0 modelo OST é ‘compativel com a comnicagio sem conexio eorientada a conexses. No entanto, za camada de transporte, o modelo sceita apenas comunicagso otientada a teonexdes. O modelo TCP/IP s6 tem um modo de operagio na camada de rede (som conexio), mas aceita ambos os modes na camada de transporte 360 http://www. candidatoreal.com http://www.candidatoreal.com ‘No modelo TCP/IP, a camada fisica nao 6 realmente uma camada no sentido fem que 0 termo é usado no contexto dos protocolos hierarquizados. ‘Trata-se, tna vordade, de uma interface entre a eamada de redes e de enlace de dadoe. E ainda, o modelo néo faz distingao entve as camnadas fisicas e de enlace de dados. Al. Camada Fisica (host /rede) A arquitetura TCP/IP nao defini muito bem o que acontece nosta camada, ape- nas especifice que o host tem que se conectar & rede utilizando algum protocolo pata que seja possfvel enviar pacates IP. Esse protocala nfo & definido ¢ varia de host para host e de rode para rede. Esta camada também & chamada de camada de abstragio de hardware, pois ‘sua fungao principal sor uma interface do modelo TCP/IP vom os diversos tipos de rede (X25, ATM, FDI, Rthernet, Token Ring, Prame-Relay, ete). Como bhi uma grande variedade de teenologias de rede, que utilizam diferentes veloci- ddades, protocolos, meios de transmissio, ete., esta camada nio 6 normatizada pelo modelo TCP/IP, o que prové uma dae grandes vantagens do modelo: a possbilidade de interconexio e interoperagio de redes hoterogénces, Os protocolos desta camada sia: + PPP (Point-to-Point Protocol): & um protocclo ponte a ponto uliliado pata transportar datagramas através de uma conexio serial entre dois dis- positivos de rede, por exemplo, entre modoms (do usuirio do provedor fe Internet). Ble areita a detecgio de eras, nogociagio de opeées, com- pactagio de cabegalhos e, opcionalmente, a transtnissio confiével com 0 ‘uso de uta formato de quadgo do tipo HDLC. # ARP (Adress Resolution Protocol): 6 um protocolo utilizado para de- scobrir 0 enderego fisico (MAC) de uma méquins a partir de seu enderogo 1P; + RARP (Reverse ARP); 6 um protocolo utligado descobrir 0 enderego IP do uraa masquina a partir de um enderego fisico, Pode-te dizer que os protocolos ARP e RARP pertencem também 3 camada Inter-Rede. 41.4 Camada de Inter-Rede ‘A camada de Inter-Rede 6 a primeira normatizada pelo modelo TCP/IP. Con- heecica também como camada Internet (Rede), esta camada define o protacalo IP (Internet Protocol) responsive pelo enderegamento dos hosts « roteadares, A taroia desta camade 6 ontzegar pacotes IP onde eles sio necessérios. O zotea- mento de pacotes ¢ uma questo de grande iraportincia nesta camada, assim como a necessidade de evitar o cangestionamento. ‘Além do protocolo IP, a camada de Inter-Rede define alguns outros proto- colo + ICMP (Internet Control Message Protocol): & transmissio de mensagons de controle ou ocon rn protocolo utilizada para ia de problemas; 361 http://www. candidatoreal.com http://www.candidatoreal.com * OSPF (Interior Gateway Routing Protocsl): 6 um protocolo de rotex- mento em um Sistema Autonome, + IP (Routing Information Protocol): 6 um protocolo que permite a troca de informagées de roteamento entre gateways utilizando o algoritmo Vector- Distance, # BGP (Boder Gateway Protocol): 6 um protocolo de roteamento entre Sistemas Autdnomos. 41.5 Camada de Transporte A camada de transporte 6 o niicleo de toda a hicrarquia de protocolos. B uma ‘amada fim a Gm, isto 6, uma entidade desta camada da méquina de origem s6 se comunica com uma entidade par da maquina de destino, Sua fungio é prover uma transferéncia de dados confidvel e econdmica entre a miquina de origem © 1 miquina de destino, independente das redes fisicas em uso no momento. Dois protocolos fim a fim sio definidos nesta camada. O primcito deles, © TOP (Transmission Control Protocol) 6 um protocolo orientado a conexio confidvel que permite a entrega sem exxos de um luxo de bytes, verificanda se a ‘ordem e a soqiiéncia dos dados recebidos ¢ enviados esto corretas, O segundo protocolo, © UDP (User Datagrata Protocol) € um protacolo sei conexio rio-confidvel, ou sea, nio oferece nenhuma garantia em relagéo 3 entrega dos dados a0 destino, Para distinguir entre vérias aplicagies, a camada de ‘Transporte associa urn identificadar 2 cada processo de aplicagao. Esse identifiador 6 chamado de porta. Para uma aplicacio "falar"com outta numa méquina remota, é preciso omhecer nao apenas o enderego IP da maquina destino, mas também a porta associada a cada aplicagio. O UDP ¢ o TCP fornecers um conjunto de portas ‘que permite a miltiplos processos denteo de uma nica méquina usarem os servigos provider pelo UDP e TCP simultaneamente. O protocolo TCP utiliza 9 conceito de sockets para caracterizar uma conexio entre a origer e 0 destino. sockot consiste no enderogo IP da miquina ea porta, 41.6 Camada de Aplicagio # formada pelos protocolos wtlizades pelas diversas aplicagdes do modelo TCP/IP. Esta camada nao possui um padrio comum, eada aplicagio define o seu proprio protocolo, E esta camada que trata a compatibilidade entre os divers formatos representacos pelos variados tipos de estagoes da rede. Os principais protocolos desta camada sio + TELNET (TeleType Network): é um protacolo utilizade para ancesar sis: temas remotos pot meio de um terminal. Utiliaa a porta 28 do protocalo rep; + FTP (File Transfer Protocol): é um protocolo utilizado pata servigos de transferéncia, renomeagio e climinagdo de arquivos,além da criagao, mod- ifcagdo e exclusio de diretérios. Usiliza duas conexses TCP: uma para 362 http://www. candidatoreal.com http://www.candidatoreal.com ‘controle, porta 21, e outra para dado, porta 20, As transferénciae de arquivos podem set no modo texto ou binsrio; SNMP (Simple Network Management Protocol): ¢ um protocolo utilzado ‘rafogar informagées sobre dispositivos da rede, ou seja, gorenciamento da rede, Utiliza duas conexdes UDP: uma para requisigdes, porta T6L, ¢ uma para as mensagens de trap, porta 162: DNS (Domain Name Server): é um protocolo ulilizado para realizar o ma- peamento entre nomes ¢ enderego IP. Utilize a porta 43 do protocolo UDP para resolueio de nomes ea porta 58 do protocolo TCP para transferéncia de vonas; DHCP (Dynamic Host Configuration Protocol): é um protocole que per- rite realizar a configueagio automstica de envderegas de hosts em uma rede ou na Internet; SMTP (Simple Mail Transfer Protocol): 6 um protocolo utilizada para vias mentagens de corveio eleteénieo, Usaslmente, utiliza a porta 25 do protocolo TCP; HTTP (HyperText Transfer Protocol): & um pratocolo de transferéncia de mensagens utilizado ua WWW. Usualmente utiliza » porta 80 ou S080 4o protocola TCP; NES (Network File System): 6 um protocolo que permite "montar"distos fou parte deles de dispositivos remotamente e opersclos cotao se fossetn locais,Inicialmente este protocolo utiliza a porta 2049 do protacolo UDP, sas a vorsio NFSA utiliza a porta 2049 do protocolo TCP; 368 http://www. candidatoreal.com http://www.candidatoreal.com Parte XI Banco de Dados http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 55 Conceitos Basicos ‘Um sistema de gerécis de banca de dados (SGBD) é uma colegde de arquivas © prograraas inter-relacionados que permitem ao uso 0 acnsso para consulta bo alteragies destes dados, O maior beneficio do banco de dados & proporcionsr a0 usuésio uma visio abstrate dos dados, A abstragdo de dados so dé om txés nivel fsico sero explicados abaixo. rie: nivel canceitual, nivel lgico © A capacidade de modifcar a definigio dos esquemas em determinado nivel, sem afetar o esquema do nivel superior, 6 chamado independéncia dos dados. A. independéncia de dados Logica (alteragio no nivel igica) & mais diffll de ser cangada que a independéncia isica, uma vez que os programas de aplicagao s20 tals fortemente dependentes da estrutura logica dos dados do que de sou acesso, Como o modelo E-R, explicado com mais detalhes, frente, o modulo ori tentado a objetor tom por base um conjunto de objetos. Aqui, utlizamaos os coneeites de classes, métodes, ete. Ao cantrério do modelo E-R, cada objeto, ppseui uma tinica identidade, independente dos valores neles contidos. Existem trés modelos logicos com base em registros * Modelo Relacional: Usa um conjunto de tabelas para representar tanto os dadoe como a relagao entre eles # Modelo de Rede: Os dasios do modelo de rede sio representados por tm ‘conjunto de rogistros ¢ as relagdvs entro estes rogistros sio ropresontadas por links (ligagdes), a8 quais podem sor vistas polos ponteiros. Os regstros ‘io organizados no banco de dados por um conjunto arbitrévio de grafos; + Modelo Hierdsquico: similar eo modelo de rede, pois os dados e suse relagdes edo representados, rexpectivamente, por registros Links. A diferenga ‘que no modelo hierérquico, os registros estdo orgonizados em érvores. Uma transagdo & wana colegio de operagies que desempenha tama fungo lgiea nica dentro de ume aplicagio do sistema de banco de dados. Exigitaos que as transagies nao violem menbumas das regras de consisténcia do sistema 166 http://www. candidatoreal.com http://www.candidatoreal.com de banco de dados. E necessirio aceitar inconsistincias Vemporésias para que as ‘ransagGes possam ocorrer sem problemas, mas deverd sex possive retornat easo ‘ocorra tums falha, por isto todo SGDB deve conter wm sistema de recuperagio. 0 arquivo de dados armazena 0 proprio banco de datos, 0 diciondrig de da dos srmazona of mctadados relativos & estmutura do banco de dados. E muito uusado, portanto uma implementagao eficiente & importante, ‘Um projeto de banco de dados envolve as seguintes etapas: + Anilise de Requisitos: Proceseo informal que envolve discusses entre gr pos de usuavios; * Projeto Conceitual: Deserigdo de alto nivel dos dados a serem armazena- os no BD (snodelo FR); Projeto Légico: Escother um SGDB ¢ converter o projeto conceitual em tum esquems do modelo de dados do SGDB, exemplo: modelo relacional; Refinamento do esquema: Identificar potencials problemas, usando teorias como a normalizagio; Projeto Fisico: Garantir eritérios de dosempenho, envolve, par exemplo, ‘ construgio de indives para tabelass * Projeto de Segurangs: Identificar grupos de usuitios e regras entre esses frupos e seus acestos is tabelas 467 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 56 Abordagem Relacional 56.1 Conceitos © abordage relacional apresenta basicamente cinco conceitos que sia: * Dominio: Conjunto de valores permitides para um dado; « Atributo: Um item de dado do BD (possui ura nome e um dominio); + Tupla: Un conjunto de pares (atributo, valor), Exemplo: {idade, 34} * Relagio: B um conjunto do tuplas. Composto por um cabegalbo © um corpo. O cabegalho possui um nsimero fixo de atributos nio-ambiguos (grau da relagao). Corpo ¢ um nimero variével de tuplas (cardinalidade da relagio) em que a ordem nao relevante, # Chave: Conjunto de wm ot mais atsibutos de uma telagiar 56.2 Esquemas e Restrigdes de Integridade 0 esquema de um BD relacional 6 ur conjunto de esquemas de relagio, $ Roo) Ry: Uma instancia de $ € ura conjunto de relagies BD = ry. 79a) onde cada 7, é'uma instincia do esquema de relagio R, A restrizdo de dominio 6 a condigo em que 0s atributos devem ser somente dentro de um conjunto especificado, por exemplo: ura valor mai ‘quatro ou um valor diferente de nslo, itos ue A restrigdo de integridate referencial 6a condigia em que desejamos garantir (que um valor que aparece em uma relacio para um dado conjunto de atributos ‘também aparesa para um cetto conjunto de atributos de outra relagio, Uma conjunto de atributos FK no esquema da relagio Ry é uma chave estrangeira de Ry que referencia Ry se 1. os atributos em FIC possuem os mesmos dominios que os atributos da chave primiria PK de Ra; diz-se que os atributos FK fazem referancia & relagdo Ry, 468 http://www. candidatoreal.com http://www.candidatoreal.com 2, para qualquer tupla ¢ de r(JR,), ot existe uma tuple tpemra(R,) tal que (FA) = [PK], 08 (PK, é nulo ‘Viclagées de restrigSes que podom ocorrer: 1. inserin(vl,.. vn) pode eausar ‘© violagio do intogridade do identidade (chave prim. nula); 4 violagin de restrigio de chavo ‘* violayio de integridade referencal 12. excluir(PK) pode causa violagio de integridade refencial, Podemos lidar com isso das seguintes maneiras rojeiter; «© propagar a exclusio ‘© modifiear os valores dos atributos referenciados para nulo. 4, atualizagio(PK, atributo, nove-valor): podem causar as mesmnee violagiee vistas anteriormente quatio ou a chave primétia ow chave estrangeita atualizadas Uma assergao é um predicado que expressa uma condigSo que desejamos que seja sempre satisfeita no banco de dados. Restriges de douainio e de inte dade sio casos particulares de assergGes. Assergies complexas podem prejudicar ‘© desompenho do banco do dados. Um gatitho(trigger) 6 um comando que é executado pelo sistema automati- camente, em conseqiiéncia de uma modificagio no banco de dados. O padréo SQL-92 nio dispae da gatithos, A nogio de dependéncia funcional generalize o conccito desuperchave. Quando dizemos que uma determinada relagao possui a dependéncia funcional a> 3 ‘queremos dizer que para todas os pares de tuplas t;e t2, se ty[a) = tala) entéo {h(6} = t2[8). Ou soja, se duas tuplas assumem os mesmos valores para 0 con- junto de atributor a entio também deve assumir os mestnos valores para 0 tonjunta de atributos . A ciausura do conjunto dependéncias funcionais F 6 denotada por F* e inclu as dependéncias funcionais logicamento implicitas 469 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 57 Modelagem Entidade Relacionamento 57.1 Conceitos Nesta etapa, nos movemos de uma descrido informal do que os usuétios desejam para uaa descrigio formal. Os conceitos mais importantes sio: + Entidade: Objeto do mundo real distingiivel de outros objetos, 6 deserita utilizando um conjunto de atributos; + Conjunto de Entidades: Uma colegio de entidades similares. Exemplor + Chave = Superchave: 6 0 conjunto de um ou mais atributos que, lomados cole- tivamente, nos permite identifear de maneita univaca uina entidade fem urn conjunto de entidades; Candidate: superchave em que nenkurn subeonjnto & sup Primatia: chave candidata definida pelo projetista do BD para iden- tificar as entidades = Eetrangeira: atributo de um conjunto de entidades que é chave primavia de outro conjunto de entidades, + Relacionamento: Assaciagio entre duas ou mais entidades * Conjunto de Relacionamentos: Colegio do relacionamontos similares; Atributo Descritivo: registrata informagio sobre o relaciomento; Ausibute Multivalorado: quando mais de um valor pode ser inserido, por cxeraplo, um funcionsrio pode ter vérios dependantes e pode-se eriat um atributo maultivalorado para colocar o nome de cada um desses deps 70 http://www. candidatoreal.com http://www.candidatoreal.com 57.2 Cardinalidade + Um para um: uma entidade em A esté astociada a no méximo uma enti= dado em B + Um para muitos: uma entidade em A esté associada qualquer mimero de entidades em B «+ Muitos pare muitos: uma entidade em A ests ansocada a qualquer nimero de entidades em Be tuna entidade em B ets associada a qualquer msitnero de entidader em A. 57.3. Representagio Grafica + Conjunto de entidades: retingulos; © Atributos: lipses; # Conjunto de relacionamantes: losanges; + Acributos multivalorados:elipses duplas; Poswsi_ Conta Patre Client Cliente Figura 57.1: Um Diagrama Rntidade Relacionamento 57.4 Recursos do Modelo Entidade Relaciona- mento ' Conjunto de Entidades Fracas: no possui chave priméria, mas o iden Lafleador 6 composto juntamente com a chave primétia de um conjusto de entidades dominante (Corte). see identificador é chamada de chave ‘parcial (pmame). Essa telagio é feita através de um relacionamento iden- ‘ifieador. Por exemplo, um pedido do compra pode possuir Vérios itens, ras cada um dessos itens estd associado a somaente umm podido de compra. Poderia-se associar um identificador parcial para cada item em relagio 20 sou pedido, A chave parcial poderd ser formada entre esse identificador parcial e a chave priméria do conjunto de entidades que representa 0 pe- ‘ido. O relacionamonto é um para muitos e conjunto de entidades fracam ‘tem paticipagio total (todo item esté assoviado a umm pedido). an http://www. candidatoreal.com http://www.candidatoreal.com # Eepecializagéo: no caso de um conjunto de entidades que possuem sub- smupor de entidades, pode-se realizar a especializagio fazendo que esses subconuntos tenhaim of mesos aributos do conjunto de entidades princi= pal mais atributos especificos para o subconjunto que néo é compartilhado com outros subvonjuntos, H como se fosse uma heranga, Generalizagio: Difere da especializagao no sentido de como é feito 0 pro- joto, Na generalizagio, o projetista procura atributor em comurm para formar um conjunto de entidades "pai". A representagao no diagrama 6 a esta (uso do losango ISA), Agregagio: Permite-nos tratar um conjunto de relacionamento como um ‘conjunto de entidades coms o propésito de permitir a participagio om out- tos relacionamentos an http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 58 Normalizagao 58.1 Aspectos desejaveis em um bom projeto Considere o seguinte caso: queremos fazer umn relatério que representa um pe- ido de compra, gostariamos de ober o¢ nomes dat produtos, seu volume, set peso © os seus precos e suponha que alguém tenka pensado num esquema de item de um pedido da seguinte manelva: item(quantidade, nomedo.produto, volume, peso, prego). Sabemos que um determinado produto ter sempre o resto volume e 0 mesmo peso. Divemos que hi redundincia nese caso, 6 que poderfamos eriar outro exquema produto (id.produto, volume, peso) v associar~ ‘mos id produto como chaves estrangeira em itom. Acabamos de realizar o que © chamado de decomposigao, Devomposigdes descuidadas, entretanto, podem sgerar outro tipo de projeto de mé qualidade. Podemos rocuperar a relagéo de- sejada por meio da operagio de jungio natural (natural josn), mas pode oeotrer ‘que a resposta alcangada Vena mais tuplas do que realmente deveria ter, devido a uma mé decomposigio (decomposigdo com perda de junedo) ‘Um conjunto de esquemas de relagées Ry, Rz,..., Ry 6 uma decompasigio de Ree R= KURI. URy. Assim, 6 sempre vilido quer Cry P6724 24% ‘Seja R um eequema de relagio © F um conjunte de dependéncias funcionsis sobre R. Sejam Fy € Ry formas de decomposigio de R. Bssa decomposican & uma decomposigao sem perda de jungdo do R se ao menos uma das seguintes dependéncias funcionais esté em F e ROR R # ROR: Re Outro aspocto que desejamos para banco de dados & a preservagio de dependéncia. O sistema deve checar se uma atualizagio no banco de dados criard uma relagio ilegal (que mio satistaga todas dependéncias funcionais) 58.2 Forma normal de Boyce-Codd ‘Uma velagio do eaqueme R esté na FNBC (forma normal de Boyee-Codd) com respeito a conjunto F de dependéncias funcionais se todae as dependéncias fun- a3 http://www. candidatoreal.com http://www.candidatoreal.com cionsis em F* da forma a —» 8, em que a © das exigéncias abaixo: RoGC Ratendom a0 menos uma # + 8 6 uma dopendéncia funcional trivial (isto 6, 8 C a). + 6 unaa superchave para o exquema R. 58.3 Terceira forma normal Podemos sceitar uma forma normal mais fraca chamaada feveira forma normal (SPN). Rasa forma normal permite dependéncias funcionais nio-triviais ‘Uma relagio do esquems R esti na 8F.N com respeito a conjunto F de dependéncias fancionais se todas as dependéncias funcionais em F* da. forma a+ B,emqueac Re fC Ratendem eo menes uma das exigéncias abaixo: # +9 6 uma dependéncia funcional trivial #6 uma superchave para o esquema R. + Cada atvibuto de A em 9 — a esté contido em uma ehave eandidata de R, ‘Todo esquema FIVBC é também 3FN. Nema todo PNIC preserva as de- pendéncias funcionais, jd em um projeto BF é sempre possivel garatir as de- pendéncias funcionais ¢ que as dovomposigdes sio sem porda de jungdo. Entre- tanto, na 3F. pode haver tepetigdo de infortnagio e uso de valotes nidlos para representarmos um relacionamento entre itens de dados, mas mesmo assim & tacnoe pior do que néo garantir a preservagéo de dependéncia. am http://www. candidatoreal.com http: Capitulo 59 Transformacao do Modelo Conceitual Conjunto de entidades fortes: uma coluna para cada um de seus atributos; Conjunto de entidedes fracas: uma colums para cads um de sous a utos mais as colunas que compreender os atributos que formam « chave mira do conjunto de entidades dominantes; Conjunto de Relacionamentes: Formedo pelos seus atributos descritives e pelas chaves primvias de cada wma das entidades participantes ‘Um conjunto de Relacionamento que possui a cardinalidade muitos para ua ow um para um e mio poss atzibutos descritives nio precisa ser representado fm tabela, Por exemplo, no caso de um relacionamento entre ura conjunto de entidades fraca e um conjunto de entidades forte, a chave pritoiria do conjunto de entidades forte funciona como um atributo no conjunto de entidades fraca (chave estrangeia). www candidatoreal.com http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 60 Linguagem SQL 60.1 Criagio de tabela ‘Uma nova tabela pode ser criada especificando o seu nome juntamente com os romos das colunas e sous tipos de dado: CREATE TABLE cline ( cidade varchar (80), enp.nin int ~~ texperatura ainina venp_nax int, tenperatura néxina prep real, -- precipitacio © comando INSERT ¢ utilizado para carregar as linhas da tabela INSERT INTO clima VALUE: (Sie Francisce”, 48, 50, 0.25, '1994-11-27") -A-sintaxe usada anteriormente requer que sea lembradla a ordem das eolunas. ‘Uma sintaxe altemativa permite declarar as colunas explicitamente: INSERT INTO clina (cidade, © VALUES ('S8e Francisco’, 60.2 Consultas Para wr ot dados de uma tabela, a tabela deve ser consultada, O comando SELECT do SQL é utiliado para esta fungéo. Por exemplo, para ver todas as Tinhas da tabela clita digite SELECT * FROM cl Pode ser especifcada qualquer expressio arbitréria na lista de seleyio. Por lo, pode ser escrito SELECT cidade, (texp_max+venp.min)/2 AS tesp_media, data FROM clina http://www. candidatoreal.com http://www.candidatoreal.com Oporadores booleanos arbitrérios (AND, OR ¢ NOT) sio pormitidos na qual- ifieagio da consulta. Por exemplo, © comando sbsixo obtém o clima de Sio Francisco nos dias de ckuva: SELECT + FROM clina WHERE cidade = ‘So Francisco’ AND prep > 0.05 Pode sur desejado que os resultades da seloyio retornem em uma dotermi- nada ordem, ou com af linhas duplicadas removidas: SELECT DISTINCT cidade ROK eine ORDER BY cidade; A consulta da forma: SELECT clisa.cidade, clima.tempnin, clina.tomp_nax, clina prep, clina.data, cidades. lecalizacae FROM clima, cidades WHERE cidadea nome = clina.cidade; ode sox esrita na forma altermativa SELECT * FROM clima INNER JOIN eidades OW (clina, cidade = cidades none); Desejamos fazer a varredura da tabelaclima e, para cada uma de suas Tinkas, ‘encontrar a linka correspondonte em cidades. Se nonhumsa linha for encontrada, ddesejamos que algum "valor vatio"seja colocado nas colunas da tabela cidades. Este tipo de consulta 6 chamado de jungio externa (outer join). As consultas vistas anteriormente aio jungSes intornas (inner join). O comando extao fea SELECT + PROM cima LEFT OUTER JOIN cidades OW (clina,cidade = cidades none); ‘Também é posse faer a jungio da tabela consgo mesmo, Ito € chamado de autojungao (elf join). 60.3 Fungées de agregagao Existem fungies de agregagio para contar (count), somar (sum), caleular a raédia (avg), o valor mésimo (otex) eo valor minimo (min) pare tm conjusto de lias. Como exemplo, podemos obter a maior temperatura minima ocorrida em, qualquer lugar com SELECT max(vemp_xin) FROM clina, ar http://www. candidatoreal.com http://www.candidatoreal.com Se desojarmos saber a cidade (ou cidades) onde os Ieitura ocorreu, podemos SELECT cidade FROM clina WHERE teapnin = nax(tenp_nin) ERRADO! ‘mas nio funciona porque a fangdo de agregagio max nio pode ser usada na cliusula WHERE (esta restrigéo existe porque a cléusula WHERE determina as linhas que vo passar para o estagio de agregagio e, portanto, precisa ser avaliada antes das fangoes de agrogagao sorem computadas). Entrotanto, uma forma corteta é a subconsulta abaixo: SELECT cidade FROM clina WHERE cenp_min = (SELECT max(tenp_min) FROM ¢ima); As agrogagies também sio muito steis quando combinadas com a eléusula GROUP BY. Por exemplo, pode ser obtida s maior temperatura rainima abser- vada em cada cidade com SELECT cidaai ROK cima GROUP BY cidade; smax(cemp.sin) Cada resultado da agrogagio é ealeulado sobre as linhas da tabela correspon- dendo a uma cidade. Estas linhas egrupadas podem ser fitradas utilizando a eléusula HAVING SELECT cidade, max(vemp_zin) FROM cline GROUP BY cidade HAVING nax(tesp_min) < 40) H importante comproonder a interagdo entre as agregagies eas cléusulas WHERE e HAVING do SQL. A diferenca fundamental entre WHERE e HAV- ING 6 esta: o WHERE seleciona as linhas de entrada antes dos grupos © agrogagGes serem computades (portanto, controla quais linhas iro para o com- puto da agregagio), enquanto o HAVING seleciona grupos de linhas apés 08 srupos e agregagoes serem computades. Portanto, o cléusula WHERE nao pode conter fungées de agregasio, ndo fax sentido tentar utilizar urna agregacéo para determinar quais linhas serdo a entrada da agregagao. 60.4 Atualizagdes ¢ exclusdes ‘As linhae existentes podem ser atualizadas utilizando 0 comando UPDATE, Suponha que foi descaberto que as leituras de temperatura estio todas mais altas 2 graus apde 28 de novembro de 1994, Estes dadas podem ser corrigidos da seguinte maneira UPDATE clina SET tenp_max = temp_nax ~ 2, WHERE aata > ’1994-11-28"; eenp.min = tenp.nin ~ 2 a8 http://www. candidatoreal.com http://www.candidatoreal.com Suponha que ndo estamos mais intoressados nos dados do cima em Hayward. Entio precisamos excluir suas linhas da tabela. As exchusées sio realizadas utilizando o comande DELETE: DELETE FROM cline WHERE cidade Hayward? 60.5 Visdes Suponhe quo a consulta combinando os rogistros do lima e de localizagio das tidados soja de particular itoresse para sua aplicagio, mas que voe® nio deseja gitar esta consulta toda ver que necessitar dela, Voeé pode, entao, criar uma viedo baseada na consulta, atribuinda um nome a esta consulta pelo qual é possvel referencisla como se fosse uma tabela eomutn CREATE VIEW minha vise AS SELECT cidade, vemp_nin, tenp.nax, prep, data, localizacao FROM clina, cidades WHERE cidade = noze; 60.6 Chaves estrangeiras Desejamos tor certera que néo serdo inscridas linhas na tabela clima sem que hhaja uma entrada correspondente na tabela cidades. Isto & chamado de manter ‘intogridade roferencial das dados. As declaragdes para as tabelas fiariai CREATE TABLE cidades ( cidade varehar(80) primary key, localizacae point d: CREATE TABLE cliza ( cidade varchar(80) references cidades, vespnin int, tespimex int, prep real, daca date Dd: 479 http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 61 Conceitos de Datawarehousing e Bussiness Inteligence 61.1 Banco de Dados Multidimensionais Os BDs Multidimensionais sf0 altamente otitaizados para mainimizar o tempo de consulta e apresentagio. Os dados extraidos dos sistemas fontes sav gravados diversas votes om vetores ou "arrays" ordenadamente de forma que a realizagio da consulta seja implementada como uma simples varredura de uma parte de um vetor. O BD Multidimensional também possui um conjunto de fangées matemétieas que podem set estendidas e que #30 exeeutadas dinaroieamente & varredura dos rogistros. Com isso, o sistema trabalha com arquivos temporiios renotes, reduzindo drasticamente o tempo de 1/0. Claro que @ manatensio destas estruturas ordenadas sio muito mais cional, Mas como as atualizagdes sio realizadas rmoradas que nim BD conve periodicamente (de més em més, gerolmente) e o seu tempo nao é eriico 80 nivel de aplicagio (no importa para o usustio ae a carga levow 24h, mas sim quc a consulta levour menos de 10 min), nio existe grande preocupagia com o ‘tempo de atualizagio dos dados. Além de jé guardarem os dados de forma ordenada, os BDs Multidimen- sionais, também se utiizam de estruturas auxilianes de consulta que guardam 0 resultado de consultas anteriores armazenadee ema disco e apenss consultamn fs registtos novos que no foram consultados na pesquisa anterior, gerando urn incremental. Exemplo: em 01/02/2001 foi reslizada ma consulta que der strava.o nimero de produtos vendidos por cidade e més da venda. Para fazer esta consulta a banco de dados Love que varrer todos os moses ¢ todas as eidades que tiveram vondas, Quando osta consulta ¢ reslizada novamiente em 01/04/2001 0 BD em vex de varer tudo de novo, apenas procura pelos regsteos de vendas de Foverciro e Margo e utiliza os valores gerados na consulta de 01/02/2001 que foram armazenadas em ura arquivo de consulta 480 http://www. candidatoreal.com http://www.candidatoreal.com ‘Outra estrutura de consulta muito utilizada é a geragio de diversos niveis de sramularidade das informagoes. Isto 6, quando o usuétio faz una consulta como ‘ citada no exemplo acima, o BD em ver de fazer os agrupamentos somente 20 nivel de Cidade e Mas ele dispara simultaneamente agrupamentos por Bairo, Estado, Semana e Trimostre, sspondo que a proxima consulta a ser disparada pelo usuério seja uma operagao de "Drill Down ox Roll UP" \Varias outras estratégias de minimizar o tempo de consulta existem, mas 08 dois tipos de estzatégias apresentadas: consulta incremental e em vévios niveis de granularidade edo se mais comumente utilizadas hoje em dia, Bancos de dados multidimensionais sio sistemas proprietérios que nio seguem padres (linguagem, API) estabelecidas pela inddstria de banco de darts. Isto se tora uma deavantagem para tais sistemas, uma ver que « arquitetura nio 6 bert 61.1.1 Modelagem Multidimensional 0 modelo multidimensional visa freiitar a comproensio do estruturamenta dos dados armazenados tanto para desenvolvedores quanto para os uswérios do sis- tema. Neste tipo de modelo existem trés elementos bésicas? of fatos, as menses © a8 medidas ot varidveis. Fato 6 uma colegao de itens de dados compostos de dados de medidas o de contexto. 0 fato reflete a evalucio dos negécios do dia-a-dia e é representado por valores numéricos. # implementado em tabelas denominadas tabelas de fato (fact tables). Dimnensies so os elementos que participara de um fato. Elas determinezn 0 contexto de um assunto de negécios. As dimensSes normalmente nao possuern valores muméricos, pois sdo somente descritivas c classifcatérias dos clomen- tos que participam de um fato. Um Datawarchouse que analisa vendas de um produto (fato) poderia ter as soguintes dimensées: tempo, localizagSo, clientes, vendedores. ‘As dimonsbes podom ser compostas por mombros que podem conter hicrar- squias. Merabros (atxibutos) sio as possiveis divisdes ou classifcagses de uma dimensio. A dimensao tempo poderia sur dividida nos suguintes membros: ano, ‘rimostre e més a dimensio localizagio em: cidade, estado © pais |As Medidas (varisweis) sio o atribtos numéticos que tepresentam tna fato © € sobre eles que sio feitas as andlises do negécio. Sao por exemplo, o valor ‘om resis das vendas, o mimero de unidades vendidas, o custo da vends. Uma rmedida é determinada pela combinagio das dimensies que participam de um fato, e estio localizadas como atrbutos de um fato, Para facilitar 0 entendimento, © modelo multidimensional 6 representado pela desenha de um cubo, Todavia, o mimero de dimensies geralmente é maior 4s http://www. candidatoreal.com http://www.candidatoreal.com que trés, 0 que sugero um hipercubo. Como um hipercubo 6 algo dificil de so ropresentar & literatura utiliza geralmente como referéncia somente © cubo. A figura 61.1 mostza um cubo para a medida vendas, Figura 61.1: Abordagem Dimensional representada por eubos Viilizando a abstragio da organizagio da informacio om um eubo, podemos \efinir mais facilmente as quatro operagdes biicas OLAP: + Drill Down: consiste em detalhar o nivel dos dados, naveyar do mais alto nivel até o dado detalhade, Exemplo: Em ver de ver as vendas anuais, passar a ver as vondas trimestrais, Ou em ver de ver as vendas por estado, ver por cidade; + Roll UP: operagio inversa da Drill Down, Navegagso do nivel de detalhe pata o mais alto nivel de sumarizagio de dados; + Slice: operagia de eorte do eubo, mantenda a mesma perspectiva de visio, A ida 6 selecionar apenas algumnas dimensies ou membros de dimensées. Exemplo: analisar somente as vendas do Estado de So Paso, no intervalo de 1008 até 2001; Dice: mudana da perspectiva de visio. Pode simplesmente sera alteragio da posigdo das linhas pelas colunas numa tabela, ou a apresentagao dos dados de tras para frente (2001, 2000,1999 em ver de 1999, 2000, 2001). (Ou operagdes mais complexas que mostram a variabilidade de wma medida 0 longo das diferentes instanciagSes de uma ou mais dimenséecs, ois modelos multidimensionais comuns slo: o esquema estrela eo flocas de neve (snowlake). No esquema estrela existe uma tabela domninante no centro do esquema, Esta é a tnica tabla com miliplos relacionamentos para as out- ras tabelas. As outras tebslas pessuom ur tinico relacionamento para a tabela central. A tabela central é chamada fato (fact table) ¢ a8 outras tabelas sio hsmados de dimensio (dimension tablo). A figura 61.2 ilustra o esquema ‘rela. Como jé dissemos uma dimensio pode conter wma ou mais hierarquias que podem ser decompostas om tabelas separadas, gerando uma estrutura conbecida por snowflake. A figura 51.3 iustra uma estrutura snowflake. 482 http://www. candidatoreal.com http://www.candidatoreal.com =a Fees! [Soom Figure 61.4: Modelo Snowflake Na verdade, snowflake significa» normalizagio da tabela, Isto elimina redundincia ¢ diminui o espaco em disco. Mas, em uma datawarehouse, xe- dundéncia no 6 importante porque nao é um ambiente transacional, operagies de update nio ocorrem com froqincia. Espago fisico também é irrelovante porque a tabela de fato € que ccupars a maior parte deste expaso Para uma boa performance do esquema estrela, é importante determina 0 nivel do consolidagio, ou a granularidade, dos fatos. O fato pode estar no nivel de transagao, por exemmplo, a venda individual de determinado produto, ou 0 fato pode ser armazenado com uma consolidagio maior, como por exemplo, a ‘venda de determinada linha de produtor em um dia, Armazenando 0 fato ao nivel de transagio faz com que o tamanho da tabela fato se tome excessive ©, além disso, esto nivel de detalhamento pode ser de pouca utilidade, 61.2 Datawarehousing ‘Um datawarchouse (ou armazém de dados, ou depésito de dados) é um sistema de computagio utiizado para armazonar informagées relativas As atividades de uma organizagao em bancos dv dados, de forma consolidada, O desenho da base de dados favorece os relatérios, a anilise de grandes volumes de dados e ‘ obtengao de informagdes estratégicas que podem faciltar a tomada de decisio, 0 datawarchouse possibilita a andlise de geandes volumes de dads, coleta- dos dos sistemas transacionais (OLTP). Sao as chamadas sévies histéricas que possibilitam uma melhor andlise de eventos passados, oferecendo suporte As 483 http://www. candidatoreal.com http://www.candidatoreal.com tomadas de decisdes presontes e a provisio do eventos futuros. Por definigao, as ddados em um datawarchouse nio si volétes, ou seja, eles nio roudara, salvo quando & necossévio fauer coztoyies de dados proviamente carregedos. Os dados cstio disponiveissomente para leitura e nio podem ser alterados. A fervatnenta mais popular para exploragio de uin datawarehouse 6 a Online Analytical Pro- cossing OLAP ou Processo Analitico om Tempo Real, mas muitas outras podem ser usadas, Os datawaehouse eurgiram como conceito académico na déeada de 80. Com. © amadurecimento das sistemas de informagio empresariais, as nocessidades de analice dos dados eresceram paralelamonte. Os sistemas OLTP nao conseguiam tourprt a tarefa de andlise com a simples geragio de velatdrios. Nesse context, 1 implementacio do datawarchouse passou a se tomar realidade nas grandes eorporagies. mercado de ferramentas de datawarehouse, que faz parte do mercado do Business Intelligence, crescou entio, e ferramentas melhores o mais sofsticadas foram descnvolvidas para apoiar a estrutura do data warehouse ¢ sua utlizagao, Atualmente, por sua capacidade de sumarizar a analisar grandes volumes de dados.o datawarchouse é 0 micleo dos sistemas de informagées gorenciais © apoio & decisio das principals solugdes de business intelligence do meteado. Um Datawarchouse ¢ caracterizado como uma colegio de dados orientada a assunto, integrada, nio-volatil e variante no tempo que ausiliam nas decisées de gerenciamenta, Detavrarchouses fornecem acesso aoe dados para anilises complexas, descoberta de conkecimento e tomada de devises, Algumas eatac- torfsticas importantes dos datewarchouses sio: * Orientada ap assunto: pois o objetive 6 tomar decisdes sobre o "assunto- tema dos dadoe; + Integrada: pois deve consolidar dados de diferentes origens ow fontes; » Nao voldti pois as informagics j& presentes no banco sio raremente rodificadas (sobreserita). Os novos dados sio absorvidos pelo banco, integrando-se com as informagies previamente armazenadas # Vasiante no tempo: pois devese manter um histérico dos dados, per ritindo comparagdes ao longo do tempo, Tipicamente o datawarehouse é mantido separadamente des bancos de dados operacionais de uma organizagio. Bxister muitas raxdes para fazer isto. Um datawarchouse suporta requerimontos funcionais e de performance para con- sultas OLAP (abordagem dimensional para o suporte & decisio), os quais sio bastante diferentes de aplicagdes online transaction processing (OLTP) tradi- onalmente suportadas por banco de dados operacionais. Aplicagoes OLIP Uupicamente automatizam tarefis de processamento de dados do dia a dia tais como ordom de entrada de produtos e transages bancérias que sdo processadas durante todo o dia, dia apés dia, Rstas tarefas sio estruturadas e repetitivas, & consistom de transagies curtas, atomicas e isoladas, ast http://www. candidatoreal.com http://www.candidatoreal.com Estas transagies requerem detalles, dados atuslizados, leitura e atualizagio de poucos (dezenas de) registros que sio acessados tipicamente por suas chaves primérias. Bancos de dados operacionais tendem a ter tamanho de eentenas de taegabytes a gigabytes. Consisténcia e capacidade de recuperasio do banco de duos sao crfticas © 2 maximizagio da vazao de transag@es so métrivas chaves de performance. Conseqiientemente, © banco do dados 6 projetado para refictir a Semantiea operacional de aplicagoes conhecidas e, em particular, minimizar conllitos de concorréncia Datawarchouse, em contraste,édirigido asuporte a decisio. Dados histéricos, sumatiados e consolidados sio mais importantes que dados detalhacos em reg isteos individuais. J6 que o datawarehouse contém dados consolidados geral- mente a partir de muitos banco de dados operacionais, sobre rauitos periodos die tempo, eles tendem a setem maiores que os banco de dados operacionais Datawarchouse de empresas sio projetados para ter tamanho de centenas de gi- ipabytes a terahytes. 0 trabalho pesado de um datawarchouse sio as consultas intensivas na maioria das yezes ad hoc (consultas complexas que podom acessar ‘milhdes de registos ¢ realizar muitas buscas por registros), unides © agregacies. Vazao de consulta © tempo de resposta sio mais importantes que vazio de sransagies, Para faclitar andlics e visuslizagies complexas, os dados em ura \datawarehouse aio tipicamente modelados multidimensionalmente. Por exem= plo, em um datawarchouso de vendas, tempo de vendas, lugar de vendas, vonde- ‘dor e produto podem ser algumas dimensoes de imteresse. Freqfientemente, estas dimensoes sao hierrquicas, o tempo pode ser organizado na hierarquia dia-més- ‘rimostre-ano, produto como produto-catogoria-indistria (marca) para facilitar © ampliar o dominio de consultas que poder ser feitas np Datawarchouse. O modelo estrela, floco de neves sao dois exomplos do esquemas multidimensionais com of quais umm datawarchouse pode ser modelado, 61.3 OLTP, OLAP, MOLAP, ROLAP e HOLAP OLTP 4H um acrénimo de Online Transaction Processing ow Processamento de tansagSes em tempo-teal. Sio sistemas que se encarregam de registrar todas as transagios contidas em tina delerminada operagio organizacional, ot seja, & ‘uma aplicagdo que tem como caracteristca principal muitas atualizagées om da~ ‘ios operacionais. Por exemplo: sistema de transagies bancSvias registra todas ts operagiee efetuadas era um bance, Os ERPs (Enteprise Resource Planning) io sistemas que se enquadrata nessa categoria OLAP a f um scrdnimp de Online Anaitical Processing ou Processamesto analitco em tempo-real. E a eategoria de tecnologia de software que capacta fos analistas, gerentes e executives a conseguir obter dicernimento nos dadoe através de un aceasorSpido, consistentee interativo, para uma larga variedade de possiblidades de visoes da informagio que vem a ser transformada a par- tir de dados "crus! para refletit 0 teal dimensionamento da corparagio como eatendido pelo uauino. AA funcionalidade OLAP ¢ caracterizada pela anise dinamnica multidimensional dos dadoe consolidados da corporagao, dando si- porte ds atividades de andlise © navegagao do usuévio nal, A Tuncionalidade 485 http://www. candidatoreal.com http://www.candidatoreal.com OLAP é implementads em um modo cliente/servider multiususria, e oferece consistentemente r4pidas respostas para consultas, apesar do tamanho e com plexidade do banco de dados. Ela ajuda o usuisio a sintetizar as informagies da orporagio através de visies comparativas e petsonalizadas, asim como através de anilises de histSricos e projegdes de dados em varios modules de cenérios do tipo "what-if". Alguns cxcmplos de consultas tipicas de OLAP sao: Quais os produtos mais bem vendidos no més passada? Quais o8 10 piores vendedores do departamento X? Qual a médis galarial dos fincionsrios de informética na reziso sul nos sitimos 5 anos? dentze outras. Or, OLAP ‘Oparaqao Tipiea —Transayio “Aaalise Granalaridade Atomica Agregado dade dos Dados Presente —_—_“Histérico, Atual e Projetado Recuperagio. Poucos Registros ‘Muitos Registros Orientagio Registro Arrays Modelagem Processo Assunto Ususvios Muitos Poucos ‘Vabela 61.1: OLTP vs. OLAP Quanto & localizagéo dos dados a sorem utiizades na andlise, stuslmente exister duas abordagens: ae Dbanco de dados multidimensional especialiade + Um datawarehouse implementado com a tecnologia de banco de dados relacional, mas otimizado para a tarcfa de anélise. Sistemas OLAP que implementam a primeira abordagem sio chamados de MOLAP (Multidimensional OLAP) e aqueles que implementa a sogunds sto ‘hamados ROLAP (Relational OLAP). ROLAP & OLAP Rolacional. Sistemas ROLAP fornecem anslise multidi- mensional de dados armazeuados em tuma base de dados relacional. Atualmente cexistem duas maneiras de se fazer este trabalho: + Faver todo o procestamento dos dados no servidor da base de dados: © servidor OLAP gera os comands SQ. et miltiplos pastos ¢ as tabelas temporitias necessérias para o devido provessamento das consultas, + Exccutar comandos SQL para recuperar os dados, mas fazer todo 0 pro- ‘nssamento {jneluindo joins e agrogagées) no sexvidor OLAP. ‘Aléma dae caracteristicas bisioas do sistemas OLAP, servidores ROLAP de- vera tambéra + Utlinar motadados para descrever o modelo dos dados e para auxiliar na construgio das consultas. Desta maneiea um analista pode exeeutar suas anilses utilizando sous préprios termos; 486 http://www. candidatoreal.com http://www.candidatoreal.com Criar comandos SQL otimizados para os bancos de dados com © qual ‘rabalha, [A principal vantagem de se adotar uma solugie ROLAP reside na utlizagéo dde uma tecnologia estabelecidla, de arquitetura aberta e padronizada como é a rolacional, bencficiando-se da diversidade de plataformas, escalabilidade e par- alelismo de hardware (SMP e MPP}, Quanto as limitagies, pode-se citar o pobre conjunto de fangdes para andlise, a inadequayio do esquema estrela para att- liragio dos dados e as solugies proprietirias para metadadoe que acaba por anular muitas das vantagens do uso da tecnologia relacional MOLAP & OLAP multidimensional. MOLAP 6 uma classe de sistemas que permite a exccugso de anslises bastante sofisticadas usando como gerenciador ‘de dados uta banco de dados multidimensional. Em um banco de dados MO- LAP, os dados sio mantidos em arranjos ¢ indexados de mancira a prover um ‘timo dosempenho no acesso « qualquer clomonto. A indexagio, a antocipacio tia mancira como os dados serio acestados e o alto grau de agregagio dos dados fazer com que sistemas MOLAP tenham um excelente descmpeno. Além de serera ipidos, outra grande vantager desses sistemas é rico e complexo eon junto de fungies de andlise que oferecem, HOLAP & O armazenamento HOLAP (OLAP Hibrido) & uma combinagao dos tipos de armazensmento MOLAP e ROLAP. Os dados de agregagio sto armazenaddos em MOLAP, enquanto os dados de base sio deixasios no banca de ddados relacionsl 61.4 Outros conceitos importantes + Data Mart: um subeonjunto de umn data warehouse. H um repositio de daos extras das fontes operacionais ou de wn data warehouse qu projetado para servir as necessdades particulares de um grupo especiico. Na prea, 0 data wate house e data mast pode trabalhar juntos. O data ‘warshouse atende as necossidadesestratGgicas da organizagio, enquanto 0 data mart atende at nectasdades grencais mate a nivel operacional Quant os data mart atualza seus dadus através do data warchous, cle € considerado de dependente. Quanco ele atualza os dados através dae fontes operacionais, ele 6 considerado independent Agrogagées: Grande parte dos usuérios nio esta intoressada cm realizar ‘uma consulta que retorne uma grande quantidade de linkas de uma tabela de fatos, mas sim em sumatizar os resultados usando operagies de soma ot rédia por exemplo. Para evitay que as mesmas operagies sejam realizadas ‘cada ver que um ustirio execute uma consulta, & importante realizar tum levantamonto das agrogagies e sumérios nos quais 0s usuarios estio interessados * Funcionamento (Fluxo de dados). Os dados para serem usados para fins ‘naliticos deve ser transformnados e earregados dos sistemas OLIP para 487 http://www. candidatoreal.com http://www.candidatoreal.com ‘© Data Warchouse. Durante essas transformayées (rcalizadas plas for- ramentas BI'L ~ Extrait, Tyansformar e Carregat) sio criadas yesumos & agregagaes entre esses dados, transformando-os em informagoes de mais alto nivel e mais signitivas para os analistas, gerentes e executivos; Metailados: sio ot chamados dados sobre ot dados. Bum mapeamento dos dados do moda como farem extraidas das fontes operacionais © como festio inseridos no data warehouse. Os rictadados definem e descrevern 10s dados de negécio (valor aos dados) © os tipos de dados (dofinigoes de ‘abelas, atributos, dominio e relagées). Os metadados sio goralmente armazcnados em repositrios separados ao aleance dos usuarios; Granularidade: & 0 nivel de detalhe contido nas unidades de dadoe ex- istentes no data warehouse, A granularidade ¢ importante porque pode ‘diminul o tempo de acesso aos dados que realmonte interessam o dimin- tuem a quantidade de discos répidos e catos nocossérios para armavenar uma grande quantidade de dados histéricos, 488 http://www. candidatoreal.com http://www.candidatoreal.com ser tomada 6 soparar a queric om dus, forgando a utilizagio do indivo, e realizar uma operagio UNION nna soquéncia. As operagies IN, =ALL, =ANY, =SOME ddovem ser substituidas por operagoes do tipo JOIN sempre que possivel, Processamento de consultas sio atividaces envolvidas em extrait dados de tum bancodedados. O custa do procoseamento de uma consulta 6 prineipalmente ddoterminado polo acesso a0 disco. Os passos exvelvidos no processamento de consultas so: 1. Andlise sintstica © tradugio; 2, Otimizagio; 3. Avaliagéa, 0 processo de tradugio 6 semelhante A tatefa de um analisador sintético em tum compilador. A otimizagao, geralmente, fica a cargo do SGDB, no caso do rmodelo rolacional. J4 para os modelos de tede @ hiordequico, a otimizagio fea ‘cargo do programador. Um plano de execugdo de consulta é um conjunto de ‘operagies primitivas que sio usadas para avaliar uma consulta, Os diferentes planos de exeeusio podem possuir diferentes custos. A otimizagae de consullas {0 processo de selecionar o plano de exccugio mais eficionte para uma con- aulta, Um aspectos de otimizagio envolve a procura de expresso mais efciente no nivel de slgebra relacional, mas diversas outras estratégise si0 importantes como a escolha de um slgoritma para ser usado na execugio de uzaa operacio a escolha de indices a wear Para escolher diferentes planos de exceugao, o otimizador deve estimar 0 custo de cada plano de evaliagio. Os otimizadores de consulta usam informagées festatiticas armazenadas em uin eatlogo e incluer © Niimoro de tuplas de cada relagio, Ndimero de blocos que eontém as tuplas de cada relagio; # Nimero de bytes de uma tupla para ume curta relagio © Nimero de valores distintos que aparecom numa relagio para um deter- sminado atributo; # Niimoro miédio de rogistros que satisfazom uma condigo de igualdade para ‘um determinado atributo, Podemos processar consultas que envolven selegées simples por meio da ex- ecuggo de uma varredura linear, de uma procura bindtia ou do uso de indices. Podeaos tratar as sclogies complexas computanda tniées e intereccgSes dos re- sultados de selegies sizaples. Podemos ordenar relagoes maiores que a meméria twsando o algoritmo do merge-sort externo, Uma jungao pode ser calowlada por ddiversos algoritmos eo sistema deve ser saga pata escolher a tielbor alternativa para cada eato 496 http://www. candidatoreal.com http://www.candidatoreal.com Parte XIII Oracle e Microsoft SQL Server http://www. candidatoreal.com http://www.candidatoreal.com Capitulo 65 Administragao de Bancos de Dados Oracle 65.1 Arquitetura de um Servidor Oracle 65.1.1 Estruturas em meméria Para operat, uma instatcia Oracle aloca uma sétie de Steas de cack ex meméxia para armazanar txés estruturas que sio o SGA (System Global Arca), 0 PGA (Program Global Area) © a8 Sort Areas, O SGA & uta érea tniea de meméria compartilhada composta por trés componentes principais que sio + Database Buffer Cache (DBBC): 0 DBBC é ums stea de moméria que armazena os bloeos de dados lidos do disco, Quando um provesso necesita de acessar dados do banco elo primeiro consulta essa érea de moméria. “Todas as operagies sole of dados do banco sio realizadag nessa rea antes do serem persistidas em disco. No Oracle, a politica de substituigdo de blocos utiizada é a LRU (Last Recently Used); Shared Pook o shared pool é uma rea compartilhada que armazena in- formagies sobre as instrugdes SQL enviadas pelos processos uswsrio (Vexto {do comando, planos de execugio ete.) e informagées sobre o dicionério de dados (nome das tabelas, colina, tipos, privilégos ete); Rodo Log Buffer: busfer circular que contém informagées sobre as modi- ficagies efetuadas no banco de dados. © rodo log buffer Suma das estriras utilizadas para realizar a recuperagio do banco de dados. I izaportante ressaltar que o redo log buffer ¢ utilizado apenas para recuperacio ¢ no para operagées de rollback; J4 0 PGA, ex un sistema single-thyeaded, 6 uma drea de meméria no com- partilhade utlizada par guardar informagoes de controle para um tnico processo, O PGA armazena informagies como arrays, estado de cursorese informagoes 60- bre sesies de usustios. Quando trata-se de um sistema multi-threaded (MTS), fs informagoes sobre sessdes de usudtios aio guardadas em uma outra Stea chamada UGA (User Global Area), que é alocada no shared pool 498 http://www. candidatoreal.com http://www.candidatoreal.com A Sort Area 6 wma drea de moméria compartilhada alocada especialmente pata vealizagio de operagies que exigema ordenagio, como SORT BY, GROUP BY e DISTINCT. Quando o tamanko da Sort Area nao 6 suficionte, a operagio de ordenagio é realizada em disco, em uma tablespace chamada TEMP. Duas outras estruturas de meméria tambéna tra muita importancia ma ar squitetura Oracle. A primeira delas é o Java Pool, que define a quantidade de taeméria que pode ser alocada pela JVM (Java Virtual Machine). A segunda dela € 0 Large Pool, que ¢ utiizada pata operagses de backup, recuperacio, entre outras, Em alguns casos, pode ser utilizada para operagaes de ordenacao, 65.1.2 Processos server Os processos server sio reccbem as requisigGes dos processos user, realizam o ‘parse das instrugdes SQL, verificam as permissées de acesso do ususto, trax 08 ‘iados do diseo para ¢ DBBC, caso necessévio e retora os dados para 0 ususto, ‘Um processo server pode ser dedicado para um processo user (dedicated server process) ou compartilhado entre miltipos processos user (shared server process). Os processos server compartilhades #6 s20 possiveis em sistemas multi-threaded, 65.1.3 Processos user ‘As fungies desempenhadas pelos processos ser sio se conectar com os processos server, enviar instrugies SQL e receber os resultados. Caso o setvidor suporte processos server compartilhados, diversos processos server podem ser atendidos pot umm mestio processo scrver 65.1.4 Processos em Background ‘Ao contrério dos processos server, os processo em background nao realizam rhenhuma comunicagia com os processos user. Os procestos em hackgound 0 responsiveis polas tarefas de apoio para garantir o funcionamento do sistema do gerenciamento de banco de dados como um todo. Um sistema Oracle tom insimeros processos em background, porém apenas 4 delessio obrigatérios que + Process Monitor (PMON}: Realizs a recuperagio quando algum processo falla, além de lberar o cache, locks demais recursos que © processo estava wtilzando; System Monitor (SMON): Realiza o proceseo de recuperagéo da inst durante 0 procesto de inicializagio, limpa segmentos temporstios que nio festdo mais em uso, recupera (ransagies terminadas de forma anormal © realiza desfragmentagio nos arquivos de dados para faciltar a alocagio; Database Writer (DBWR): A funcio principal do DBWR 6 escreve os blocos de dados modificados (dirty) do DBBC pata o disco. Isso ¢ feito nas seguintessituagies: (3) quando lista de blocos madifieados atinge wm tamanho configurado; () quando o processo pereorre um quantidade con figurada de blocos e no encontra nenhum bloco livre; (i) quando ocomte 499 http://www. candidatoreal.com http://www.candidatoreal.com ‘um timoout; (iv) quando ocorro um checkpoint ou (v) quando o DBWR re- xbe um sinal do proceaso LGWR. Dessa forma, 0 proceso DBWR além de garantir que as aleragdes feitas em bufer serio persistidas, também ferencia o espago em buffer para tmelhorar © desempenho da baneo; # Log Writer (LGWR): B o responsivel por copiar as informagies do redo log butfer para 9 o redo log file (arquivo de log com a mesma estrutura do redo Jog buifer). O LGWR tambérn é reaposivel por atualizar as headers dos srquivos de dador quendo ocarre uum checkpoint, O LGWR é disparado nas soguintes situagSes: (3) quando ocorve uma commit; (13) quando ocone tum checkpoint; (i) quando ocorve wm timeout of (iv) quand o redo log baflr atingo uma teago de sua capacidade, Além desses quatro, 0 Oracle possui uma série de outros processos em back- ground que sio de instalagio © so opcionais. Os mais importantes si0 os seguintes: # CKPT: Atualiza os headers dos arquivos de dados quando ocorre wn. checkpoint, A utiliagio deste procesto pode ajudar a melaorar o desem- ppenho do sistema permitindo que o processo LGW se concentre apenas na efpia do redo log buffer para a disco; + RECO: Responsével pela rccuperagdo de falhas envolvendo transagées dis- ‘ribuidas. Esse proceaso & necessirio quando o Oracle esté rodando de forma distribu; ARCTL fo responsével por copia 0 redo log le (que é um bur circular) para um dispositivos de armazenamento offline para que o fogs nk seam, perdides; Pann: Bo processo responsivel pela execucio de consultas peralelas; + SNPn: Controla a replicagio de objetas dos banco de dados em outro site, esas cdpias sia cahamadas snapshots. Esse processo pode scr eecalonado pata execwtar periodicamente; # LCKn: Realiza o controle de locks entre miltiplas instancias; + Dnnn: Base processo funciona como um dispatcher quando o sistema osté utllizando processos server compartilhados. I necessério um dispatcher pata cada protocola de comunicasio utilizado, 65.1.5 Arquivos Em conjunto, O SGA e os processos em background formam uma intincia Or- acle. O banco de dados propriamente dita 6 formado par tés tipas de axquivos aque so: + Dataliles: Armazenam as tabelas e indices do banco: # Redo Log Files: Armazenam os logs do sistema. Esse arquivo consiste de tum buffer circular assitn como o redo log butfer. O processo LGWR € 0 responsével por copiar os logs em meméria para este arquivo; 500 http://www. candidatoreal.com http://www.candidatoreal.com * Control Files: Este é um arquivo binétio que descrowe a estrutura © 0 status do banco de dados. Contém a identificagio das arquivas de log ¢ de daudos, © nome do banco e informagdes de sincronismo entre os arquivos que 0 compo. Embora na arquitetura do Oracle o banco de dados seja composto somente por esses (és arquivos, uma série de outros arquivos sio importantes para colo- far uma intncia no ar. Exemplos desses arquives sic: + Parameter File: Arquivo texto que contém todos os parimettos necessétioe pata colocar uma instancia do Oracle no ax, por exemplo, quantidade de saeméria alocada para o SGA, nome e localizagso de arquivos de controle, ‘tamanho de buffers e de blocos ete: Alert File: Arquivo de log onde si registrados os erros ocorridos (pro- cxse0, locos eorrompidos, deadlock ete; ),tarefas admsinistrativas alm dos ‘valores de parametros de incializagéo no momento que a instincia é posta ‘Trace File: Arquivo de log onde sio armazenadas informagies delatalhadas sobre os problemas ocorridos. A ulilizagdo desse arquive é opcional; 65.2 Arquitetura Oracle de Armazenamento de Dados ‘Um banco de dados & composto por uma ou mais tablespaces. Uma tablespace contém um ou mais arquivos no nfvel de sistema operacional. Cada tablespace pode ter um ot mais segmentos. Umm sogmento ¢ adicionsda ma tablespace ‘quando uma tabela ou ura indice é exiado, ou seja, um segmento & associado a cada objeto de banco de dados. E possivel que um objeto seja atribuido a mais de um segment, mas, para isso, o usuério deverd particionar explicitamente o objeto, Vrias tabelas ou indices podem ser inclufdos em um mesmo segmento através da criagio de um objeto conhecido como cluster. A medida que um objeto de banco de dados necessita de mais espago, & recessério que 0 segmento aloque mais dados. O banco de dados procura, nos arquivos do tablespace, dteas contiguas de tamanho prédeterminado para o armazonamento de novos dados, Essa Srea contigua & comhecida como extensio {ztent), cue por sua ver 6 formada por diversoe blacos de hanco de dados. Cada bloco de banco de dados possu um tamanbo fixo determinado nos paramettos de configuracao, esee amano fixe deve ser miltiplo do tamanlo de um bloco do nivel do sistema operacional. O tamaanko extent também pode ser eonfigurado pelo usuério ou determinado automaticamente pelo Oracle 65.3 Tratamento de Transacées no Oracle 65.3.1 Gerenciamento do Redo Log © Redo Log 6 a estrutura mais crucial para as operagées de recuperagio. Cada instincla possui um Redo Log para protegé-la em easo de faba. Como explie cado anteriormente, o processo LGWR & responssvel por copiar para o disco 0 501 http://www. candidatoreal.com http://www.candidatoreal.com contetido do redo log bufer ex doterminadas stages, como em us COMMIT por exerplo. Essa escrta éfeita de maneita circular. Quando nio houver mais espayo para escreve no arquivo de Redo Log atual, o LGWR comega a estrover no préximo arquivo. Caso esteja no ultimo arquiva do bufer, o LGWR voltars a escrever no primeiro arquivo, E possivel configurar o banco de dados para arquivar as informagées eseritas nos arquivos de redo. Com essa configuracio, 1 processo ARCH seré ativada ‘Um log switch é 0 ponto quando o banco de dades para de escrever em um arquivo de Redo Log © comeca a escrever em outro. Um log susteh também pode ser forgado pelo DBA e pode ser configurado para ocorrer em intervalos regulares. © Oracle atribui, para cada arquivo de Redo Lea, uta log sequence ‘umber toda vor que wm fog switch ocoree. A ordem atsibuida pelos log sequence numbers 6 utilizada na recuperagao do banco de dados em caso de faba 65.3.2 Checkpoints A umm tempo espesifice, todos os dados do database buffer cache modificados sio ‘seritos em disco pelo process DBWR; este evento 6 chamado de checkpoint. O processo CKPT 6 responsivel para informar ao proceso DBWR o momenta de fravar of dados ex disco. O DBWR também atualiza of arquivos de controle tio banco de dados para indicar o mais recente checkpoint, O provesso CKPT {6 opcional; so cle nio estiver presente, o LGWR assume sua responsabilidad No momento do checkpoint a fata de sincronismo entre 0 DBBC ¢ os atquivos do redo é eliminada. Os eventos em quo um checkpoint ocorre sao © Acada fog switch # Apés ovorvido um corto tempo desde o timo checkpoint (LOGCHECK- POINT-TIMEOUT) + Quando a instincia sofee um shutdown, a menos que cla sofa abortads, + Quando forgada pelo DBA. (ALTER SYSTEM CHECKPOINT) + Quando uma tablespace & colocada affine com pelo menos um arquivo (datafile) online. 65.3.3. Segmentos de rollback Um sogmento de rollback 6 uma porgdo de um banco de dados que registra as ages das transagies dos unuirios nos dados para que possam ser desieitas sob certas eireunstancias, ‘Us sogmonto de rollback 6 usado para permitir @ consistincia da Ieitura, re- euperar um comando quando corre 0 dead-lock, recuperar sma transagio até uma certa marca identificada por um SAVEPOINT (marcador para instrugdes ‘io confirmadas), recuperar uma transagio terminada por ume falla de pro- coseo de um usu v desfazer todas as transagus pendentes durante a rect peragio de uma instancia, Todas as operagdes de atualizagao de dados em um bvanco de dads envolvern ‘os sogmontos de rolltack para permitir a consisténcia da leitura, a recuperagio ‘das informagies e permitir que uma transagio ou um comand sejam deseon- siderados ow desfeita, http://www. candidatoreal.com http://www.candidatoreal.com 65.3.4 Consisténcia de leitura © Database Buffer Cacke 6 organizado em duas lstas: a dirty list © a least secently used list (LRU). A dirty list & uma lista que contém os blocos alterados fque ainda no foram escritos em disco. A LRU 6 uma lista que contém locos do ORACLE que foram alterados pelos comandos dos usuarios mas ainda nao foram gravados em disco. Contém ainda blocos liviese blocos em uso. Assim, quando um processo servidor precisa ler um blovo de dados do disco para a ‘meméria, ele 1. Pesquisa nas listas LRU e dirty lst pelo bloco de dados desejado. 2. Caso esse loco de dados nico sejalocalizado, o processo servidor pesquisa ‘lista LRU em busca de um bloco livre 3. Em soguida, 0 processo servidor move os blocos alterados encontrados na lista LRU para a dirty list, 08 soja, movimenta-os para a lista de blocos slteradee ainda nio gravador noe arquives de dados, de acorde com a localizagio de cada um deles, durante o processo de pesquisa de um bloco Inve 4, Finalmente, o processo servidor efetua ttaa eépia do bloco de dadoe do disco para win bloco livre, 5, Esse procedimento termina quanda o processa servidor localiza wm bloco livze ou se uma nsimero especifico de blocos forem pesquisados sem encon- trar wim tinico bloco livre ‘Se nenbun bloco foi encontrado, 0 ORACLE deve gravar of blocos alterados da dirty list para os atquivos em disco, para liverar espago eta memséria para fs novos blocos de dados que precisam ser manipulados pelos comandos dos 65.4 Configuragao do Servidor A criagdo de um banco de dados pode ser realizada através de uma ferramenta srifice conhecida como Database Configuration Assistant, Com essa ferzamonta também é possivel configurar opgGes de ura banco de dados existente, deletar uum banco de dados e gerenciar gabaritos de banco de dados. As etapas si0 as seguintes: Etapa 1 Bm uma tela, serd possivel eacolbor se 6 desejado criar urs hanco de dados, configurar ou delotar um jé existente ou gerenciar gabarilos. Nesse aso, seré eriado um anco de dads. Etapa 2 Seré possivel escolher sobre qual gaberito se deseja basear o banco de dados a ser eriado. Ha como escolher gabarites otimizados para data ‘warehouse, processamento de transagées ou para uso geral, Etapa 3 Serd atribuido o Nome do Banco de Dados Global, pelo qual o banco ide dados é identificado exchusivamente, Além disso, ex necessitio iden- ‘iflear o nome de uma instincia para o banco de dados que esta sendo criado, http://www. candidatoreal.com http://www.candidatoreal.com Etapa 4 Sord nocessirio solcionar se desoja que o banco estoja em Modo Servi- dor Dertieado ou em Modo de Servidor Corapartilbado. No primeivo caso, cada conexdo cliente 6 atendida um processo scrvidor para atender so- mente a esse cliente, No segundo caso, seré possivel para uma processo sorvidor atender mais de uma conexio cliente Etapa 5 Nossa etapa, os pariimetros de inicializagio relacionados & mom localizagio dos arquivos de configuragio e a0 conjunto de earacteres serio cconfigurads. Etapa 6 Serd configurado o armazenamento do banco de dados, através de urna tela sora possfvel configurar arquivos de controle, tablespaces, arquivos de adds, sogmentos de rollback e grupos de redo logs. Etapa 7 Na siltima etapa, havers a opeio de eriar @ banco de dados ou, sim plesmente, utilizé-lo como gabarito 65.5 Tipos de Usuarios Oracle Os tipos de usuérios (papéia) variam de acordo com o lugat, mas podem sex vididos em administadores de banco de dads, responsiveis pela soguranga, ad= rinistradores de rede, desenvolvodores de aplicagio, administradores de aplicagio uswétios do anco de dads 65.5.1 Administradores de banco de dados Cada banco de dados requer no minimo um DBA (database administrator). As ‘suas responsabilidades inclucrs: + Instalagio ¢ atualizagio dos servidores de banco de dados Oracle © das ferramentas de aplicacio, Alocago de espaso para o sistema e planejamento de futuras necessidades. Criagia de estruturas de armazenamento primérias do banco de dados (tablespaces) Criagio @ alteragio de objetos primavios: tabelas, visses ete. apés os dosenvolvedores torem projetado a aplicagio. Administragio de usustios, controle de acesso soguranga do sistema Garantia do atendimento sos termos da licengs Oracle e eontato diteto ‘com 0 suporte téenico da Oracle Monitoragio e otimiagio do desempenho do banca de dados * Plancjamento e execugio de backup ¢ de restauragao das informayies do banco de dades. http://www. candidatoreal.com http://www.candidatoreal.com 65.5.2, Outros papeis Responsavel pela seguranga f um papel que existe somente em alguns ca- 0s. Pode assumir as responsabilidades de administragio de usuétios, controle de acesso e segurana da sistema Administradores de redes Responsiveis em administar os produtos de rede dda Oracle como os servigos de rede da Oracle. Desenvolvedores de aplicagio Entre as atividades deste papel, pade-se destacat ‘oprojetoe desenvolvimento da aplicagio eo projeto da estrutura do banco de dados bem camo os tequisitos necessétios em relagio ao espaga de ar- mazenamento necessério, Administradores de aplicagio Cada aplicacio deve ter um administrador de aplicagio, que ser responssvel por ela Usuérios do banco de dados Responsiveis pela criagio, modificagio e delegéo ‘be dados quando permitidos, além da obtengio de realatérios através do dados.

  • Você também pode gostar