An Extensible Compiler for Implementing Software Design Patterns as Concise Language Constructs

Author(s):  
Taher Ahmed Ghaleb ◽  
Khalid Aljasser ◽  
Musab A. Alturki

Design patterns are generic solutions to common programming problems. Design patterns represent a typical example of design reuse. However, implementing design patterns can lead to several problems, such as programming overhead and traceability. Existing research introduced several approaches to alleviate the implementation issues of design patterns. Nevertheless, existing approaches pose different implementation restrictions and require programmers to be aware of how design patterns should be implemented. Such approaches make the source code more prone to faults and defects. In addition, existing design pattern implementation approaches limit programmers to apply specific scenarios of design patterns (e.g. class-level), while other approaches require scattering implementation code snippets throughout the program. Such restrictions negatively impact understanding, tracing, or reusing design patterns. In this paper, we propose a novel approach to support the implementation of software design patterns as an extensible Java compiler. Our approach allows developers to use concise, easy-to-use language constructs to apply design patterns in their code. In addition, our approach allows the application of design patterns in different scenarios. We illustrate our approach using three commonly used design patterns, namely Singleton, Observer and Decorator. We show, through illustrative examples, how our design pattern constructs can significantly simplify implementing design patterns in a flexible, reusable and traceable manner. Moreover, our design pattern constructs allow class-level and instance-level implementations of design patterns.

Author(s):  
Perdita Stevens

In software design, patterns—that is, structured, named descriptions of good solutions to common problems in context—have become a popular way of recording and transferring problem-solving expertise. The aim of this chapter is to describe how patterns can help in the field of software maintenance. There are two main uses of patterns in software maintenance. The first is to consider the introduction of a design pattern to an existing design. The second approach is to consider patterns for the maintenance process itself. For example, reengineering patterns describe solutions to common problems in the reengineering of a system, considering issues such as how to split the necessary changes into risk-minimizing steps. We discuss the advantages, pitfalls and practicalities of using patterns in both of these ways.


Author(s):  
Lakhwinder Kaur ◽  
Kuljit Kaur ◽  
Ashu Gupta

Refactoring is a process that attempts to enhance software code quality by using small transforming functions and modifying the structure of the program through slightly different algorithm. It is important to analyze the design pattern of the software code as well as the impact and possibility of the application of some conflicting refactorings on it. The objective of this chapter is to present an approach for analyzing software design patterns in order to avoid the conflict in application of available refactoring techniques. This chapter discusses the mechanism to study software code or design patterns to automate the process of applying available refactorings while addressing the problem of conflict in their application.


2010 ◽  
pp. 594-609
Author(s):  
Eric Tachibana ◽  
David Ross Florey

Since the mid to late 1990’s, object-oriented software design patterns have proven to be a powerful tool in support of software design and product management. However, the usefulness of the methodology need not be restricted to the technical domain alone. In fact, the design pattern methodology represents a powerful tool that can also be used in support of it management at a business level. In this paper, we discuss the design pattern methodology, provide an example of how the methodology could be implemented to solve a business problem, the multivariate vector map (mvm), and then apply the mvm pattern to the problem of choosing an it outsourcing strategy as a means to demonstrate its effectiveness to it managers and to it outsourcing vendors


Author(s):  
Eric Tachibana ◽  
David Ross Florey

Since the mid to late 1990’s, object-oriented software design patterns have proven to be a powerful tool in support of software design and product management. However, the usefulness of the methodology need not be restricted to the technical domain alone. In fact, the design pattern methodology represents a powerful tool that can also be used in support of it management at a business level. In this paper, we discuss the design pattern methodology, provide an example of how the methodology could be implemented to solve a business problem, the multivariate vector map (mvm), and then apply the mvm pattern to the problem of choosing an it outsourcing strategy as a means to demonstrate its effectiveness to it managers and to it outsourcing vendors


Author(s):  
Jason Smith ◽  
David Stotts

This chapter introduces the system for pattern query and recognition, a collection of formalisms, definitions, and concepts that provides a means for formally describing Design patterns from the viewpoint of design intent. These descriptions enable efficient and effective searching for instances of Design patterns in source code, for purposes of discovery, documentation, validation, or refactoring. SPQR is composed of ?-calculus, a formal denotation semantics for defining relationships between programmatic entities, elemental Design patterns, a collection of binary relationships that define the basis for software design principles, and isotopes, a flexible approach to combining formal design definitions so that they retain their conceptual integrity. It is our intent that the reader be better equipped to contemplate the hierarchical nature of the concepts of programming, and to come away from this discussion with a clearer view of how software is designed, from the small to the large.


2014 ◽  
pp. 1787-1800
Author(s):  
Lakhwinder Kaur ◽  
Kuljit Kaur ◽  
Ashu Gupta

Refactoring is a process that attempts to enhance software code quality by using small transforming functions and modifying the structure of the program through slightly different algorithm. It is important to analyze the design pattern of the software code as well as the impact and possibility of the application of some conflicting refactorings on it. The objective of this chapter is to present an approach for analyzing software design patterns in order to avoid the conflict in application of available refactoring techniques. This chapter discusses the mechanism to study software code or design patterns to automate the process of applying available refactorings while addressing the problem of conflict in their application.


e-xacta ◽  
2016 ◽  
Vol 9 (1) ◽  
pp. 37
Author(s):  
Cristiano Martins Monteiro ◽  
Flavianne Braga Campos de Lima ◽  
Carlos Renato Storck

<p>A geração automática de código-fonte é uma prática adotada no desenvolvimento de softwares para agilizar, facilitar e padronizar a implementação dos projetos. Embora seja uma prática comum nas fábricas de software, não se conhece uma ferramenta que permita escolher o padrão de projeto a ser usado. O objetivo principal deste trabalho é apresentar um gerador de códigos para o desenvolvimento de sistemas Web a partir de uma modelagem entidade-relacionamento, uma linguagem de programação e um padrão de projeto determinados pelo usuário. Os objetivos específicos são propor uma arquitetura do sistema capaz de adequar e reaproveitar diferentes padrões de projeto, linguagens de programação e projetos cadastrados; permitir que o usuário cadastre, altere, exclua, importe e exporte um projeto; e gerar automaticamente o seu código-fonte e scripts de banco de dados. Este trabalho se justifica pela importância de reduzir erros de codificação; e evitar perca tempo ao realizar atividades rotineiras de implementação de padrões de projeto. Possibilitando assim, maior dedicação no planejamento das regras de negócios e redução de custos. A ferramenta proposta (GCER) foi desenvolvida em linguagem Java com o uso banco de dados Oracle 11g, e seguindo os padrões DAO e MVC. Os resultados foram avaliados através da geração e compilação de códigos de um projeto para cadastro de veículos. A geração com êxito evidencia a viabilidade da ferramenta proposta para a geração automática de códigos no processo de desenvolvimento de software.</p><p>Abstract</p><p>The automatic generation of source code is a practice adopted in the development of software to streamline, facilitate and standardize the implementation of projects. Although it be a common practice in software factories, it is not known a tool able to choose the design pattern to be used. The main objective of this paper is to present a code generator for the development of Web systems from an entity-relationship modeling, a programming language and a design pattern determined by the user. The specific objectives are to propose a system architecture able to suit and reuse different design patterns, programming languages and saved projects; allow the user to insert, update, delete, import and export a project; and automatically generate the source code and database scripts. This work is justified by the importance to reduce errors of coding; and to avoid waste of time in the development of Web systems performing routine tasks. Allowing, then, a greater dedication in the planning of business rules and the reduction of costs. The tool proposed (GCER) was developed in Java with the database using Oracle 11g, and following the DAO and MVC patterns. The results were evaluated by generating and compiling codes of a project for vehicle registration. The successful code generation demonstrate the feasibility of the proposed tool for the automatic generation of code in the software development process.</p>


2014 ◽  
Vol 556-562 ◽  
pp. 5267-5270
Author(s):  
Tai Fa Zhang ◽  
Ya Jiang Zhang ◽  
Jun Yao

Nowadays, object-oriented design is the trend of software design patterns, and the database connection pool is one of the important research topics. The paper firstly describes the basic principle of connection pool under traditional, tomcat and hibernate modes. Based on that, a new connection pool method is proposed, and these four methods are experimentally simulated in java language at last. The comparative analysis has verified that the presented connection pool owns the optimum access time and it can greatly improve the access efficiency of database.


Sign in / Sign up

Export Citation Format

Share Document