Professional Documents
Culture Documents
MARLIA 2008
Dissertao apresentada ao Programa de PsGraduao em Cincia da Computao do Centro Universitrio Eurpides de Marlia, como parte dos requisitos necessrios obteno do ttulo de Mestre em Cincia da Computao.
Orientador: Prof. Dr. Edmundo Srgio Spoto. Co-orientador: Prof. Dr. Valter Vieira de Camargo
MARLIA 2008
DE GRANDI, Marco Antonio Uma Abordagem de Identificao e Modelagem de Regras de Negcio e seus Relacionamentos Transversais / Marco Antonio De Grandi; orientador: Edmundo Srgio Spoto / co-orientador: Valter Vieira de Camargo, Marlia, SP:[s.n.], 2008. 118 f. Dissertao (Mestrado em Cincia da Computao) Centro Universitrio Eurpedes de Marlia Fundao de Ensino Eurpedes Soares da Rocha. 1. Regras de Negcio 2. Programao Orientada a Aspectos 3. Reso de Software CDD: 0005.1
AGRADECIMENTOS
Aos meus orientadores, Prof. Dr. Edmundo e Prof. Dr. Valter, pela confiana, dedicao e amizade.
Ao meu scio e irmo Mario, pelo apoio e compreenso nas insistentes ausncias.
Aos meus amigos de mestrado Silvio, Rodrigo, Bruno, Juliana, Thais, Camila e Giuliana pela amizade e convivncia. E ao meu amigo Alex, pela amizade que excedeu ao companheirismo de mestrado.
Eu posso estar completamente enganado, Eu posso estar correndo pro lado errado. Mas a dvida o preo da pureza, Pois intil ter certeza.
Humberto Gessinger
DE GRANDI, Marco Antonio. Uma Abordagem de identificao e modelagem de Regras de Negcio e seus relacionamentos transversais. 116 f Dissertao (Mestrado em Cincia da Computao) Centro Universitrio Eurpides de Marlia, Fundao de Ensino Eurpides Soares da Rocha, Marlia, 2008.
RESUMO
O uso de regras de negcio dentro do contexto de sistema de informao tem despertado grande interesse no meio acadmico. Vrios pesquisadores argumentam que a volatilidade das regras de negcio faz com que seja necessrio um tratamento mais aprimorado delas durante o desenvolvimento de sistemas de informao. Recentemente o surgimento da programao orientada a aspectos (POA) mudou a viso da integrao das regras de negcio com o ncleo do software, uma vez que forneceu mecanismos para projetar e implementar essas regras de forma desvinculada desse ncleo. Neste trabalho apresentada uma abordagem que permite identificar, classificar e modelar regras de negcio. Essa abordagem baseada em artefatos que apiam o registro das regras de negcio na fase de anlise do software. Essa abordagem tambm composta por critrios que apiam a identificao e classificao das regras de negcio na fase de anlise de requisitos. Tambm so estabelecidos critrios para apoiar a determinao do paradigma de projeto das regras de negcio, sendo que alguns tipos devero ser projetados e implementados por meio de programao orientada a aspectos. Essa abordagem foi estruturada como uma extenso do Processo Unificado (PU) e foi validada com o desenvolvimento de um estudo de caso baseado em um sistema de gesto comercial real.
DE GRANDI, Marco Antonio. Uma Abordagem de identificao e modelagem de Regras de Negcio e seus relacionamentos transversais. 116 f Dissertao (Mestrado em Cincia da Computao) Centro Universitrio Eurpides de Marlia, Fundao de Ensino Eurpides Soares da Rocha, Marlia, 2008.
ABSTRACT
The use of business rules in the information systems context has attracted a great interest in the academic community. Many researchers argue that the business rules volatility requires a better treatment of them when developing a information system. Recently the appearance of the Aspect Oriented Programming changed the integration vision between business rules and the software core. In this work, an approach that allows to identify, classify and model business rules is presented. This approach is based on artifacts that permits the business rules registry in the analysis phase. This approach is also composed by criterias that support the business rules identification and classification in the requirement analysis phase. Some criterias are also defined to assist the project paradigms choice of business rules, in which some of them need to be projected and codified by aspect oriented programming. This approach is structured as a Unified Process extension and was validated with a case study development. This case study was based on a real commercial administration software.
LISTA DE ILUSTRAES
Figura 1.1 Um Framework para arquitetura empresarial (Zachman, 1997) .......................... 22 Figura 1.2 - Classificao das Regras de Negcio ................................................................... 25 Figura 1.3 Diagrama de Caso de Uso (Booch et al., 2000) ................................................... 31 Figura 1.4 - Diagrama de Classes (Booch et al., 2000) ............................................................ 32 Figura 1.5 Diagrama de Seqncia (Booch et al., 2000)....................................................... 33 Figura 1.6 Definindo Esteretipos (Adaptado de Alhir, 2003) ............................................. 35 Figura 1.7 Aplicando Esteretipos no diagrama de classes (Adaptado de Alhir, 2003) ....... 36 Figura 1.8 Esteretipos, valores atribudos e restries (adaptada de Alhir, 2003) .............. 37 Figura 1.9 Exemplo de um aspecto implementado em AspectJ ............................................ 39 Figura 2.1 O cenrio da modelagem de regras de negcio (Bajec e Krisper, 2004) ............. 42 Figura 2.2 - Exemplo da utilizao do Business Object Model (Ilog, 2008). ........................... 45 Figura 2.3 - Ciclos de vida do Software e das Regras de Negcio (Ilog, 2008) ...................... 46 Figura 3.1 - Influncia da abordagem no ciclo de vida de desenvolvimento de software........ 50 Figura 3.2 - Gabarito para registro e documentao dos casos de uso ..................................... 53 Figura 3.3 - Exemplo de Gatilhos............................................................................................. 61 Figura 3.4. Exemplo da modelagem de RNs no diagrama de casos de uso. ............................ 66 Figura 3.5- Exemplo de Projeto de uma RN com o paradigma OO ......................................... 69 Figura 3.6 - Modelagem de uma RN com o uso da abordagem Pawlak et al. ......................... 70 Figura 3.7 - Rastreabilidade de uma Regra de Negcio ........................................................... 71 Figura 4.1 - Casos de uso do ator Vendedor ............................................................................ 75 Figura 4.2 - Casos de uso do ator Administrador ..................................................................... 75 Figura 4.3 - Casos de uso do ator Gerente ................................................................................ 76 Figura 4.4 - Casos de uso do ator Caixa ................................................................................... 76 Figura 4.5 - Documentao do caso de uso Gerar Venda ....................................................... 77 Figura 4.6 - Documentao do caso de uso Movimentar Estoque ........................................... 77
Figura 4.7 - Requisito 8 (oito) referente a movimentao de estoque ...................................... 78 Figura 4.8 - Requisito 10 (dez) referente ao registro de vendas. .............................................. 79 Figura 4.9 - Diagrama de casos de uso com a modelagem das regras de negcio ................... 83 Figura 4.10 - Regra de negcio projetada como aspecto .......................................................... 87 Figura 4.11 - Regra de Negcio candidata a aspecto ............................................................... 88 Figura 4.12 - Diagrama de Classes. .......................................................................................... 89 Figura A.1 Exemplo de conjunto de juno. ....................................................................... 101 Figura A.2 Exemplo de um adendo do tipo around............................................................. 103 Figura A.3 Exemplos de declarao intertipos .................................................................... 104
LISTA DE TABELAS
Tabela 1.1 Classificao das Regras de Negcio .................................................................. 23 Tabela 3.1 - Atividades da extenso do PU proposta ............................................................... 51 Tabela 3.2 - Exemplo da seo fluxos alternativos .................................................................. 57 Tabela 3.3 - Exemplo de Pr-Condies .................................................................................. 58 Tabela 3.4 - Exemplo de Ps-Condies .................................................................................. 59 Tabela 3.5 Critrios para a classificao das Regras de Negcio ......................................... 62 Tabela 3.6 - Exemplo do Artefato Lista de Regras Preenchido ............................................... 63 Tabela 3.7 - Diretrizes de apoio para anlise do ponto de atuao .......................................... 64 Tabela 4.1 Lista de Regras parcialmente preenchida ............................................................ 81 Tabela 4.2 - Lista de Regras totalmente preenchida. ................................................................ 85 Tabela A.1 Pontos de juno dinmicos do AspecJ (adaptado de Kiczales et al., 2001b) ... 99 Tabela A.2 Designadores disponveis em AspectJ (Wink e Goetten Jr, 2006) ................... 101 Tabela A.3 Tipos de adendos disponveis em AspectJ (Wink e Goetten Jr, 2006) ............. 102
SUMRIO
INTRODUO ...................................................................................................................... 15 CONTEXTUALIZAO ................................................................................................................ 15 MOTIVAO .............................................................................................................................. 16 OBJETIVO .................................................................................................................................. 17 ORGANIZAO .......................................................................................................................... 17 CAPTULO 1 REVISO BIBLIOGRFICA .................................................................. 19 1.1. REGRAS DE NEGCIO .......................................................................................................... 19 1.1.1. A UTILIZAO DE REGRAS DE NEGCIO NA ENGENHARIA DE SOFTWARE ....................... 20 1.1.2. CLASSIFICAO DAS REGRAS DE NEGCIO ..................................................................... 23 1.1.3. PRINCPIOS BSICOS DAS REGRAS DE NEGCIO ............................................................... 26 1.1.4. PRINCPIOS PARA A IMPLEMENTAO DE REGRAS DE NEGCIO ...................................... 27 1.2. UML .................................................................................................................................. 28 1.2.1. MODELO CONCEITUAL DA UML ...................................................................................... 28
A. B. C.
DIAGRAMA DE CASOS DE USO ..................................................................................... 30 DIAGRAMA DE CLASSES .............................................................................................. 30 DIAGRAMA DE SEQNCIA .......................................................................................... 31
1.2.2. EXTENSES UML ............................................................................................................ 33 1.3. PROGRAMAO ORIENTADA A ASPECTOS .......................................................................... 37 1.4. CONSIDERAES FINAIS ..................................................................................................... 40 CAPTULO 2 TRABALHOS RELACIONADOS ........................................................... 41 2.1. GERENCIAMENTO DE REGRAS DE NEGCIO ........................................................................ 41 2.2. SISTEMAS GERENCIADORES DE REGRAS DE NEGCIO ........................................................ 44 2.3. REGRAS DE NEGCIO E ASPECTOS ...................................................................................... 47 2.4. CONSIDERAES FINAIS ..................................................................................................... 47 CAPTULO 3 PROJETO DE SOFTWARE COM REGRAS DE NEGCIO ............. 49 3.1. VISO GERAL DA ABORDAGEM .......................................................................................... 49 3.2. EXTENSO DO PROCESSO UNIFICADO ................................................................................. 50
3.2.1 DISCIPLINA ANLISE ......................................................................................................... 51 3.2.1.1. ATIVIDADE: IDENTIFICAR E REGISTRAR CASOS DE USO ESSENCIAIS ............................ 52 3.2.1.2. ATIVIDADE: DOCUMENTAR CASOS DE USO COM GABARITO ........................................ 52
A) B) C) D)
3.2.1.3. ATIVIDADE: CLASSIFICAR E REGISTRAR REGRAS DE NEGCIO .................................... 61 3.2.1.4. ATIVIDADE: REFINAR VISO
DO
DIAGRAMA
DE
CASOS
DE
USO
PARA
REGRAS
DE
NEGCIO ................................................................................................................................... 65 3.2.2. DISCIPLINA PROJETO ....................................................................................................... 66 3.2.2.1. ATIVIDADE: DEFINIR PARADIGMA DE PROJETO DAS REGRAS ....................................... 67 3.2.2.2. ATIVIDADE: PROJETAR AS REGRAS DE NEGCIO NO DIAGRAMA DE CLASSES .............. 68 3.3. RASTREAMENTO DAS REGRAS DE NEGCIO........................................................................ 70 3.4. CONSIDERAES FINAIS ..................................................................................................... 70 CAPTULO 4 ESTUDO DE CASO ................................................................................... 73 4.1. DEFINIO .......................................................................................................................... 73 4.2. EXECUO .......................................................................................................................... 74 4.2.1. DOCUMENTAR CASOS DE USO COM GABARITO ............................................................... 75 4.2.2. IDENTIFICAR E CLASSIFICAR REGRAS DE NEGCIO ......................................................... 80 4.2.3. REFINAR DIAGRAMAS DE CASO DE USO .......................................................................... 82 4.2.4. DEFINIR PARADIGMA DE PROJETO DAS REGRAS DE NEGCIO ......................................... 84 4.2.5. PROJETAR REGRAS DE NEGCIO NO DIAGRAMA DE CLASSES .......................................... 86 4.2.6. IMPLEMENTAR AS REGRAS DE NEGCIO .......................................................................... 88 4.3. CONSIDERAES FINAIS ..................................................................................................... 90 CONCLUSES....................................................................................................................... 91 PRINCIPAIS CONTRIBUIES ...................................................................................................... 91 LIMITAES .............................................................................................................................. 92 TRABALHOS FUTUROS ............................................................................................................... 92 REFERNCIAS ..................................................................................................................... 93
ANEXO A ................................................................................................................................ 96 APNDICE A ......................................................................................................................... 98 A1. LINGUAGENS DE SUPORTE PROGRAMAO ORIENTADA A ASPECTOS ............................. 98 A2. NOVAS CONSTRUES POA ............................................................................................... 99 A2.1. PONTOS DE JUNO ......................................................................................................... 99 A2.2. CONJUNTOS DE JUNO ................................................................................................. 100 A2.3. ADENDOS ....................................................................................................................... 102 A2.4. MODIFICAO DE ESTRUTURAS ESTTICAS .................................................................. 103 A2.5. ASPECTOS ...................................................................................................................... 104 APNDICE B........................................................................................................................ 106 B1. VISO GERAL DO SISTEMA ............................................................................................... 106 B2. REQUISITOS FUNCIONAIS .................................................................................................. 106 B2.1. CADASTROS ................................................................................................................... 106 B2.2. LANAMENTOS DIVERSOS ............................................................................................. 107 B2.3. CONSULTAS ON-LINE...................................................................................................... 110 B2.4. IMPRESSO DE DIVERSOS TIPOS DE RELATRIOS E CONSULTAS ...................................... 111 B3. REQUISITOS NO FUNCIONAIS .......................................................................................... 112 B3.1. CONFIABILIDADE ........................................................................................................... 112 B3.2. EFICINCIA ..................................................................................................................... 113 B3.3. PORTABILIDADE ............................................................................................................. 113 APNDICE C ....................................................................................................................... 114 C1. CASO DE USO ABRIR CAIXA .............................................................................................. 114 C2. CASO DE USO FECHAR CAIXA ........................................................................................... 114 C3. CASO DE USO GERAR VENDAS .......................................................................................... 115 C4. CASO DE USO MOVIMENTAR ESTOQUE ............................................................................. 117 C5. CASO DE USO GERAR PAGAMENTO DE DOCUMENTOS ....................................................... 117 C6. CASO DE USO INFORMAR RECEBIMENTO DE DUPLICATAS ................................................. 118 C7. CASO DE USO CADASTRAR RECEBIMENTO DE PRODUTOS ................................................. 119
15
INTRODUO Contextualizao
No decorrer da dcada de 1980 surgiu o conceito que classifica os termos, polticas, restries e aes afetando o comportamento de uma organizao. Esse conceito foi denominado de regras de negcio, e foi considerado um elo perdido, pois passou a fornecer uma ligao entre dois nveis de abstrao distintos: a arquitetura de dados de alto nvel e o projeto de dados de nvel fsico. O objetivo principal de tais regras era estabelecer maneiras restritivas de manipular os dados do negcio, fornecendo meios adicionais de melhorar a consistncia desses dados, e estabelecendo uma ligao entre a estrutura de dados e a estrutura de processamento (Appleton, 1984). O uso de regras de negcio1 dentro do contexto de Sistema de Informao2 tem despertado grande interesse no meio acadmico, e com isso diversas linhas de pesquisas tm surgido, apontando a necessidade de buscar formas de integrao dessas regras, que geralmente so oriundas de processos organizacionais, com os sistemas de informao (Yu et al., 1995; Cibrn et al., 2006; Korthaus, 1998; Von Halle, 2002; Bajec e Krisper, 2004)). As regras de negcio podem estar presentes no software de diversas maneiras; podem estar implcitas em seu cdigo, nas estruturas de dados, ou como gatilhos (triggers) e procedimentos armazenados (stored procedures) do banco de dados, mas, tambm podem estar projetadas de outras maneiras, usando diversos formatos de representao. A utilizao das tcnicas e mtodos da engenharia de software no projeto de regras de negcio faz com que elas sejam mais bem manipuladas e gerenciadas, resultando em softwares mais manutenveis, e que possam responder de forma mais adequadas s freqentes alteraes exigidas pelo ambiente de negcio. Como exemplos dessas alteraes podem-se citar as mudanas de polticas, de leis e procedimentos, bem como os constantes rearranjos em busca de melhores mtodos de gesto (Bajec e Krisper, 2004). Muitos pesquisadores esto
Como explicado no prximo captulo, regras de negcio (RNs) so diretivas cujo objetivo influenciar ou guiar o comportamento de um negcio (Ross, 2003). Dentro do contexto de Sistemas de Informao, regras de negcio a parte do software responsvel pela definio do comportamento do software, ou como ele deve operar (Date, 2000).
2
Sistema de informao um software desenvolvido com o objetivo de apoiar as operaes de negcio realizadas por uma empresa.
16 convencidos que a natureza voltil das regras de negcio frente s mudanas do negcio requer um tratamento explcito durante o desenvolvimento de sistemas de informao (Bajec e Krisper, 2004; Ross, 2003; Von Halle, 2002). Recentemente o surgimento da programao orientada a aspectos (POA) mudou a viso da integrao das regras de negcio com o ncleo do software 3, uma vez que forneceu meios para a implementao das regras de forma desvinculada do ncleo do software, possibilitando sua integrao de forma no invasiva ao cdigo, em um artefato independente, por meio dos novos construtores oferecidos nesse paradigma (Cibrn et al.,2003). O projeto das regras de negcio de forma desvinculada e independente do ncleo do software um dos princpios desejveis ao projeto das regras de negcio (Ross, 2003; Von Halle, 2002). Assim, surgiram alguns trabalhos que mostram a utilizao da orientao a aspectos como apoio a essa implementao (Cibrn et al., 2003; Cibrn et al., 2004; Camargo e Masiero, 2005). O conceito difundido por esses trabalhos foi a implementao do cdigo referente regra de negcio por meio de mdulos especficos (classes), no paradigma orientado a objetos, e a conexo com o ncleo do software por meio do paradigma orientado a aspectos.
Motivao
A motivao principal deste trabalho a carncia de mtodos e tcnicas adequadas para o tratamento de regras de negcio nas atividades de anlise e projeto do software. Notase tambm na literatura especializada, a ausncia de critrios para a identificao e classificao das regras de negcio que auxiliem a modelagem dessas regras de forma independente do ncleo do software. Tambm no foram encontrados trabalhos que apresentem uma notao precisa para representar regras de negcio nas fases de anlise e projeto do software. Outro ponto que merece destaque no projeto de regras de negcio com Orientao a Aspectos (OA), j que, apesar de alguns trabalhos sugerirem o projeto das regras de negcios com POA, em nenhum deles apresentada uma diretriz clara de quais tipos de regras de negcios so adequadas de serem projetadas com esse paradigma.
No contexto desse trabalho, ncleo do software a sua parte base, responsvel pela implementao das caractersticas funcionais do software.
17 Dessa forma, nota-se ausncia de um conjunto de mecanismos que propiciem as tcnicas e artefatos necessrios ao tratamento das regras de negcio durante as atividades de anlise e projeto do software.
Objetivo
O objetivo deste trabalho fornecer mecanismos ao engenheiro de software para realizar atividades de identificao, de classificao e de modelagem de regras de negcio, resultando em artefatos de software independentes e rastreveis, aumentando assim a capacidade de modularizao e de adaptabilidade do software. Deve ser feita dessa forma, tendo em vista que manutenes e adaptaes ocorrem mais freqentemente nas regras de negcio do que no ncleo de software (Von Halle, 2002; Ross, 2003). Para isso, sugerida uma abordagem baseada em uma extenso do Processo Unificado (Unified Process), originalmente proposto por Jacobson et. al (1999), com a finalidade de manipular de forma mais adequada as regras de negcio durante o desenvolvimento de softwares. Essa extenso baseada em um gabarito (template) para o registro dos casos de uso, cuja utilizao apia a identificao das regras de negcio. Alm disso, so estabelecidos critrios para a identificao e classificao das regras de negcio a partir dos requisitos do projeto de software. Numa outra atividade, so estabelecidos critrios para a identificao de regras de negcio que devem ser projetadas com OA. Como apoio ao projeto das regras de negcio/aspectos sugerido o uso de uma notao especfica, proposta por Pawlak et al. (2002), bem como o uso de esteretipos para apoiar a modelagem de casos de uso e mtodos que representam regras de negcio.
Organizao
Esta monografia apresentada em quatro captulos, alm desta introduo e da concluso. Nessa primeira parte apresentada a contextualizao da convergncia do conceito de regras de negcio com a engenharia de software. apresentada tambm a motivao deste trabalho, bem como seu objetivo. Os prximos captulos esto organizados da seguinte forma: no Captulo 1 so apresentados os conceitos relevantes para a proposta deste trabalho. No Captulo 2 so
18 descritos os principais trabalhos relacionados a este, bem como os conceitos utilizados. No Captulo 3 apresentada a abordagem proposta neste trabalho destacando as principais sugestes de melhorias. No Capitulo 4 apresentado um Estudo de Caso visando ilustrar a prtica da abordagem proposta. E por fim so apresentadas as concluses finais e as propostas de trabalhos futuros.
19
20 por meio de vrias tcnicas, como: a linguagem natural, Object Constraint Language (OCL), eXtensible Markup Language (XML), Lgica de Primeira Ordem (LPO), entre outras (Martins, 2006; Morgado 2005). O objetivo primrio dessa linha de pesquisa a obteno das RNs pelos especialistas de negcios, sua posterior traduo para uma representao computacional e sua integrao com os sistemas de informao da empresa pelo cdigo gerado. A integrao ocorre por meio de ferramentas que geram cdigos para linguagens especficas, ou por meio de Sistemas Gerenciadores de Regras, que oferecem mecanismos de integrao das regras especificadas, em um ambiente prprio, com o software desenvolvido. Numa outra linha esto os trabalhos que buscam representar as RNs como um componente do software, devidamente empregado nas etapas do ciclo de vida da engenharia de software (Korthaus, 1998; Ross, 2003; Von Halle, 2002). Essa linha tem como objetivo melhorar a sua modularizao, propiciando uma melhor adaptabilidade e manuteno ao software. Dentro dessa linha, existem ainda as pesquisas que buscam a integrao de RNs, codificadas separadamente do ncleo do software, por meio de programao orientada a aspectos. Para o foco dado a esse trabalho, ser explorada essa segunda linha de pesquisa. Um elemento sempre presente na ilustrao do envolvimento entre RNs e sistemas de informao um framework proposto por Zachman (1997). Na prxima seo ser detalhado como esse framework forneceu fundamentao para a relao entre RNs e sistemas de informao.
21 de desenvolvimento de software (Zachman, 1997). Para viabilizar essa representao, o autor elaborou esse framework focando a ilustrao do processo de desenvolvimento de software, no qual as linhas representam as diferentes perspectivas ou papis e as colunas representam as diferentes caractersticas, ou abstraes, do produto em questo. Zachman (1997) argumenta que o estado da arte de modelagem de RNs, que utilizada na coluna Motivao (Motivation), limitado. Argumenta ainda que fato comum encontrar essas regras expressas em estrutura de dados ou cdigo procedural, que no fornecem o subsdio necessrio para que o planejamento e modelagem dessas regras ocorram de forma adequada. O autor argumenta, por meio desse trabalho, que quando as presses competitivas do mercado forarem melhor integrao das RNs com o software, para que respondam em tempo hbil s presses competitivas, elas comearo a ser tratadas nos modelos arquiteturais de processos, passando a serem mais bem definidas e gerenciadas. Esse trabalho serviu para mostrar a importncia e a necessidade das RNs na organizao e no processo de desenvolvimento de software, assim, trabalhos posteriores como o Business Rules Group (2000) e Ross (2003) procuraram focar o modelo de processo de negcio, e o modelo de RNs que havia sido abordado por Zachman (1997), tratando assim sua melhor definio, classificao e utilizao. Para isso, ambos os trabalhos focaram as linhas de um a trs (Planner a Designer) do framework proposto por Zachman. Com isso as RNs foram classificadas em duas categorias extradas do framework do Zachman: i) as de negcio, que focam mais a linha dois (owner), e ii) as de sistema de informao, focada na linha trs (designer) (Business Rules Group, 2000). As RNs podem ser classificadas ainda, de acordo com o modo como elas influenciam ou guiam o comportamento de um negcio. Na prxima seo detalhada essa classificao.
22
23
C. J. Date (2000)
Ross (2003)
Nessa tabela pode-se comprovar que os autores direcionam a forma de classificao de acordo com seu propsito. Sendo assim a classificao proposta por C. J. Date (2000) est mais focada aos interesses de banco de dados, enquanto a classificao do Business Rules
24 Group (2000) mais genrica, preocupando inclusive com a estrutura que compe as RNs. A classificao proposta por Ross (2003) visa estruturar as regras de modo a facilitar a aplicao de sua abordagem. E por fim, a proposta de Von Halle (2002) a mais concisa e considera as caractersticas funcionais das RNs sem, contudo, esquecer das diferenas estruturais entre os tipos propostos. Alm disso, essa classificao pode ser considerada como uma sntese de outros tipos de classificao e possui foco nos tipos de regras que normalmente so utilizados em sistemas de informao. Normalmente, outros tipos de classificao tm seu foco na forma como as regras so implementadas, ou onde elas sero armazenadas. Dessa forma, para este trabalho ser utilizada a classificao proposta por Von Halle (2002), mostrada na Figura 1.2, na qual uma RN pode ser uma restrio, uma diretriz, uma habilitadora de aes, ou uma derivao (por computao ou inferncia). As RNs do tipo Restries expressam um comportamento restritivo, ou seja, expressam uma circunstncia que deve ser verdadeira ou deve ser falsa para que um evento de negcio possa ser completado com a integridade desejada (Von Halle, 2002). Geralmente as regras de restrio ocorrem de forma independente da execuo do software, refletindo uma restrio que s importante no mbito do negcio, e no para a integridade do software em si. As RNs do tipo Diretriz so definies que expressam uma advertncia sobre uma circunstncia de negcio que faz com que alguma ao humana, ou de qualquer outro tipo que esteja fora do escopo do software, seja executada sem, contudo, restringir a execuo do software. As RNs do tipo Habilitadora de Aes so mecanismos que verificam uma determinada condio e caso ela seja verdadeira inicia uma nova ao no software. As RNs do tipo Derivao (por computao ou inferncia) resultam na criao de um novo trecho de informao que, em termos de banco de dados, pode ser uma nova instncia de uma entidade, ou uma nova instncia de um atributo. Para que a derivao ocorra necessrio que seja implementado o mecanismo de derivao com o mapeamento que ser aplicado s informaes bases para a extrao das informaes derivadas. A classificao das RNs auxilia em seu projeto e implementao, uma vez que agrupa as RNs com caractersticas semelhantes e que devem exercer o mesmo papel na execuo de um sistema de informao. As RNs possuem uma estrutura base que independe da forma como so classificadas, elas sempre so compostas de termos e fatos.
25
Regra de Negcio
Restries
Diretrizes
Habilitadoras de aes
Computao
Inferncia
Os termos e fatos estruturam o conhecimento bsico do negcio (Ross, 2003). Eles definem o significado dos termos usados no dia-a-dia de uma organizao e estabelecem possveis aes que permeiam as operaes de um negcio. Termo uma palavra ou frase simples, em linguagem natural, que deve ser reconhecida e compartilhada no mbito do negcio. O termo no deve ser ambguo e deve oferecer um significado particular ao negcio. Todos os fatos e regras, que referenciem o termo, dependem de seu significado, assim, mais importante o conceito de negcio que ele representa do que o prprio significado da palavra. Para que um termo possa ser usado ele precisa possuir trs caractersticas (Ross, 2003): Bsico: Termos no podem ser derivados ou associados a outros termos. Atmico: Termos devem representar conceitos indivisveis. Gerar conhecimento: Termos devem sempre representar conceitos que produzem algum tipo de conhecimento. Para ilustrar um exemplo de termo, pode-se considerar a palavra Consumidor, cujo significado : uma organizao ou pessoa individual que colocou um pedido e realizou um pagamento nos ltimos dois anos. Fatos so sentenas declarativas que relacionam termos apropriados. Os fatos devem ser expressos utilizando-se de sentenas completas, que devem meramente estabelecer o fato sem qualquer restrio.
26 Como exemplos de fato, pode-se citar: Consumidores colocam pedidos, Funcionrio tem um gerente ou Gerente uma categoria de funcionrio. Os fatos podem ser classificados como Base ou Derivados. Um fato Base o registro de algo existente no mundo real. Um fato Derivado uma declarao que construda a partir de outras declaraes, e, s pode existir sendo criado a partir da aplicao de uma regra de derivao (que ser definida nas prximas subsees). Como pode ser notado, termos e fatos se aproximam muito do conceito de requisitos para o desenvolvimento de um software, ou, como citado em Ross (2003), termos e fatos so tipos fundamentais de requisitos.
Segundo Bajec e Krisper (2004), outro princpio, no menos importante, sobre RNs que por sua natureza, as RNs esto em constante mudana devido s influncias sofridas, sejam elas influncias internas ou externas organizao.
27
28 Dessa forma entende-se que a opinio expressada por Von Halle (2002) reflete o cenrio encontrado poca de seu trabalho, para descrever o desenvolvimento de RNs com o uso do paradigma OO. Contudo, recentemente com o uso de OA no projeto das RNs, o cumprimento dos princpios 1 e 4 foi facilitado, uma vez que com os novos construtores oferecidos por esse paradigma as RNs podem ser projetadas como um Aspecto, e implementadas num mdulo de software separado do ncleo, permitindo uma acesso rpido na manuteno, ou evoluo, dessas regras. Todavia, para o cumprimento dos princpios 2 e 3 necessrio que o desenvolvimento das RNs possa ser acompanhado durante as fases iniciais do ciclo de vida de um sistema. Esse acompanhamento pode ser feito mediante mecanismos que permitam identificar, classificar, modelar e mapear as regras de uma fase para a outra do desenvolvimento.
1.2. UML
A primeira verso completa e padronizada da UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) surgiu em janeiro de 1997, oriunda da fuso dos mtodos Booch, OMT de Rumbaugh e OOSE de Jacobson (Booch et al., 2000). A UML uma linguagem-padro para a elaborao da estrutura de projetos de software, independente do processo, apesar de ser perfeitamente utilizada em processo orientado a casos de usos, centrada na arquitetura, iterativo e incremental (Booch et al., 2000). A UML uma linguagem destinada a: visualizar, especificar, construir e documentar. Atualmente, a UML usada no desenvolvimento dos mais diversos tipos de sistemas. Ela aplicada em diferentes fases do desenvolvimento de um sistema, desde a especificao da anlise de requisitos at a fase de testes (Booch et al., 2000). Seu objetivo descrever qualquer tipo de sistema, utilizando-se de diagramas de representao dos mesmos.
29 Segundo Booch et al. (2000), os itens podem ser subdivididos em quatro tipos, sendo eles: estruturais, comportamentais, de agrupamento e de anotao, como seguem: Estruturais: so os substantivos utilizados em modelos da UML, so as partes mais estticas dos modelos. Ao todo existem sete tipos de itens estruturais: classes, interfaces, colaboraes, caso de uso, classes ativas, componentes e ns. Comportamentais: so as partes dinmicas dos modelos UML, podem ser considerados os verbos de um modelo, representando comportamentos. Os itens comportamentais so dois: interao e mquina de estado. De Agrupamento: so as partes organizacionais dos modelos UML, so os blocos em que os modelos podem ser compostos. Existe apenas um tipo principal de itens de agrupamentos, os pacotes. De Anotao: so as partes explicativas dos modelos de UML, so os comentrios includos para descrever, esclarecer e fazer alguma observao sobre qualquer elemento do modelo. Existe um nico tipo de item de anotao, as notas. Outro bloco de construo da UML so os relacionamentos. Eles interligam as classes e objetos estabelecendo uma relao lgica entre elas. Eles tambm se subdividem em quatro tipos, sendo: dependncia, associao, generalizao e realizao. Por fim, sero abordados os diagramas da UML, que so os grficos que descrevem a visualizao de um sistema sob diferentes perspectivas (Booch et al., 2000). O mesmo elemento pode aparecer em todos os diagramas, em alguns ou em nenhum diagrama. A UML possui nove tipos de diagramas descritos a seguir: a. Diagrama de classes b. Diagrama de objetos c. Diagrama de casos de uso d. Diagrama de seqncias e. Diagrama de colaboraes f. Diagrama de grficos de estados g. Diagrama de atividades h. Diagrama de componentes i. Diagrama de implantao Para o escopo desse trabalho, trs diagramas tm especial importncia, e, devero ser utilizados em seu desenvolvimento, so eles: diagrama de casos de uso, diagrama de classes e
30 diagramas de seqncia. Assim, nas prximas subsees cada diagrama ser descrito de forma mais detalhada.
b. Diagrama de Classes
No diagrama de classes so apresentados um conjunto de classes, interfaces e colaboraes e seus relacionamentos (relacionamentos de dependncia, generalizao e associao) (Booch et al., 2000).
31 Uma classe uma descrio de um conjunto de objetos com os mesmos atributos, relacionamentos, operaes e semntica. Toda classe dever ter nome que a distinga das outras classes. Ela tambm caracterizada como um classificador. Classificador um mecanismo que descreve caractersticas estruturais e comportamentais. Os classificadores incluem classes, interfaces, tipos de dados, sinais, componentes, ns, casos de uso e subsistemas (Booch et al., 2000). O classificador tem caractersticas avanadas, possibilitando a modelagem da multiplicidade, da visibilidade, das assinaturas, do polimorfismo e de outras caractersticas (Booch et al., 2000).
Ao se fazer a modelagem das caractersticas comportamentais de uma classe definese suas operaes e sinais. O nome de uma operao juntamente com seus parmetros (incluindo seu tipo de retorno) chamado de assinatura da operao (Booch et al., 2000). Na UML alm da modelagem dos itens que formam o vocabulrio do sistema tambm devem ser modelados os relacionamentos entre esses itens (Booch et al., 2000). Na modelagem orientada a objetos os quatro relacionamentos mais importantes so: dependncias, generalizaes, associaes e realizaes. Podendo ser feita modelagem de heranas mltiplas, navegao, refinamentos e outras caractersticas (Booch et al., 2000). Na Figura 1.4 apresentado o diagrama de classes com as respectivas caractersticas estticas dos blocos de construo e seus relacionamentos.
c. Diagrama de Seqncia
32 O diagrama de seqncia um diagrama de interao que d nfase ordenao temporal de mensagens (Booch et al., 2000). Esse diagrama distribui, de forma cartesiana, os objetos no eixo X e as mensagens, em ordem temporal, no eixo Y.
Conforme exemplificado na Figura 1.5, o diagrama de seqncia formado colocando-se os objetos que participam da interao na parte superior do diagrama, seguindo o eixo X. O objeto que inicia o primeiro esquerda, e os objetos que sero instanciados no decorrer da interao vo aparecendo direita. Em seguida, as mensagens que esses objetos enviam e recebem so distribudas ao longo do eixo Y, em ordem crescente de tempo de cima para baixo (Booch et al., 2000). Uma das caractersticas do diagrama de seqncia a representao do foco de controle. Sempre que um objeto criado no diagrama, inicia-se sua linha de vida, que uma
33 linha tracejada vertical que representa a existncia do objeto (Booch et al., 2000). No decorrer de sua linha de vida, so criados retngulos altos e estreitos que representam os perodos que o objeto est desempenhando alguma ao. Assim, sempre que um objeto recebe uma mensagem, iniciando uma ao, um retngulo iniciado, terminando com a concluso da ao, que pode ser marcada por uma mensagem de retorno (Booch et al., 2000).
O diagrama de seqncia utilizado para a modelagem das caractersticas dinmicas do sistema, que podem envolver qualquer tipo de instncia de um sistema. Podem-se anexar os diagramas de seqncia aos casos de uso, para assim, realizar a modelagem de um cenrio. Como define Larman (2007), um diagrama de seqncia de sistema deve ser feito para a seqncia tpica de eventos de casos de uso, e, possivelmente, outros diagramas de seqncia para as outras seqncias alternativas mais interessantes.
34 esteretipos (stereotypes), restries (constraints) e valores atribudos (tagged values) (Rumbaugh et al., 1998). Um perfil uma coleo de definies de esteretipos, valores atribudos e restries relevantes para especificar um domnio ou propsito (Alhir, 2003). O perfil formado por elementos de modelos, estendidos a partir dos elementos padro da UML. Um perfil pode ser reusado em outros projetos do mesmo domnio. Os perfis possuem como restrio o fato de que eles devem ser estritamente aditivos para a semntica padro da UML (Pender, 2003), dessa forma esses perfis no devem conflitar ou contradizer a semntica padro da UML. As extenses permitem que a UML se adapte a novas tecnologias, porm essas extenses devem ser usadas de forma criteriosa, uma vez que a prpria linguagem proposta oferece muitas construes expressivas. Assim, essas extenses devem ser evitadas, uma vez que, por definio, uma extenso serve a uma comunidade especfica, e pode conduzir ao engano as demais comunidades. Por outro lado, o poder expressivo de uma extenso pode compensar a perda da uniformidade. Com o tempo, as extenses podem tornar-se teis o suficiente para serem adicionadas UML padro, ou cair no esquecimento (Rumbaugh et al., 1998). Segundo OMG (2005), possvel estender a UML de duas maneiras: extenses lightweight e extenses heavyweight. As extenses lightweight so extenses mais leves e apenas estendem as metaclasses j existentes na UML padro, assim, nesse tipo de extenso apenas so criados esteretipos, restries e valores atribudos. As extenses heavyweight so extenses mais pesadas e que alteram o metamodelo em si, criando novas metaclasses no metamodelo padro da UML. A UML possui uma arquitetura definida com um esquema chamado de Metamodelo de Arquitetura Quatro Camadas que engloba quatro diferentes nveis de abstrao (Alhir, 2003). Cada camada define elementos, conceitos e relaes entre conceitos, como segue: Camada meta-metamodelo ou camada nvel M3: Essa camada define a base para a arquitetura do metamodelo, a responsabilidade primria dessa camada definir a linguagem para a especificao do metamodelo. Assim, essa camada define um modelo com maior nvel de abstrao que a camada de metamodelo. Exemplo de meta-metaobjetos definidos nessa camada so MetaClasse, MetaAtributo e MetaOperao. Camada metamodelo ou camada nvel M2: Essa camada uma instncia da camada M3, nela so definidos os conceitos de Classe, Atributo, Operao, Valor
35 de Atributo, Associaes, Ligaes, etc. A responsabilidade primria dessa camada definir a linguagem para a especificao de modelos. Nessa camada so includos todos os conceitos que compem a UML. Exemplos de metaobjetos definidos nessa camada so: Classe, Atributo, Operao e Componente. Camada modelo ou camada nvel M1: Essa camada uma instncia da camada M2, sua responsabilidade primria definir uma linguagem que descreve um domnio de informaes. Nessa camada so definidas classes especficas, atributos, ope raes e associaes, que compem os projetos dos usurios. Camada modelo de usurio ou camada nvel M0: Nessa camada so definidos os objetos, valor de atributos e ligaes, que compem os projetos de usurios. O primeiro elemento utilizado nas extenses UML o esteretipo, que usado para prover a extenso do vocabulrio padro da modelagem, ou para oferecer indicaes visuais distintivas para determinados tipos de abstraes (Booch et al., 2000). Um esteretipo define um novo tipo de elemento de modelagem na UML (Alhir, 2003). Para que um novo esteretipo seja criado necessrio que ocorra uma extenso de algum dos elementos padro de modelagem existente na UML, essa extenso deve ser realizada por meio de uma dependncia com a marca stereotype que estender uma das metaclasses existentes na UML. Na Figura 1.6 so mostrados dois exemplos de criao de esteretipos, no qual, criado um esteretipo Projeto a partir de uma extenso do metaobjeto Classe, e tambm um esteretipo Feito por a partir de uma extenso do metaobjeto Associao. Os metaobjetos Classe e Associao so parte da UML padro.
<<metaclasse>> Classe
<<metaclasse>> Associao
<<esteretipo>>
<<esteretipo>>
<<esteretipo>> Projeto
36 Para aplicar um esteretipo criado, devem-se usar os novos elementos com seu novo tipo acima de seu nome. Na Figura 1.7 mostrado um exemplo de aplicao dos esteretipos criados na figura anterior, no qual, se cria os novos objetos Projeto de Desenvolvimento e Projeto de Infraestrutura que so instncias do novo metaobjeto Projeto criado anteriormente. Nesse mesmo exemplo nota-se tambm as associaes Feito por, que so instncias do novo metaobjeto Feito por criado anteriormente. O Valor Atribudo outro elemento das extenses UML, e estende as propriedades dos elementos padro da UML permitindo que novas propriedades sejam adicionadas. Com isso possvel inserir novas informaes s existentes no metamodelo da UML (Booch et al., 2000). Os valores atribudos podem ser adicionados a qualquer elemento do modelo. Valores atribudos so expressos na forma nome=valor. Exemplo: Ocorrncia=2. Em alguns locais do diagrama eles podem aparecer entre chaves, exemplo: {Ocorrncia=2} (Pender, 2003). <<Projeto>> Projeto de Desenvolvimento <<Projeto>> Projeto de Infraestrutura
<<Feito por>>
<<Feito por>>
Ambiente de Desenvolvimento
Ambiente de Distribuio
O ltimo elemento das extenses UML a Restrio. As restries so consideradas regras para um elemento do modelo, que so aplicadas a todo elemento em que os esteretipos so aplicados. Na UML as restries so definidas como textos que podem ser expressos em OCL, por meio de pseudo-linguagens, com linguagens de programao (por exemplo, C# ou C++) ou qualquer outro tipo de linguagem. Na Figura 1.8 mostrado um exemplo de extenso do metamodelo com restries. Nessa figura a metaclasse Projeto uma extenso da metaclasse Classe. Nessa extenso so adicionados alguns atributos no existentes na metaclasse original, como o atributo Data
37 Incio. Quando essa metaclasse estendida for instanciada em um modelo, esses atributos devero receber valores, e a restrio estabelecida dever ser respeitada.
<<metaclasse>> Classe
<<metaclasse>> Associao
<<esteretipo>>
<<esteretipo>>
<<esteretipo>> Projeto Data Incio: String, Data Trmino: String, {A Data Trmino deve ser igual ou maior que a Data Incio}
38 A implementao dos aspectos fornece subsdio Programao Orientada a Objetos (POO) para tratar os interesses transversais por meio da decomposio funcional da classe (Elrad et al., 2001a). Os aspectos consistem em caractersticas estruturais e/ou comportamentais que so projetadas separadamente e adicionadas em diversas partes do sistema por meio da definio de pontos do programa em que esses aspectos podem afetar. Dessa forma, a combinao dos interesses transversais, implementados nos aspectos, com os interesses-base de cada classe afetada faz com que sejam atingidas as propriedades pretendidas, porm, sem comprometer a coeso de cada mdulo. A POA, portanto, no visa a substituir o paradigma orientado a objetos, mas complement-lo com uma nova viso, tentando assim deixar seu desenvolvimento mais claro e eficiente. Existem diversas linguagens que apiam a POA, entretanto neste trabalho apenas a Linguagem AspectJ ser discutida porque a linguagem que ser usada para a conduo do projeto. A Linguagem AspectJ est baseada numa nova construo chamada Aspecto (aspect). Os Aspectos so os mdulos responsveis por toda a implementao transversal, e podem conter mtodos, atributos, construtores, conjuntos de juno (pointcuts) e adendos (advices) (Kiczales et al., 2001). Assim, as novas construes da Linguagem AspectJ resumem-se em pontos de juno (joinpoints), conjuntos de juno, adendos, construes para afetar estaticamente a estrutura das classes do programa e os aspectos. No Apndice A desta monografia encontram-se os fundamentos tericos da POA, bem como a exemplificao de cada nova construo desse paradigma e no Anexo A encontra-se todo o cdigo do exemplo que utilizado nesta subseo. A seguir, so explicados os novos construtores da POA por meio da implementao de uma regra de negcio. Na Figura 1.9 mostrada a implementao de uma regra de negcio que d uma advertncia sobre o custo de uma transao bancria a cada vez que o saldo da conta ficar negativo. Esse exemplo utilizado para explicar as novas construes fornecidas pela POA. Na Linha 2 do exemplo criado um aspecto por meio da nova construo aspect, esse novo aspecto nomeado como aTaxaJuros e o responsvel pela implementao da regra de negcio supra citada. Nas Linhas 4, 6, 10 e 14 so implementadas construes para afetar estaticamente a estrutura da classe Conta. Essas modificaes permitem alterar estaticamente a estrutura de
39 uma classe por meio de declaraes intertipos (intertypes). Na Linha 4 adicionado um novo atributo do tipo float nomeado TaxaJuros. O objetivo desse atributo armazenar o percentual de taxa de juros cobrado pela instituio bancria quando o saldo da conta estiver negativo. Na Linha 6 adicionado um novo mtodo, nomeado getTaxaJuros(), cuja funo retornar o percentual da taxa de juros da conta, que est armazenado no atributo TaxaJuros. Na Linha 10 adicionado tambm um novo mtodo nomeado setTaxaJuros(), cuja funo atribuir um novo percentual de taxa de juros ao atributo TaxaJuros. Por fim, na Linha 14, adicionado um novo construtor classe Conta, esse construtor, diferentemente do construtor original da classe, recebe como parmetros a identificao da conta e a taxa de juros cobrada pela instituio, e atribui essa taxa ao atributo TaxaJuros, por meio do mtodo setTaxaJuros().
Na Linha 20 definido um novo conjunto de juno nomeado AvisoSaldo(). Nele utilizado o designador call que permite interceptar os pontos de juno correspondentes chamada de mtodos. Esse designador utiliza-se de uma regra genrica para definir quais chamadas de mtodos formaro o conjunto de pontos de juno que sero afetados, nesse exemplo a regra utilizada : * Conta+.mostraSaldo(..). Essa regra
40 ir capturar as chamadas do mtodo mostraSaldo(), da Classe Conta e de todas as suas especializaes, uma vez que utiliza a notao coringa + aps o nome da classe, com qualquer tipo de parmetro, devido ao uso de notao coringa .. na definio dos parmetros, e que retorne qualquer tipo de dado, uma vez que no lugar do tipo do retorno foi utilizado a notao coringa *. Na Linha 22 criado o adendo relativo ao conjunto de juno estabelecido na Linha 20. Esse adendo do tipo after, o que significa que ele ir interceptar a chamada dos mtodos, estabelecidos na regra genrica do conjunto de juno, aps sua computao ser realizada. Nas Linhas 23 a 28 esto os cdigos que sero executados em cada ponto de juno capturado.
41
42 RNs podem ser implementadas de diferentes formas (gatilhos de banco de dados, procedimentos armazenados, componentes de camada de negcio, etc), o que torna necessrio um controle cuja abrangncia se estenda desde o requisito que as originou, at sua implementao, possibilitando um controle de todas as implicaes que envolvem o suporte do software s mudanas do negcio. Dessa forma, foi proposto um cenrio definindo as principais atividades e papis necessrios ao gerenciamento das RNs para toda a organizao, como mostrado na Figura 2.1. Nesse cenrio so descritas as atividades dedicadas ao gerenciamento das regras de negcio (Business Rules Management) e ao desenvolvimento do sistema de informao (IS Development). O objetivo desse cenrio ilustrar o conjunto de tarefas necessrias ao gerenciamento das RNs e seu envolvimento com os sistemas de informao.
Para o contexto explorado nesta dissertao, as atividades relevantes so as que esto relacionadas com o desenvolvimento do sistema de informao (IS Development), sendo elas: BR Acquisition: considerando que as RNs representam um importante subconjunto dos requisitos e que so adquiridas juntamente com os demais requisitos do software, o objetivo dessa atividade tornar a aquisio das
43 regras um processo mais sistemtico e garantir que todas as regras sejam adquiridas. Essa tarefa considera como uma relevante fonte de RNs as regras previamente capturadas na modelagem do negcio (Enterprise Modeling) ou no desenvolvimento de outros softwares, que esto devidamente armazenas em um repositrio e disponveis para anlises mais detalhadas. BR Analysis and Classification: O propsito dessa atividade garantir que as regras sejam atmicas, classific-las em categorias e document-las com base em um gabarito (template) definido para cada categoria de regras. A descrio das regras deve ocorrer de maneira formal, ou semi-formal, com o uso de linguagens de regras (rule language) pr-definidas, tal como OCL, por exemplo. BR Consistency Validation: Essa tarefa tem por objetivo garantir que o conjunto completo das RNs inclua somente regras que sejam consistentes, que no sejam conflitantes entre si. BR Modeling: o objetivo dessa atividade modelar as regras de negcio, com alguma forma de representao grfica para propiciar aos desenvolvedores do software um melhor entendimento sobre elas. BR Implementation: o objetivo dessa atividade propiciar ao repositrio das RNs que a informao sobre onde e como as regras foram implementadas seja capturada. Alm dessas atividades que compem o desenvolvimento de sistemas de informao, existe outra tarefa relevante, que a BR maintenance and monitoring, cujo objetivo gerenciar a manuteno das RNs constantes no software, isso realizado por meio de tarefas de controle de mudanas, controle de verses e controle de impacto. Essas atividades buscam estabelecer e manter a ligao entre o cenrio de negcios e o sistema de informao que lhe oferece suporte. O objetivo dos autores, nesse trabalho, mostrar a importncia da existncia de um amplo modelo de negcio, que resulta em um repositrio documental de regras de negcio. Esse repositrio tem o objetivo de apoiar o gerenciamento dessas regras, bem como os efeitos de suas mudanas. Alm disso, algumas regras desse repositrio so genricas e podem ser reusadas em outros contextos. Entretanto, os autores propem uma implementao dessas regras sem que um estilo de modelagem e implementao seja seguido. Isso faz com que, embora as regras e seus artefatos possam ser gerenciados, as RNs continuem inseridas no
44 cdigo funcional do software, no apoiando completamente os 4 (quatro) princpios de implementao das RNs (separao, rastreamento, exteriorizao e posicionamento), embora nesse ambiente o rastreamento das regras seja possvel. Tambm no sugerido qualquer padro de integrao entre as RNs, a modelagem e a implementao do software. Dessa forma, somente as definies das regras genricas que podem ser reusadas, uma vez que elas no so implementadas genericamente. Assim, percebe-se que o trabalho em questo prope um amplo cenrio de desenvolvimento de software, no qual as RNs so devidamente consideradas. Porm, isso ocorre de uma forma conceitual, sem que as atividades sejam detalhadas, j que o principal objetivo do trabalho estabelecer uma ligao clara entre as RNs na engenharia de software e suas fontes na modelagem de negcio. Devido a isso, os autores no propem uma metodologia ou um processo que apie o projeto dessas regras no desenvolvimento do software. Ou seja, o gerenciamento proposto obtido com base na implementao das RNs de maneira usual, com as regras espalhadas pelos artefatos de software. Os autores ainda citam que no existe atualmente uma metodologia que apie o projeto das RNs, e assim consideram que a implementao dessas regras pode ocorrer de vrias formas. Alm disso, citado no trabalho que no desenvolvimento orientado a objetos no existe um consenso sobre onde acomodar as RNs nos modelos existentes, e nenhuma proposta que mude isso foi encontrada. Sendo assim, a abordagem proposta nesta dissertao tem como objetivo complementar o cenrio proposto pelos autores, fornecendo tcnicas e artefatos que apiem a identificao das RNs bem como seu projeto, propondo um modelo de projeto dessas regras, e critrios para sua identificao. Nesse ponto o trabalho de Bajec e Krisper (2004) tambm difere da abordagem proposta, j que os autores consideraram que as RNs comeam a ser obtidas nas atividades de modelagem de negcio (Enterprise Modeling), e so completadas com a anlise dos requisitos do software, sem que seja determinado como exatamente isso ocorre, ao passo que na abordagem aqui proposta as RNs so obtidas diretamente nos requisitos do software, com o apoio de critrios especficos para isso.
45 modelos de objetos de negcio (BOM Business Object Model) a partir dos quais os termos das RNs so mapeados com elementos de software (mtodos e objetos), o que permite que os objetos e seus mtodos sejam traduzidos para fragmentos de linguagem natural. Assim, por exemplo, o objeto Cliente pode ser associado ao fragmento cliente e o mtodo obterLimiteCrdito pode ser associado ao fragmento limite de crdito de, o que permitiria a construo da seguinte regra: Se o limite de credito de cliente for maior que 0 Ento...., onde o texto em negrito so elementos do Rule Builder. A execuo das regras criadas ocorre por meio de Enterprise Java Beans permitindo que uma RN manipule objetos contidos na memria (Ilog, 2008). O SGRN mais conhecido atualmente JRules. Na Figura 2.2 mostrado um dos poucos exemplos padres disponibilizados pela empresa iLog, fabricante do jRules, nesse exemplo a RN descrita no primeiro quadro ligada ao BOM, com seu respectivo vocabulrio, mostrado no segundo quadro, gerando assim um novo fato nomeado creditScore
O conceito desse tipo de software que as RNs possuem um ciclo de vida distinto do software, ou seja, as RNs podem ser criadas e associadas ao software desenvolvido, e j em uso pela empresa, como mostrado na Figura 2.3. Embora essa estrutura possibilite uma grande flexibilidade s RNs, isso ocorre com inconscincia no software desenvolvido, impossibilitando assim que regras mais complexas, como as de derivao, interajam com os mecanismos criados no software, uma vez que tais regras no existem durante o
46 desenvolvimento do software, o que impede, por exemplo, que a classe que implementa determinado objeto tenha conscincia sobre sua origem. Outro problema dessa abordagem diz respeito ao fato das RNs no serem parte dos requisitos iniciais do software, o que no garante que todos os elementos necessrios s regras estejam presentes no software. Isso fere o conceito de que RNs so tipos de requisitos de um software a ser construdo (Ross, 2003). Alm disso, no foram encontrados estudos que analisassem como fica o cenrio de manuteno do software, uma vez que as alteraes na estrutura do software poderiam influenciar as RNs acopladas a ele, lembrando que tais regras no so artefatos de software, e no esto disponveis no desenvolvimento do software.
Figura 2.3 - Ciclos de vida do Software e das Regras de Negcio (Ilog, 2008)
Dessa forma, o trabalho apresentado nessa dissertao diferencia-se dos softwares SGRN (Ilog, 2008) pelo fato de considerar as RNs primeiramente como requisitos do software, e posteriormente como parte do software desenvolvido, e no mecanismos que podem atuar de forma independente sobre o software em produo. Evitando assim os problemas apontados no pargrafo anterior.
47
48 de desenvolvimento de software. O trabalho apresentado na Seo 2.1 mostra a necessidade da integrao das regras de negcio ao processo de desenvolvimento de software. Mas, apesar de indicar a importncia dessa integrao por meio da modelagem das regras no paradigma orientado a objetos, ele tambm mostra que esse conceito encontra-se num estgio embrionrio. Na Seo 2.2 foram discutidos softwares que possuem um mecanismo que permite o acoplamento das RNs a um software pr-desenvolvido, permitindo ainda o gerenciamento dessas regras. Isso, por um lado, bastante vantajoso j que possibilita aos especialistas de negcio estabelecer e gerenciar as RNs da companhia, de forma independente do ciclo de vida de desenvolvimento do software. Todavia isso apresenta algumas limitaes, j que o desenvolvimento do software ocorre de forma independente das RNs que iro atuar nele. Sendo assim, no existe uma garantia de que todos os elementos necessrios regra vo existir no software. Na Seo 2.3 foram apresentados os trabalhos que mostram a viabilidade da implementao das RNs por meio da programao orientada a aspectos. Contudo, isso ocorreu apenas na implementao do software, no sendo encontrado nada que mostrasse a viabilidade dessa abordagem na modelagem do software. Assim, os trabalhos apresentados nessa seo confirmam a necessidade de integrao entre RNs e desenvolvimento de software, viabilizando essa abordagem com o uso da programao orientada a aspectos.
49
50 nas atividades de desenvolvimento de software. Todavia para a aplicao dessas atividades sugerido um processo de desenvolvimento, que proposto como uma extenso do PU com as mudanas devidamente aplicadas s suas atividades. Essa extenso detalhada na prxima seo.
- Atividades Registrar casos de uso com gabarito Gabarito para registro dos casos de uso Lista de Regras Projetar RN - Artefatos - Descrio P de Atividade r o j e t a r R N Implantao
Classificar RNs
51 em itlico no so influenciadas pela abordagem, porm constam na tabela para enfatizar a seqncia de atividades do PU, as demais possuem algum tipo de adaptao proposta nesta extenso. O PU originalmente um processo iterativo e incremental, e a extenso proposta em nada compromete essas caractersticas originais do PU, j que as novas atividades propostas, bem como as atividades j existentes e que foram modificadas, atuam como um complemento s demais, atuando de forma que garanta a correta manipulao das RNs.
Atividades da Disciplina Anlise Identificar e Registrar Casos de Uso Essenciais Documentar casos de uso com gabarito Classificar e Registrar Regras de Negcio Refinar Diagramas de Casos de uso Refinar Viso do Diagrama de Casos de Uso para Regras de Negcio Criar Diagrama de Seqncia de Sistema Definir Contratos das Operaes do Sistema Desenvolver Modelo Conceitual Atividades da Disciplina Projeto Definir Paradigma de Projeto das Regras Desenvolver Diagramas de Interao Desenvolver Modelo de Classes do Projeto Projetar Regras de Negcio Projetar Modelo de Dados Atividades da Disciplina Implementao Implementar Classes do Domnio Implementar Banco de Dados Implementar Regras de Negcio Implementar Classes Controladoras Implementar Interfaces Testar
52 Nessa disciplina concentra-se o maior volume de trabalho da abordagem, uma vez que em suas atividades inclui a tarefa de documentar os casos de uso com o gabarito proposto, alm da identificao, classificao e registro das RNs. Sendo assim, a disciplina anlise o grande foco da abordagem, pois ela fornece toda a base para o restante do desenvolvimento do software com RNs. Nas prximas subsees sero detalhadas as atividades que compem essa disciplina, e que foram influenciadas pela abordagem.
53 original, e incluir algumas outras informaes nas sees Fluxo Alternativo, Pr-Condies e Ps-Condies.
Caso de Uso:
Descrio: Fluxo Principal: Seq Descrio Fluxos Alternativos: Seq Origem Tipo Pr-Condies: Origem Ps-Condies: Origem
Condio
Ao
Condio
Condio
O documento de requisitos que ser utilizado como base para o preenchimento do gabarito deve descrever de forma satisfatria as funcionalidades que se espera que o software fornea. Alm disso, espera-se tambm que esse documento descreva minuciosamente o comportamento do software. Uma vez que as RNs so responsveis por delinear tal comportamento, com base nas polticas e normas organizacionais. As sees adicionadas ou modificadas, pela abordagem proposta, esto detalhadas nas prximas subsees.
a) Fluxo Alternativo
Os fluxos alternativos de um caso de uso tm por objetivo descrever as possveis variaes do fluxo principal (Jacobson e Ng, 2004). Dessa forma, no contexto da abordagem
54 proposta, espera-se que estejam descritas, nesses fluxos, as variaes de comportamento que devem ser manipuladas pelo caso de uso. Alm disso, espera-se tambm que estejam descritos os comportamentos adicionais que venham a ocorrer em situaes especficas de ambientes de negcio, tais como diretrizes relativas a polticas empresariais, restries que venham a ocorrer em funo de polticas, leis e normas empresariais, ou ainda derivaes que satisfaam regras empresariais pr-definidas. Esses comportamentos no fazem parte do fluxo principal em conseqncia da sua natureza de negcio, que determina como o software deve funcionar, e no o que ele deve fazer (Date, 2000). Sendo assim esses comportamentos visam determinar alternativas e regras s funcionalidades bases descritas no fluxo principal de eventos, devendo estar registrados na seo de fluxo alternativo. Os fluxos alternativos que representam eventos de negcio possuem uma caracterstica prpria que ser acionado a partir de uma condio. Para o preenchimento dessa seo do gabarito, necessrio que o engenheiro de software identifique eventos de negcio que compem o fluxo alternativo do caso de uso, o que deve ser feito com base nos documentos de requisitos. Eventos de negcio, no contexto deste trabalho, so comportamentos que refletem necessidades especficas do negcio em si. Dessa forma, para que os fluxos alternativos possam ser registrados de forma adequada, todo comportamento adicional do caso de uso, que d origem aos fluxos alternativos, que for identificado deve ser analisado com o objetivo de determinar sua origem. O resultado dessa anlise na origem do fluxo alternativo deve ser informado na coluna Origem dessa seo do gabarito. A origem pode ser: Sistema: So todos os comportamentos alternativos que tem por objetivo o cumprimento de uma necessidade do software, tais como: garantia de integridade dos dados, validaes de tipos de dados etc. Negcio: So comportamentos alternativos impostos por fatores de negcio, tais como: acionamento de eventos de negcio, diretrizes informativas de polticas da empresa etc. Esses comportamentos representam RNs. A determinao da origem dos fluxos alternativos (cujo resultado ser a base para o preenchimento da coluna origem da seo do gabarito) est relacionada com a identificao de RNs, ou seja, os fluxos alternativos cuja origem seja de negcio se tornaro RNs nas prximas atividades da abordagem. Para o escopo desse trabalho, ser focada a identificao de RNs nos requisitos do software. Para isso so propostos alguns critrios que tem por objetivo apoiar o engenheiro de software na tarefa de identificar as RNs na especificao dos
55 requisitos do software. O objetivo desses critrios fornecer um meio adicional identificao de RNs, com isso o engenheiro de software pode submeter cada fluxo alternativo identificado aos critrios propostos abaixo, e seu resultado ser uma diretriz essencial na identificao de comportamentos de negcio. Os critrios so: Identificao de decises: As RNs geralmente esto acompanhadas de decises (Von Halle, 2002). Isso ocorre pelo fato das RNs definirem como o software funciona. Dessa forma, a identificao de decises que envolvem polticas da companhia, ou demais caractersticas de uma RN, um caminho para sua identificao nos requisitos do software; Fluxo de eventos: Fluxos de eventos so seqncias de aes que o software deve implementar para satisfazer uma poltica da empresa, o que pode ser independente de decises. A identificao dos fluxos de eventos nos requisitos do software possibilita a obteno de alguns tipos de RNs, identificando-se essas aes tm-se as RNs que no so precedidas por condies; Essencialidade: As RNs definem como um evento de negcio (no caso, uma funcionalidade do software) ocorre e suas particularidades. Em geral, uma RN sempre essencial ao funcionamento do sistema, uma vez que ela esteja definida no documento de requisitos, porm a questo se ela essencial ao funcionamento genrico do caso de uso. Como exemplo, pode-se citar uma RN que verifica se a durao da estadia de uma reserva de acomodao, num sistema de controle hoteleiro, no excedeu ao limite estabelecido. Essa RN essencial ao sistema hoteleiro em questo, mas no essencial ao controle de reserva de qualquer sistema hoteleiro. Assim, se a RN for essencial sua
separao poderia comprometer o sistema, caso essa RN fosse desativada futuramente. Portanto, sua separao causaria uma falsa impresso de independncia e desacoplamento, o que pode ser prejudicial ao sistema. Nesse caso, provavelmente ela no uma RN. Esse critrio foi adaptado de Camargo (2006). Os critrios propostos no so independentes, ou seja, eles devem sempre ser aplicados em conjunto, uma vez que o terceiro critrio uma validao das RNs identificadas pelos dois primeiros critrios. A aplicao dos critrios propostos deve sempre ser acompanhada da anlise crtica do engenheiro de software, pois existem certas funcionalidades que podem satisfazer aos
56 critrios, todavia podem no ser RNs por no refletirem polticas da empresa e no ter qualquer outra caracterstica de uma RN. Para a correta identificao da origem dos fluxos alternativos deve-se tambm tomar como base, alm dos critrios propostos, o fundamento terico e a vasta disponibilidade de exemplos existentes sobre RNs. Essas informaes podem ser encontradas em Ross (2003) e Von Halle (2002). Com a origem devidamente preenchida, caso seu contedo seja Negcio o campo Tipo deve ser preenchido, caso contrrio dever permanecer vazio, uma vez que esse campo no tem significado para fluxos alternativos convencionais. Essa informao deve refletir o tipo de comportamento de negcio que o fluxo alternativo em questo ir executar. Os comportamentos identificados e aceitos neste trabalho so: Diretriz: expressam uma advertncia sobre uma circunstncia de negcio que faz com que alguma ao humana - ou de qualquer outra natureza que esteja fora do escopo do software - seja executada sem, contudo, restringir a execuo do software. Exemplo: Caso o cliente possua duplicatas vencidas e no pagas o usurio dever ser comunicado; Habilitador: so mecanismos que verificam uma determinada condio e caso ela seja verdadeira inicia uma nova ao no software. Exemplo: Caso o usurio possua status de gerente a alterao dos preos de venda dever ser liberada; Derivao: resulta na criao de um novo trecho de informao que, em termos de banco de dados, pode ser uma nova instncia de uma entidade, ou uma nova instncia de um atributo. Para que a derivao ocorra necessrio que seja implementado o mecanismo de derivao com o mapeamento que ser aplicado s informaes bases para a extrao das informaes derivadas. Exemplo: Caso seja o ms de aniversrio do cliente o valor do desconto dever ser 10% do total da venda. A determinao do tipo do fluxo alternativo, que posteriormente ser o tipo da RN, relevante, pois pode apoiar na escolha da forma que essa RN ser projetada, uma vez que essa informao designa um dado comportamento para a RN. A prxima etapa para o preenchimento dessa seo do gabarito a identificao da condio que deve ser cumprida para que o fluxo alternativo em questo seja acionado. A condio de acionamento algo intrnseco s RNs (Von Halle, 2002), sendo inclusive um mecanismo para sua identificao (como mostrado na Seo 3.2.1.2.a). Sendo assim, cabe
57 ao engenheiro de software identific-la no enunciado da regra e transcrev-la ao gabarito. O registro dessa condio pode ocorrer em linguagens mais formais, como OCL, por exemplo, porm em todos os exemplos deste trabalho utilizada linguagem natural para o registro de tais condies. Por fim, o ltimo campo dessa seo do gabarito a ao que dever ser executada caso a condio do fluxo alternativo em questo seja satisfeita. Essa ao dever ser descrita em linguagem natural e dever descrever uma ao condizente com a classificao previamente informada no campo Tipo. Para exemplificar o preenchimento dessa seo do gabarito, mostrada na Tabela 3.2 uma parte do gabarito relativo ao caso de uso Gerar Vendas, que compe o estudo de caso dessa dissertao.
Tabela 3.2 - Exemplo da seo fluxos alternativos
b) Pr-Condies
As pr-condies de um caso de uso indicam as condies que devem ser satisfeitas para que sua execuo possa ser feita adequadamente. Devem constar as restries que levariam a execuo do caso de uso a um estado indefinido. Um caso de uso s pode ser executado se todas as suas pr-condies forem satisfeitas. As pr-condies so formas de se garantir que a execuo de um caso de uso ocorrer de forma consistente, sem ferir princpios ou circunstncias pr-estabelecidas. A identificao das pr-condies do caso de uso deve ser feita com base nos documentos de requisitos. Toda pr-condio identificada deve ser analisada com o objetivo de identificar sua origem, que pode ser:
58 Sistema: So todos os comportamentos alternativos que tem por objetivo o cumprimento de uma necessidade do software, tais como: garantia de integridade dos dados, validaes de tipos de dados etc. Negcio: So comportamentos alternativos impostos por fatores de negcio, tais como: acionamento de eventos de negcio, diretrizes informativas de polticas da empresa etc. Esses comportamentos representam RNs. A determinao da origem das pr-condies est relacionada com a identificao de RNs. Por isso ela deve ser feita com base nos critrios propostos na Seo 3.2.1.2.a. O campo Condio deve ser preenchido com a condio que ser verificada para determinar se esse caso de uso pode ser executado ou no. Para exemplificar o preenchimento dessa seo do gabarito mostrada na Tabela 3.3 uma parte do gabarito relativo ao caso de uso Gerar Vendas, que compe o estudo de caso dessa dissertao.
Tabela 3.3 - Exemplo de Pr-Condies
c) Ps-Condies
Indicam condies que devem ser satisfeitas para que o caso de uso seja concludo com sucesso. Devem constar as condies necessrias para garantir que um caso de uso s poder ser concludo quando todas as condies de integridade, pr-estabelecidas, forem satisfeitas. A identificao das ps-condies do caso de uso deve ser feito com base nos documentos de requisitos. Toda ps-condio identificada deve ser analisada com o objetivo de identificar sua origem, que pode ser: Sistema: So todos os comportamentos alternativos que tem por objetivo o cumprimento de uma necessidade do software, tais como: garantia de integridade dos dados, validaes de tipos de dados etc.
59 Negcio: So comportamentos alternativos impostos por fatores de negcio, tais como: acionamento de eventos de negcio, diretrizes informativas de polticas da empresa etc. Esses comportamentos representam RNs. A determinao da origem das ps-condies est relacionada com a identificao de RNs. Por isso ela deve ser feita bom base nos critrios propostos na Seo 3.2.1.2.a. O campo Condio deve ser preenchido com a descrio da checagem que ser realizada para validar a ps-condio estabelecida. Para exemplificar o preenchimento dessa seo do gabarito mostrada na Tabela 3.4 uma parte do gabarito relativo ao caso de uso Gerar Vendas, que compe o estudo de caso dessa dissertao.
Tabela 3.4 - Exemplo de Ps-Condies
d) Gatilhos
Os Gatilhos so descritos em uma nova seo do gabarito proposto neste trabalho. Gatilhos so procedimentos que devem ser disparados aps a execuo, com sucesso, de um caso de uso. O disparo dos gatilhos geralmente ocorre mediante uma condio de negcio e deve ser independente do fluxo de execuo do caso de uso. Isso diferencia os gatilhos do fluxo alternativo de eventos, uma vez que o fluxo alternativo descreve excees para o funcionamento do caso de uso em si, enquanto os gatilhos descrevem aes que devem ser executadas aps o trmino do caso de uso em questo. Em outros termos, os gatilhos descrevem complementos ao funcionamento do caso de uso, que geralmente so condicionados a execuo de outros casos de uso. Os gatilhos informados nesta seo do gabarito devem representar eventos de negcio. Os demais gatilhos que representem eventos relacionados ao software em si, devem ser modelados da forma convencional, por meio de casos de uso e relacionamentos UML. Os gatilhos so compostos de um mecanismo de acionamento e uma funcionalidade alvo. Esses dois elementos podem estar encapsulados em uma nica RN, ou podem ser
60 elementos distintos, nesse caso a funcionalidade alvo pode ser uma funcionalidade da parte base do software. O mecanismo de acionamento, quando separado da funcionalidade alvo, deve ser um elemento independente, que inclui a funcionalidade alvo em seu comportamento, e que ser modelado como uma RN. desejvel que os mecanismos de acionamento independentes sejam representados como RNs pelo fato de representar uma ao que visa cumprir um comportamento de negcio, e dessa forma, possui as caractersticas das RNs (volatilidade, independncia, etc) devendo respeitar as caractersticas desejveis para seu projeto. A ao resultante de um gatilho determina o seu tipo. Os tipos de gatilhos identificados e aceitos nesse trabalho so: Diretriz: expressam uma advertncia sobre uma circunstncia de negcio que faz com que alguma ao humana ou de qualquer outra natureza que esteja fora do escopo do software, seja executada sem restringir a execuo do software; Habilitador: so mecanismos que verificam uma determinada condio e caso ela seja verdadeira inicia uma nova ao no software; Derivao: resulta na criao de um novo trecho de informao que, em termos de banco de dados, pode ser uma nova instncia de uma entidade, ou uma nova instncia de um atributo. Para que a derivao ocorra necessria a existncia de um mecanismo de derivao com o mapeamento que ser aplicado s informaes bases para a extrao das informaes derivadas. Geralmente esse mecanismo de derivao est definido no caso de uso invocado nesse gatilho. O tipo de um gatilho est intrinsecamente relacionado ao tipo de RN que ele descreve. A prxima informao constante nessa seo do gabarito o caso de uso que representa a funcionalidade alvo do gatilho em questo, caso essa funcionalidade esteja separada do mecanismo acionador, o que pode ocorrer por questes de modularizao do software, j que o caso de uso alvo do gatilho pode tambm ser uma funcionalidade base do software. Nesse caso o acionamento dessa funcionalidade representa um evento de negcio, e no a funcionalidade em si. Isso ocorre devido ao fato de que o fluxo de aes do software pode ser determinado ou influenciado por fatores de negcio. E nessas situaes podem
61 ocorrer gatilhos que no possuem condies para serem executados, uma vez que o prprio fluxo de eventos do software foi influenciado por fatores de negcios. Por fim, a ltima informao que o engenheiro de software deve fornecer a ao resultante desse gatilho. Essa ao pode ser a simples invocao do caso de uso alvo, ou ainda pode estar contida nessa ao a condio necessria para que o gatilho seja disparado. Porm essa condio no obrigatria, o que torna aceitveis gatilhos que sempre sero disparados, desde que isso ocorra por fatores de negcio, caso contrrio a implementao desses gatilhos dever seguir os mecanismos usuais da engenharia de software. Para exemplificar o preenchimento dessa seo do gabarito mostrada na Figura 3.3 uma parte do gabarito relativo ao caso de uso Gerar Vendas, que compe o estudo de caso dessa dissertao.
62 deve ser feito para todos os casos de uso registrados com o gabarito, tendo como resultado o conjunto de RNs identificadas nos gabaritos e classificadas por essas diretrizes. Essas RNs devem ser documentadas em um artefato especfico, chamado Lista de Regras. A classificao das RNs identificadas nos gabaritos ocorre pelo agrupamento das regras de acordo com suas caractersticas, ou seja, as RNs quando identificadas nos requisitos recebem uma classificao prvia, seja por meio da seo do gabarito na qual ela registrada, seja pela identificao de seu tipo (nas sees Fluxos Alternativos e Gatilhos do gabarito). Dessa forma os diversos tipos de RNs que esto distribudas pelas sees do gabarito devem ser identificadas e agrupadas. Isso possvel pelo fato das sees Pr e Ps-Condies receberem apenas um tipo de regras, e as sees Fluxos Alternativos e Gatilhos possurem um campo de identificao (Tipo) que representa o tipo de RN registrada. importante ressaltar que o preenchimento do campo de identificao ocorre com base no conceito de RNs, como apresentado nas Sees 3.2.1.2.a e 3.2.1.2.d. Sendo assim o objetivo dos Critrios de Identificao orientar onde (seo do gabarito) cada tipo de regra deve ser obtido, e como separar as RNs das funcionalidades pertencentes ao caso de uso em questo.
Tabela 3.5 Critrios para a classificao das Regras de Negcio Tipo de RN Restries Critrio de Identificao -Itens informados na seo Pr-Condies ou Ps-Condies, que possuam origem de negcio; Diretrizes -Itens informados na seo Fluxo Alternativo ou na seo Gatilhos. Desde que tenham origem de negcio e sejam do tipo Diretriz. As RNs oriundas da seo Fluxo Alternativo devero sofrer uma juno da condio de acionamento da RN com sua ao, para que dessa forma, a RN seja transcrita na sua totalidade; Habilitadoras de Aes -Itens informados na seo Fluxo Alternativo ou na seo Gatilhos. Desde que tenham origem de negcio e sejam do tipo Habilitador. As RNs oriundas da seo Fluxo Alternativo devero sofrer uma juno da condio de acionamento da RN com sua ao, para que dessa forma, a RN seja transcrita na sua totalidade; Derivao -Itens informados na seo Fluxo Alternativo ou na seo Gatilhos. Desde que tenham origem de negcio e sejam do tipo Derivao. As RNs oriundas da seo Fluxo Alternativo devero sofrer uma juno da condio de acionamento da RN com sua ao, para que dessa forma, a RN seja transcrita na sua totalidade;
Na apresentao do PU feito por Larman (2007) j sugerido um artefato nico para registro das RNs, tendo como principal benefcio possibilidade de reso dessas regras por toda a organizao. Todavia esse artefato foi refeito para que pudesse atender s necessidade
63 da abordagem proposta nesse trabalho. Um exemplo desse artefato mostrado na Tabela 3.6 com algumas RNs que foram extradas do estudo de caso apresentado neste trabalho.
Tabela 3.6 - Exemplo do Artefato Lista de Regras Preenchido
Regra Verificar se o caixa anterior est fechado Caso o cliente possua duplicatas a vencer nos prximos 7 dias dever ser gerado um aviso ao usurio Caso o cliente possua duplicatas a vencer nos prximos 7 dias a pesquisa financeira do cliente dever ser exibida Caso o cliente tenha duplicatas vencidas e no pagas dever ser gerada uma advertncia para que a situao seja regularizada seno a venda no ser aceita Caso o usurio no seja gerente a alterao do preo dos produtos dever ser bloqueada Caso seja o ms de aniversrio do cliente, o desconto dever ser preenchido com o valor de 5% do total da venda necessrio que o caixa esteja aberto para que uma venda seja registrada, alterada ou excluda. Tipo Restrio Diretriz Caso de Uso Abrir Caixa Gerar Vendas Ponto de Id. RN Mlt Parad Mdulo Artefato Atuao Ocor igma ChecarCx Checagem PrInicializao ChecarCaixa OA Anterior Condies Anterior ChecaDup Checagem Fluxo No ato de ChecarDupl OA lVencer Alternativo informar o AVencer cliente Seo MostrarPesq Financeira OA
Mostrar Pesquisa PesqFinan ceira
Diretriz
AdvertirAtra sos
OA
Habilitadora Gerar Fluxo Na insero Bloquear Vendas Alternativo de produtos Preos na venda Derivao Gerar Fluxo Na Vendas Alternativo informao do valor do desconto GerarDesco ntoAniversa rio
OO
OA
Restrio
OA
As colunas do artefato devem ser preenchidas seguindo-se diretrizes, como segue: Regra: Nessa coluna deve constar a prpria RN, da forma que foi transcrita do documento de requisitos; Tipo: Deve ser preenchida com o tipo da RN que pode ser obtido seguindo-se as diretrizes apresentadas anteriormente nessa seo; Caso de Uso: Deve ser informado o caso de uso que originou a RN, essa informao essencial para a obteno da rastreabilidade; Seo: Nessa coluna deve constar a qual seo do gabarito a RN pertence; Ponto Atuao: Esse campo representa uma informao importante para a abordagem. Nessa coluna deve ser informado qual o ponto, da funcionalidade a ser implementada, que a RN ir influenciar. Essa informao pode ser considerada como um esforo inicial para direcionar o engenheiro de software
64 no sentido de determinar o ponto de chamada ou o ponto de juno da RN aps ser implementada. Considerando que essa abordagem enquadra-se nas fases iniciais do desenvolvimento do software, no possvel determinar exatamente os nomes dos mtodos/atributos e das classes. Sendo assim, nesse ponto do desenvolvimento suficiente informar em linguagem natural e com um alto nvel de abstrao os pontos de juno nos quais as RNs sero acopladas. Essa informao pode ser obtida por meio da anlise da localizao da RN no gabarito, por exemplo, uma regra oriunda da seo de Pr-Condies deve influenciar a inicializao da classe que implementar a funcionalidade representada no caso de uso. Na Tabela 3.7 so definidas diretrizes com o intuito de apoiar o engenheiro de software nessa anlise, como segue:
Tabela 3.7 - Diretrizes de apoio para anlise do ponto de atuao Seo do Gabarito Pr-Condies Ps-condies Possveis pontos de juno Inicializao e instncia da classe que representa a funcionalidade base do caso de uso Mtodos que executam atividades fins na classe. Exemplo: cadastrar, imprimir, processar, excluir etc. O ponto de juno geralmente ocorre antes da execuo ou chamada do mtodo. Semelhante s Ps-condies, porm o ponto de juno ocorre aps a execuo ou chamada do mtodo. Geralmente os pontos de juno esto vinculados ao passo do fluxo principal que o fluxo alternativo ir modificar. Geralmente est vinculado com aes de modificao e acesso de atributos (get e set) ou com execuo de mtodos.
Id.RN: Essa coluna deve ser preenchida com uma identificao nica para a RN, essa informao importante para possibilitar o rastreamento da regra; Mltipla Ocorrncia: Quando uma RN atua em diversos pontos do software, faz-se necessrio que na primeira ocorrncia da regra, todas as informaes sobre os artefatos que a implementam sejam preenchidos, porm, nas demais ocorrncias isso no se faz necessrio, j que elas so registradas para identificar os pontos do software que a RN deve atuar. Sendo assim o objetivo dessa coluna orientar o engenheiro de software sobre o fato de que a RN aqui listada j foi detalhada em algum outro ponto do projeto, e nesse ponto representa apenas um novo ponto de atuao da regra; Paradigma: Deve constar a informao sobre qual o paradigma que foi
65 utilizado para sua implementao, no contexto desse trabalho podem ser utilizados os paradigmas Orientados a Objetos (OO) ou Orientados a Aspectos (OA) Mdulo: Deve ser preenchida com o nome do mdulo no qual essa RN est implementada. Caso o paradigma utilizado seja OO, deve constar o nome da classe, caso seja OA, o nome do aspecto; Artefato: Deve ser preenchida com o nome do artefato de software que implementa a RN em questo. Caso o paradigma utilizado seja OO, deve constar o nome do mtodo que encapsula a implementao da regra, caso seja OA deve constar o nome do adendo que encapsula a implementao da regra. As colunas Paradigma, Mdulo e Artefato no sero preenchidas nessa atividade do processo. A coluna paradigma dever ser preenchida aps a atividade cujo objetivo identificar o paradigma de projeto das RNs (Seo 3.2.2.1), j as colunas Mdulo e Artefato devero ser preenchidas durante o projeto do diagrama de classes, quando essas informaes estiverem disponveis. Note-se que esse registro propicia um mapeamento entre as RNs e cada caso de uso que as originou, auxiliando no rastreamento dessas RNs nas fases iniciais do desenvolvimento.
Com as RNs identificadas, classificadas e registradas, sugere-se que elas sejam representadas graficamente como casos de uso. Dessa forma, pode-se ter uma viso mais ampla do sistema e dos relacionamentos que essas RNs mantm com os demais casos de uso funcionais. Nesse ponto espera-se que o diagrama de casos de uso funcionais do software j tenha sido definido e refinado, o que dever ter ocorrido na Atividade Refinar Diagramas de Casos de Uso, que uma atividade padro do PU (Larman, 2007) que no influenciada pela abordagem. Para que os casos de uso referentes s regras de negcio sejam diferenciados dos demais, sugere-se tambm a utilizao do esteretipo <<business rule>> e a criao de vises individuais para as RNs, com o intuito de no poluir demais o diagrama de casos de uso. Os casos de uso que representam RNs geralmente devem ser relacionados aos seus
66 casos de uso base por meio de relacionamentos do tipo Extenso (Extend), uma vez que as RNs representam funcionalidades extras que so adicionadas ao comportamento de um caso de uso base. Todavia pode acontecer o fato de uma RN ser essencial ao comportamento de um caso de uso base. Um dos fatores que pode gerar tal situao so as RNs que representam fluxos de eventos, j que podem representar seqncias necessrias execuo do software num determinado contexto. Um exemplo da modelagem de RNs no diagrama de casos de uso mostrado na Figura 3.4, no qual o caso de uso base RealizarReserva possui duas RNs nomeadas Controlar Inadimplncia e Controlar Durao da Reserva. Essa modelagem deve representar a influncia de RNs sobre o comportamento de um caso de uso. Essas RNs so obtidas a partir do artefato Relao de Regras de Negcio (Tabela 3.6) e modeladas de acordo com as diretrizes apresentadas.
67
68 no possua relacionamentos de incluso, ela candidata a ser projetada como aspecto. Volatilidade: Considera a sensibilidade s mudanas de uma RN. Caso uma RN mostre-se estvel, bem definida e pouco sujeita a mudanas, no existe a necessidade de separ-la do ncleo do software, uma vez que o benefcio de sua separao seria pequeno ou nulo. Assim, essa RN no deve ser projetada como candidata a aspectos, caso contrrio ela uma candidata a ser projetada com esse paradigma. Porm, essa uma avaliao muito subjetiva, e deve ser realizada com base nas informaes e experincias obtidas junto empresa durante a elicitao de requisitos. Ainda assim esse critrio deve ser utilizado de forma cuidadosa, uma vez que est passivo a erros de interpretao. O critrio Quantidade de Relacionamentos possui precedncia sobre os demais, ou seja, sempre que ele for satisfeito a RN dever ser projetada com o paradigma OA. Caso ele no seja satisfeito, necessrio que os dois outros critrios sejam satisfeitos para que a RN seja projetada com OA. Isso ocorre pelo fato do critrio Quantidade de Relacionamentos possuir peso suficiente para determinar o paradigma de uma RN, j que quando um caso de uso possui vrios relacionamentos o espalhamento de cdigo eminente. Ao passo que os demais critrios so secundrios, e no possuem peso suficiente para, sozinhos, determinar o paradigma de uma RN, necessitando assim que ambos sejam atendidos caso o critrio principal no seja atendido. Isso se justifica, uma vez que o fato de uma RN no possuir relacionamentos de incluso sendo voltil, ou sendo voltil possuindo relacionamentos de incluso no geram um cenrio determinante para que uma RN seja projetada como aspecto. Uma vez determinadas quais RNs sero projetadas com o paradigma POA deve-se atualizar o artefato Lista de Regras (Tabela 3.6), identificando o paradigma (OO ou OA) com que cada uma das RNs deve ser projetada.
69 com as classes base do software deve-se seguir diferentes procedimentos, de acordo com o paradigma que ser utilizado no projeto da RN. Caso a RN seja projetada com OO, o engenheiro de software deve represent-la como um mtodo da classe a que ela pertence, porm deve-se utilizar um esteretipo para que esse mtodo seja identificado como uma RN e satisfaa (mesmo que parcialmente) a caracterstica de Separao (Von Halle, 2002). O Esteretipo utilizado o <<BR>>. Na Figura 3.5 mostrado um exemplo de uma RN projetada com OO, no qual
ChecarCxAnterior() da classe ControleCaixa uma RN que foi projetada com OO, e
Caso a RN seja projetada com OA, o engenheiro de software deve utilizar a notao proposta por Pawlak et al. (2002) para projetar a regra no diagrama de classes. Nessa notao os autores utilizam-se de classes com o esteretipo <<aspect>> para identificar os aspectos. importante ressaltar que a partir desse ponto do projeto essas RN sero aspectos. Os mtodos da classe so utilizados para representar os adendos (advices) do aspecto, para isso so utilizados os esteretipos <<before>>, <<after>> e <<around>> que representam o tipo de adendo a ser implementado. As associaes com esteretipos <<pointcut>> so utilizadas para indicar quais as classes base que o aspecto entrecorta. Essas associaes utilizam-se de etiquetas valoradas (tagged value) para identificar os mtodos e atributos da classe base que sero entrecordados pelo aspecto. O formato das etiquetas valoradas so ?metodo(..) ou !metodo(..) no qual o caractere ? indica que o mtodo entrecortado pelo aspecto no contexto de chamada (call) e o caractere ! indica que o mtodo entrecortado pelo aspecto no contexto de execuo (execution). A definio do ponto de juno da RN (aspecto) pode ser apoiada pelo valor da coluna Ponto de Atuao, do artefato Relao de Regras de Negcio, j que foi preenchida com o intuito de indicar em que momento a RN influenciar o software base.
70 Na Figura 3.6 mostrado um exemplo de RN projetada com OA, no qual a RN VerificarAcesso um aspecto que entrecorta a classe MovEstoque antes da chamada do mtodo Set_Data().
71
72 O objetivo deste captulo foi fornecer o embasamento terico necessrio aplicao dessa abordagem. No prximo captulo apresentada a aplicao da abordagem em um estudo de caso real, o que fornece um bom nvel de exemplificao e ajuda a compreender melhor a abordagem
73
4.1. Definio
O objeto deste estudo de caso o desenvolvimento de um software para controlar as atividades de uma loja do setor de vesturio. Esse controle abrange as operaes cotidianas de uma empresa desse tipo, sendo elas: manuteno dos dados cadastrais necessrios operao do software (Cliente, Fornecedores, Produtos etc), controle das vendas efetuadas, apurao da comisso dos vendedores, controle das contas a receber, controle do estoque dos produtos, controle do recebimento dos produtos e controle das contas a pagar, entre outros, conforme descrito no documento de requisitos presente no Apndice B. O objetivo deste estudo de caso a utilizao da abordagem apresentada nessa dissertao. Dessa forma espera-se que o uso da abordagem propicie a construo de um software no qual as RNs estejam implementadas com base em artefatos independentes do ncleo do software, favorecendo as futuras manutenes do software, bem como o reso das RNs e do prprio software, j que as RNs podem ser mais facilmente desacopladas do software resultante. Alm disso, espera-se tambm que o uso da abordagem favorea o rastreamento das RNs permitindo que se possam identificar facilmente todos os artefatos utilizados na implementao de uma determinada RNs, apoiando as quatro caractersticas
74 necessrias implementao de RNs (Separao, Rastreamento, Exteriorizao e Posicionamento). O estudo de caso foi realizado pelo prprio autor. O material necessrio para esse estudo foi: Fundamentao de RNs (Business Rules Group, 2000; Von Halle, 2002; Ross, 2003), Guia da API Java 1.5.1 e Manuais do SGBD MS-SQLSERVER 8.0. A modelagem foi feita com o apoio da ferramenta Rational XDE, a codificao foi realizada na linguagem Java utilizando a API J2SE 1.5 e a API AspectJ 1.5, o IDE utilizado foi o Eclipse verso 3.2. A execuo do caso de uso est detalhada na prxima seo.
4.2. Execuo
A execuo do estudo de caso ocorreu com a aplicao da extenso do PU proposta nessa abordagem, cumprindo-se assim uma seqncia de atividades definidas, como segue: 1. Identificar e registrar casos de uso essenciais; 2. Documentar casos de uso com gabarito; 3. Classificar e registrar RNs; 4. Refinar diagramas de casos de uso; 5. Desenvolver modelo de classes do projeto 6. Definir paradigma de projeto das regras; 7. Desenvolver diagramas de Interao; 8. Projetar regras de negcio; 9. Implementar classes do domnio; 10. Implementar regras de negcio; 11. Testar;
O estudo de caso foi executado com um pequeno nmero de iteraes (as fases de elaborao e construo foram executadas em apenas uma iterao). Isso ocorreu pelo fato do desenvolvimento ser baseado em um software j existente e estvel, sendo assim a diviso em diversas iteraes no iria gerar uma contribuio significativa para esse estudo de caso. Algumas dessas atividades no foram modificadas ou influenciadas pela abordagem proposta. As demais atividades (em negrito) compem a abordagem proposta, ou sofreram algum tipo de alterao por ela. As atividades modificadas (ou criadas) esto detalhadas nas prximas sees.
75
76
Para este estudo de caso so utilizados dois casos de uso (Gerar Venda e Movimentar Estoque). Isso ocorre para evitar uma extenso inadequada ao contexto deste trabalho. As especificaes destes casos de uso so mostradas nas Figuras 4.5 e 4.6. O preenchimento das sees do gabarito proposto deve se feito mediante anlise do documento de requisitos. Para que o foco do trabalho seja mantido s so comentadas as sees includas ou alteradas pela abordagem, uma vez que as demais sees foram preenchidas na atividade anterior.
77
Na identificao dos fluxos alternativos dos casos de uso (assim como nas pr e pscondies) a questo chave para o uso adequado da abordagem a identificao da origem da informao. Para ilustrar essa questo ser utilizada uma comparao entre dois comportamentos identificados como fluxos alternativos, como seguem:
78 a) Um movimento de estoque do tipo sada s ser aceito com quantidade menor ou igual ao atributo quantidade em estoque, no cadastro do produto. b) Na gravao da venda, o valor de desconto no dever ser superior a 5% do valor total da venda. O comportamento a parte do requisito 8 (oito), que mostrado na Figura 4.7, que descreve o funcionamento da movimentao de estoque, e o comportamento b parte do requisito 10 (dez), que mostrado na Figura 4.8, que descreve o funcionamento da venda. Ambos os comportamentos pertencem ao fluxo alternativo, dos casos de uso Movimentar Estoque e Gerar Vendas respectivamente (vide Figuras 4.6 e 4.5), e necessitam de uma ao especfica caso sua condio no seja satisfeita, porm apenas um deles uma RN. Aplicando-se os critrios para identificao de RNs, mostrados na Seo 3.2.1.2.a., nesse trecho do documento de requisitos pode-se perceber que ambos os comportamentos satisfazem ao critrio das decises, uma vez que ambos possuem uma condio para serem acionados. Com isso nenhum deles ir representar um fluxo de eventos (critrio Fluxo de Eventos). Porm o comportamento a essencial ao funcionamento genrico do seu caso de uso, uma vez que no seria admissvel que um software de gesto de lojas permitisse que fosse registrada uma venda de um produto que no tenha disponibilidade de estoque. J o comportamento b no essencial ao funcionamento genrico do seu caso de uso, j que nem todas as lojas impem restries de descontos no ato da venda, pois podem gerenciar esses descontos posteriormente, por meio de relatrios especficos. Sendo assim o critrio de Essencialidade foi determinante para apurar a origem desses comportamentos.
79
Alm disso, pode-se apurar que o comportamento a tem por objetivo o cumprimento de uma necessidade de integridade das informaes manipuladas pelo software, o que no o caracteriza como uma RN. J o comportamento b tem por objetivo o cumprimento de uma poltica da empresa, que o caracteriza como uma RN. Em resumo, a identificao das RNs ocorreu com o uso dos critrios para a identificao das RNs associado teoria de RN. A identificao tambm foi apoiada pelo uso do gabarito, uma vez que o engenheiro de software pode identificar RNs que atuam em situaes especficas (fluxo alternativo de eventos, pr e ps-condies e gatilhos), o que reduz o domnio de identificao de acordo com cada seo do gabarito. A identificao do tipo de RN na seo Fluxo Alternativo (assim como na seo Gatilhos) utiliza como critrio de escolha o objetivo do comportamento registrado como fluxo alternativo, aliado teoria de RN. Uma vez que no contexto deste trabalho foram
80 identificados trs tipos de fluxo alternativo (e de gatilhos) a escolha torna-se relativamente simples, bastando para isso observar-se o resultado da ao desempenhada. Como exemplo, sero utilizados alguns fluxos alternativos extrados do documento de requisitos, como segue: c) O valor unitrio dos produtos s poder ser alterado caso o usurio do sistema tenha nvel de acesso de gerente; d) Dever tambm ser realizada uma checagem para apurar se o cliente ter alguma duplicata que ir vencer nos prximos 7 (sete) dias, caso tenha, uma mensagem dever ser exibida para o usurio; No fluxo c percebe-se que o resultado da RN, caso a condio seja satisfeita, a habilitao de uma funcionalidade do caso de uso, que a possibilidade de alterao dos valores unitrios dos itens da venda, nesse caso o tipo do fluxo alternativo Habilitador. No fluxo d percebe-se que o resultado da RN, caso ela seja acionada por ter satisfeito a condio, uma advertncia ao ator, dessa forma o tipo do fluxo alternativo Diretriz. As pr e ps-condies puderam ser identificadas sem maiores problemas, atentandose apenas em limit-las aos comportamentos restritivos que ocorrem antes ou depois da funcionalidade base do caso de uso, separando-as assim dos fluxos alternativos. Alm disso, a identificao da origem deve atentar-se s observaes supracitadas. Os gatilhos so parecidos com as ps-condies, porm descrevem outros tipos de comportamento. O engenheiro de software deve atentar-se de que os gatilhos cuja origem no seja de negcio, no devem ser includos nessa seo, mas sim modelados da forma clssica, com casos de uso e relacionamentos.
81 semelhantes, mesmo estando em diferentes pontos dos casos de uso, ou mesmo em diferentes casos de uso. Essa uma tarefa nada trivial e que pode afetar de forma considervel a identificao de RNs candidatas a aspectos (Seo 4.2.4). O resultado desta atividade o artefato Lista de Regras parcialmente preenchida, que mostrado na Tabela 4.1.
Tabela 4.1 Lista de Regras parcialmente preenchida
Caso de Uso Verificar se o caixa anterior est Restrio Abrir fechado Caixa Caso o cliente possua duplicatas Diretriz Gerar a vencer nos prximos 7 dias Vendas dever ser gerado um aviso ao usurio Caso o cliente possua duplicatas Habilitad Gerar a vencer nos prximos 7 dias a ora Vendas pesquisa financeira do cliente dever ser exibida Caso o cliente tenha duplicatas Diretriz Gerar vencidas e no pagas dever ser Vendas gerada uma advertncia para que a situao seja regularizada seno a venda no ser aceita Caso o usurio no seja gerente Habilitad Gerar a alterao do preo dos ora Vendas produtos dever ser bloqueada Caso seja o ms de aniversrio Deriva Gerar do cliente, o desconto dever ser o Vendas preenchido com o valor de 5% do total da venda necessrio que o caixa esteja Restrio Gerar aberto para que uma venda seja Vendas registrada, alterada ou excluda. O valor de desconto no dever Restrio Gerar ser superior a 5% da venda Vendas Dever ser realizada uma Restrio Gerar checagem para apurar se o Vendas cliente tem alguma duplicata vencida e no paga, caso tenha a venda no dever ser aceita Na gravao da venda, devero Deriva Gerar ser geradas duplicatas a receber, o Vendas uma para cada vencimento constante na condio de pagamento da venda. Na gravao da venda, caso Deriva Gerar algum dos vencimentos possua o Vendas o nmero de dias do vencimento igual a 0 (o que indica que a vista), dever ser gerado um recebimento relativo duplicata do vencimento em questo, no mesmo valor da duplicata Na gravao da venda, dever Habilitad Gerar ser impresso um border ora Vendas relativo venda O atributo data do movimento Restrio Movimen s poder ser diferente da data tar do dia caso o usurio do sistema Estoque tenha nvel de acesso de gerente necessrio que o caixa esteja Restrio Gerar aberto para que um pagamento Pagament seja registrado, alterado ou o de excludo. Documen tos Regra Tipo Ponto de Id. RN Mltipla Paradig Mdulo Artefato Atuao Ocorrncia ma PrInicializao ChecarCaixa Condies Anterior Fluxo No ato de ChecarDuplA Alternativo informar o Vencer cliente Fluxo No ato de Alternativo informar o cliente Fluxo No ato de Alternativo informar o cliente MostrarPesqF inanceira Seo
AdvertirAtras os
Fluxo Na insero Alternativo de produtos na venda Fluxo Na Alternativo informao do valor do desconto PrInicializao Condies PsCondies PsCondies Gravao da Venda Gravao da Venda
Gatilhos
Gatilhos
Gatilhos
82
Na gravao do pagamento, a Restrio Gerar Psdata de pagamento dever ser a Pagament Condies data do dia, a menos que o o de usurio do sistema tenha nvel Documen de acesso de gerente. tos Aps a incluso de um novo Habilitad Gerar Gatilhos pagamento a impresso do ora Pagament recibo acionada o de Documen tos necessrio que o caixa esteja Restrio Informar Praberto para que um recebimento Recebime Condies seja registrado, alterado ou nto de excludo. Duplicata s Na gravao do recebimento, a Restrio Informar Psdata de recebimento dever ser a Recebime Condies data do dia, a menos que o nto de usurio do sistema tenha nvel Duplicata de acesso de gerente. s Caso o custo apurado de algum Diretriz Cadastrar Fluxo produto, seja 10% menor que o Recebime Alternativo atual dever ser gerado um nto de aviso de possibilidade de Produtos campanha promocional O preo de custo de cada Habilitad Recebime Gatilhos produto dever ser atualizado ora nto de com o valor constante na Produtos entrada mais o valor rateado dos custos adicionais. A cada atualizao do custo do produto o preo de venda do mesmo dever ser atualizado Devero ser gerados os Deriva Recebime Gatilhos documentos a pagar para o o nto de fornecedor, um para cada Produtos vencimento constante na entrada Gravao do VerificarAces Pagamento so X
Na Gravao
AtualizarCust oVenda
Aps a Gravao
GerarDocume ntos
83
Figura 4.9 - Diagrama de casos de uso com a modelagem das regras de negcio
84
85 com os casos de uso, e atende ao critrio de volatilidade, j que no possui as caractersticas de uma regra estvel, o que faz com que ela seja projetada como OA, j que atendeu aos dois critrios secundrios, embora no tenha atendido ao critrio precedente. Aps a definio do paradigma de projeto das RNs, o artefato Lista de Regras deve ser atualizado, preenchendo-se a coluna paradigma com a informao OA ou OO, para que essa informao auxilie no projeto das RNs no diagrama de classes. O resultado desta atividade o artefato Lista de Regras totalmente preenchido, como mostrado na Tabela 4.2 A prxima atividade a modelagem das RNs no diagrama de classes.
Tabela 4.2 - Lista de Regras totalmente preenchida.
Ponto de Id. RN Mltip Paradi Atuao Ocor. gma Verificar se o caixa anterior est Restrio Abrir Caixa PrInicializao ChecarCaixaA OA fechado Condie nterior s Caso o cliente possua duplicatas Diretriz Gerar Vendas Fluxo No ato de ChecarDuplA OA a vencer nos prximos 7 dias Alternativ informar o Vencer dever ser gerado um aviso ao o cliente usurio Caso o cliente possua duplicatas Habilitad Gerar Vendas Fluxo No ato de MostrarPesqFi OA a vencer nos prximos 7 dias a ora Alternativ informar o nanceira pesquisa financeira do cliente o cliente dever ser exibida Caso o cliente tenha duplicatas Diretriz Gerar Vendas Fluxo No ato de AdvertirAtras OA vencidas e no pagas dever ser Alternativ informar o os gerada uma advertncia para o cliente que a situao seja regularizada seno a venda no ser aceita Caso o usurio no seja gerente Habilitad Gerar Vendas Fluxo Na insero Bloquear OO a alterao do preo dos ora Alternativ de produtos Preos produtos dever ser bloqueada o na venda Caso seja o ms de aniversrio Deriva Gerar Vendas Fluxo Na GerarDescont OA do cliente, o desconto dever ser o Alternativ informao oAniversario preenchido com o valor de 5% o do valor do do total da venda desconto necessrio que o caixa esteja Restrio Gerar Vendas PrInicializao VerificarCaixa OA aberto para que uma venda seja Condie Aberto registrada, alterada ou excluda. s O valor de desconto no dever Restrio Gerar Vendas PsGravao da VerificarDesc OA ser superior a 5% da venda Condie Venda ontoMximo s Dever ser realizada uma Restrio Gerar Vendas PsGravao da VerificarCrdi OA checagem para apurar se o Condie Venda to cliente tem alguma duplicata s vencida e no paga, caso tenha a venda no dever ser aceita Na gravao da venda, devero Deriva Gerar Vendas Gatilhos Gravao da GerarDuplicat OO ser geradas duplicatas a receber, o Venda as uma para cada vencimento constante na condio de pagamento da venda. Na gravao da venda, caso Deriva Gerar Vendas Gatilhos Gravao da GerarRecebim OA algum dos vencimentos possua o Venda entoAVista o nmero de dias do vencimento igual a 0 (o que indica que a vista), dever ser gerado um recebimento relativo duplicata do vencimento em questo, no mesmo valor da duplicata Na gravao da venda, dever Habilitad Gerar Vendas Gatilhos Gravao da ChamarImpres OA ser impresso um border ora Venda saoBordero relativo venda O atributo data do movimento Restrio Movimentar PrGravao da VerificarAcess OA Regra Tipo Caso de Uso Seo Mdulo Artefato
Verificar Checagem CaixaAbe rto ChecaDes Checagem conto Verificar Checagem Credito
Venda
GeraDocs Receber
Venda
ImprimirB ordero
Verificar Checagem
86
s poder ser diferente da data do dia caso o usurio do sistema tenha nvel de acesso de gerente necessrio que o caixa esteja aberto para que um pagamento seja registrado, alterado ou excludo. Na gravao do pagamento, a data de pagamento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente. Aps a incluso de um novo pagamento a impresso do recibo acionada necessrio que o caixa esteja aberto para que um recebimento seja registrado, alterado ou excludo. Na gravao do recebimento, a data de recebimento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente. Caso o custo apurado de algum produto, seja 10% menor que o atual dever ser gerado um aviso de possibilidade de campanha promocional O preo de custo de cada produto dever ser atualizado com o valor constante na entrada mais o valor rateado dos custos adicionais. A cada atualizao do custo do produto o preo de venda do mesmo dever ser atualizado Devero ser gerados os documentos a pagar para o fornecedor, um para cada vencimento constante na entrada Estoque Condie Movimenta o s o X Acesso
Restrio Gerar PrInicializao VerificarCaixa Pagamento de Condie Aberto Documentos s Restrio Gerar PsGravao do VerificarAcess Pagamento de Condie Pagamento o Documentos s
Gatilhos
OO
Diretriz
OA
OO
Produto
AtualizarP rVenda
Aps a Gravao
GerarDocume ntos
OO
Entrada
GerarDocs Pagar
87 paradigma OA, como mostrado na Figura 4.10. Para projetar o ponto de juno dessa RN (que agora um aspecto), seguiu-se a orientao registrada na Lista de Regras que indicava que seu ponto de atuao deveria ser na inicializao da classe. Dessa forma, seu ponto de juno a instncia da classe (mtodo main) com o tipo de adendo before, o que possibilita que uma exceo seja gerada, caso o caixa da loja no esteja aberto.
b) Checar Desconto: O objetivo dessa RN verificar se o desconto concedido na venda no excedeu o desconto mximo permitido. Essa RN de negcio foi projetada no paradigma OA, como mostrado na Figura 4.11. Para projetar o ponto de juno dessa RN foi considerado o ponto de atuao indicado na relao de regras de negcio, que indicava que a RN deveria ser acionada na gravao da venda. Assim, seu ponto de juno foi projetado como a chamada do mtodo cadastra() com o tipo de adendo before, possibilitando assim que a venda no seja gravada, caso o desconto seja excessivo.
88
Na Figura 4.12 so mostradas RNs, mais relevantes, projetadas e modeladas no diagrama de classes. O diagrama de classes resultante proporciona uma viso ampla da parte esttica do software, com as RNs projetadas juntamente com as classes que compem o ncleo do software.
89
90
91
CONCLUSES
Neste trabalho foi apresentada uma abordagem para o desenvolvimento de software com RNs. Essa abordagem composta de um gabarito para a documentao de casos de uso, critrios de identificao de RNs, critrios para a classificao de RNs e critrios para a identificao de RNs candidatas a aspectos. Essa abordagem foi apoiada por um artefato para o registro das RNs identificadas no software. Para o projeto das RNs foram propostos esteretipos no diagrama de casos de uso e no diagrama de classes, e foi utilizada a notao proposta por Pawlak et al. (2004) para o projeto das RNs projetadas como aspectos. A abordagem foi estruturada como uma extenso do PU proposto por Jacobson et al. (1999) e apresentado por Larman (2007). Essa extenso criou novas atividades, e alterou atividades j existentes nas diversas matrias que compe o PU. Como parte da pesquisa foi conduzido um estudo de caso baseado na especificao de um software real. Esse estudo de caso foi til para validar a abordagem e fornecer detalhes para o enriquecimento e aprimoramento da abordagem.
Principais Contribuies
A principal contribuio deste trabalho foi fornecer meios ao engenheiro de software para que as RNs sejam modeladas de forma independente do ncleo do software. Isso ocorreu por meio de uma abordagem de desenvolvimento de software que possibilita que as RNs sejam identificadas e classificadas nas fases iniciais do desenvolvimento de software. A abordagem tambm permitiu que as RNs sejam registradas e projetadas de forma independente do ncleo do software. Essa abordagem foi estruturada como uma extenso do PU. Como contribuies secundrias podem ser citados: i) Critrios para a identificao de RNs: esses critrios apiam a identificao de RNs no documento de requisitos do software; ii) Critrios para a identificao de RNs candidatas a aspectos: esses critrios apiam a identificao de RNs, que pelas suas caractersticas mostram-se adequadas para serem projetadas com o paradigma OA; iii) Rastreamento das RNs: com o uso da abordagem no desenvolvimento do software foi possvel obter um rastreamento dos artefatos de software utilizados no projeto das RNs, isso foi possvel devido ao uso de artefatos que apiam esse quesito.
92
Limitaes
Uma das limitaes do presente trabalho a no utilizao de um formalismo mais forte na especificao das RNs. Ao invs do caminho trilhado poderia ter sido utilizado um formalismo na especificao das regras juntamente com mecanismos que permitissem a decomposio das regras em termos e fatos, e a vinculao desses termos e fatos a elementos de software. Com isso seria possvel solucionar um gap semntico que permaneceu na abordagem proposta, que o gap entre a especificao descritiva dos pontos de atuao das regras e os elementos de software que o viabilizam. Outra limitao presente a ausncia da aplicao da abordagem num ambiente de manuteno intensa do software desenvolvido, para que os conceitos de rastreabilidade, separao e posicionamento das RNs pudessem ser colocados prova.
Trabalhos Futuros
Para a continuidade do presente trabalho pode-se sugerir algumas linhas de pesquisa a serem seguidas que enriqueceria e complementaria a pesquisa atual, sendo elas: i) Prioridades das regras: seria importante dispor de alguns critrios, ou outro tipo de mecanismos, que permitissem estabelecer prioridade s regras/aspectos que atuam num mesmo ponto de juno; ii) Ferramenta de apoio: seria interessante o desenvolvimento de uma ferramenta que possibilitasse a automatizao de algumas tarefas da abordagem, como por exemplo o registro das RNs; iii) Formalismo: o uso de um formalismo mais bem definido na especificao das RNs apoiaria a relao entre regras e objetos, possibilitando uma facilidade maior na identificao de pontos de juno das regras/aspectos e poderia apoiar a automatizao na gerao de cdigos para as regras estabelecidas.
93
REFERNCIAS
ALHIR, Sinan Si. Learning UML. OReilly, 2003. APPLETON, Daniel S. Business Rules: The Missing Link. In Datamation Journal, 1984, pp. 145150. BAJEC, Marko; KRISPER , Marjan. A methodology and tool support for managing business rules in organisations. In: Information Systems v.30 n.6, p.423-443, 2004 BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML Guia do Usurio, Traduo de Fbio Freitas da Silva, Rio de Janeiro, Editora Campus Ltda, 2000. BUSINESS RULES GROUP. Defining Business Rules: What Are They Really?, 2000 Disponvel em: http://www.businessrulesgroup.org Acesso em: 15 Ago 2006. CAMARGO, Valter Vieira de. Frameworks transversais: definies, classificaes, arquitetura e utilizao em um processo de desenvolvimento de software. Tese Doutorado ICMC/USP, So Carlos, SP, 2006. CAMARGO, Valter Vieira de; MASIERO, Paulo Cesar. Frameworks Orientados a Aspectos. In XIX Simpsio Brasileiro de Engenharia de Software, Uberlndia, MG, Brasil, 2005. CIBRN, Mara Agustina; DHONDT, Maja. High-level specification of business rules and their crosscutting connections. In. 8th International Workshop on Aspect-Oriented Modeling at the International Conference on Aspect-Oriented Programming (AOSD'06), Bonn, Germany, 2006. CIBRN, Mara Agustina; DHONDT, Maja; JONCKERS, Viviane. Aspect-Oriented Programming for Connecting Business Rules. In. Proceedings Business Information Systems (BIS), Colorado Springs, USA, 2003 CIBRN, Mara Agustina; SUVE, Davy; DHONDT, Maja; VANDERPERREN, Win; JONCKERS, Viviane. Integrating Rules with Object-Oriented Software Applications using Aspect-Oriented Programming. In Proceedings of the International Conference of the Argentine Society for Computer Science and Operational Research (SADIO), Crdoba, Argentina, 2004. DATE, C. J. What Not How The Business Rules Approach to Application Development. Boston: Addison-Wesley, 2000. ELRAD, Tzilla; FILMAN, Robert. E.; BADER, Atef. Aspect-Oriented Programming. Communications of the ACM. Vol. 44, No 10. Outubro/2001a ELRAD, Tzilla; MEHMET, Aksit, KICZALES, Gregor; LIEBERHERR, Karl; OSSHER, Harold. Discussing Aspects of AOP. Communications of the ACM. Vol.. 44, No 10. Outubro/2001b.
94 ILOG JRULES, Bloor Research - ILOG Jrules 6.0 White Paper. Disponvel em: http://www.ilog.com/products/jrules/whitepapers/ Acesso em: 29 Set 2008. JACOBSON, I; BOOCH, G; RUMBAUGH, J. The Unified Software Development Process. Reading, MA. Addison-Wesley, 1999. JACOBSON, Ivar; Ng, Pan-Wei. Aspect-Oriented Software Development with Use Cases. Massachusetts: Addison-Wesley, 2004. KICZALES, Gregor; HILSDALE, Erik; HUGUNIN, Jim; KERSTEN, Mik; PALM, Jeffrey; GRISWOLD, William G. Getting Started with AspectJ. Communications of the ACM. Vol. 44, No 10. Outubro/2001. KICZALES, Gregor; HILSDALE, Erik; HUGUNIN, Jim; KERSTEN, Mik; PALM, Jeffrey; GRISWOLD, William G. An Overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP). Springer, 2001b. KORTHAUS A. Using UML for business object based systems modeling In The Unified Modeling Language - Technical Aspects and Applications, pg: 220-237. Physica-Verlag, Heidelberg, Alemanha, 1998 LARMAN, Craig. Utilizando UML e Padres: uma introduo anlise e ao projeto orientado a objetos e ao desenvolvimento iterativo. 3 ed. Porto Alegre: Bookman, 2007. MARTINS, Alissandra Evangelista. Em direo captura e representao sistemtica das definies dos termos das regras de negcio. Dissertao de Mestrado, Universidade Federal do Rio de Janeiro Ncleo de Computao Eletrnica, Rio de Janeiro, Brasil, 2006. MORGADO, G. P. Regula Uma Ferramenta para o Gerenciamento de Regras de Negcio. Monografia (Projeto Final de Curso), Universidade Federal do Rio de Janeiro Departamento de Cincia da Computao, Rio de Janeiro, Brasil, 2005. OMG Object Management Group -Unified Modeling Language Specification. Jan 2005. Disponvel em: <http://www.uml.org/>. Acesso em Abril/2007. PAWLAK, Renaud; DUCHIEN, Laurence; FLORIN, Gerard; LEGOND-AUBRY, Fabrice; SEINTURIER, Lionel; MARTELLI, Laurent. A UML Notation for Aspect Oriented Software Design. 1st International Conference on Aspect-Oriented Software Development. Enschede, Irlanda. 2002. PENDER, Tom. UML Bible. Indianapolis: Wiley Publishing, Inc, 2003. ROSS, Ronald G.; Principles of the Business Rule Approach. Boston: Addison-Wesley, 2003 RUMBAUGH, James; JACOBSON, Ivar; BOOCH, Grady. The Unified Modeling Language Reference Manual. Reading, Massachusetts: Addison-Wesley, 1998.
95 SOARES, Srgio; BORBA, Paulo. AspectJ Programao orientada a aspectos em Java. IV Simpsio Brasileiro de Linguagens de Programao. Rio de Janeiro, Brasil. 2002. VON HALLE, Barbara: Business rules applied: building better systems using the business rules approach. New York: John Wiley & Sons Inc, 2002. ZACHMAN, John A. Enterprise Architecture: The Issue of the Century. In: Database Programming and Design magazine, 1997. WIEGERS, Karl E. More about Software Requirements. Redmont, Washington: Microsoft Press, 2006 WINK, Diogo Vincius; GOETTEN JR, Vicente. AspectJ: Programao Orientada a Aspectos com Java. So Paulo: Novatec Editora, 2006 YU, Eric; DU BOIS, Philippe; DUBOIS, Eric; MYLOPOULOS, John. From Organization Models to System Requirements A Cooperating Agents Approach. In Proceeding of the Third International Conference on Cooperative Information Systems CoopIS-95, Vienna, Austria, 1995.
96
ANEXO A
Essa seo contm a listagem do cdigo do programa utilizado com exemplo para a compreenso das novas construes da POA. Esse programa composto pelos mdulos: Conta.java: a codificao da classe conta que implementa um controle de contas correntes.
public class Conta { private String Conta; private float Saldo; public Conta(String NrConta) { this.setConta(NrConta); this.setSaldo(0); } public void Debita(float Valor) { this.Saldo -= Valor; } public void Credita(float Valor) { this.Saldo += Valor; } public float getSaldo() { return this.Saldo; } public void setSaldo(float wSaldo) { this.Saldo = wSaldo; } public String getConta() { return this.Conta; } public void setConta(String wConta) { this.Conta = wConta; } public void mostraSaldo() { System.out.println("O Saldo da Conta " + this.getConta() + " " + this.getSaldo()); } }
97 aTaxaJuros.aj: a codificao do aspecto responsvel por implementar uma regra de negcio que exibe advertncias todas as vezes que uma operao resultar em um saldo negativo para a conta.
public aspect aTaxaJuros { private float Conta.TaxaJuros; public float Conta.getTaxaJuros() { return this.TaxaJuros; } public void Conta.setTaxaJuros(float wJuros) { this.TaxaJuros = wJuros; } public Conta.new(String NrConta, float TxJuros) { setConta(NrConta); setTaxaJuros(TxJuros); setSaldo(0); } pointcut AvisoSaldo(Conta wContaAviso) : call( * Conta+.mostraSaldo(..)) && target(wContaAviso); after(Conta wContaAviso) : AvisoSaldo(wContaAviso) { if(wContaAviso.getSaldo() < 0) { System.out.println(""); System.out.println("O Custo deste saldo ser de " + ((wContaAviso.getTaxaJuros() * wContaAviso.getSaldo())/100)*-1 + " ao ms."); System.out.println(""); } } }
Principal.Java: a codificao do mdulo principal do programa que instancia a classe Conta e realiza algumas operaes.
public class Principal { public static void main(String[] args) { Conta wConta = new Conta("1818-5",6); wConta.Credita(800); wConta.Debita(1000); wConta.mostraSaldo(); } }
98
APNDICE A
Nesta seo so apresentados os fundamentos tericos sobre POA. Na Seo A.1 so descritos os fundamentos das linguagens de programao que apiam a POA. Na Seo A.2 so detalhadas as novas construes fornecidas pelo paradigma POA.
Alm disso, uma linguagem tambm precisa respeitar as trs propriedades bsicas da POA (Elrad et al., 2001): Dicotomia aspectos-base: a separao entre classes e aspectos, em que as classes devem implementar os interesses bsicos e os aspectos os interesses transversais; Inconscincia: o conceito de que os componentes no precisam ser preparados para serem entrecortados por aspectos; Quantificao: a capacidade de escrever declaraes unitrias e independentes que podem afetar muitos pontos do sistema.
99 Por fim, uma Linguagem POA precisa ter o combinador aspectual (weaver) que o prprio compilador de aspectos, responsvel pela recomposio aspectual, sendo que, dado o cdigo fonte de um sistema e um conjunto de aspectos, ele gera uma verso do sistema com estes aspectos (Soares e Borba, 2002) Na prxima seo abordado como esses elementos foram aplicados Linguagem AspecJ.
Tabela A.1 Pontos de juno dinmicos do AspecJ (adaptado de Kiczales et al., 2001b) Tipo de ponto de juno Chamada de um mtodo ou construtor Recepo da chamada de um mtodo ou construtor Execuo de um mtodo ou construtor Acesso de leitura (get) a um atributo Acesso de modificao (set) de um atributo Execuo do manipulador de excees (handler exception) Inicializao de uma classe Inicializao de um objeto Ponto na execuo do programa em que... Um mtodo (ou um construtor de uma classe) chamado. Um objeto recebe a chamada de um mtodo ou construtor. A execuo de um mtodo individual ou construtor invocada. Um atributo de um objeto, classe ou interface lido. Um atributo de um objeto ou classe modificado. Uma exceo invocada. Ocorre a execuo de inicializadores estticos so executados Inicializadores dinmicos de uma executados durante a criao do objeto. classe so
100
101
Tabela A.2 Designadores disponveis em AspectJ (Wink e Goetten Jr, 2006) Designador Execution Call Initialization Handler Get Set This Target Args Cflow Cflowbelow staticinitialization Withincode Within IF adviceexecution preinitialization Descrio Corresponde execuo de um mtodo ou de um construtor. Corresponde chamada para um mtodo ou para um construtor. Corresponde inicializao de um objeto, representada pela execuo do primeiro construtor para a classe. Corresponde manipulao das excees. Corresponde referncia para um atributo de uma classe. Corresponde definio de um atributo de uma classe. Retorna o objeto associado com o ponto de juno em particular ou limita o escopo de um ponto de juno utilizando um tipo de classe. Retorna o objeto alvo de um ponto de juno ou limita o escopo do mesmo. Expe os argumentos para ponto de juno ou limita o escopo de um conjunto de juno. Retorna os pontos de juno na execuo do fluxo de outro ponto de juno Retorna os pontos de juno na execuo do fluxo de outro ponto de juno, exceto o ponto corrente. Corresponde inicializao dos elementos estticos de um objeto. Corresponde aos pontos de juno contidos em um mtodo ou construtor. Corresponde aos pontos de juno contidos em um tipo especfico. Permite que uma condio dinmica faa parte de um conjunto de juno. Corresponde ao adendo (advice) do ponto de juno. Corresponde pr-inicializao de um ponto de juno.
Na Figura A.1 mostrado um exemplo de conjunto de juno para um controle de contas correntes. Nesse exemplo o conjunto de juno VerificaSaldo ir entrecortar a chamada aos mtodos Debita() da classe Conta, quando chamado com quaisquer parmetros e com qualquer tipo de retorno, e ir tambm entrecortar o mtodo Credita(), da classe Conta e de todas as suas especializaes, com qualquer sufixo, ou seja, se existir um mtodo CreditaConta() este tambm ser entrecortado, desde que esses mtodos recebam dois parmetros do tipo inteiro (int) e retorne um valor tambm do tipo inteiro.
102
A2.3. Adendos
Segundo Kiczales et al. (2001b), adendo uma construo, semelhante a uma classe, usada para declarar que determinado cdigo deve ser executado em cada um dos pontos de juno de um conjunto de juno. Na Tabela A.3 so relacionados os tipos de adendos disponveis em AspectJ.
Tabela A.3 Tipos de adendos disponveis em AspectJ (Wink e Goetten Jr, 2006)
Designador Before
Descrio Executa quando o conjunto de juno alcanado, mas imediatamente antes da sua computao.
Executa aps a computao com sucesso do conjunto de juno. Executa aps a computao sem sucesso do conjunto de juno. Executa aps a computao do conjunto de juno, em qualquer situao.
Around
Executa quando o ponto de juno alcanado e tem total controle sobre a computao.
Os adendos do tipo before e os trs tipos de after so estritamente aditivos, fazendo com que o cdigo escrito no corpo do adendo seja executado antes ou depois da computao do ponto de juno capturado. O adendo around tem a capacidade de cercar o ponto de juno capturado fazendo com que o cdigo do ponto de juno seja executado em qualquer ponto do cdigo do corpo do adendo, ou ainda, podendo fazer com que o cdigo do ponto de juno execute mais de uma vez. Na Erro! Fonte de referncia no encontrada. mostrado um exemplo de adendo do tipo around para um aspecto que adiciona feriados municipais em uma funo de clculo de feriados. Os adendos ainda podem ter acesso a variveis especiais, reflexivas que fornecem informaes referentes ao ponto de juno capturado, essas variveis so: thisJoinPoint Encapsula informaes estticas e dinmicas do ponto de juno.
103 thisJoinPointStaticPart Guarda informaes do contexto esttico do ponto de juno. thisEnclosingJoinPointStaticPart Guarda informaes estticas do ponto de juno mais prximo, sentido acima, do capturado.
Figura Exemplo deadendo um adendo do around tipo around. Figura A.2 1.1 Exemplo de um do tipo
104 Declarao de erros de compilao customizveis ou avisos. Converso de excees checadas (checked exceptions) para no checadas (unchecked). Na Figura A.3 so mostrados exemplos de declarao intertipos para incluso de mtodos, construtores e atributos, em um aspecto cuja funo controlar o custo dos juros para contas bancrias cujos saldos sejam negativos, funcionalidade essa que no estava prevista na classe original (Conta).
A2.5. Aspectos
Aspectos so as principais unidades modulares para a implementao de um interesse transversal (Kiczales et al., 2001b). A forma de declarao dos aspectos, em AspectJ, similar forma de declarao de uma classe. O corpo do cdigo de um aspecto pode conter declaraes de conjuntos de juno, adendos, bem como outros tipos de declaraes permitidas em classes, ou seja, modificaes da estrutura esttica. O aspecto possui um especificador de acesso que segue a mesma regra dos especificadores de acesso para classes em Java.
105 A Linguagem AspectJ permite que aspectos abstratos possam ser construdos e reusados por outros aspectos posteriormente. Um aspecto pode tambm herdar caractersticas de outras classes e interfaces, no entanto, no permitido que uma classe estenda ou implemente um aspecto (Wink e Goetten Jr, 2006).
106
APNDICE B
Nesta seo so apresentados os documentos de requisitos do software utilizado no estudo de caso dessa dissertao:
B2.1. Cadastros
1. O sistema deve permitir a incluso, alterao e remoo de clientes, contendo os seguintes atributos: cdigo do cliente, nome, endereo, bairro, cidade onde mora, CEP, estado, telefone, email, RG, CPF e data de nascimento.
2. O sistema deve permitir a incluso, alterao e remoo de produtos de venda classificados por marca e grupo de produtos, com os seguintes atributos: referncia do item, descrio, unidade, cdigo de barra, preo de custo, margem de lucro, preo de venda e quantidade em estoque, estoque mnimo.
3. O sistema deve permitir a incluso, alterao e remoo de vendedores da loja, com os seguintes atributos: cdigo do vendedor, nome, endereo, cidade, CEP, estado, telefone, CPF, data de nascimento e % de comisso.
107 4. O sistema deve permitir a incluso, alterao e remoo de fornecedores da loja, com os seguintes atributos: razo social, endereo, bairro, cidade, estado, cep, telefone, CNPJ, e e-mail.
5. O sistema deve permitir a incluso, alterao e remoo das marcas dos produtos, com os seguintes atributos: cdigo da marca, nome da marca e margem de lucro.
6. O sistema deve permitir a incluso, alterao e remoo dos grupos de produtos, com os seguintes atributos: cdigo do grupo e descrio.
7. O sistema deve permitir a incluso, alterao e remoo de condio de pagamento, com os atributos: cdigo, descrio, % de desconto e nmero de dias para cada vencimento (num mximo de 6)
9. O sistema deve permitir a incluso, alterao e remoo de entrada de produtos, que so os produtos oriundos das compras efetuadas com os fornecedores, com os seguintes atributos: nmero da nota fiscal, cdigo do fornecedor, data de entrada, data de emisso da nota fiscal, custos adicionais, referncia dos produtos recebidos, quantidade de cada produto, valor unitrio de cada produto e condio de pagamento (que ser composta por
108 data de vencimento e valor, podendo se repetir at seis vezes). Na incluso ou alterao de entrada de produtos o preo de custo de cada produto dever ser atualizado com o valor constante na entrada mais o valor rateado dos custos adicionais. Na gravao da incluso, caso o custo apurado na entrada seja menor que o custo atual do produto, o custo do produto no dever ser atualizado e caso o percentual de reduo seja superior a 10% dever ser gerado um aviso ao usurio informando a possibilidade de uma campanha promocional para o produto, caso o custo apurado na entrada seja 20% maior que o custo atual do produto, dever ser gerado uma advertncia ao usurio, informando o percentual de aumento que o produto teve. A cada atualizao do custo do produto o preo de venda do mesmo dever ser atualizado. No ato da gravao de uma entrada de produtos, dever ser geradas movimentaes de estoque do tipo entrada, para cada produto informado, com a quantidade equivalente entrada e com a data igual a data de entrada. Ainda na gravao da entrada devero ser gerados os documentos a pagar para o fornecedor, um para cada vencimento constante na entrada, com os atributos: nmero do documento (que deve ser obtido com a juno do nmero da nota fiscal de entrada + o caractere - + o nmero da parcela + o caractere / + o total de parcelas), cdigo do fornecedor (igual ao da entrada), data de emisso (igual a data de emisso da nota fiscal), data de vencimento (igual a data do vencimento) e valor (igual ao valor do vencimento). Deve ser observado que mais de um fornecedor podem emitir o mesmo nmero de nota fiscal. Na alterao, as mudanas realizadas devem ser refletidas nas movimentaes geradas. Na excluso as movimentaes geradas devem ser excludas.
10. O sistema deve permitir a incluso, alterao e remoo de vendas, com os seguintes atributos: nmero da nota fiscal, data da venda, cdigo do cliente, cdigo do vendedor, cdigo da condio de pagamento, valor de desconto, cdigo dos produtos, quantidade dos produtos e valor unitrio dos produtos. Para que uma venda seja registrada necessrio que exista um caixa aberto. A data da venda dever ser igual a data atual. Caso o cliente no seja cadastrado o sistema deve permitir seu cadastro no ato da venda. O valor unitrio dos produtos dever ser o valor de venda constante no cadastro do produto tirado o desconto informado na condio de pagamento, e s poder ser alterado caso o usurio do sistema tenha nvel de acesso de gerente. Na gravao da venda, o valor de desconto no dever ser superior a 5% da venda. Na gravao da venda, os produtos constantes nela devero ter quantidade igual ou menor ao valor do atributo quantidade em
109 estoque, do cadastro de produto. Quando o cliente for informado dever ser checado se o ms de aniversrio dele o ms atual, caso seja, uma mensagem dever ser exibida, e na gravao da venda, o valor do desconto dever ser equivalente a 5% do total. Dever tambm ser realizada uma checagem para apurar se o cliente ter alguma duplicata que ir vencer nos prximos 7 dias, caso tenha uma mensagem dever ser exibida para o usurio e dever ser mostrada a pesquisa financeira com os dados do cliente;. No ato da gravao de uma venda, alguns procedimentos devero ser executados: i) dever ser geradas movimentaes de estoque do tipo sada, para cada produto informado, com a quantidade equivalente quantidade vendida e com a data igual a data da venda; ii) devero ser geradas duplicatas a receber, uma para cada vencimento constante na condio de pagamento da venda, com os atributos: nmero da duplicata (que deve ser obtido com a juno do nmero da venda + o caractere - + o nmero da parcela + o caractere / + o total de parcelas), cdigo do cliente (igual ao da venda), data de emisso (igual a data da venda), data de vencimento (data da venda + nmero de dias da parcela) e valor (valor total da venda dividido pelo nmero de parcelas); iii) caso algum dos vencimentos possua o nmero de dias do vencimento igual a 0 (o que indica que a vista), dever ser gerado um recebimento relativo duplicata do vencimento em questo, no mesmo valor da duplicata; iv) dever ser realizada uma checagem para apurar se o cliente tem alguma duplicata vencida e no paga, caso tenha a venda no dever ser aceita. Aps a venda ser gravada, dever ser emitido um border com todos os dados relativos venda. Todas as informaes geradas no ato da gravao da venda devero ter as mudanas, referente a alteraes, refletidas em seus dados. Na excluso todas as informaes geradas no ato da gravao de uma venda devem ser excludas.
11. O sistema dever permitir o recebimento de duplicatas previamente geradas no ato da venda. Para que um recebimento seja registrado necessrio que exista um caixa aberto. Devero ser preenchidos os atributos data do recebimento e valor. O valor de um recebimento dever ser menor ou igual ao valor em aberto (diferena entre valor valor pago) de uma duplicata. Quanto o total j pago de uma duplicata for igual ao seu valor o atributo quitada dever ser preenchido com o valor 1. A data de recebimento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente. Na alterao ou excluso de recebimentos o valor do atributo quitada deve ser reavaliado.
110 12. O sistema dever permitir o pagamento de documentos previamente gerado no ato da entrada de produtos. Para que um pagamento seja registrado necessrio que exista um caixa aberto. Os pagamentos podero ser feitos por usurios que tenham nvel de acesso de caixa ou gerente. Devero ser preenchidos os atributos data do pagamento e valor. O valor de um pagamento dever ser menor ou igual ao valor em aberto (diferena entre valor valor pago) de um documento. Quanto o total j pago de um documento for igual ao seu valor o atributo quitado dever ser preenchido com o valor 1. A data de pagamento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente. Na alterao ou excluso de pagamentos o valor do atributo quitado deve ser reavaliado.
13. O sistema dever possuir o controle de caixa, que deve ser aberto todas as vezes que o sistema entrar em operao. Sem que o caixa esteja aberto o sistema deve bloquear as aes de venda, recebimento e pagamento. Os demais procedimentos podem ser acessveis. Quando um caixa aberto o sistema deve trazer o troco restante do caixa anterior como valor inicial para o caixa atual. No fechamento de caixa, o sistema deve mostrar todos os recebimentos e pagamentos do caixa atual, e mostrar o saldo, considerando o saldo de abertura (saldo inicial + recebimentos pagamentos) e perguntar ao usurio qual o saldo que ficar no caixa (troco). O registro do caixa dever possuir os seguintes atributos: data abertura, seqncia, saldo inicial, total de recebimentos, total de pagamentos e saldo final. Para que um usurio possa abrir ou fechar o caixa ele dever ter nvel de acesso de gerente, ou de caixa.
15. O sistema deve permitir uma pesquisa de produtos vendidos por cliente, que dever constar: referncia do produto, descrio, data da venda, quantidade e valor unitrio.
111
17. O sistema deve permitir a impresso de um recibo no ato de um recebimento de duplicata, contendo: nmero da duplicata, data de emisso, data de vencimento, nome e CPF do cliente, valor do pagamento, valor do pagamento por extenso e data de pagamento
18. O sistema deve permitir, opcionalmente, a impresso de um recibo no ato de um pagamento de documento, contendo: nmero do documento, data de emisso, data de vencimento, nome e CNPJ do fornecedor, valor do pagamento, valor do pagamento por extenso e data de pagamento
19. O sistema deve permitir a impresso de um relatrio de caixa no ato do procedimento de fechamento de caixa, contendo: saldo inicial, recebimentos (nmero da duplicata, nome do cliente, data de vencimento, valor da duplicata e valor do recebimento), pagamentos (nmero do documento, nome do fornecedor, data de vencimento, valor do documento e valor do pagamento), saldo final e troco em caixa.
20. O sistema deve permitir a impresso de uma listagem de estoque contando referncia, descrio, tipo de produto, unidade, quantidade em estoque. Devero ser includos todos os produtos cujo atributo quantidade em estoque seja maior que zero, ordenada pelos atributos: Tipo de produto + descrio do produto.
21. O sistema deve permitir a impresso de uma listagem dos produtos que estejam com estoque abaixo do mnimo estabelecido, ou seja, todos os produtos cujo atributo quantidade em estoque seja menor ou igual ao atributo estoque mnimo. A listagem dever ser ordenada pelos atributos: tipo de produto + descrio do produto, e dever conter: referncia, descrio, unidade, tipo de produto, quantidade em estoque e estoque mnimo.
112 22. O sistema deve permitir a impresso de uma listagem de valores de comisso. Os dados de entrada para essa listagem sero: cdigo do vendedor, data inicial da apurao e data final da apurao. A listagem dever conter: nmero da venda, data da venda, nome do cliente, valor total da venda, % de comisso e valor da comisso. Os campos total d a venda e valor da comisso devero ser totalizados. O percentual da comisso deve ser obtido no cadastro do vendedor. A listagem dever ser ordenada pela data da venda.
23. O sistema deve permitir a impresso de uma listagem de vendas por perodo. Os dados de entrada para essa listagem sero: data inicial e data final. Dever constar: nmero da venda, data da venda, nome do cliente e valor total da venda. O valor total da venda dever ser totalizado. A listagem deve ser ordenada pela data da venda, e devero ser filtradas as vendas relativas ao intervalo de datas informado.
24. O sistema deve permitir a impresso de uma listagem de produtos vendidos por perodo Os dados de entrada para essa listagem sero: data inicial e data final. Dever constar: referncia do produto, quantidade vendida, valor total vendido e valor mdio (deve ser o resultado da diviso do valor total vendido pela quantidade vendida). O valor total vendido dever ser totalizado. A listagem deve ser ordenada pela descrio do produto, e devero ser filtradas as vendas relativas ao intervalo de datas informado.
25. O sistema deve permitir a impresso de uma listagem de contas a receber. Os dados de entrada para essa listagem sero: data inicial e data final. Dever constar: Nmero da duplicata, nome do cliente, data de emisso, data de vencimento, valor da duplicata, valor pago, saldo a receber. Devero ser filtradas as duplicatas que no estejam quitadas (campo quitada <> 1), e cuja data de vencimento esteja no intervalo de datas informado. A listagem dever ser ordenada pela data de vencimento + nome do cliente.
113 27. O sistema deve fornecer facilidades para a realizao de backups dos arquivos do sistema.
28. O sistema deve possuir senhas de acesso e identificao para diferentes tipos de usurios: administrador do sistema, gerente e vendedores.
B3.2. Eficincia
29. O sistema deve responder a consultas on-line em menos de 5 segundos.
30. O sistema deve iniciar a impresso de relatrios solicitados dentro de no mximo 20 segundos aps sua requisio.
31. Todas as rotinas que possuem a referncia de um produto como entrada, devero estar preparadas para receber tanto a referncia digitada manualmente, quanto o cdigo de barra do produto, obtido por meio de um leitor de cdigo de barras.
B3.3. Portabilidade
32. O sistema deve ser executado em computadores Pentium 200mHz ou superior, com sistema operacional Windows 98 ou acima.
33. O sistema deve ser capaz de armazenar os dados em base de dados SQL-Server.
114
APNDICE C
Nesta seo so apresentadas as documentaes relativas aos casos de uso que possuem RNs. Esses casos de uso esto descritos nas prximas sees:
Condio
115 Negcio Ps-Condies: Origem Verificar se o caixa imediatamente anterior est devidamente fechado Condio
3.1 3.2
3.3
Negcio Habilitador
3.4
Negcio Diretriz
O cliente no foi encontrado pelo usurio O cliente possui duplicatas a vencer nos prximos 7 dias. O cliente possui duplicatas a vencer nos prximos 7 dias. O cliente possui duplicatas vencidas e no pagas. O usurio no possui status de gerente. O ms atual o mesmo da data de
5.1 7.1
116 aniversrio do cliente. 8.1 9.1 Sistema Sistema 5% do total da venda Caso seja uma excluso, a venda removida do sistema Caso seja uma edio, as mudanas ocorridas nos produtos informados na venda so refletidas nas movimentaes de estoque Caso seja uma excluso, todas as movimentaes de estoque geradas devem se excludas
9.2
Sistema
Pr-Condies: Origem Negcio Ps-Condies: Origem Negcio Negcio Condio Na gravao da venda, o valor de desconto no dever ser superior a 5% da venda Na gravao da venda, os produtos constantes nela devero ter quantidade igual ou menor ao valor do atributo quantidade em estoque, do cadastro de produto Na gravao da venda, dever ser realizada uma checagem para apurar se o cliente tem alguma duplicata vencida e no paga, caso tenha a venda no dever ser aceita Ao Condio necessrio que o caixa esteja aberto para que uma venda seja registrada, alterada ou excluda.
Negcio
Gatilhos: Tipo de Gatilho Caso de Uso Diretriz Habilitador Derivao X Gerar Duplicatas a Receber
Na gravao da venda, devero ser geradas duplicatas a receber, uma para cada vencimento constante na condio de pagamento da venda, com os atributos: nmero da duplicata (que deve ser obtido com a juno do nmero da venda + o caractere - + o nmero da parcela + o caractere / + o total de parcelas), cdigo do cliente (igual ao da venda), data de emisso (igual a data da venda), data de vencimento (data da venda + nmero de dias da parcela) e valor (valor total da venda dividido pelo nmero de parcelas) Informar Na gravao da venda, caso algum dos Recebimento vencimentos possua o nmero de dias do de Duplicata vencimento igual a 0 (o que indica que a vista), dever ser gerado um recebimento
117 relativo duplicata do vencimento em questo, no mesmo valor da duplicata Imprimir Aps a gravao da venda, dever ser Border de impresso um border relativo venda. Venda
118 de produtos Fluxo Principal: Seq Descrio 1 O documento que ser a base do pagamento informada ou identificada 2 A data de pagamento informada 3 O valor do pagamento informado 4 O atributo quitado atualizado 5 O pagamento gravado Fluxo Alternativo: Seq Origem Tipo Condio Ao 1.1 Sistema Um pagamento j existente informado ou localizado, e inicia-se o processo de edio. 1.2 Sistema Um pagamento j existente pesquisado e o processo de remoo acionado, nesse caso o fluxo desviado para a seqncia 5. 3.1 Sistema O valor do pagamento deve ser menor que o valor do documento menos o valor j pago, caso contrrio uma advertncia gerada e fluxo retorna para a seqncia 3 Pr-Condies: Origem Condio Negcio necessrio que o caixa esteja aberto para que um pagamento seja registrado, alterado ou excludo. Ps-Condies: Origem Condio Negcio Na gravao do pagamento, a data de pagamento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente. Gatilhos: Tipo de Gatilho Caso de Gatilho Uso Diretriz Habilitador Derivao X Imprimir Aps a incluso de um novo pagamento a Recibo de impresso do recibo acionada Pagamento
119 1.2 Sistema o processo de edio. Um recebimento j existente pesquisado e o processo de remoo acionado, nesse caso o fluxo desviado para a seqncia 5. O valor do recebimento deve ser menor que o valor da duplicata menos o valor j pago, caso contrrio uma advertncia gerada e fluxo retorna para a seqncia 3
3.1
Sistema
Condio necessrio que o caixa esteja aberto para que um recebimento seja registrado, alterado ou excludo. Condio Na gravao do recebimento, a data de pagamento dever ser a data do dia, a menos que o usurio do sistema tenha nvel de acesso de gerente.
120 7.3 Negcio Diretriz produto, seja 10% menor que o atual Caso o custo apurado, de algum produto, seja 20% maior que o atual possibilidade de campanha promocional. Na incluso, dever ser gerada uma advertncia ao usurio. Caso seja uma edio, as mudanas ocorridas nos produtos informados no recebimento so refletidas nas movimentaes de estoque Caso seja uma excluso, todas as movimentaes de estoque geradas devem se excludas
8.1
Sistema
8.2
Sistema
Condio Condio
Na incluso ou alterao de entrada de produtos o preo de custo de cada produto dever ser atualizado com o valor constante na entrada mais o valor rateado dos custos adicionais. A cada atualizao do custo do produto o preo de venda do mesmo dever ser atualizado. Gerar Na gravao da entrada devero ser Documentos gerados os documentos a pagar para o a Pagar fornecedor, um para cada vencimento constante na entrada, com os atributos: nmero do documento (que deve ser obtido com a juno do nmero da nota fiscal de entrada + o caractere - + o nmero da parcela + o caractere / + o total de parcelas), cdigo do fornecedor (igual ao da entrada), data de emisso (igual a data de emisso da nota fiscal), data de vencimento (igual a data do vencimento) e valor (igual ao valor do vencimento)
Gatilho