Description
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 |
|
|