Login | Register
My pages Projects Community openCollabNet

Introduction

Background on CASE tools

What are CASE tools

Computer Aided Software Engineering (CASE) is a catchall term to describe virtually any software development tool. However, it is typically used to refer to software development tools that use diagrammatic representations of software design. For the purposes of this dissertation, the term is further specialized to mean tools that support the use of design diagrams in the development of object-oriented software. These tools are also known as OOAD (Object-Oriented Analysis and Design) tools.

CASE history in a nutshell

Software designers have used diagrammatic representations of their designs since the earliest days of software development. Over time the nature of these design diagrams has changed and so have the tools used to produce them. Much like early word processors replaced typewriters, early CASE tools served as electronic replacements for paper, pencil, and stencil. Many of these early CASE tools became unused "shelfware" because they did not provide significant value to software designers (Iivari, 1996). Later CASE tools added sophisticated code generation, reverse engineering, and version control features. These features add value via increased automation of some design tasks, for example, converting a design into a source code skeleton. However, current CASE tools fail to address the essential cognitive challenges facing software designers.

International Data Corporation (IDC), a market research firm that collects data on all aspects of the computer hardware and software industries, has published a series of reports on OOAD tools. "IDC expects revenues in the worldwide market for OOAD tools to expand at a compound annual growth rate of 54.6% from $127.4 million in 1995 to $1,125.2 million in the year 2000" (IDC 1996). Much of this growth is expected to stem from adoption of OOAD tools by smaller software development organizations.

The need to help designers

Software design is not simply an automateable process of transforming one specification into another; it also involves complex decision making tasks that require the attention of skilled designers. Design tools that support designers in decision making are a promising way to increase designer productivity and the quality of the resulting designs.

Helping designers make good design decisions is important because their design decisions will strongly influence the amount of implementation and maintenance effort needed later. Support for designers is also important because many software designers are overworked and pressured to attempt design tasks for which they lack proper training and experience. This is due in part to the current shortage of trained information technology workers (Fox, 1997; PITAC, 1999)

Research Method

Sophisticated development tools such as CASE tools have dozens or hundreds of features. Two common ways that tool builders decide which features to include are by looking at the features that similar tools provide and by directly observing users. Direct observation of users is followed by interpretation of the observations, generation of proposed features, and evaluation. The basic difference in my approach is that I generate proposed features based on published theories of designers' cognitive needs. These theories are themselves based on careful observations of human activity. The main advantage of using published theories stems from their insights into human design activities, which are deeper and more widely applicable than those a typical CASE tool builder can glean from direct observation. My approach is illustrated in See Freature generation approach .

This dissertation presents a set of novel design tool features intended to support designers in making and ordering decisions. Each of these features is motivated by experience in designing software systems and by published theories of the cognitive challenges of design. Many of these theories have been published in books and journals on cognitive psychology while others are implicit in the software engineering literature. Using cognitive theories to guide the development of design tool features has resulted in several promising new features that I would not otherwise have been likely to invent.

Each feature is described in the context of Argo/UML, a tool for object-oriented design that uses the Unified Modeling Language. Argo/UML is a research system with an emphasis on novel features. It also includes enough standard CASE tool functionality to be generally useful. Argo/UML is implemented in Java and consists of over 100,000 lines of code in over 800 classes. Preliminary versions of Argo/UML have been distributed via our web site (www.ics.uci.edu/pub/arch/uml) since July 1998, and have been evaluated or used in dozens of companies and classrooms. Argo/UML is the fourth in a series of tools that I have developed or enhanced with cognitive support features. Although Argo/UML is the focus of this dissertation, the design support features described are also applicable to other design tools. This point will be further discussed in the conclusion.

A good research method should be repeatable. I expect the research method described in See Freature generation approach to be repeatable by researchers with background similar to my own. Specifically, the method requires researchers to become familiar with several theories of designers' cognitive needs, to be experienced users of existing design tools in the target domain, and to have a broad knowledge of standard usability issues. One of the contributions of this dissertation is a description of the relevant theories in a way that could allow more people to repeat the method.

Advanced user interface features cannot make an unusable design tool into a usable one. Current CASE tools certainly leave room for improvement in basic usability. For example, they often make poor use of limited screen space, confuse users with a dizzying array of commands, require excessive use of the mouse rather than the keyboard, provide commands that are not well matched to the way designers think about the design task, and impose unneeded modality. I have made some efforts to improve the basic usability of Argo/UML, and these efforts are also grounded in theory and Human-Computer Interface (HCI) guidelines.

Hypothesis and Contributions

The hypothesis of this dissertation is that cognitive theories of design can inform the development of CASE tool features that provide cognitive support to designers. Here "CASE tool" refers to object-oriented software design tools. Implications for other types of software development tools are discussed in the final chapter. Furthermore, "inform" means that parts of the theories described in Chapter 2 lead to parts of the features proposed in Chapter 4. Finally, "provide cognitive support" means that each feature's expected benefits can be explained in terms of the theories of designers' cognitive needs and that the feature has a positive effect on the designers' mental processes or work products.

The contributions of this dissertation are as follows:

  • It describes theories of design cognition in terms understandable and relevant to CASE tool builders (see Chapter 2).
  • It proposes a basket of useful CASE tool features. Each feature is inspired and explained by cognitive theories and HCI guidelines (see Chapter 4). Several of these features are novel, while others are improvements on features that may be found in current CASE tools or research systems.
  • It demonstrates the successful application of a theory-based UI design method to a large-scale software engineering tool.
  • It describes the design of a scalable, reusable infrastructure for building the proposed features in design tools (see Chapter 8).

Organization of the Dissertation

This dissertation consists of nine chapters. The next two chapters present cognitive theories of design and previous work on design critiquing systems. Chapter 4, the heart of the dissertation, proposes cognitive support features that address some of the needs identified in the cognitive theories. Chapter 5 demonstrates how these features might be used. Chapter 6 evaluates the proposed cognitive support features using heuristic usability methods, while Chapter 7 evaluates the features and approach empirically. Chapter 8 describes the reusable libraries that implement the cognitive support features. Chapter 9 concludes the dissertation.