Design Patterns and Design Quality

2017 ◽  
Vol 8 (2) ◽  
pp. 53-81
Author(s):  
Liguo Yu ◽  
Yingmei Li ◽  
Srini Ramaswamy

Design patterns are reusable software design solutions to object-oriented programs. Since the initial introduction of the 23 well-known design patterns in 1995, more and more patterns have been identified and utilized in the software industry. The benefits of applying design patterns include reducing development cost, improving code quality, and standardizing the integration and maintenance processes. Therefore, using design patterns is becoming a common practice to build both commercial software and open-source products. Although most design patterns are considered creative solutions to some difficult design problems, not all of them are necessarily the best with respect to all different software quality measures, such as program complexity. This paper studies 13 commonly employed design patterns in software industry. First, these 13 patterns are analyzed theoretically about their design complexity in comparison to the conventional solutions. Second, empirical studies are performed on five open-source Java projects to investigate the correlations between design patterns and class structural quality. Finally, these 13 design patterns are evaluated by software programmers who have experience of using all of them. Overall, this study finds that although some design patterns are considered useful, creative, and significant compared to conventional solutions based on user experience, pattern-involved classes are more complex than pattern-free classes, both theoretically and empirically. The authors accordingly recommend a balanced approach to using design patterns: design quality, cost, development time, and product quality should all be considered, when design patterns are utilized.

Author(s):  
Liguo Yu ◽  
Srini Ramaswamy

Design patterns are standardized solutions to commonly encountered problems using the object-oriented programming paradigm. Applying design patterns can speed up software development processes through the reuse of tested, proven templates, or development paradigms. Accordingly, design patterns have been widely used in software industry to build modern software programs. However, as different design patterns are introduced to solve different design problems, they are not necessarily superior to alternative solutions, with respect to all aspects of software design. One major concern is that the inappropriate use of design patterns may unnecessarily increase program complexity, such as class structural quality. Theoretical analysis of the effect of design patterns on software complexity has been widely performed. However, little work is reported to empirically study how design patterns might affect class structural quality. This chapter studies six components from five open-source Java projects and empirically investigates if design patterns can affect class structural quality. The chapter finds that pattern-involved classes are more complex than pattern-free classes and recommends the cautious use of design patterns to avoid unnecessary increases in class complexity and decrease in class structural quality.


Author(s):  
Liguo Yu ◽  
Srini Ramaswamy

Design patterns are standardized solutions to commonly encountered problems using the object-oriented programming paradigm. Applying design patterns can speed up software development processes through the reuse of tested, proven templates, or development paradigms. Accordingly, design patterns have been widely used in software industry to build modern software programs. However, as different design patterns are introduced to solve different design problems, they are not necessarily superior to alternative solutions, with respect to all aspects of software design. One major concern is that the inappropriate use of design patterns may unnecessarily increase program complexity, such as class structural quality. Theoretical analysis of the effect of design patterns on software complexity has been widely performed. However, little work is reported to empirically study how design patterns might affect class structural quality. This chapter studies six components from five open-source Java projects and empirically investigates if design patterns can affect class structural quality. The chapter finds that pattern-involved classes are more complex than pattern-free classes and recommends the cautious use of design patterns to avoid unnecessary increases in class complexity and decrease in class structural quality.


Author(s):  
Liguo Yu ◽  
Srini Ramaswamy

Design patterns are standardized solutions to commonly encountered problems using the object-oriented programming paradigm. Applying design patterns can speed up software development processes through the reuse of tested, proven templates, or development paradigms. Accordingly, design patterns have been widely used in software industry to build modern software programs. However, as different design patterns are introduced to solve different design problems, they are not necessarily superior to alternative solutions, with respect to all aspects of software design. One major concern is that the inappropriate use of design patterns may unnecessarily increase program complexity, such as class structural quality. Theoretical analysis of the effect of design patterns on software complexity has been widely performed. However, little work is reported to empirically study how design patterns might affect class structural quality. This chapter studies six components from five open-source Java projects and empirically investigates if design patterns can affect class structural quality. The chapter finds that pattern-involved classes are more complex than pattern-free classes and recommends the cautious use of design patterns to avoid unnecessary increases in class complexity and decrease in class structural quality.


Author(s):  
Jaryn A. Studer ◽  
Seda Yilmaz ◽  
Shanna R. Daly ◽  
Colleen M. Seifert

This paper explores “problem exploration heuristics,” or cognitive strategies used to identify and reframe design problem descriptions. The way a design problem is structured influences the types of ideas a designer generates; in particular, some framings may lead to more creative solutions and using multiple framings can support diverse solutions. Most existing problem exploration strategies have not been derived from empirical studies of engineering design practice. Thus, in our work, we drew upon a sample of engineering design problems and analyzed how the problem descriptions evolved during design. Examining iterations on the problem description allowed us to identify heuristics evident in designers’ recrafting of problem descriptions. Heuristics were defined based on the elements in each problem description and their perceived role in transforming the problem. We present a systematic methodology for identifying problem exploration heuristics, and describe five unique Problem Exploration Heuristics commonly observed in structuring design briefs.


Author(s):  
Swaroop S. Vattam ◽  
Michael Helms ◽  
Ashok K. Goel

Biologically inspired engineering design is an approach to design that espouses the adaptation of functions and mechanisms in biological sciences to solve engineering design problems. We have conducted an in situ study of designers engaged in biologically inspired design. Based on this study we develop here a macrocognitive information-processing model of biologically inspired design. We also compare and contrast the model with other information-processing models of analogical design such as TRIZ, case-based design, and design patterns.


i-com ◽  
2018 ◽  
Vol 17 (1) ◽  
pp. 91-98
Author(s):  
Dominick Madden ◽  
Horst Schneider ◽  
Kirstin Kohler

Abstract Design patterns are solutions for common design problems used in a number of fields including architecture, software development and user experience design. We compiled a pattern library for the usage of gesture-enabled interactions between different devices with screens, the so called multiscreen context. This library provides simple and intuitive gestures for connecting and disconnecting devices wirelessly as well as gestures for the exchange of data between these devices, like swiping a document from one’s tablet to the tablets of the surrounding colleagues in the same room. The library is the result of a 2.5 years running project in cooperation with three small and medium companies. We compiled the library by conducting an intense literature survey in parallel with several iterations of practical software projects in the multiscreen context. The literature survey inspired the practice-oriented project work. Being involved in software projects enabled us to identify challenges in the design and implementation of the gesture set. Therefore, we generated valuable insight for a comprehensive description of gestural interactions. With our set of patterns, we aim to support interaction designers to choose the appropriate gesture for their given context. The patterns serve as inspiration by showing the different possibilities but also provide guidance how to design and implement a selected gesture for a given context. They help designing the details of an interaction by breaking it down into its smallest parts. To support the developers of these interactions our pattern descriptions are enriched with an Android library containing lifecycle events and the necessary gesture recognition logic. This paper provides an overview of the pattern library. In addition, the structure and the usage of the library is described in more detail with the means of one sample pattern. The pattern library is openly accessible.


2016 ◽  
Vol 7 (15) ◽  
pp. 28 ◽  
Author(s):  
Sotiris Logothetis ◽  
Efstratios Stylianidis

<p class="VARAbstract">The Building Information Modelling (BIM) software enables the users to communicate and design, understand appearance, performance and cost in the spatial and urban design process. Another important use of the BIM technology is the documentation and 3D reconstruction of cultural heritage monuments. The appropriate BIM software equips the users with tools to easily capture and analyse concepts and maintain the coordination of design data through documentation and 3D modelling. Many developments come up in the BIM field and software industry for design, construction-reconstruction, restoration and management of the cultural heritage 3D models, using BIM tools; mainly commercial as well as free or open source. Nevertheless, recently the growing popularity of open source has altered the landscape in software industry, as they attract many users.</p><p class="VARAbstract">This paper presents a review of some recent research on the topic. We review the recent developments focusing on the OSS that can be used at various stages of BIM process in the digital documentation of cultural heritage. The results show that there is more preference in the commercial software due to the fact that the OSS is not yet complete and covers all stages of the BIM process. However, lately we have the Edificius in architectural BIM design and “BIM Vision” as Industry Foundation Classes (IFC) model viewer that try to attract as many users as possible. These tools are free and they could well be used for the digital reconstruction of cultural heritage.</p>


2015 ◽  
pp. 997-1012
Author(s):  
Jagadeesh Nandigam ◽  
Venkat N Gudivada

This chapter describes a pragmatic approach to using open source and free software tools as valuable resources to affect learning of software industry practices using iterative and incremental development methods. The authors discuss how the above resources are used in teaching undergraduate Software Engineering (SE) courses. More specifically, they illustrate iterative and incremental development, documenting software requirements, version control and source code management, coding standards compliance, design visualization, software testing, software metrics, release deliverables, software engineering ethics, and professional practices. The authors also present how they positioned the activities of this course to qualify it for writing intensive designation. End of semester course evaluations and anecdotal evidence indicate that the proposed approach is effective in educating students in software industry practices.


Sign in / Sign up

Export Citation Format

Share Document