• No results found

1 Innledning

1.3 Organisering av oppgaven

ajuda na instanciação da permite implementar Linguagem de

Padrões Framework Aplicação

dá suporte a permite projetar

usando

Domínio específico

Figura 2.2: Relacionamento entre Linguagens de Padr˜oes, Frameworks e Aplicac¸˜oes

2.3

Padr ˜oes de An ´alise e Linguagens de Padr ˜oes Rele-

vantes

Dezenas de padr˜oes de an´alise tˆem sido propostos nos ´ultimos anos, sendo que os primeiros a surgir foram os de Coad (1992), ´uteis principalmente para o desenvolvimento de sistemas de informac¸˜ao. Alguns anos depois, Coad reuniu esses padr˜oes a outros vinte e quatro, publicando-os em um livro que cont´em, al´em dos padr˜oes, in´umeras estrat´egias a serem utilizadas no desenvolvimento de sistemas desse dom´ınio (Coad et al., 1997). Cada estrat´egia ´e um plano de ac¸˜ao objetivando o cumprimento de um objetivo espec´ıfico. Como exemplo de estrat´egia, pode-se citar a estrat´egia “Servic¸os B´asicos”. Ela sugere que se evite mostrar, no modelo de objetos, os servic¸os b´asicos da classe, como por exemplo: atribuir, recuperar, adicionar, remover, criar, inicializar e remover o objeto. Cada padr˜ao de Coad ´e um gabarito (do inglˆestemplate) a ser seguido durante a construc¸˜ao

do modelo de an´alise do sistema. Os trinta e um padr˜oes s˜ao agrupados em cinco fam´ılias de padr˜oes: padr˜oes fundamentais, padr˜oes de transac¸˜ao, padr˜oes agregados, padr˜oes de planejamento e padr˜oes de interac¸˜ao. Coad define ainda padr˜ao de modelo de objetos como um gabarito de objetos com responsabilidades e interac¸˜oes t´ıpicas, de modo que esse gabarito pode ser aplicado in´umeras vezes, por analogia. Embora em seu primeiro artigo, Coad utilize um formato pr´e- definido para descrever seus padr˜oes, no livro ele apresenta os padr˜oes apenas consistindo de um nome, um diagrama com a soluc¸˜ao proposta e exemplos em forma textual, n˜ao havendo explicac¸˜ao sobre os componentes do padr˜ao. A forma de utilizac¸˜ao dos padr˜oes e das estrat´egias ´e ilustrada por

2.3 Padr˜oes de An´alise e Linguagens de Padr˜oes Relevantes 21 meio de exemplos. No total s˜ao cinco exemplos de sistemas de neg´ocio, nos quais, a partir da coleta da especificac¸˜ao, deriva-se o modelo de an´alise utilizando estrat´egias e padr˜oes. Como exemplo de um padr˜ao de Coad, pode-se citar o “Estado atrav´es de uma colec¸˜ao” (do inglˆesState across a collection) que resolve um problema comum em sistemas orientados a objetos, o de agregac¸˜oes,

no qual uma super-classe possui atributos que s˜ao compartilhados pelas subclasses. Outro padr˜ao proposto por Coad e posteriormente reescrito (Coad et al., 1997; Johnson e Woolf, 1998)17 ´e o

“Item-Descric¸˜ao” (do inglˆes Item-Description). Contudo, a vers˜ao proposta por Johnson e Woolf

encontra-se especificada em maior n´ıvel de detalhe e utilizando o formato GoF (ver sec¸˜ao 2.2.1), o que ´e importante para facilitar a aplicac¸˜ao do padr˜ao. O problema resolvido por esse padr˜ao ´e o de uma classe com diversos tipos, que podem variar em tempo de execuc¸˜ao. A soluc¸˜ao ´e agrupar os atributos comuns em uma classe chamada “Classe” e criar uma outra classe denominada “Classe Tipo” para conter os tipos. Os objetos da classe “Classe” possuem uma referˆencia a algum dos objetos da classe “Classe Tipo”.

Outros dois trabalhos co-relacionados e de importˆancia na ´area de padr˜oes de an´alise s˜ao os de Hay (1996) e de Fowler (1997). Ambos foram escritos na mesma ´epoca e apresentam modelos l´ogicos de dados que s˜ao utilizados em in´umeros sistemas de neg´ocios, tendo sido derivados a par- tir da experiˆencia pr´atica dos autores. Hay apresenta dezenas de modelos entidade-relacionamento para solucionar problemas na ´area de neg´ocios e entidades governamentais. Entre eles pode- se enumerar diversos modelos que pertencem especificamente `a gest˜ao de recursos de neg´ocios, como por exemplo: ordens de servic¸o, produtos, compra e venda. Fowler apresenta setenta e seis padr˜oes que, segundo o autor, “refletem estruturas conceituais de processos de neg´ocios, ao inv´es de implementac¸˜oes reais de software”. Os padr˜oes est˜ao divididos em grupos, de acordo com os dom´ınios de neg´ocio. Dentre os grupos relacionados ao dom´ınio de gest˜ao de recursos de neg´ocios est˜ao o grupo “Responsabilidade” (do inglˆesAccountability), o grupo “Planejamento”, para o pla-

nejamento e uso de recursos e o grupo “Comercializac¸˜ao”, para lidar com a compra e venda de bens, com ˆenfase na mudanc¸a de valor desses bens de acordo com as condic¸˜oes de mercado.

Tanto Hay quanto Fowler utilizam formatos pr´oprios para documentac¸˜ao dos padr˜oes. Fowler afirma que um formato fixo traz desvantagens, pois um par “problema-soluc¸˜ao” nem sempre ´e adequado a todo padr˜ao. Ele usa um texto para descrever o contexto de aplicac¸˜ao do padr˜ao, em geral mostrando exemplos pr´aticos e soluc¸˜oes na forma de diagramas. Hay n˜ao chega a justificar o formato utilizado em termos dos formatos usualmente seguidos pela comunidade de padr˜oes. Ele documenta os modelos por meio de uma descric¸˜ao do contexto de utilizac¸˜ao, mostra o diagrama entidade-relacionamento da soluc¸˜ao, descreve os participantes, o racioc´ınio que levou `a soluc¸˜ao e indica os padr˜oes relacionados.

17Johnson e Woolf (1998) o definiram sob o nome de “Objeto-Tipo” (do inglˆesType-Object) e o pr´oprio autor o re-definiu como “Item-Item Espec´ıfico” (Coad et al., 1997)

2.3 Padr˜oes de An´alise e Linguagens de Padr˜oes Relevantes 22 Outros padr˜oes de an´alise que podem ser citados s˜ao os de Boyd (1998) e os de Fernandez (Fer- nandez, 2000; Fernandez e Yuan, 1999; Fernandez et al., 2000). Boyd descreve padr˜oes para repre- sentar a associac¸˜ao entre objetos em sistemas de neg´ocios. S˜ao eles: o padr˜ao “Objeto-Associac¸˜ao” (do inglˆesAssociation-Object), o padr˜ao “Contato com o Cliente” (do inglˆes Customer Contact) e

o padr˜ao “Pedido em trˆes n´ıveis” (do inglˆes3-Level Order). Eles s˜ao comumente encontrados em

sistemas de informac¸˜ao, j´a que representam algo que acontece em um ponto espec´ıfico do tempo associando dois ou mais objetos.

Fernandez e outros autores prop˜oem diversos padr˜oes de an´alise para sistemas no dom´ınio de neg´ocios. O padr˜ao de an´alise “Reserva e Uso de Entidades Reus´aveis” (Fernandez e Yuan, 1999) descreve a realizac¸˜ao de uma reserva para uma entidade reus´avel e sua subsequente utilizac¸˜ao. Tal padr˜ao possui diversas semelhanc¸as com o padr˜ao “Resource Location”, apresentado pela autora desta tese anteriormente (Braga et al., 1998). Tamb´em ´e equivalente `a aplicac¸˜ao dos padr˜oes “Locar o Recurso” e “Reservar o Recurso” da linguagem de padr˜oes para Gest˜ao de Recursos de Neg´ocios, apresentada no Cap´ıtulo 3. O termo “Entidade”, utilizado por Fernandez e Yan, equivale ao termo “Recurso” utilizado pela autora em seus trabalhos (Braga et al., 1998, 1999).

Os padr˜oes “Pedido” (do inglˆesOrder) e “Expedic¸˜ao” (do inglˆes Shipment) (Fernandez et al.,

2000) descrevem como o cliente efetua um pedido de um produto e como ´e feito seu subsequente despacho. Esses padr˜oes s˜ao aplicac¸˜oes espec´ıficas do padr˜ao “Resource Trade”, tamb´em apresen- tado pela autora desta tese anteriormente (Braga et al., 1998) e equivalem `a aplicac¸˜ao dos padr˜oes “Comercializar o Recurso” e “Itemizar a Transac¸˜ao do Recurso” da linguagem de padr˜oes para Gest˜ao de Recursos de Neg´ocios apresentada no Cap´ıtulo 3. Cabe observar que todos esses padr˜oes j´a s˜ao instanciac¸˜oes particulares de padr˜oes de neg´ocios mais gen´ericos propostos por Coad (1992) e Boyd (1998). Essas instanciac¸˜oes visam especializar os padr˜oes para um n´ıvel de abstrac¸˜ao mais baixo, sem contudo chegar a um dom´ınio espec´ıfico. O padr˜ao “Gerenciador de Estoque” (do inglˆesStock Manager) (Fernandez, 2000) ´e um padr˜ao de an´alise para sistemas de invent´ario, que

controla a quantidade e localizac¸˜ao de itens em estoque, atualizando essas quantidades de acordo com os diferentes est´agios de manufatura ou produc¸˜ao, desde o pedido de componentes at´e o des- pacho do produto. Esse padr˜ao engloba alguns outros padr˜oes existentes, como o Objeto-Tipo (Johnson e Woolf, 1998) e o Recipiente-Contexto (Coad et al., 1997).

Embora in´umeras linguagens de padr˜oes tenham surgido na ´ultima d´ecada, poucas s˜ao as que podem ser aplicadas a sistemas de neg´ocios, entre as quais pode-se citar: a linguagem de padr˜oes “Checagem de integridade da Informac¸˜ao” (Cunningham, 1995), que fornece diretrizes sobre como fazer checagem nas entradas de dados para separar dados inv´alidos de dados v´alidos e assegurar que o menor n´umero poss´ıvel de dados inv´alidos seja registrado; a linguagem de padr˜oes “Atra- vessando Abismos” (Brown e Whitenack, 1996), que auxilia na construc¸˜ao de aplicac¸˜oes orien- tadas a objetos que utilizam persistˆencia em base de dados relacional; e a linguagem de padr˜oes

2.4 Frameworks Relevantes na ´area de Neg´ocios 23