The gulf between the user and the developer perspectives lead to difficulti
es in producing successful software systems. Users are focused on the probl
em domain, where the system's features are the primary concern. Developers
are focused on the solution domain, where the system's life-cycle artifacts
are key. Presently, there is little understanding of how to narrow this gu
lf.
This paper argues for establishing an organizing viewpoint that we term fea
ture engineering. Feature engineering promotes features as first-class obje
cts throughout the software life cycle and across the problem and solution
domains. The goal of the paper is not to propose a specific new technique o
r technology. Rather, it aims at laying out some basic concepts and termino
logy that can be used as a foundation for developing a sound and complete f
ramework for feature engineering. The paper discusses the impact that featu
res have on different phases of the life cycle, provides some ideas on how
these phases can be improved by fully exploiting the concept of feature, an
d suggests topics for a research agenda in feature engineering. (C) 1999 El
sevier Science Inc. All rights reserved.