12/16/1998 9:30am-11:30am ECOT 831
|
Feature Engineering of Software Systems
Carlton R. Turner
Computer Science PhD Candidate
Software users and developers have different perspectives. Users are focused on
the problem domain, where a system's features are the primary concern.
Developers are focused on the solution domain, where a system's life-cycle
artifacts are key. This difference leads to difficulties producing successful
software systems. At present, there is little understanding of how to narrow
the gulf between the two perspectives.
This dissertation argues for establishing an organizing viewpoint, which we
term feature engineering, to incorporate features into software engineering as
first class objects. Features, acting as a bridge between the problem and
solution domains, can begin to narrow the gulf.
This dissertation explores three aspects of features in software engineering.
First, it establishes a framework for understanding software features. In this
framework, we define the concept of feature as separate from feature
implementation, its realization in the developed system. The framework also
includes a model of features in software engineering. This model identifies
relationships between a system's features and the major development artifacts.
The final part of the framework is an evaluation of the potential use of
feature information in the various software development activities.
The second and third aspects considered are the roles for features and feature
relationships in configuration management and testing. In this dissertation,
we argue that configuration management is pivotal for taking advantage of the
various relationships that features structure. The ability of commercial
configuration management systems to use information about features is
evaluated, and our experiences using a prototype feature-based configuration
management system are reported. Feature testing is identified as a useful
extension to traditional testing. Feature tests are used to confirm that a
feature implementation faithfully produces the desired behavior. Feature tests
are also used to uncover feature relationships and interactions in the solution
domain.
|