Abstract

Many different factors influence the quality of software. Among the most important of these factors is software complexity. One way to improve software quality, therefore, is to minimize its complexity making it more understandable and maintainable. The design phase of the software development life cycle plays an instrumental role in fostering quality in software. Seasoned designers often use past design best practices codified in the form of design patterns to make their designs and the resultant code more elegant, robust, and resilient to change. Little work, however, has been done to empirically assess the quantitative impact of design patterns on software complexity. This research is an attempt to fill this gap. A comparative analysis of before and after versions of program pairs written without and with design patterns was performed for all twenty three GoF (Gang of Four) design patterns. These program pairs were collected (or, in some cases, developed) and compared with respect to their complexity and size. The results of this comparative analysis reveal that the cyclomatic complexity of the programs written using design patterns was less for most of the design patterns as compared to the programs written without using design patterns. However, the values of CK metrics, number of classes, and software size SLOC (Source Lines of Code) increased when design patterns were used.

Highlights

  • Software has become an invisible driving force of our individual and collective existence

  • For most of the GoF design patterns, we found such programs with before and after versions at SourceMaking.com [20]

  • We used “Source Monitor” [22] and “CCCC” [23] - two measurement/assessment tools - to compare the programs written using design patterns with those written without using design patterns

Read more

Summary

Introduction

Software has become an invisible driving force of our individual and collective existence. It is playing an indispensable role in our international trade, our stock exchanges, our educational institutions, our healthcare, and our entertainment. Despite the fact that software has penetrated different aspects of our lives, it is still engineered following a set of steps which together constitute the SDLC. Some of these steps focus on the problem domain while others on the solution domain. The first step, and probably the most important, in the solution domain is design

Objectives
Methods
Results
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call