The Knowledge Management Lab
University of Toronto

Home Projects People Publications Join us
Goal-Oriented Software Engineering
Project Home

The NFR project proposed a process-oriented framework for modeling software qualities. Qualities and the factors that affect them are modeled as soft-goals, while functional characteristics are modeled as goals. These can be successively decomposed into lower-level goals and soft-goals and ultimately operationalized as tasks and resources. The tradeoffs among goals, soft-goals, tasks and resources are represented in a soft-goal interdependence graph (SIG).

We use SIGs to address several issues in software engineering:

  • Improving productivity while maintaining software quality. The time that it takes to build(i.e. compile and link) a large C/C++ software system can be a significant bottleneck in the software development process: the longer the build process takes, the longer developers have to wait to integrate their changes. Build time can be increased by the presence of false dependencies and redundant declarations. A false dependency occurs when a header file contains declarations and definitions that are not used by all implementation files that include it, while a redundant declaration occurs when a symbol such as a function symbol is declared more than once. Redundant declarations and false dependencies can be eliminated, but at the cost of producing a great number of header files and thereby making the system more difficult to maintain. Using a SIG, for several case studies we obtained an operationalization that made the system under study more maintainable while still significantly improving productivity. For example, using this approach we reduced the build time of the public domain text editor Vim by over half. More details can be found here.
  • Aspects-oriented requirements engineering. Aspects are non-functional software system units (such as "efficient use of memory" and "no unauthorized access to data") that tend to cut across the different components of a system. Aspect-oriented programming holds that software structured according to aspects is easier to develop, understand and maintain. We propose a systematic (manual) process for discovering candidate aspects in a software system based upon the construction and analysis of a particular type of SIG for the system called a V-graph. Details
  • Goal-oriented software development. Software development is mainly concerned with adding functionality, while processes such as software refactoring and software optimization are concerned with non-functional qualities like understandability and performance. In a case study, we show how a SIG can be used to guide the development process in such a way that while functionality is added to a system, good performance is maintained and code is understandable. We use software metrics associated with soft-goals to help guide the software development process by choosing which soft-goals to prioritize. Details
Funding Agencies
Principle Investigator

  The Knowledge Management Lab is now part of the Bell University Labs


  UofT logo The Knowledge Management Lab - Department of Computer Science - University of Toronto