BRPI0909274A2 - process for automated software generation - Google Patents

process for automated software generation Download PDF

Info

Publication number
BRPI0909274A2
BRPI0909274A2 BRPI0909274-9A BRPI0909274A BRPI0909274A2 BR PI0909274 A2 BRPI0909274 A2 BR PI0909274A2 BR PI0909274 A BRPI0909274 A BR PI0909274A BR PI0909274 A2 BRPI0909274 A2 BR PI0909274A2
Authority
BR
Brazil
Prior art keywords
generation
architectural
interest
design
tool
Prior art date
Application number
BRPI0909274-9A
Other languages
Portuguese (pt)
Inventor
Jose Carlos Cordeiro Martins
Original Assignee
Compugraf Telecom Ltda
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compugraf Telecom Ltda filed Critical Compugraf Telecom Ltda
Priority to BRPI0909274-9A priority Critical patent/BRPI0909274A2/en
Publication of BRPI0909274A2 publication Critical patent/BRPI0909274A2/en

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

<B>PROCESSO PARA GERAçãO AUTOMATIZADA DE SOFTWARE.<D> é proposto um processo de geração automática de programas fonte com base no MDA. Para orientar o processo de geração de código, são usadas regras de marcação padronizadas, inseridas em modelos UML por meio de lagged values, extensões e anotações. Essas regras indicam o interesse arquitetural e o padrão dc projeto que deverá ser usado ao gerar os programas fonte. O PROGERAS é proposta de extensão ao MDA, aplicando os conceitos do AOD e do POA para gerar programas fonte de forma automatizada a partir de um diagrama de classes (PIM). Com essa proposta, acredita-se ser possível não só obter um elevado nível de automação no processo de produção do software, forçar o uso de padrões, aumentar a qualidade e a consist6ncia, como também ganhar produtividade.<B> PROCESS FOR AUTOMATED SOFTWARE GENERATION. <D> A process of automatic generation of source programs based on MDA is proposed. To guide the code generation process, standard markup rules are used, inserted into UML models through lagged values, extensions, and annotations. These rules indicate the architectural interest and design pattern that should be used when generating the source programs. PROGERAS is proposed as an extension to MDA, applying the concepts of ODA and POA to generate source programs automatically from a class diagram (PIM). With this proposal, it is believed that it is possible not only to achieve a high level of automation in the software production process, to enforce the use of standards, to increase quality and consistency, but also to gain productivity.

Description

"PROCESSO PARA GERAÇÃO AUTOMATIZADA DE SOFTWARE"INTRODUÇÃO/ESTADO DA TÉCNICA"PROCESS FOR AUTOMATED SOFTWARE GENERATION" TECHNICAL INTRODUCTION / STATUS

No presente pedido é proposto um processo para geração de programas a partirde modelos UML, como sugerido no MDA (Model-Driven Architecture). O MDA é umprocesso de desenvolvimento de software criado e publicado pela OMG (ObjectManagement Group), em 2001, e tem como base um conjunto de práticas e padrões paradesenvolvimento de software por meio da transformação de modelos. O MDA estáfundamentado em outros padrões também definidos pela OMG: UML (Unified ModelingLanguage) para modelagem, MOF (Meta-Object Facility) para definição de linguagens demodelagem, XMI (XML Metadata Interchange) para armazenamento de modelos e QVT('Query View Transformation) para transformação de modelos (Mellor et alli., 2005).This application proposes a process for generating programs from UML models, as suggested in the MDA (Model-Driven Architecture). MDA is a software development process created and published by OMG (ObjectManagement Group) in 2001 and is based on a set of software development practices and standards through model transformation. The MDA is based on other standards also defined by OMG: Unified ModelingLanguage (UML) for modeling, Meta-Object Facility (MOF) for definition of modeling languages, XML Metadata Interchange (XMI) for model storage, and Query View Transformation (QVT) for model transformation (Mellor et alli., 2005).

O MDA é uma especialização do MDD (Model-Driven Development), umaabordagem na qual considera-se que os modelos de análise e projeto estão no mesmo níveldos programas fontes, buscnado transferir o trabalho da programação para a construção demodelos (Stahl et alli., 2006). O objetivo do MDA e do MDD é desenvolver sistemascompletos de forma automatizada por meio da ligação e transformação de modelos e nofinal gerar programas fonte. Na abordagem MDA estão definidas quatro categorias demodelos, que são o CIM (Computer Indepent Model), o PIM (Platform Indepent Model), oPSM (Platform Specific Model) e os programas-fonte. O CIM é usado para modelar osprocessos de negócio e a estrutura das informações. O PIM é um modelo utilizado paradescrever a estrutura do sistema sem levar em consideração a plataforma na qual seráimplementado. Esse modelo pode consistir de diagramas de classes, estados, seqüência,dentre outros. O PSM consiste de um refinamento do PIM, no qual é considerada umaplataforma específica e ele lida com o sistema operacional, linguagem de programação,tecnologia da plataforma (.NET, J2EE, CORBA, etc.), distribuição, dentre outros detalhestécnicos. No MDA o programa fonte também é considerado como sendo um modelo, que éo refinamento do PSM. As seguintes contribuições do MDA são destacadas em Biffl etalli. (2007):Melhoria da produtividade aliada à redução de prazo e custo, decorrente daautomação da geração de modelos e programas fonte.MDA is a specialization of Model-Driven Development (MDD), an approach in which analysis and design models are considered to be on a par with source programs, seeking to shift programming work to model building (Stahl et alli. 2006). The goal of MDA and MDD is to develop complete systems in an automated way by linking and transforming models and ultimately generating source programs. The MDA approach defines four categories of models, namely Computer Indepent Model (CIM), Platform Indepent Model (PIM), Platform Specific Model (PSM), and source programs. CIM is used to model business processes and information structure. PIM is a model used to describe the system structure without regard to the platform on which it will be implemented. This model can consist of class, state, sequence, and other diagrams. The PSM consists of a PIM refinement, which is considered a platform specific and deals with the operating system, programming language, platform technology (.NET, J2EE, CORBA, etc.), distribution, among other technical details. In MDA the source program is also considered to be a model, which is the refinement of PSM. The following MDA contributions are highlighted in Biffl etalli. (2007): Productivity improvement combined with time and cost reduction, due to the automation of the generation of models and source programs.

Maior foco no negócio, decorrente da mudança do enfoque do desenvolvedor quepassa a trabalhar principalmente no CIM e no PIM para construir modelosconceituais, ao invés de ter que se aprofundar em detalhes lógicos e técnicos.Increased focus on the business as a result of a change in developer focus, working mainly at CIM and PIM to build conceptual models, rather than having to go deeper into logical and technical details.

Aumento da portabilidade, visto que o mesmo PIM pode ser transformado emmodelos PSM para diferentes plataformas e linguagens.Increased portability as the same PIM can be transformed into PSM models for different platforms and languages.

Simplificação do processo de mudança, já que essas precisam ser feitas apenas noCIM e no PIM, e depois propagadas para os modelos PSM e programas fonteautomaticamente.Simplifying the change process, as these only need to be done in CIM and PIM, and then propagated to PSM models and programs automatically.

Aumento do reuso, por meio da reutilização das rotinas e regras de transformação egeração de programas fonte.Increased reuse through the reuse of routines and rules of transformation and generation of source programs.

Sabe-se que o uso do MDA pode resultar em diversas melhorias, tais como: (i)melhorias no requisito de portabilidade, devido à separação do conhecimento de negóciode sua implementação numa tecnologia específica; (ii) aumento de qualidade, devido aoreuso de padrões e práticas bem testadas no processo de transformação; (iii) melhoria nafacilidade de manutenção, devido à separação de interesses e obtenção de maiorconsistência e geração de trilhas entre modelos e programas fonte. Contudo, o MDAapresenta uma lacuna importante por não apresentar suporte adequado para elaboração do projeto técnico da arquitetura, uma vez que a concepção da arquitetura do software não éconsiderada na visão do MDA. A ausência dessa característica tem sido um campo fértilpara pesquisas, que estão no campo do ACMDA (Architecture-Centric MDA) e Aspect-Oriented MDA, e que propõem o uso do AOD (Aspeet-Oriented Design), do POA(.Pattern-Oriented Arehiteeture) e do AOP (.Aspeet-Oriented Programming) como meiospara estender o MDA.It is known that the use of MDA may result in several improvements, such as: (i) improvements in the portability requirement due to the separation of business knowledge from its implementation in a specific technology; (ii) increased quality due to the use of well-tested standards and practices in the transformation process; (iii) improved ease of maintenance due to separation of interests and greater consistency and generation of trails between models and source programs. However, MDA has a major shortcoming because it does not provide adequate support for the design of the technical architecture project, since the design of the software architecture is not considered in the MDA view. The absence of this feature has been a fertile field for research, which is in the field of Architecture-Centric MDA (ACMDA) and Aspect-Oriented MDA, and that propose the use of POA (.Pattern-Oriented) (Aspeet-Oriented Design). Arehiteeture) and AOP (.Aspeet-Oriented Programming) as a means to extend MDA.

Na filosofia do Pattern-Oriented Arehiteeture (POA), a arquitetura de umsoftware pode ser construída por meio do reuso de soluções estruturais prontas, que são ospadrões de projeto. O POA pode trazer várias contribuições para aumento da qualidade eprodutividade, ou seja:• Prover soluções bem conhecidas e testadas para o projeto da arquitetura, reduzindoo esforço e os riscos de especificação.In the Pattern-Oriented Arehiteeture (POA) philosophy, software architecture can be built by reusing ready-made structural solutions, which are the design patterns. The POA can make a number of contributions to increased quality and productivity, such as: • Providing well-known and tested solutions for architectural design, reducing effort and specification risks.

• Prover meios para documentar as decisões pertinentes à arquitetura.• Provide means for documenting architectural decisions.

• Facilitar a comunicação entre os participantes do projeto por meio de umvocabulário padronizado.• Facilitate communication between project participants through a standardized vocabulary.

• Descrever os atributos de qualidade associados a cada solução.• Describe the quality attributes associated with each solution.

Segundo o Aspect-Oriented Design (AOD), a arquitetura de um software podeser projetada e implementada a partir da especificação de interesses arquiteturais(iarchitectural concerns) como persistência, apresentação, auditoria, dentre outros. Essesinteresses podem ser especificados e implementados por meio da aplicação de padrões deprojeto. O AOD é derivado do Aspect-Oriented Programming (AOP) que é uma técnica deprogramação que permite endereçar umas das principais limitações da programaçãoorientada a objetos, que é a modularização dos interesses arquiteturais que atravessamvários elementos da estrutura do software (crosscutting concerns), como persistência,tratamento de erros, segurança, dentre outros. O AOD provê mecanismos para identificar eprojetar esses interesses e depois combiná-los com o resto dos programas. Dentre osprincipais benefícios do AOD, destacam-se:According to Aspect-Oriented Design (AOD), software architecture can be designed and implemented based on specification of iarchitectural concerns such as persistence, presentation, auditing, among others. These interests can be specified and implemented by applying design patterns. AOD is derived from Aspect-Oriented Programming (AOP), which is a programming technique that addresses one of the main limitations of object-oriented programming, which is the modularization of architectural interests that cross various elements of software structure (crosscutting concerns), such as persistence. , error handling, security, among others. ODA provides mechanisms for identifying and projecting these interests and then combining them with the rest of the programs. The main benefits of ODA include:

Centralizar a localização do código associado à implementação de umafuncionalidade específica, por meio de um aspecto. Por exemplo, no AOP oprograma pertinente à persistência fica concentrado num aspecto, que depois écombinado com o resto dos programas no momento da compilação. Isso aumenta acoesão e reduz o acoplamento entre os elementos da arquitetura.Centralize the location of code associated with implementing a specific feature by one aspect. For example, in the AOP persistence-relevant program is focused on one aspect, which is then combined with the rest of the programs at compile time. This increases action and reduces coupling between architectural elements.

• Automatizar o processo de geração de programas, combinando múltiplos aspectospara gerar o software. Isso pode resultar em ganho de produtividade e qualidade,assim como redução de custo.• Automate the program generation process by combining multiple aspects to generate the software. This can result in increased productivity and quality as well as cost savings.

Na abordagem do MDA falta abordar a questão do projeto técnico daarquitetura, o que inclui o tratamento dos requisitos não-funcionais. Algumas pesquisaspropõem a combinação do MDA com o AOD como meio para lidar com os interessestransversais e outras propõem a combinação do MDA com o POA para lidar com asdecisões pertinentes à arquitetura. O PROGERAS poderá ser usado como uma extensão aoMDA, adicionando os benefícios associados ao AOD e ao POA.The MDA approach has to address the technical design issue of architecture, which includes addressing non-functional requirements. Some research proposes combining MDA with ODA as a means to deal with cross-cutting interests, and others propose combining MDA with POA to deal with architectural decisions. PROGERAS can be used as an extension to MDA, adding the benefits associated with ODA and POA.

Apesar de o MDA apresentar uma lacuna quanto ao projeto da arquitetura, asferramentas que o utilizam propiciam vários benefícios para os desenvolvedores desoftware. Há uma discussão sobre a adoção do MDA como meio de aumento deprodutividade e também é apresentada uma avaliação baseada no uso do OptimalJ. Há umalista extensa de ferramentas para geração de programas-fonte, compatíveis com o MDA eMDD. Algumas delas, como o CodeSmith, .netTiers, AndroMDA, MyGeneration, dentreoutras, foram testadas durante o a concepção do processo para geração automatizada deprogramas fontes, objeto do presente pedido, doravante denominado PROGERAS, comomeio para automatizar etapas do processo. Porém todas elas esbarram na limitação de nãodeixar explícitas as escolhas arquiteturais feitas pelos geradores ao criar os programasfonte e fornecem suporte limitado para que o arquiteto possa influenciar essas escolhas.Although MDA has a gap in architectural design, tools that use it provide many benefits to software developers. There is a discussion about the adoption of MDA as a means of increasing productivity and an evaluation based on the use of OptimalJ is also presented. There is an extensive list of source program generation tools compatible with MDA eMDD. Some of them, such as CodeSmith, .netTiers, AndroMDA, MyGeneration, among others, were tested during the design of the process for automated generation of source programs, object of the present application, hereafter called PROGERAS, starting to automate process steps. But all of them run into the limitation of not explicitly leaving architectural choices made by generators when creating source programs and provide limited support for the architect to influence those choices.

Este tipo de abordagem carece de um mecanismo formal, padronizado e flexível quepermita ao arquiteto indicar o que deve ser gerado, já que cada software tem necessidadesespecificas e não deveriam ser geradas nem mais nem menos linhas de programas e rotinasque o necessário.This type of approach lacks a formal, standardized and flexible mechanism that allows the architect to indicate what should be generated, as each software has specific needs and should not be generated any more or less program lines and routines than needed.

BREVE DESCRIÇÃO DAS FIGURAS.BRIEF DESCRIPTION OF THE FIGURES.

A figura 1 mostra esquematicamente o fluxograma do processo de geração deprogramas fonte, objeto do presente pedido, com o detalhamento e a marcação do modelo egeração do código;Figure 1 shows schematically the flowchart of the source program generation process, object of the present application, with the detailing and marking of the code generation model;

A figura 2 mostra o processo de geração de programas-fonte de um softwareusando um gerador;Figure 2 shows the process of generating software source programs using a generator;

A figura 3 exibe diagrama de contexto da ferramenta de geração de código combase no PROGERAS;A figura 4 mostra projeções do modelo de domínio por interesse arquitetural;Figure 3 shows context diagram of the combase code generation tool in PROGERAS Figure 4 shows domain model projections by architectural interest;

A figura 5 mostra Templates (Modelos padrões) implementados no protótipo daferramenta de geração de programas-fontes (batizado de Genesys) criado para demonstraro PROGERAS;Figure 5 shows Templates implemented in the prototype Source Generation Tool (named Genesys) created to demonstrate PROGERAS;

A figura 6 mostra um exemplo do Modelo de Domínio do Sistema deReembolso de Despesas;Figure 6 shows an example of the Expense Refund System Domain Model;

A figura 7 exibe um exemplo do Diagrama de Componentes do Sistema deReembolsos;Figure 7 shows an example of the Refund System Component Diagram;

A figura 8 mostra um Diagrama de Pacotes descrevendo as camadas do Sistemade Reembolsos;Figure 8 shows a Package Diagram depicting the layers of the Refund System;

DESCRIÇÃO DETALHADA DA INVENÇÃODETAILED DESCRIPTION OF THE INVENTION

Processo para Geração Automatizada de SoftwaresProcess for Automated Software Generation

A arquitetura de um software consiste em uma estrutura ou estruturas dosistema que, por sua vez, se formam pelos elementos do software, das propriedadesvisíveis externamente demonstradas por esses elementos e nas relações entre eles. Asnecessidades do negócio vão determinar os atributos de qualidade que a arquitetura dosistema precisará apresentar. Somadas a outros requisitos técnicos (sistema operacional,linguagem, dentre outros) vão orientar o arquiteto na identificação dos interessesarquiteturais relevantes e na seleção das abordagens técnicas que serão utilizadas (padrõesde projeto, algoritmos, estruturas de dados, dentre outras). Essas características técnicassão transversais aos requisitos funcionais, que descrevem as capacidades, serviços e ocomportamento do software. O mapeamento das funcionalidades do sistema na estrutura desoftware vai determinar o suporte da arquitetura aos requisitos de qualidade.Software architecture consists of a system structure or structures that, in turn, are formed by the software elements, the externally visible properties of these elements, and the relationships between them. Business needs will determine the quality attributes that the system architecture will need to present. In addition to other technical requirements (operating system, language, among others) will guide the architect in identifying relevant architectural interests and in selecting the technical approaches that will be used (design patterns, algorithms, data structures, among others). These technical characteristics are transversal to the functional requirements, which describe the capabilities, services and behavior of the software. Mapping system functionality within the software framework will determine the architecture's support for quality requirements.

A arquitetura de um software decorre de múltiplos interesses, alguns associadosàs funções de infra-estrutura (persistência, geração de logs, tratamento de exceções, dentreoutros) e outros associados às funções de negócio, sendo que os primeiros são construídospara suportar o segundo. A forma como os interesses arquiteturais são especificados variaem função dos atributos de qualidade que o software precisa atender. Cada interesse podeser implementado por meio do uso de táticas arquiteturais bem conhecidas (padrões deprojeto), que permitem maximizar certos atributos de qualidade. Um padrão de projetopode estar associado a várias táticas, e vice-versa. Um padrão de projeto também podeestar associado a mais de um interesse, e vice-versa. Por exemplo, numa implementação odesenvolvedor pode criar um mecanismo para gerar trilha de Iog (para suportar asegurança) ou trilha de testes (para suportar a facilidade de ser testado).The architecture of a software stems from multiple interests, some associated with infrastructure functions (persistence, logging, exception handling, among others) and others associated with business functions, the former being built to support the latter. The way architectural interests are specified vary depending on the quality attributes that the software needs to meet. Each interest can be implemented through the use of well-known architectural tactics (design patterns) that allow you to maximize certain quality attributes. A design pattern may be associated with various tactics, and vice versa. A design pattern may also be associated with more than one interest, and vice versa. For example, in a developer implementation you can create a mechanism to generate Yog track (to support security) or test track (to support ease of being tested).

No processo de análise o arquiteto terá que compreender os requisitosenvolvidos numa implementação e fazer as escolhas de quais combinações de táticasdeverão ser aplicadas para que o sistema possa atingir os seus objetivos de qualidade e defuncionalidade. No PROGERAS os padrões de projeto selecionados para implementaçãode cada interesse arquitetural são indicados no próprio modelo, por meio de um mecanismode marcação. O método de escolha das táticas está fora do escopo deste processo, no qual éconsiderada apenas a marcação e a transformação de modelos. Posteriormente umaferramenta (um gerador de programas fontes) vai ler os modelos PIM marcados etransformá-los para programa fonte usando os mecanismos de combinação aspectual.In the analysis process the architect will have to understand the requirements involved in an implementation and make choices of which combinations of tactics should be applied in order for the system to achieve its quality and functionality goals. In PROGERAS the design patterns selected for implementation of each architectural interest are indicated in the model itself by means of a marking mechanism. The method of choosing tactics is beyond the scope of this process, where only marking and model transformation is considered. Subsequently a tool (a source program generator) will read the marked PIM models and transform them to source programs using the aspectual matching mechanisms.

Requisitos do ProcessoProcess Requirements

Quanto ao mecanismo de marcação de modelos e geração de programas, oprocesso foi concebido para atender aos seguintes requisitos:As for the model marking and program generation engine, the process is designed to meet the following requirements:

• Usar uma estrutura padronizada para marcação dos modelos com base no recursode tagged values, estereótipos e anotações do UML.• Use a standardized framework for tagging models based on UML tagged value recurses, stereotypes, and annotations.

• Usar ferramentas para automatizar o processo de geração de programas fonte.• Use tools to automate the process of generating source programs.

• Projetar a estrutura do software a ser gerado com base em interesses arquiteturais epadrões de projeto. Os padrões são escolhidos para atender a certos atributos dequalidade que o software precisa respeitar.• Design the software structure to be generated based on architectural interests and design patterns. The standards are chosen to meet certain quality attributes that the software needs to respect.

• Implementar cada interesse arquitetural por meio da aplicação de um ou maispadrões de projetos.• Os interesses arquiteturais podem atravessar uns aos outros, sendo assim, oprocesso deve ter mecanismos para combinar dois ou mais interesses e, porconseguinte, dois ou mais padrões de projeto, no processo de geração de programasfonte.• Implement each architectural interest by applying one or more design patterns. • Architectural interests can cross each other, so the process must have mechanisms for combining two or more interests and therefore two or more design patterns, in the process of generating source programs.

• Para cada padrão de projeto há um ou mais templates, sendo eles ativados emfunção das marcas inseridas no modelo de entrada. Cada marca indica um interessejunto e um padrão de projeto.• For each design pattern there are one or more templates, which are activated as a function of the tags inserted in the input template. Each mark indicates a joint interest and a design pattern.

• Os templates podem receber parâmetros de entrada para direcionar a ferramenta degeração de programas fonte, por exemplo, uma string de conexão, um flagindicando se um determinado atributo de uma classe é persistente ou não, dentreoutros. A regra de marcação deve permitir que seja indicado o interessearquitetural, o padrão de projeto e também os parâmetros. Juntos, esses elementoscompõem um aspecto que será aplicado ao modelo para geração dos programaspertinentes.• Templates can be input parameters to direct the source program management tool, for example, a connection string, a flag indicating whether or not a given attribute of a class is persistent, among others. The markup rule should allow to indicate the architectural interest, the design pattern as well as the parameters. Together, these elements make up an aspect that will be applied to the model for generating the relevant programs.

• O processo não se limita a um estilo arquitetural específico, como LAYER ouFILTERS AND PIPES ou BLACKBOARD, por exemplo. O estilo arquitetural éimposto por meio dos padrões de projeto que o arquiteto aplica aos modelos, pormeio das marcações.• The process is not limited to a specific architectural style, such as LAYER or FILTERS AND PIPES or BLACKBOARD, for example. The architectural style is imposed through the design patterns that the architect applies to the models through the markings.

• O processo não deve limitar-se a uma linguagem, plataforma ou frameworkespecífico.• The process should not be limited to a specific language, platform or framework.

• O processo deve poder ser usado em conjunto com diferentes metodologias, comoRUP, XP, Scrum, dentre outras.• The process must be able to be used in conjunction with different methodologies such as RUP, XP, Scrum, among others.

Um processo de desenvolvimento de software define um arcabouço para astarefas necessárias para construir um sistema. O processo fornece um roteiro, composto poruma série de passos previsíveis, que ajuda o desenvolvedor a criar, dentro do tempoespecificado, um produto de software com qualidade esperada. Os desenvolvedoresadaptam o processo às necessidades específicas de cada projeto. Tipicamente um processoé composto pelos seguintes tipos de atividades:• Comunicação: atividades associadas à comunicação com o cliente e levantamentode requisitos. Por exemplo, identificação e reuniões com os interessados no projeto,documentação das características e funcionalidades desejadas, priorização dosrequisitos, investigação das restrições e limitações que serão colocadas no sistema,dentre outras.A software development process defines a framework for the tasks required to build a system. The process provides a roadmap, made up of a series of predictable steps, that helps the developer create, within the specified time, an expected quality software product. Developers adapt the process to the specific needs of each project. Typically a process consists of the following types of activities: • Communication: activities associated with customer communication and requirements gathering. For example, identification and meetings with project stakeholders, documentation of desired features and functionality, prioritization of requirements, investigation of constraints and limitations that will be placed on the system, among others.

• Planejamento: atividades para estabelecer um plano de trabalho, que descreve astarefas, os riscos, os recursos, produtos de trabalho, dentre outros elementos.• Planning: Activities to establish a work plan that describes tasks, risks, resources, work products, and more.

• Modelagem: atividades pertinentes à criação de modelos. Basicamente existemduas atividades de modelagem, a análise e o projeto técnico. As tarefas de análiseenvolvem, dentre outras, levantamento, elaboração, negociação, especificação evalidação de requisitos para criação de modelos de análise. As tarefas técnicasenvolvem, dentre outras, criação do modelo de dados, projeto arquitetural e decomponentes.• Modeling: activities relevant to the creation of models. Basically there are two activities of modeling, analysis and technical design. The analysis tasks involve, among others, survey, elaboration, negotiation, specification and validation of requirements for the creation of analysis models. Technical tasks involve, among others, data model creation, architectural design and decomposition.

• Construção: atividades de geração de código (manual ou automático) e os testesnecessários.• Construction: code generation activities (manual or automatic) and the necessary tests.

• Implantação: atividades associadas à entrega do software ao cliente, que fazavaliação e fornece feedback.• Deployment: Activities associated with delivering software to the customer, which assesses and provides feedback.

No PROGERAS as atividades têm foco no trabalho técnico de engenharia,pertinentes à modelagem e construção. Sendo assim, para obter-se um melhor resultadoeste processo pode ser combinado com outro que o complemente, como o SCRUM ouPMI/PMBook, que tem enfoque nas atividades de gerenciamento e comunicação - ambosse completariam.At PROGERAS the activities focus on technical engineering work, relevant to modeling and construction. Thus, to get a better result this process can be combined with a complementing process, such as SCRUM or PMMI / PMBook, which focuses on management and communication activities - both would complete.

Passos do ProcessoProcess Steps

O processo PROGERAS consiste de uma seqüência de passos para obterem-seprogramas fonte de forma automática, por meio do uso de uma ferramenta, a partir de umdiagrama de classes UML. Os passos básicos do processo estão ilustrados na figura 1.The PROGERAS process consists of a sequence of steps to automatically obtain source programs by using a tool from a UML class diagram. The basic steps of the process are illustrated in figure 1.

Passo 1 - Levantar Requisitos. A primeira tarefa consiste em identificar os requisitos dosoftware que será desenvolvido: requisitos funcionais, não-funcionais e técnicos. NoPROGERAS não é definido como estes requisitos devem ser levantados. O trabalho podeser feito por meio de casos de uso, cenários, histórias ou por meio de qualquer outromecanismo. Este trabalho normalmente é executado por um Analista de Negócios.Step 1 - Raise Requirements. The first task is to identify the software requirements that will be developed: functional, non-functional and technical requirements. NoPROGERAS is not defined how these requirements should be raised. The work can be done through use cases, scenarios, stories, or any other mechanism. This work is usually performed by a Business Analyst.

Passo 2 - Criar o Modelo de Domínio. O próximo passo é elaborar o Modelo deDomínio, por meio de um diagrama de classes UML, no qual são indicadas as entidades denegócio e as relações entre elas. Este trabalho é executado manualmente por um Analistade Sistemas.Step 2 - Create the Domain Model. The next step is to elaborate the Domain Model, through a UML class diagram, in which the business entities and the relationships between them are indicated. This work is performed manually by a Systems Analyst.

Passo 3 - Projetar Arquitetura. O projeto da arquitetura é elaborado por meio daidentificação e especificação dos interesses arquiteturais. Para cada interesse arquiteturaldeve ser associado um padrão de projeto que permita que o software possa atingir osobjetivos de qualidade especificados. No PROGERAS, para cada padrão deprojeto/interesse haverá um template para geração de programas fonte. O Projeto daArquitetura é executado por um Arquiteto de Software.Step 3 - Design Architecture. The architectural design is elaborated by identifying and specifying the architectural interests. For each architectural interest, a design pattern must be associated that enables the software to achieve the specified quality objectives. In PROGERAS, for each project / interest pattern there will be a template for generating source programs. The Architecture Project is run by a Software Architect.

Passo 4 - Marcar o Modelo de Domínio. O próximo passo consiste em fazer a marcaçãodo Modelo de Domínio. Os elementos do diagrama de classes (domínios, classes, atributose operações) devem ser marcados com base no projeto da arquitetura e no padrão deRegras de Marcação do PROGERAS. As marcações indicam o interesse arquitetural e opadrão de projeto selecionado para sua implementação. Juntas, essas duas informações vãopermitir que a ferramenta selecione e execute o template correspondente. Este trabalhotambém é executado pelo Arquiteto de Software.Step 4 - Mark the Domain Model. The next step is to mark the Domain Model. Class diagram elements (domains, classes, attributes, and operations) must be marked based on the architecture design and the PROGERAS Markup Rules standard. Markings indicate the architectural interest and design pattern selected for your implementation. Together, this two information will allow the tool to select and execute the corresponding template. This work is also performed by the Software Architect.

Passo 5 - Gerar programas fontes. Depois que os diagramas forem marcados, eles serãoprocessados por uma ferramenta, que receberá como entrada, um ou mais diagramas declasses (com marcações) correspondentes ao modelo PIM e, como saída, vai gerar tantoprogramas fonte numa linguagem específica quanto outros modelos mais detalhados quedemonstram a arquitetura do sistema após a aplicação dos padrões de projeto. A ferramentavai processar os modelos e criará outros modelos novos, específicos para cada interesse,que detalham a arquitetura do software. Será criado um modelo PIM para cada interessearquitetural (persistência, apresentação, etc.). Esses modelos mostram a estrutura daarquitetura, não considerando a tecnologia que será utilizada na implementação. Estetrabalho também é executado pelo Arquiteto de Software. Estas entradas e saídas estãoilustradas na figura 2, na qual é mostrado o diagrama de contexto de uma ferramenta degeração de código compatível com o PROGERAS.Step 5 - Generate Source Programs. Once the diagrams are marked, they will be processed by a tool, which will receive as input one or more declining diagrams (with markings) corresponding to the PIM model and, as output, will generate as many source programs in a specific language as other more detailed models that show the system architecture after applying the design standards. The tool will process the models and create new, interest-specific models that detail the software architecture. A PIM template will be created for each architectural interest (persistence, presentation, etc.). These models show the structure of the architecture, not considering the technology that will be used in the implementation. This work is also performed by the Software Architect. These inputs and outputs are illustrated in Figure 2, which shows the context diagram of a PROGERAS compatible code generation tool.

Ao processar as marcas associadas ao PROGERAS, o interesse arquitetural e opadrão de projeto indicados vão orientar a ferramenta na seleção e na execução do templatepertinente. Um elemento, como uma classe, pode conter múltiplas marcações, cada umaassociada a um template diferente. Por exemplo, uma classe pode ter uma marcação paragerar o programa fonte associado à classe da camada de negócio (interesse de negócio),outra para persistência (interesse de persistência) e outra para gerar telas de pesquisa eedição (interesse de apresentação).When processing the tags associated with PROGERAS, the indicated architectural interest and design pattern will guide the tool in selecting and executing the relevant template. An element, such as a class, can contain multiple tags, each associated with a different template. For example, one class may have a markup for the source program associated with the business layer class (business interest), another for persistence (persistence interest), and another for generating search and editing screens (presentation interest).

Dessa forma a ferramenta, por meio dos templates, vai gerar os programas fontede infra-estrutura da aplicação e depois as regras de negócio deverão ser inseridasmanualmente por um programador. Para isso, o programador deverá inserir novas linhas deprograma, em áreas protegidas, nos arquivos gerados pela ferramenta ou criar novasclasses para herdar as geradas pela ferramenta. Quando o programa fonte for regerado, aferramenta preservará o conteúdo inserido manualmente, demarcado por essas áreas.Thus the tool, through the templates, will generate the programs from the application infrastructure and then the business rules must be entered manually by a programmer. For this, the programmer must insert new lines of program, in protected areas, in the files generated by the tool or create new classes to inherit those generated by the tool. When the source program is regenerated, the tool preserves the manually entered content demarcated by these areas.

Passo 6 - Adicionar linhas de programa manualmente. A ferramenta pode não gerartodo o programa fonte e um programador terá concluir o trabalho manualmente. Nestaetapa é necessário assegurar que o código adicionado manualmente não seja substituídopelo código regerado. Para isso as novas linhas de programa devem ser adicionadas emáreas protegidas, demarcadas nos arquivos gerados pela ferramenta.Step 6 - Add program lines manually. The tool may not generate all the source program and a programmer will have to complete the work manually. In this step it is necessary to ensure that the manually added code is not replaced by the regenerated code. For this the new program lines must be added in protected areas, demarcated in the files generated by the tool.

Passo 7 - Gerar o software executável. Finalmente os programas gerados pelaferramenta, mais aqueles construídos manualmente por um programador devem sercombinados num projeto e compilados para dar origem ao aplicativo executável.Step 7 - Generate the executable software. Finally, the programs generated by the tool, plus those built manually by a programmer, must be combined into a project and compiled to give the executable application.

Por meio do processo PROGERAS é proposto um complemento à visão MDA,cujo foco é definir padrões para modelagem e transformação de modelos. Neste processo ésugerida uma estrutura padronizada de regras de marcação, para indicar os padrões queserão usados na implementação de cada interesse arquitetural e uma seqüência de passos aserem seguidos para marcar o modelo e transformá-lo em programas fonte.Ferramenta de Geração de Programas Fonte (robôs)Through the PROGERAS process, a complement to the MDA vision is proposed, which focuses on defining standards for modeling and model transformation. In this process a standardized structure of markup rules is suggested to indicate the standards that will be used in the implementation of each architectural interest and a sequence of steps to be followed to mark the model and turn it into source programs. Source Program Generation Tool (robots )

No PROGERAS as ferramentas de geração de programas fonte também sãochamadas de robôs. Estas ferramentas recebem como entrada diagramas UML marcados ecomo saída geram programas fonte.In PROGERAS the source program generation tools are also called robots. These tools receive as input UML marked diagrams and as output generate source programs.

Alguns interesses arquiteturais, como persistência e auditoria, podem se cruzar.Por exemplo, pode ser necessário gerar Iog de auditoria sempre que objetos de determinadaclasse forem persistidos. Neste caso estão sendo cruzados os interesses de persistência egeração de log. A ferramenta precisará ter mecanismos para combinar dois ou maispadrões de projeto, por meio da combinação dos templates pertinentes. O AOD fornece ummecanismo para essa finalidade, que é o uso de pontos de junção e adendos. NoPROGERAS os templates são tratados como adendos, e dentro de cada template, devemser definidos pontos de junção. A ferramenta fará a combinação aspectual por meio dacombinação dos templates.Some architectural concerns, such as persistence and auditing, may intersect. For example, it may be necessary to generate Audit Iog whenever class-determined objects are persisted. In this case the interests of persistence and log generation are being crossed. The tool will need mechanisms to combine two or more project patterns by combining the relevant templates. AOD provides a mechanism for this purpose, which is the use of junction points and addendums. In PROGERAS templates are treated as addenda, and within each template, junction points must be defined. The tool will do the aspectual matching by matching the templates.

Na figura 2.2 está ilustrada a estrutura de um gerador. A ferramenta vai ler odiagrama de classes com as marcações, gravado em formato XMI (conforme definido nopadrão MDA), e armazená-lo internamente, por meio de um grafo de objetos. Esse modeloserá processado e convertido, também por meio de um módulo de transformação, em umnovo modelo. Para realizar essa tarefa, a ferramenta percorrerá todos os tagged values decada elemento (domínios, classes, atributos, relações e operações) para identificar aquelespertinentes ao PROGERAS. A ferramenta vai aplicar o padrão de projeto indicado paracada interesse. Ao aplicar o padrão de projeto, novas classes e domínios serão criados,dando origem a um novo modelo. Posteriormente esse novo modelo será processado pelogerador de código que produzirá os programas fonte para uma plataforma e linguagemespecíficas. Depois os programas gerados automaticamente e os criados manualmente pelodesenvolvedor serão combinados e compilados para gerar o aplicativo completo.Figure 2.2 shows the structure of a generator. The tool will read the class diagram with the markings, saved in XMI format (as defined in the MDA standard), and store it internally through a graph of objects. This model will be processed and converted, also through a transformation module, into a new model. To accomplish this task, the tool will traverse all tagged values of each element (domains, classes, attributes, relationships, and operations) to identify those pertaining to PROGERAS. The tool will apply the indicated design pattern to each interest. By applying the design pattern, new classes and domains will be created, giving rise to a new template. Later this new model will be processed by the code generator that will produce the source programs for a specific platform and language. Then the automatically generated and manually created programs by the developer will be combined and compiled to generate the complete application.

Uma ferramenta de geração de programas fonte compatível com o PROGERAStrabalhará com múltiplos templates, um para cada padrão de projeto e interessearquitetural. Por exemplo, para o interesse de persistência, haverá um template queimplementa o padrão de projeto DAO com acesso ao banco de dados via ODBC e outropara o DAO que usa a API do driver nativo. A mesma abordagem pode ser aplicada aoutros interesses arquiteturais, como auditoria e apresentação. O template pode gerarprogramas fonte de auditoria para gravar Iog em arquivo TXT ou XML. O interesse deapresentação pode ser implementado com MVC, mas pode haver um template para web eoutro para aplicações desktop. Cada template está associado a um padrão de projetodiferente. Estes elementos estão representados na figura 2.3.A PROGERAS-compliant source program generation tool will work with multiple templates, one for each design pattern and architecturally interesting. For example, for the sake of persistence, there will be a template that implements the DAO design standard with database access via ODBC and another for DAO that uses the native driver API. The same approach can apply to other architectural interests such as auditing and presentation. The template can generate audit source programs for writing Yog to TXT or XML file. Presentation interest can be implemented with MVC, but there may be a web template and another for desktop applications. Each template is associated with a different design pattern. These elements are represented in figure 2.3.

Regras de MarcaçãoMarking Rules

No PROGERAS, as marcas indicam um interesse arquitetural, como propostono AOD, e o padrão de projeto que será usado na sua implementação, como proposto noPOA. As marcas são inseridas no modelo por meio de tagged values ou anotações e têm aforma Variável := Expressão. A variável indica o interesse (aspecto arquitetural) e aexpressão indica o mecanismo de implementação que pode ser um valor atômico ou podeconter um conjunto de um ou mais parâmetros, separados por ponto e vírgula. Cadaparâmetro tem a forma Parâmetro = Valor, representando o nome do parâmetro e o valorcorrespondente. Uma marca tem a seguinte estrutura:In PROGERAS, the marks indicate an architectural interest, as proposed by AOD, and the design pattern that will be used in its implementation, as proposed in POA. Tags are inserted into the model through tagged values or annotations and have the form Variable: = Expression. The variable indicates interest (architectural aspect) and the expression indicates the implementation mechanism that can be an atomic value or can contain a set of one or more parameters, separated by semicolons. Each parameter has the form Parameter = Value, representing the name of the parameter and the corresponding value. A tag has the following structure:

aspAspecto:={ Pattern=NOME;[outros parâmetros do pattern]}aspAspect: = {Pattern = NAME; [other pattern parameters]}

Seguem alguns exemplos de marcas do PROGERAS:Here are some examples of PROGERAS brands:

aspPresentation:={Pattern=MVCWEB; Operations=CRUD;aspPresentation: = {Pattern = MVCWEB; Operations = CRUD;

Screen=Form)Screen = Form)

aspPersistency:={Pattern=DAODB}aspPersistency: = {Pattern = DAODB}

aspAuditity:={Pattern=LOGTXT;Layer=DAL}aspAuditity: = {Pattern = LOGTXT; Layer = DAL}

No primeiro exemplo, a marca está associada ao interesse de apresentação eindica que para esse interesse deve ser aplicado o padrão de projeto MVCWEB (MVC paratelas html). Essa marca, que deve ser aplicada às classes, tem dois parâmetros: oOperations, que indica as operações de CRUD (Create, Read, Update e Delete) que devemser ativadas na tela, e o Screen que indica o formato da tela (Screen=Form para formulárioe Screen=Grid para tabela).In the first example, the tag is associated with the presentation interest and indicates that for this interest the MVCWEB (MVC html) design pattern should be applied. This tag, which should be applied to classes, has two parameters: oOperations, which indicates the CRUD (Create, Read, Update, and Delete) operations that should be enabled on the screen, and the Screen, which indicates the screen format (Screen = Form for form and Screen = Grid for table).

O próximo exemplo é uma marcação do interesse de persistência, que seráimplementado por meio do padrão de projeto DAO, usando banco de dados relacionais.Neste padrão, para cada classe marcada como persistente no Modelo de Domínio, serácriada uma classe responsável por ler e gravar os objetos correspondentes no banco dedados na camada de persistência. O exemplo indica que será aplicado o padrão de projetoDAO para bancos de dados relacionais (Pattern=DAODB), mas poderiam ser usadosoutros padrões aplicando DAO para XML, para CSV, dentre outros. O template DAO podeter múltiplos parâmetros, como os exemplos indicados na tabela 2.1.The next example is a persistence interest tag, which will be implemented through the DAO design pattern using relational databases. In this pattern, for each class marked persistent in the Domain Model, a class responsible for reading and writing the data will be created. corresponding objects in the database from the persistence layer. The example indicates that the DAO design pattern will be applied to relational databases (Pattern = DAODB), but other patterns could be used by applying DAO to XML, to CSV, among others. The DAO template can have multiple parameters, as shown in table 2.1.

No Modelo de Domínio são inseridas marcas para indicar os interessesarquiteturais relevantes no projeto da aplicação e os padrões de projeto aplicados naimplementação de cada um deles. Quando uma ferramenta processa o Modelo de Domínioe cria novos modelos, um para cada interesse arquitetural, uma entidade do modelo apareceem um ou mais modelos. Uma entidade pode ser marcada com mais de um interesse, comomostrado na figura 4, por exemplo:In the Domain Model marks are inserted to indicate the relevant architectural interests in the application design and the design patterns applied in the implementation of each one. When a tool processes the Domain Model and creates new models, one for each architectural interest, one model entity appears one or more models. An entity can be marked with more than one interest, as shown in figure 4, for example:

• Interesse negócio, para indicar que é uma entidade de negócio.• Business interest, to indicate that it is a business entity.

• Interesse de persistência, para indicar que será persistida no banco de dados.• Persistence interest, to indicate that it will be persisted in the database.

• Interesse de apresentação, para indicar que será visualizada e atualizada por meio• Presentation interest, to indicate that it will be viewed and updated through

de telas (interface com usuário).of screens (user interface).

• Interesse de monitoração, para indicar que as operações de construção e destruiçãode objetos serão monitoradas.• Monitoring interest, to indicate that object construction and destruction operations will be monitored.

• Dentre outros.• Among others.

Quando um template, é construído, nas suas definições deve ser indicado oWhen a template is built, in its definitions it should be indicated the

nome do padrão de projeto associado, o nome do interesse arquitetural, a lista deparâmetros permitidos e a relação dos arquivos com os templates de programas fontes.name of the associated project pattern, the name of the architectural interest, the list of allowed parameters, and the relationship of the files to the source program templates.

Na figura 5 estão indicados alguns exemplos de interesses arquiteturais epadrões de projeto. Para cada interesse arquitetural pode haver uma ou maisimplementações de padrões de projeto. Cada implementação está associada a um template,que será usado pela ferramenta para geração de programas fonte. Por exemplo, existem trêsimplementações persistência: DAODB, DAOXML e DAOCSV. O template DAODB geracódigo para persistência de bancos de dados relacionais usando o padrão de projeto DAO(Data Access Objects), o DAOXML gera código para persistir objetos em arquivos XML eo CSV em arquivos CSV (Coma-Separated Values).Figure 5 shows some examples of architectural interests and design patterns. For each architectural interest there may be one or more implementations of design patterns. Each implementation is associated with a template, which will be used by the source program generation tool. For example, there are three persistence implementations: DAODB, DAOXML, and DAOCSV. The DAODB template generates code for relational database persistence using the Data Access Objects (DAO) design standard, DAOXML generates code for persisting objects in XML files, and CSV in Coma-Separated Values (CSV) files.

O nome do interesse arquitetural será atribuído arbitrariamente pelodesenvolvedor que constrói o template. Contudo, a estrutura dos nomes deve serpadronizada, para facilitar a sua memorização e o trabalho de marcação de modelos.Devem-se evitar dois nomes diferentes para o mesmo interesse arquitetural, pois issogeraria ambigüidade e dificultaria o uso do processo e da ferramenta de geração deprogramas fontes.The name of the architectural interest will be arbitrarily assigned by the developer who builds the template. However, the structure of the names should be standardized to facilitate their memorization and model marking work. Two different names should be avoided for the same architectural interest, as this would generate ambiguity and make it difficult to use the process and the program generation tool. sources.

Na figura 5 há algumas sugestões de nomes, que são compostos pelo prefixo"asp" (de "aspecto") seguido do nome do interesse. Abaixo, foi usada a língua inglesa paraque o processo possa ser entendido mais facilmente por desenvolvedores de outros países.In figure 5 there are some name suggestions, which are composed of the prefix "asp" ("aspect") followed by the name of interest. Below, the English language has been used so that the process can be more easily understood by developers from other countries.

<table>table see original document page 15</column></row><table><table> table see original document page 15 </column> </row> <table>

Tabela 1Table 1

- Exemplo de parâmetros de um template para gerar código de persistência.Conclusão- Example parameters of a template to generate persistence code.

O PROGERAS aborda a transformação de modelos PIM marcados paraprogramas fonte, aplicando uma transformação direta (não são geradas versõesintermediárias de modelos). O processo consiste em uma seqüência de passos para se obterprogramas de forma automática, por meio do uso de uma ferramenta a partir de umdiagrama de classes UML marcado.PROGERAS addresses the transformation of PIM models marked for source programs by applying a direct transformation (no intermediate versions of models are generated). The process consists of a sequence of steps to automatically obtain programs by using a tool from a marked UML class diagram.

No PROGERAS, o desenvolvimento começa com a elaboração do Modelo deDomínio e a próxima tarefa consiste da criação da estrutura do software. Essa estruturaserá projetada tomando como referência os interesses arquiteturais relevantes, que podemser identificados e projetados com base nos requisitos não funcionais que a aplicaçãoprecisa atender, o que pode ser feito por meio de cenários.In PROGERAS, development begins with the elaboration of the Domain Model and the next task is the creation of the software structure. This framework will be designed by reference to relevant architectural interests, which can be identified and designed based on the non-functional requirements that the application needs to meet, which can be done through scenarios.

Os elementos do diagrama de classes (domínios, classes, atributos e operações)são marcados para indicar os padrões de projeto que se deseja utilizar no projeto daarquitetura. As marcações indicam o interesse arquitetural e o padrão de projeto que seráutilizado. Juntas, essas duas informações vão permitir que uma ferramenta selecione eexecute o template correspondente.Class diagram elements (domains, classes, attributes, and operations) are marked to indicate the design patterns that you want to use in the architecture design. Markings indicate the architectural interest and design pattern that will be used. Together, these two pieces of information will allow a tool to select and run the corresponding template.

Uma ferramenta de geração de programas fonte compatível com o PROGERASpoderá trabalhar com múltiplos templates, um para cada padrão de projeto. Por exemplo,para o interesse arquitetural de persistência, haverá um template para implementar opadrão de projeto DAO com acesso ao banco de dados via ODBC e outro para o DAO queusa a API do driver nativo. No capítulo seguinte é mostrado um exemplo de uso doprocesso e das regras de marcação.A PROGERAS-compliant source program generation tool can work with multiple templates, one for each design pattern. For example, for the architectural interest of persistence, there will be a template for implementing the DAO project standard with database access via ODBC, and another for DAO that uses the native driver API. The following chapter shows an example of using the process and marking rules.

EXEMPLOSEXAMPLES

Exemplo de Uso do Processo de Geração Automatizada de Programas FonteExample of Using the Automated Program Generation Process Source

A descrição a seguir mostra um exemplo de aplicação do processoPROGERAS. Este exemplo consiste de um software real, que foi construído para aCompugraf® Comunicação Empresarial para automatizar o procésso de reembolso dedespesas de funcionários. Nesta empresa os funcionários podem fazer reembolsos dedespesas e de estudos. As despesas reembolsadas são aquelas que os funcionários incorremao atender um cliente ou fornecedor, como deslocamento, hospedagem, refeição, dentreoutras. A empresa também reembolsa cursos universitários, línguas e cursos técnicos.The following description shows an example of applying the PROGERAS process. This example consists of real software that was built for Compugraf® Corporate Communications to automate the process of reimbursing employee expenses. At this company employees can make reimbursements for expenses and study. Reimbursed expenses are those that employees incur in attending a customer or supplier, such as travel, lodging, meals, among others. The company also reimburses university courses, languages and technical courses.

O exemplo aqui apresentado foi simplificado (devido á restrição de tamanhodeste texto), o projeto original aborda também reembolso para terceiros (prestadores deserviços), reembolso de deslocamentos com veículo próprio, notas de débito entreempresas, múltiplas alçadas de aprovação, dentre outras funções. O sistema original temaproximadamente 40 entidades de negócio.The example presented here has been simplified (due to the size restriction of this text), the original project also deals with reimbursement to third parties (service providers), reimbursement of trips with own vehicle, debit notes between companies, multiple approval levels, among other functions. The original system has about 40 business entities.

1.1. Contexto1.1. Context

A empresa tem aproximadamente 200 funcionários, que estão espalhados emquatro filiais, dispersas geograficamente. Três delas estão no estado de São Paulo e uma noRio de Janeiro. Os funcionários de todas as filiais podem fazer reembolsos.The company has approximately 200 employees, which are spread across four branches, geographically dispersed. Three of them are in the state of São Paulo and one in Rio de Janeiro. Employees at all branches can make refunds.

1.1.1. Despesas1.1.1. Expenses

Depois de pagar com recursos próprios uma despesa para o atendimento de umcliente ou fornecedor, o funcionário deve prestar contas à empresa para receber de volta ovalor gasto. Para isso é necessário apresentar o "Relatório de Prestação de Contas deDespesas" com os seguintes dados:After paying an expense for a customer or supplier, the employee must be accountable to the company to get back the amount spent. For this it is necessary to present the "Expense Reporting Report" with the following data:

• Identificação do funcionário• Employee Identification

• Identificação do cliente ou fornecedor• Customer or supplier identification

• Identificação do projeto (opcional)• Project ID (optional)

• Descrição da finalidade da despesa• Description of expenditure purpose

• Relação dos comprovantes associados (cupons ficais, notas fiscais, recibos, etc.)• List of associated vouchers (personal coupons, invoices, receipts, etc.)

O funcionário deve apresentar este relatório, mais os comprovantes em anexo,ao seu gerente para aprovação, por meio de uma assinatura. Na ausência de um gerente umdiretor da empresa também pode aprovar. Depois de aprovado o relatório deve serencaminhado à área financeira, que vai contabilizar as despesas (por tipo: refeição,combustível, estacionamento, etc.) e provisionar o pagamento. Caso algum comprovantenão seja válido, o relatório poderá ser recusado pela área financeira e o funcionário teráque refazê-lo. Os pagamentos ocorrem duas vezes por semana, às terças-feiras e às quintas-feiras.The employee must present this report, plus the accompanying vouchers, to his manager for approval by means of a signature. In the absence of a manager a company director can also approve. Once approved, the report should be forwarded to the financial area, which will account for expenses (by type: meal, fuel, parking, etc.) and accrue the payment. If any proof is not valid, the report may be rejected by the finance department and the employee will have to redo it. Payments occur twice a week, on Tuesdays and Thursdays.

Caso o funcionário conheça antecipadamente o valor da despesa, ele poderápedir um adiantamento em dinheiro. Este pedido é feito por gerente ou diretor usando umformulário específico, no qual são indicadas as seguintes informações:If the employee knows in advance the amount of the expense, he may request a cash advance. This request is made by a manager or director using a specific form, which provides the following information:

• Identificação do funcionário• Employee Identification

• Descrição do motivo da despesa• Description of the reason for the expense

• Valor• Value

O formulário deve ser encaminhado ao departamento financeiro, que vaiprovisionar o pagamento. Depois o funcionário terá que prestar contas por meio do"Relatório de Prestação de Contas de Despesas". Caso o funcionário ainda seja credor, elereceberá o valor da diferença, caso ele seja devedor ele terá que devolver o saldo.The form must be sent to the finance department, which will provide the payment. Then the employee will have to be accountable through the "Expense Reporting Report". If the employee is still a creditor, he will give the amount of the difference, if he is a debtor he will have to return the balance.

1.1.2. Estudos1.1.2. Studies

A empresa tem a política de reembolsar despesas com estudos para todos osfuncionários que tenham no mínimo seis meses de registro. O padrão é reembolsar o doisterços do valor do curso, sendo que a somatória dos reembolsos de um mês não podeultrapassar 20% do valor do salário bruto do funcionário. A critério do gerente, o cursopode ser reembolsado integralmente e o valor não será abatido da bolsa de estudos (20%do salário).The company has a policy of reimbursing study expenses to all employees who have at least six months of registration. The standard is to reimburse two-thirds of the course fee, and the sum of one-month reimbursements cannot exceed 20% of the employee's gross salary. At the discretion of the manager, the course can be fully refunded and the amount will not be deducted from the scholarship (20% of salary).

Somente determinados tipos de cursos podem ser reembolsados, que sãoaqueles associados à função que o funcionário desempenha na empresa. Podem ser cursosuniversitários, cursos de línguas e cursos técnicos. Cabe ao gerente do funcionário avaliaro curso e autorizar o reembolso, na ausência do gerente um diretor pode fazer a aprovação.Para ter direito ao reembolso, quando o funcionário planejar fazer um curso ele deveráantes preencher um "Formulário de Solicitação de Reembolso de Estudo", no qual deveráinformar os seguintes dados:Only certain types of courses can be reimbursed, which are those associated with the role the employee plays in the company. These can be university courses, language courses and technical courses. It is up to the employee's manager to evaluate the course and authorize reimbursement, in the absence of the manager a principal may approve. To be entitled to reimbursement, when the employee plans to take a course he / she must complete a "Study Reimbursement Request Form", in which you must enter the following data:

• Identificação do funcionário• Descrição do curso• Employee Identification • Course Description

• Instituição• Institution

• Duração do curso• Duration of the course

• Datas e valores das parcelas• Dates and values of installments

• Percentual de reembolso• Refund percentage

• Valor a ser abatido da bolsa de estudos• Amount to be deducted from scholarship

O funcionário deve apresentar este formulário aò seu gerente para aprovação,por meio de uma assinatura. Na ausência de um gerente um diretor da empresa tambémpoderá aprovar. Ao aprovar o gerente deverá indicar no formulário se o reembolso deveráser abatido da bolsa de estudos e se o reembolso é integral (e não de dois terços). Depois oformulário deverá ser encaminhado ao departamento pessoal. Somente cursos previamenteaprovados poderão ser reembolsados.The employee must present this form to his / her manager for approval, by signature. In the absence of a manager a company director may also approve. When approving the manager you must indicate on the form whether the refund should be deducted from the scholarship and whether the refund is full (not two-thirds). After the form should be sent to the personnel department. Only previously approved courses may be refunded.

Posteriormente, o funcionário deverá efetuar o pagamento de cada parcela comrecursos próprios e depois solicitar o reembolso. Para receber o reembolso, o funcionárioterá que preencher o "Relatório de Solicitação de Reembolso de Estudos", indicando asseguintes informações:Subsequently, the employee must pay each installment with their own resources and then request reimbursement. In order to receive the refund, the employee will need to complete the "Study Refund Request Report" stating the following information:

• Identificação do funcionário• Employee Identification

• Descrição do curso• Course Description

• Instituição• Institution

• Data e valor da parcela• Date and amount of installment

O formulário deverá ser encaminhado ao departamento pessoal, que calculará ovalor do reembolso, considerando a bolsa mensal e os valores previamente aprovados pelogerente do funcionário (ou um diretor). O departamento pessoal encaminhará para odepartamento financeiro uma solicitação para que o pagamento seja contabilizado e provisionado.1.2. RequisitosThe form should be sent to the personnel department, which will calculate the reimbursement amount, considering the monthly scholarship and the amounts previously approved by the employee's manager (or a director). The personnel department will forward to the financial department a request for payment to be accounted for and provisioned.1.2. Requirements

O processo PROGERAS começa com o levantamento dos requisitos funcionais,não-funcionais e tecnológicos, que vão orientar o arquiteto na especificação da arquiteturae, por conseguinte, na marcação do modelo.The PROGERAS process begins with the survey of functional, non-functional and technological requirements, which will guide the architect in the specification of the architecture and, therefore, in the marking of the model.

1.2.1. Requisitos Funcionais1.2.1. Functional Requirements

Considerando a sistema de reembolsos, o software deverá apresentar asseguintes funcionalidades:Considering the refund system, the software should have the following features:

• Consultar o banco de dados de funcionários (identificação, departamento, gerente,salário, data de contratação, conta corrente).• Consult the employee database (identification, department, manager, salary, hiring date, checking account).

• Prover mecanismo para um gerente ou diretor solicitar um adiantamento para ofuncionário.• Provide mechanism for a manager or director to request an advance for the employee.

• Prover mecanismo para o departamento financeiro contabilizar e provisionar opagamento do adiantamento ao funcionário.• Provide mechanism for the finance department to account for and accrue the advance payment to the employee.

• Prover mecanismo para o funcionário fazer a prestação de contas de despesas.• Provide mechanism for the employee to account for expenses.

• Prover mecanismo para o gerente do funcionário, ou um diretor da empresa,aprovar um relatório de prestação de contas.• Provide mechanism for the employee manager, or a company director, to approve an accountability report.

• Prover mecanismo para o departamento financeiro contabilizar e provisionar opagamento de despesas ao funcionário.• Provide mechanism for the finance department to account for and accrue employee expense compensation.

• Prover mecanismo para o funcionário solicitar a aprovação de um curso.• Provide mechanism for staff to apply for course approval.

• Prover mecanismo para o gerente do funcionário, ou um diretor, aprovar o curso, ovalor do reembolso (dois terços ou integral) e indicar se o curso será abatido dabolsa ou não.• Provide mechanism for the employee's manager, or a director, to approve the course, the reimbursement amount (two thirds or full) and to indicate whether or not the course will be discounted.

• Prover mecanismo para o departamento pessoal controlar o uso da bolsa de estudospelos funcionários.• Provide mechanism for staff department to control staff use of scholarship.

• Prover mecanismo para o funcionário solicitar o reembolso de um curso.• Prover mecanismo para o departamento financeiro contabilizar e provisionar opagamento de um curso ao funcionário.• Provide mechanism for the employee to request reimbursement of a course • Provide mechanism for the finance department to account for and accrue a course payment to the employee.

• Prover mecanismo para parametrização dos reembolsos: percentual da parcela,percentual do salário, datas de pagamento, dentre outras.• Provide mechanism for parameterization of reimbursements: percentage of the installment, percentage of salary, payment dates, among others.

1.2.2. Requisitos Não-funcionais1.2.2. Nonfunctional Requirements

O sistema deve respeitar aos seguintes requisitos:The system must meet the following requirements:

• Funcionalidade:• Functionality:

o Precisão - os valores dos reembolsos devem ser calculados com precisão deduas casas decimais.o Accuracy - Refund amounts must be accurately calculated to two decimal places.

o Interoperabilidade - o sistema deverá ser integrado ao sistema decontabilidade e folha de pagamento, sem denegrir o desempenho ou asegurança destes sistemas, para consulta e atualização de dados.o Interoperability - the system should be integrated with the accounting and payroll system, without degrading the performance or security of these systems, for data consultation and updating.

o Segurança - deve haver um controle de segurança parametrizável de modoque somente as pessoas autorizadas possam aprovar reembolsos eo Security - there must be a configurable security control so that only authorized persons can approve refunds and

pagamentos. Somente os usuários autorizados poderão visualizar os saláriosdos funcionários da empresa e alterar os parâmetros do sistema.payments. Only authorized users will be able to view company employee salaries and change system parameters.

• Confiabilidade:• Reliability:

o Recuperabilidade - em caso de falha o sistema não poderá ficar fora do arpor mais que 24 horas.o Recoverability - In the event of a failure, the system cannot be out of service for more than 24 hours.

• Facilidade de Uso (Entendimento, Aprendizado, Operação):• Ease of Use (Understanding, Learning, Operation):

o O sistema será utilizado por todos os funcionários da empresa, espalhadosgeograficamente. Os funcionários não poderão ser treinadosindividualmente no uso do sistema, sendo assim este .deve ser de fácil uso eaprendizado.o The system will be used by all employees of the company, spread out geographically. Employees cannot be individually trained in the use of the system, so it must be user-friendly and learned.

•Facilidade de Manutenção:o Facilidade de ser Analisado - o sistema será instalado nos terminais detodos usuários espalhados geograficamente. No caso de algum erronormalmente não será possível enviar um desenvolvedor ao local paraanalisar e resolver o problema. Desta forma o sistema precisará gerar Iogsque possam ser enviados para área de TI para que possam ser analisados,que indiquem as operações efetuadas pelo sistema mais os dadosassociados.• Ease of Maintenance: o Ease of Analysis - the system will be installed on the terminals of geographically dispersed users. In the event of any error it will not be possible to send a developer to the site to analyze and solve the problem. Thus the system will need to generate Yogs that can be sent to IT area so that they can be analyzed, indicating the operations performed by the system plus associated data.

o Facilidade de mudança - na fábrica de software da Compugraf® trabalhamaproximadamente 30 desenvolvedores (na data de elaboração desde texto) equalquer um deles deve poder fazer eventuais manutenções neste sistema.Ease of change - At Compugraf® software factory there are approximately 30 developers (as of the date of writing) and any of them should be able to maintain this system.

1.2.3. Requisitos Tecnológicos1.2.3. Technology Requirements

A empresa já possui outros sistemas em produção, e o sistema de reembolsosdeverá ser compatível com a plataforma existente:The company already has other systems in production, and the refund system should be compatible with the existing platform:

• Banco de Dados MS-SQL Server® 2005.• MS-SQL Server® 2005 Database.

• Ser programado em C# com .NET 3.5.• Be programmed in C # with .NET 3.5.

• Usar a tecnologia WPF para construção das telas e respeitar o padrão de cores,fontes, dentre outros da empresa (no .NET é chamado de tema).• Use WPF technology to build screens and respect the company's color, font, and other standards (in .NET it's called a theme).

• Ser distribuído através intranet usando a tecnologia ClickOnce.• Be distributed via intranet using ClickOnce technology.

• Poder ser executado em estações com Windows XP®, 2MB de memória e usar nomáximo 2M do disco rígido.• Can run on Windows XP® workstations, 2MB of memory and use up to 2M hard disk.

• Fazer controle de acesso por meio dos dados cadastrados no Active Direetory.• Make access control through the data registered in Active Direetory.

1.3. Modelo de Domínio1.3. Domain Model

O modelo de domínio, representado na figura 3.1, é compostos pelos domínios"Funcionário", "Reembolso" e "Financeiro". No do domínio "Funcionário" estão asentidades associados aos dados dos funcionários que fazem reembolso e aos chefes queaprovam:• Funcionário: um funcionário da empresa, pode ser chefe ou não. Nesta tabelaexistem os atributos. nome, departamento, cargo, salário, data de contratação,gerente do departamento.The domain model, shown in Figure 3.1, is composed of the "Employee", "Repayment" and "Financial" domains. In the "Employee" domain are the entities associated with the data of the reimbursing employees and the bosses who approve: • Employee: A company employee, may or may not be a boss. In this table there are the attributes. name, department, position, salary, date of hire, department manager.

• Empresa: dados da empresa onde o funcionário está registrado. A Compugraf® écomposta por cinco diferentes razões sociais.• Company: Company data where the employee is registered. Compugraf® is composed of five different social reasons.

• DadosFuncionario: dados do funcionário específicos ao processo de reembolso dedespesas e estudos, como valor mensal da bolsa de estudos, percentual dereembolso por curso, e se o funcionário está autorizado a fazer reembolso deestudos.• EmployeeData: Employee data specific to the reimbursement process for expenses and studies, such as monthly scholarship fees, percentage of tuition reimbursement per course, and whether the employee is entitled to reimbursement of studies.

• CursoFuncionario: registro de um curso do funcionário, para que ele possa fazer oreembolso de estudos.• FunctionalCourse: registration of an employee's course, so that he can make reimbursement for studies.

• ParcelaCurso: parcelas do curso, para o funcionário solicitar reembolso• CoursePayment: Course installments for the employee to request reimbursement

No domínio "Reembolso" estão as entidades associadas às solicitações dereembolso e as aprovações:In the "Refund" domain are the entities associated with the refund requests and approvals:

• TipoDespesa: tipos de despesas para solicitação de reembolso, como combustível,hospedagem, taxi, refeição, dentre outras.• TypeExpense: types of expenses for reimbursement request, such as fuel, lodging, taxi, meal, among others.

• Projeto: projetos executados pela empresa, aos quais podem estar associados umaou mais despesas de funcionário.• Project: Projects executed by the company, which may be associated with more or more employee expenses.

• ComprovanteDespesa: registro de um comprovante de despesa, como um cupomfiscal ou uma nota fiscal. Cada comprovante deve estar associado a um tipoespecífico de despesa.• Expense Voucher: Record of an expense voucher, such as a tax coupon or invoice. Each voucher must be associated with a specific type of expense.

• Reembolso: solicitação de reembolso de despesa, que deve estar associado a um oumais comprovantes quando se tratar de reembolso de despesas ou a uma parcela decurso, quando for reembolso de estudos. Quando for uma despesa pode estarassociado a um projeto.• Reimbursement: Requests for reimbursement of expenses, which must be associated with one or more vouchers when reimbursing expenses or an ongoing portion, when reimbursement of studies. When it is an expense it may be associated with a project.

• Adiantamento: registro de um adiantamento dado a um funcionário.Finalmente há o domínio "Parametros", onde estão as entidades associadas àparametrização do sistema:• Advance: Record of an advance given to an employee. Finally there is the domain "Parameters", where are the entities associated with the system parameterization:

• ParametrosCalculo: parâmetros para o cálculo dos valores de reembolso de estudose datas de pagamento, e para contabilização dos reembolsos.• Calculation Parameters: parameters for the calculation of refund amounts for studies and payment dates, and for accounting for refunds.

1.4. Projeto da Arquitetura1.4. Architecture Project

O Sistema de Reembolsos deverá ser integrado com outros três sistemas,descritos na figura 3.2:The Refund System shall be integrated with three other systems described in Figure 3.2:

• Contabilidade: integração por meio de um WebService, no qual há um serviçopara enviar para a contabilidade os dados de um pedido de reembolso ouadiantamento.• Accounting: Integration through a WebService, in which there is a service to send the data of a refund or advance request to accounting.

• Folha de Pagamento: neste sistema estão contidas, dentre outras, as entidadesfuncionário e departamentos. A integração deverá ser feita por meio de uma DLL,na qual estão contidas os objetos de negócio deste sistema. O Sistema deReembolsos vai instanciar objetos e chamar os métodos pertinentes.• Payroll: this system contains, among others, the employee entities and departments. The integration must be done through a DLL, which contains the business objects of this system. The Refund System will instantiate objects and call the relevant methods.

• Projetos: neste sistema estão as entidades de projetos, itens do projeto, condiçõesde pagamentos dentre outras. A integração será feita da mesma forma que com aFolha de Pagamento.• Projects: In this system are the project entities, project items, payment conditions and others. Integration will be done in the same way as with Payroll.

O Sistema de Reembolsos será estruturado em camadas, por meio do padrão deprojeto LAYERS. Este padrão arquitetural é usado para dividir a arquitetura em camadas,de modo a facilitar a implementação e manutenção do sistema. Criando blocos com baixoacoplamento e alta coesão. As camadas são implementadas para se comunicarem umascom as outras respeitando uma seqüência específica de mensagens. Num projeto bemconstruído uma camada A usa os serviços da camada B, mas a camada B não usa osserviços de A - comunicação flui numa única direção. O Sistema de Reembolsos serácomposto pelas seguintes camadas:The Refund System will be layered through the LAYERS design pattern. This architectural pattern is used to divide the architecture into layers to facilitate system deployment and maintenance. Creating loosely coupled blocks with high cohesion. Layers are implemented to communicate with each other respecting a specific sequence of messages. In a well-constructed project, layer A uses layer B services, but layer B does not use A-communication services flowing in one direction. The Refund System will consist of the following layers:

• User Interface Layer (UIL) ou Camada de Interface com Usuário - nesta camadaestão encapsuladas as telas do sistema, usadas pelos usuários.• Application Layer (APL) ou Camada de Aplicação - nesta camada estão os objetose serviços específicos da aplicação, como mecanismos para geração de relatórios,função de login dos usuários, dentre outros.• User Interface Layer (UIL) - In this layer are encapsulated the system screens used by users • Application Layer (APL) - In this layer are the objects and application specific services as mechanisms for report generation, user login function, among others.

• Business Rule Layer (BRL) ou Camada de Regras de Negócio (também conhecidacomo Camada de Serviços de Negócio) - nesta camada são providas asfuncionalidades administrativas e operacionais que o sistema precisa suportar. Porexemplo, criação de reembolso, aprovação, concessão de adiantamentos, dentreoutros.• Business Rule Layer (BRL) (also known as Business Services Layer) - this layer provides administrative and operational functionality that the system needs to support. For example, creation of reimbursement, approval, granting of advances, among others.

• Business Entitties Layer (BEL) ou Camada de Entidades de Negócio - nestacamada residem as entidades de negócio com as quais os serviços de negóciooperam. Por exemplo Reembolso, Comprovante, Funcionário, dentre outros.• Business Entitties Layer (BEL) - In this layer resides the business entities with which business services operate. For example Refund, Voucher, Employee, among others.

• Data Access Layer (DAL) ou Camada de Persistência de Objetos - nesta camadaestão implementadas as funções de leitura e gravação de objetos de negócio, queestão implementados na camada BEL.• Data Access Layer (DAL) or Object Persistence Layer - in this layer are implemented the read and write functions of business objects, which are implemented in the BEL layer.

• Infra-structure Layer (IFL) ou Camada de Infra-estrutura - nesta camada estãoimplementados serviços como tratamento de erros, geração de logs, controle deacessos (segurança) dentre outros que são utilizados pelas demais camadas.• Infrastructure Layer (IFL) - In this layer are implemented services such as error handling, log generation, access control (security) among others that are used by the other layers.

• Data Base Layer (DBL) ou Camada de Banco de Dados - camada associada aobanco de dados, que no Sistema de Reembolsos será implementada por meio doMS-SQL Server®.• Data Base Layer (DBL) - Database-associated layer, which in the Refund System will be implemented through MS-SQL Server®.

De modo a reduzir o acoplamento entre as camadas, cada uma delas seráacessada pelas demais por meio de uma fachada, aplicando-se o padrão de projetoFACADE. Este padrão faz com que exista um único ponto de acesso, reduzindo oacoplamento entre as partes do sistema.In order to reduce the coupling between the layers, each layer will be accessed by the others through a facade, applying the FACADE design standard. This pattern causes a single access point to exist, reducing coupling between parts of the system.

Com base nos requisitos apresentados (funcionais e não-funcionais) osseguintes interesses arquiteturais podem ser identificados: apresentação, persistência,controle de acesso, geração de logs e tratamento de erros. No PROGERAS não háimposição de um conjunto padrão de passos para identificação dos interesses arquiteturais,neste projeto foi usada uma abordagem para seleção de aspectos na programação comAspectJ. Cada interesse deve ser especificado e construído como um aspecto separado daarquitetura, que deverá ser implementado por meio de um padrão de projeto. Cada padrãode projeto é definido para maximizar ou minimizar algumas características da aplicação,como maximizar o desempenho, minimizar o uso de recursos, facilitar a manutenção,dentre outros, que são os requisitos não-funcionais. No PROGERAS também não éimposto um roteiro para seleção dos padrões, no projeto do Sistema de Reembolsos foiusada uma abordagem que propõe a criação de cenários de atributos de qualidade, paraescolha dos mecanismos que serão usados na construção do software (implementação dosinteresses arquiteturais).Based on the requirements presented (functional and non-functional) the following architectural interests can be identified: presentation, persistence, access control, logging and error handling. In PROGERAS there is no imposition of a standard set of steps to identify architectural interests, in this project an approach to aspect selection was used in programming with AspectJ. Each interest should be specified and constructed as a separate aspect of architecture, which should be implemented through a design pattern. Each design standard is defined to maximize or minimize some application characteristics, such as maximizing performance, minimizing resource usage, facilitating maintenance, among others, which are non-functional requirements. In PROGERAS neither is there a roadmap for selection of standards, in the design of the Refund System was used an approach that proposes the creation of scenarios of quality attributes, to choose the mechanisms that will be used in the construction of the software (implementation of architectural interests).

O interesse de apresentação aplica-se a todas as entidades que poderão sercadastradas pelos usuários, como o reembolso e os comprovantes, por exemplo. Para cadaentidade que apresentar este interesse deverá ser criada uma ou mais telas, conforme anecessidade. As telas, que serão encapsuladas na Camada de Interface com Usuário, devemser construídas por meio de um padrão de projeto específico, o MODEL-VIEW-CONTROLER ou MVC. Neste padrão estão claramente separadas a máscara da tela(VIEW), as funções de controle (CONTROLER) e as entidades de negócio (MODEL). OMYC simplifica as mudanças de aparência nas telas (look-and-feel skins), a personalizaçãode preferências de usuários, e as mudanças estruturais. Por meio deste padrão estesobjetivos podem ser atingidos sem que seja necessário fazer mudanças nas funções centraisdo sistema e nas regras de negócio.The submission interest applies to all entities that may be registered by users, such as refunds and vouchers, for example. For each entity presenting this interest, one or more screens should be created, as needed. Screens, which will be encapsulated in the User Interface Layer, must be constructed using a specific design pattern, MODEL-VIEW-CONTROLER or MVC. In this pattern the screen mask (VIEW), the control functions (CONTROLER) and the business entities (MODEL) are clearly separated. OMYC simplifies look-and-feel skins, customizing user preferences, and structural changes. Through this standard these goals can be achieved without having to make changes to the system's core functions and business rules.

O interesse de persistência aplica-se às entidades que serão persistidas embanco de dados. Neste projeto o mecanismo de persistência que será implementado pormeio do padrão de projeto DATA ACCESS LAYER (DAL) e DATA ACCESS OBJECTS(DAO). As classes que serão geradas para esta finalidade serão implementadas na Camadade Persistência. A camada de persistência (padrão de projeto DAL), tem a função deabstrair a tecnologia de banco de dados que será usada para a função de persistência dosobjetos. O padrão de projeto DAO provê uma interface abstrata para algum tipo de bancode dados (neste exemplo o MS-SQL Server®) ou mecanismo de persistência, sem expor osdetalhes técnicos associados. Para cada objeto de negócio persistente é criado uma ou maisclasses nas quais estão implementadas as funções de persistência. A maior vantagem destepadrão é proporcionar uma separação clara e simples das camadas de negócio epersistência, que podem evoluir independentemente. Por meio do DAO mudanças numacamada normalmente resultam em pequeno impacto na outra.The persistence concern applies to entities that will be persisted against database. In this project the persistence mechanism that will be implemented through the DATA ACCESS LAYER (DAL) and DATA ACCESS OBJECTS (DAO) design pattern. The classes that will be generated for this purpose will be implemented in the Persistence Layer. The persistence layer (DAL design pattern) has the function of deabstring the database technology that will be used for the objects persistence function. The DAO design pattern provides an abstract interface to some kind of database (in this example MS-SQL Server®) or persistence mechanism, without exposing the associated technical details. For each persistent business object is created one or more classes in which persistence functions are implemented. The biggest advantage of this standard is that it provides a clear and simple separation of the layers of business and persistence that can evolve independently. Through DAO changes in one layer usually result in little impact on the other.

Por meio do interesse arquitetural de controle de acesso, que está associado aorequisito de segurança, deverá ser possível indicar quais usuários podem acessar cadaentidade. Este interesse aplica-se somente às entidades críticas, como a entidadefuncionário, por exemplo, onde estão registrados informações sigilosas como o salário decada colaborador. Para este interesse deverá ser utilizado o padrão de projeto FIREWALLPROXY. Por meio deste padrão a permissão de acesso pode ser verificada cada vez queum serviço é requisitado, como os serviços providos pelas camadas de persistência eapresentação, por exemplo. As classes geradas ficarão contidas na Camada de Infra-estrutura.Through the architectural interest of access control, which is associated with the security requirement, it should be possible to indicate which users can access each entity. This interest applies only to critical entities, such as the employee, for example, where confidential information such as the salary of each employee is recorded. For this purpose the FIREWALLPROXY design pattern should be used. By this standard access permission can be checked each time a service is requested, such as the services provided by the persistence and presentation layers, for example. The generated classes will be contained in the Infrastructure Layer.

O interesse de monitoração pode ser aplicado às classes mais acessadas, a fimde monitorar-se o volume de acessos de consultas, atualizações e inclusões. Desta formaserá possível avaliar-se, em tempo de execução, a quantidade de recurso e processamentoconsumido. A monitoração deverá ser feita por meio do padrão HEART BEAT. Por meiodeste padrão é possível monitorar uma tarefa específica, para saber se e como ela estáfuncionando. As classes geradas ficarão contidas na Camada de Infra-estrutura.Monitoring interest can be applied to the most accessed classes to monitor the volume of query accesses, updates, and additions. In this way it will be possible to evaluate, at runtime, the amount of resource and processing consumed. Monitoring should be done using the HEART BEAT standard. By default, you can monitor a specific task to see if and how it is working. The generated classes will be contained in the Infrastructure Layer.

O interesse de tratamento de erros será utilizado em todo o sistema a fim depadronizar o mecanismo utilizado para lidar com as situações de erro. A função detratamento de erros será implementada por meio dos padrões de projeto RECOVERYBLOCKS, MINIMIZE HUMAN INTERVENTION, MAINTENACE INTERFACE,SOMEONE IN CHARGE, ESCALATION e FAULT OBSERVER. Estes padrõesprovêem meios para detectar os erros, gerar Iog e notificar alguém sobre sua ocorrência. Asclasses geradas ficarão contidas na Camada de Infra-estrutura.Error handling interest will be used throughout the system to standardize the mechanism used to handle error situations. The error-handling function will be implemented through the RECOVERYBLOCKS, MINIMIZE HUMAN INTERVENTION, MAINTENACE INTERFACE, SOMEONE IN CHARGE, ESCALATION, and FAULT OBSERVER design standards. These standards provide ways to detect errors, generate Iog and notify someone of their occurrence. The generated classes will be contained in the Infrastructure Layer.

Finalmente, o interesse de geração de logs será utilizado pelos mecanismosassociados aos demais interesses para gerar logs para futura análise, pelo administrador dosistema. Poderão gerar logs, por exemplo, das funções de tratamento de erros e demonitoração. A função de geração de logs deverá ser implementada por meio do padrão deprojeto LEADER/FOLLOWERS, que permite gerar Iogs com pouco impacto nodesempenho do sistema. Estas funções serão implementadas na Camada de Infra-estrutura.Finally, the logging interest will be used by the mechanisms associated with the other interests to generate logs for future analysis by the system administrator. They may generate logs, for example, of error handling and monitoring functions. The logging function should be implemented through the LEADER / FOLLOWERS design pattern, which allows you to generate low impact Yogs on system performance. These functions will be implemented in the Infrastructure Layer.

1.5. Marcação do Modelo1.5. Model Marking

Os artefatos do Modelo de Domínio (domínios, classes, atributos e relações)serão marcados para indicar os padrões que serão usados na implementação de cadainteresse arquitetural. Alguns exemplos de marcas associadas à classe "Reembolso", estãoindicadas na tabela 2.Domain Model artifacts (domains, classes, attributes, and relationships) will be marked to indicate the patterns that will be used in the implementation of each architectural interest. Some examples of tags associated with the "Refund" class are shown in table 2.

Todas as classes de negócio serão marcadas com o aspecto"aspBusinessEntity", mais o padrão "BEL", para gerar os programas fonte da camada deentidades de negócio (BEL). Este padrão tem um parâmetro adicional que é o rótulo (Iabel)da classe, este rótulo será usado como título das telas e em mensagens de erro e log. Paraos atributos marcados também existem outros parâmetros para indicar se o atributo aceitavalor nulo (Null=true), rótulo, regras de consistência (validation) e tamanho do campo(size). Associado ao padrão "BEL" e interesse "aspBusinessEntity" deve haver umconjunto de templates que serão processados por uma ferramenta para gerar os programasfonte.All business classes will be marked with the "aspBusinessEntity" aspect, plus the "BEL" standard, to generate the business entity layer (BEL) source programs. This pattern has an additional parameter which is the class label (Iabel), this label will be used as screen title and in error and log messages. For the checked attributes there are also other parameters to indicate if the accept value is null (Null = true), label, validation rules and field size (size). Associated with the "BEL" pattern and "aspBusinessEntity" interest should be a set of templates that will be processed by a tool to generate the source programs.

Por meio da parametrização do interesse de persistência o arquiteto vai indicaro mecanismo que deve ser usado para persistência dos objetos. Para usar o padrão DAOcom banco de dados relacionais, é indicado o padrão DAODB com o parâmetro"Write=true" para indicar que este classe permite atualização. Para indicar que devem sercriados mecanismos para carregar objetos com base no atributo "TipoReembolso", esteatributo é marcado com o parâmetro "ReadBy=true". Para indicar os mecanismos dacamada de armazenamento de dados, que será encapsulada no banco de dados, indica-se ointeresse arquitetural de armazenamento de dados. O padrão "DDL+DML" é usado paragerar os scripts para criação das tabelas e índices (DDL - Data Definition Language) maisos scripts para criar as stored procedures para fazer INSERT, DELETE e UPDATE nestastabelas.By parameterizing the persistence interest the architect will indicate the mechanism that should be used for persistence of objects. To use the DAOcom relational database standard, the DAODB standard with the "Write = true" parameter is indicated to indicate that this class allows updating. To indicate that mechanisms should be created to load objects based on the "RefundType" attribute, this attribute is marked with the "ReadBy = true" parameter. To indicate the data storage layer mechanisms that will be encapsulated in the database, the architectural interest of data storage is indicated. The standard "DDL + DML" is used to parade the scripts for creating tables and indexes (DDL - Data Definition Language) plus the scripts for creating the stored procedures to make INSERT, DELETE and UPDATE nestables.

O mecanismo de controle de acesso é gerado na camada de infra-estrutura(IFL), por meio da marca associada ao interesse arquitetural "aspUserAccessControl", queserá construído por meio do padrão de projeto FIREWALL PROXY. Na camada depersistência de todas as classes marcadas com este padrão, será inserido uma verificação depermissão de acesso dos usuários, em todas as funções de leitura, atualização, exclusão einclusão.The access control mechanism is generated at the infrastructure layer (IFL) through the architectural interest tag "aspUserAccessControl", which will be built using the FIREWALL PROXY design standard. In the persistence layer of all classes marked with this pattern, a user access permission check will be inserted in all read, update, delete, and include functions.

<table>table see original document page 29</column></row><table><table> table see original document page 29 </column> </row> <table>

Tabela 2 - Exemplos de marcas associadas à classe "Reembolso"Table 2 - Examples of brands associated with the "Refund" class

O mecanismo de geração de Iog é especificado por meio do interesse"aspTracking". O padrão "LOGCG" foi definido na Compugraf® para indicar, em cadaregistro de cada tabela do banco de dados, os dados da última atualização feita no registro:nome do usuário, data e hora, identificação do sistema usado e motivo da atualização.The mechanism for generating Yog is specified through the "aspTracking" interest. The "LOGCG" standard has been defined in Compugraf® to indicate, in each database table's record, the data of the last update made in the registry: username, date and time, system identification used and reason for updating.

1.6. Geração dos Programas Fonte1.6. Generation of Source Programs

Associado a cada padrão há um ou mais templates, que serão processados poruma ferramenta para gerar os programas fonte. Por exemplo, para o interesse depersistência, padrão DAODB, foram criados os seguintes templates·.• DAO.cs - este template é processado uma vez para cada entidade persistente, paracriar a classe responsável pelas funções de persistência. O nome da classe geradaterá o prefixo "dao", como "daoReembolso.es".Associated with each pattern are one or more templates, which will be processed by a tool to generate the source programs. For example, for the sake of persistence, default DAODB, the following templates were created: • DAO.cs - This template is processed once for each persistent entity to create the class responsible for persistence functions. The generated class name will have the prefix "dao", such as "daoReimbursement.es".

• DaoFacade.cs - este template é processado apenas uma vez para gerar umafachada, por meio do padrão de projeto FACADE, para a camada de persistência(DAL). Na fachada serão gerados os métodos para carregar, atualizar, apagar eincluir objetos, como "Reembolso_ReadObject(long id)" e"Reembolso_WriteObject( beReembolso oReembolso)".• DaoFacade.cs - This template is processed only once to generate a fake, through the FACADE design pattern, for the persistence layer (DAL). The facade will generate methods for loading, updating, deleting and adding objects such as "Refund_ReadObject (long id)" and "Refund_WriteObject (beRefund or Refund)".

• Repository.cs - este template é processado apenas uma vez para gerar uma classeonde estão os métodos de acesso ao banco de dados. Tem métodos para conectar,desconectar, iniciar uma transação, dentre outros.• Repository.cs - This template is processed only once to generate a class of database access methods. It has methods to connect, disconnect, initiate a transaction, among others.

A ferramenta de geração de programas fonte vai receber como entrada asdefinições do projeto (linguagem de programação, diretórios onde os arquivos serãoarmazenados, dentre outras informações) e o diagrama de classes UML. Depois vaiprocessar o diagrama e montar internamente um grafo com as classes e os interessesespecificados. Para cada interesse a ferramenta vai elencar os padrões parametrizados e vaiprocessar os templates associados. A estrutura de uma ferramenta está representada nasfiguras 2.2 e 2.3.The source program generation tool will receive as input the project definitions (programming language, directories where the files will be stored, among other information) and the UML class diagram. Then it will process the diagram and internally assemble a graph with the specified classes and interests. For each interest the tool will list the parameterized patterns and will process the associated templates. The structure of a tool is represented in figures 2.2 and 2.3.

Quando for necessário usar um padrão para o qual ainda não existem ostemplates, estes precisarão ser criados antes que os programas fonte sejam gerados. Podeser necessário, inclusive, definir-se um novo interesse arquitetural, por exemplo, ointeresse de distribuição, serialização de objetos, dentre outros.When it is necessary to use a pattern for which ostemplates do not yet exist, they will need to be created before the source programs are generated. It may even be necessary to define a new architectural interest, for example, the interest of distribution, serialization of objects, among others.

1.7. Programação Manual1.7. Manual Programming

As regras de negócio precisarão de programadas, pois o PROGERAS permiteespecificar e gerar somente as rotinas de infra-estrutura. Por exemplo, para criar um objetopara reembolso de estudos, é necessário calcular o valor do reembolso (normalmente doisterços da parcela) e a somatória dos reembolsos já pagos no mês. Neste projeto partes doprograma serão construídas manualmente: algumas telas, os relatórios e alguns scripts SQL(por exemplo os scripts de backup).1.8. ConclusãoBusiness rules will need to be programmed because PROGERAS allows you to specify and generate only infrastructure routines. For example, to create an object for study reimbursement, you need to calculate the reimbursement amount (typically two-thirds of the installment) and the sum of the repayments already paid in the month. In this project parts of the program will be built manually: some screens, reports and some SQL scripts (eg backup scripts) .1.8. Conclusion

Acima, foi apresentado um exemplo de aplicação do PROGERAS, e foidemonstrado como o processo deve ser usado. Entretanto, fica implícito para aquelesversados na técnica, que o exemplo acima não constitui uma limitação da invenção, sendoobservado que o processo para a geração de programas fonte, aqui denominadoPROGERAS, permite que seja possível especificar processos de negócio, de modo que asrotinas associadas também possam ser geradas automaticamente, sendo a sua limitaçãounicamente de acordo com as reivindicações anexas.Above, an example of PROGERAS application was presented, and it was demonstrated how the process should be used. However, it is implicit to those of skill in the art that the above example does not constitute a limitation of the invention, since it is noted that the process for generating source programs, here called PROGERAS, makes it possible to specify business processes, so that associated routines can also be automatically generated and limited solely in accordance with the appended claims.

Por meio do processo PROGERAS é proposto um processo de geraçãoautomática de programas fonte com base no MDA. Para orientar o processo de geração decódigo, são usadas regras de marcação padronizadas, inseridas em modelos UML por meiode tagged values, extensões e anotações. Essas regras indicam o interesse arquitetural e opadrão de projeto que deverá ser usado ao gerar os programas fonte. O PROGERAS éproposta de extensão ao MDA, aplicando os conceitos do AOD e do POA para gerarprogramas fonte de forma automatizada a partir de um diagrama de classes (PIM). Comessa proposta, acredita-se ser possível não só obter um elevado nível de automação noprocesso de produção do software, forçar o uso de padrões, aumentar a qualidade e aconsistência, como também ganhar produtividade.Lista de Abreviaturas e SiglasThe PROGERAS process proposes a process of automatic generation of source programs based on the MDA. To guide the code generation process, standard markup rules are used, inserted into UML models by means of tagged values, extensions, and annotations. These rules indicate the architectural interest and design pattern that should be used when generating the source programs. PROGERAS is proposed to extend to MDA by applying the concepts of ODA and POA to generate source programs automatically from a class diagram (PIM). With this proposal, it is believed that it is possible not only to achieve a high level of automation in the software production process, to enforce the use of standards, to increase quality and advice, but also to gain productivity. List of Abbreviations and Acronyms

ACMDA Architecture-Centric Model-Driven ArehiteetureACMDA Architecture-Centric Model-Driven Arehiteeture

ADL Arehiteeture Deseription LanguageADL Arehiteeture Deseription Language

AOAD Aspeet-Oriented Arehiteeture DesignAOAD Aspeet-Oriented Arehiteeture Design

AOD Aspeet-Oriented DesignAOD Aspeet-Oriented Design

AOM Aspeet-Oriented ModelingAOM Aspeet-Oriented Modeling

AORE Aspeet-Oriented RequirementsAORE Aspeet-Oriented Requirements

AOP Aspeet-Oriented ProgramingAOP Aspeet-Oriented Programing

AOSD Aspeet-Oriented Software DevelopmentAOSD Aspeet-Oriented Software Development

CIM Computer-Independent ModelCIM Computer-Independent Model

CSV Comma Separated ValueCSV Comma Separated Value

CTI Computer Telephony IntegrationCTI Computer Telephony Integration

IDE Integrated Development Environment ,IDE Integrated Development Environment,

GUI Graphie User InterfaceGUI Graphie User Interface

LOC Lines Of CodeLOC Lines Of Code

MDA Model-Driven ArehitectureMDA Model-Driven Arehitecture

MDD Model-Driven DevelopmentMDD Model-Driven Development

MDE Model-Driven EngineeringMDE Model-Driven Engineering

MOF Meta-Objeet FaeilityMOF Meta-Objeet Faeility

PIM Platform-Independent ModelPIM Platform-Independent Model

OMG Objeet Management GroupOMG Objeet Management Group

POA Patter-Oriented ArehiteeturePOA Patter-Oriented Arehiteeture

PSM Platform-Specific ModelPSM Platform-Specific Model

PROGERAS Processo para geração automatizada de softwareUML Un ified Model ing LanguagePROGERAS Process for automated software generationUML Un ified Model ing Language

XMI XML Metadata InterchangeXMI XML Metadata Interchange

CAMPOS da Figura 6:FIELDS of Figure 6:

Campo AField A

- Sequencia : int = 1- Sequence: int = 1

- DataVencimento : Date- Expiration Date: Date

- Valor : float = O- ValorReembolso : float: = O- Amount: float = O- Refund Amount: float: = O

- FlagAbaterAuxilioEstudo : boolean = true- FlagAbaterAuxilioStudy: boolean = true

- DataAprovacaoChefe : Date- DateApprovalBoss: Date

Campo BField B

- Curso : String- Course: String

- Instituição : String- Institution: String

- DataInicio : Date- DateStart: Date

- DuracaoMeses : int- DurationMonths: int

Campo CC field

- MaxAuxilioEstudo : float- MaxAuxilioStudy: float

- PercentualReembolsoCursos : float- PercentageRefundCourses: float

- FazReembolsoEstudo : boolean- Make RefundStudy: boolean

- UserId : String- UserId: String

Campo DField D

-DataPedido : Date-DateOrder: Date

- DataAprovacaoChefe : Date- DateApprovalBoss: Date

- DataAprovacaoDiretor : Date- DateApprovalDirector: Date

- DataAprovacaoFinanc : Date- DateApprovalFinanc: Date

- DataPagamento : Date- Finalidade : String- DatePayment: Date- Purpose: String

- ValorReembolso : Float- Refund Amount: Float

- DataContabilizacao : Date- DateAccounting: Date

- TipoReembolso : String- RefundType: String

Campo EField E

- Numero : String- Number: String

- DataEmissao : Date- DateEmission: Date

- Valor : float- Value: float

- Fornecedor : String- Itinerário : String- Vendor: String- Itinerary: String

- Quilometragem : float = 0- Mileage: float = 0

- Observacao : String- Note: String

Campo FField F

- Data : Date- Date: Date

- Valor : float- Value: float

- Finalidade : String- Purpose: String

- DataVencimento : Date- Expiration Date: Date

- DataContabilizacao : Date- DateAccounting: Date

CampoGCampoG

- PercenbtualReembolsoEstudo : float = 0.66F- PercenbtualRefundStudy: float = 0.66F

- PercenbtualMaxReembolsoSobreSalario : float = 0.2F- PercenbtualMaxRefundAbout Salary: float = 0.2F

- DiaPagamentoReembolsoEstudo : int = 20--DayPaymentRefundStudy: int = 20

- DiaSemanaPagamentoReembolsoDespesa : int = 3--DayWeekPaymentRepaymentExpense: int = 3

- PeriodoMesesParalnicioReembolsoEstudo : int = 6--PeriodMonthsParalStart RepaymentStudy: int = 6

- IntervaloContabilizacao : int- AccountingInterval: int

- EventoAdiantamentoCLT : int- Advance EventCLT: int

- EventoAdiantamentoKFD : int- Advance EventKFD: int

- EventoReembolsoDespesaCLT : int- EventRepaymentExpenditureCLT: int

- EventoReembolsoDespesaKFD : int- EventRepaymentExpenseKFD: int

- EventoAbatimentoemFolhaCLT : int- LeafRecovery EventCLT: int

- EventoAbatimentoemFolhaKFD : int- EventRecoverinfoKFD: int

- EventoReembolsoEstudoCLT : int--Refund EventStudyCLT: int

- EventoReembolsoEstudoKFD : int--Refund EventStudyKFD: int

- EventoNotaDebito : int--EvoitNote Event: int

- LimiteAprovacaoDiretor: float- LimitApprovalDirector: float

- DiasParaSolicitacaoReembolsoEstudo : int- DaysForRequest RefundStudy: int

Claims (7)

1.) "PROCESSO PARA GERAÇÃO AUTOMATIZADA DE SOFTWARE",caracterizado por compreender as etapas de:a) levantamento de requisitos;b) criação de modelos de domínio;c) projeto de arquitetura;d) marcação do modelo de domínio;e) geração de programas fonte;f)adição manual de linhas de programa; eg) geração de software executável.1.) "PROCESS FOR AUTOMATED SOFTWARE GENERATION", characterized by the steps of: a) requirements gathering; b) creation of domain models; c) architecture design; d) domain model marking; e) generation (f) manual addition of program lines; and g) generation of executable software. 2.) "PROCESSO", de acordo com a reivindicação 1, caracterizado pelo projeto dearquitetura compreender o uso de templates para geração do programa fonte.2. "PROCESS" according to claim 1, characterized in that the architecture project comprises the use of templates for generating the source program. 3.) "PROCESSO", de acordo com a reivindicação 2, caracterizado pelos templatesconsistirem como adendos nos quais são definidos pontos de junção de interessesarquiteturais.3. "PROCESS" according to claim 2, characterized in that the templates consist of addendums in which architectural junction points are defined. 4.) "PROCESSO", de acordo com a reivindicação 1, caracterizado pela marcação demodelo de domínio utilizar elementos do diagrama de classes marcados com base noprojeto de arquitetura e no padrão de regras de marcação do processo selecionado para asua implementação permitindo que a ferramenta selecione e execute o templatecorrespondente.4.) "PROCESS" according to claim 1, characterized in that the domain model marking uses marked class diagram elements based on the architectural design and the selected process marking rules pattern for its implementation allowing the tool to select and run the corresponding templat. 5.) "PROCESSO", de acordo com a reivindicação 4, caracterizado pelas marcas sereminseridas no modelo por meio de tagged values ou anotações, tendo a forma Variável =Expressão.5.) "PROCESS" according to claim 4, characterized in that tags are inserted into the model by means of tagged values or annotations having the form Variable = Expression. 6.) "PROCESSO", de acordo com a reivindicação 1, caracterizado pela geração deprogramas compreender o uso de uma ferramenta que recebe os diagramas de classes commarcações, gerando programas fonte numa linguagem específica e novos modelos quedemonstram a arquitetura do sistema.6.) "PROCESS" according to claim 1, characterized in that the program generation comprises the use of a tool that receives the class-class diagrams, generating source programs in a specific language, and new models that demonstrate the system architecture. 7.) "PROCESSO", de acordo com a reivindicação 1, caracterizado pela geração dosoftware executável ser realizado pela ferramenta de geração de fonte (robôs) que recebemos diagramas UML marcados como entrada e geram os programas fonte.7.) "PROCESS" according to claim 1, characterized in that the executable software generation is performed by the font generation tool (robots) which receive input UML diagrams and generate the source programs.
BRPI0909274-9A 2009-12-18 2009-12-18 process for automated software generation BRPI0909274A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
BRPI0909274-9A BRPI0909274A2 (en) 2009-12-18 2009-12-18 process for automated software generation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
BRPI0909274-9A BRPI0909274A2 (en) 2009-12-18 2009-12-18 process for automated software generation

Publications (1)

Publication Number Publication Date
BRPI0909274A2 true BRPI0909274A2 (en) 2011-08-16

Family

ID=44482371

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0909274-9A BRPI0909274A2 (en) 2009-12-18 2009-12-18 process for automated software generation

Country Status (1)

Country Link
BR (1) BRPI0909274A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240338462A1 (en) * 2023-04-06 2024-10-10 OneSky Flight LLC Systems and methods for data access generation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240338462A1 (en) * 2023-04-06 2024-10-10 OneSky Flight LLC Systems and methods for data access generation

Similar Documents

Publication Publication Date Title
US11487529B2 (en) User interface that integrates plural client portals in plural user interface portions through sharing of one or more log records
Niemann From enterprise architecture to IT governance: elements of effective IT management
Sahay et al. Analyzing business process management capabilities of low‐code development platforms
Podeswa UML for the IT Business Analyst
Dam et al. Managing changes in the enterprise architecture modelling context
AU2009201575B2 (en) Computer Implemented Method for Adapting and Using a Computing Environment, Computer Program Product and Computer Based System
Zolotas et al. Bridging proprietary modelling and open-source model management tools: the case of PTC Integrity Modeller and Epsilon
Samuel et al. Customizing the representation capabilities of process models: understanding the effects of perceived modeling impediments
Predoaia Towards Systematic Engineering of Hybrid Graphical-Textual Domain-Specific Languages
Buchgeher et al. A platform for the automated provisioning of architecture information for large-scale service-oriented software systems
Guerra-García et al. Developing web applications with awareness of data quality elements–DQAWA
Mulder et al. Towards enterprise-grade tool support for DEMO
Eide Quantification and traceability of requirements
Ferreira Gestão de Empreitadas-Aplicação para o processo de gestão de obra
Edition FDIS stage
HK40093176A (en) Integrated system for rule editing, simulation, version control, and business process management
HK40093176B (en) Integrated system for rule editing, simulation, version control, and business process management
Vermeylen Lxledger: powerglue for small enterprise plain text accounting
Abeyratne Web Based System for Maganeguma Rural Road Development Programme
Gunarathne Metal Purchasing & Production Management System for Lokupitiya Enterprises
Arora Business Administrative Tools for Census and Forecast Management
Iryani Personal Islamic Asset Management System Using Object-Oriented Approach
Demirli Model-driven engineering of software architecture viewpoints
MADHUSANKA Order and Payment Management System for US Graphics (PVT) Ltd
ALAM CORE E-PORTAL

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: MANTIDO O INDEFERIMENTO UMA VEZ QUE NAO FOI APRESENTADO RECURSO DENTRO DO PRAZO LEGAL

B15K Others concerning applications: alteration of classification

Free format text: RECLASSIFICACAO AUTOMATICA - A CLASSIFICACAO ANTERIOR ERA: G06F 9/44, G06Q 20/00, G06Q 50/00

Ipc: G06F 8/00 (2018.01)