Date of Graduation

1999

Document Type

Thesis

Abstract

As the complexity of software systems increases, we look for techniques to automate the development of software applications. We seek techniques to improve software quality, reliability, and reduce cost and time-to-market. Among many innovative techniques and approaches that address this problem, design patterns and frameworks receive special attention because they focus on the early design stages. The collection of widely available pattern catalogues stimulates further research on how to utilize these trusted solutions to systematically develop applications. One of the important shifts in improving the software productivity and maintainability is to stop developing applications from scratch and to reuse exiting solutions to frequently recurring problems, these solutions that have been applied and tested in other applications. Code is the most common form of reuse. Reusable designs are less frequent due to the complexity and difficulty of constructing generic designs. Design patterns help in leveraging the reuse level to the design phase. This thesis introduces a new approach to design software using design patterns. We propose a new Pattern Oriented Analysis and Design (POAD) methodology that produces Pattern-Oriented Designs. As opposed to behavioral and role analysis approaches, we take a structural composition approach to glue patterns at the high level design. We introduce the notion of constructional design patterns as design components with interfaces. We define three design models and their logical views for the purpose of composing constructional design patterns. We identify the relationship between the proposed models and the metamodel of the Unified Modeling Language (UML) and formally specify our model elements using the Object Constraint Language (OCL). We envision that the specifications of many systems, specifically reactive systems, are based on statecharts. To facilitate the application of our POAD methodology to design these systems, we develop two pattern languages: one for statecharts and one for finite state machines. Each pattern language is a set of constructional design patterns with interfaces. We investigate three case studies as applications of our methodology. We also propose new design evaluation approaches with application to the POAD products. To assess the design quality of pattern-oriented and object-oriented designs, we define coupling matrices to quantify static metrics, propose dynamic metrics, and present a reliability analysis algorithm.

Share

COinS