Abstract
Domain engineering (DE) is the systematic process of collecting, organizing, and storing past experience in building systems in a particular domain. This experience is captured in the form of reusable assets (i.e., reusable work products), such as documents, patterns, reusable models, components, generators, and domain-specific languages. An additional goal of DE is to provide an infrastructure for reusing these assets (e.g., retrieval, qualification, dissemination, adaptation, and assembly) during application engineering, i.e., the process of building new systems.
By definition, DE focuses on system families rather than single systems. This focus sets it apart from the more traditional software development models, which are geared toward developing one-of-a-kind systems. As a result, DE is the approach of choice for developing product lines and system families, component libraries, frameworks, domain-specific languages, and generators.
Similar to the traditional single-system software engineering, DE also encompasses the three main process components of analysis, design, and implementation. In this context, however, they are referred to as domain analysis, domain design, and domain implementation. The qualifier “domain” emphasizes the multisystem scope of these activities. This article describes each of them. An example is given.
Bibliography
- G. Arango, Domain Engineering for Software Reuse Ph.D. Thesis, Department of Information and Computer Science, University of California, Irvine, 1988.
- G. Arango, Domain Analysis, in J. J. Marciniak, ed., Encyclopedia of Software Engineering, Wiley, New York, 1994a, pp. 424–430.
- G. Arango, Domain Analysis Methods, in W. Schäfer, R. Prieto-Diaz, and M. Matsumoto, eds., Software Reusability, Ellis Horwood, New York, 1994b, pp. 17–49.
- M. H. Austern, Generic Programming and the STL: Using and Extending the C++ Standard Template Library, Addison- Wesley, Reading, MA, 1998.
- S. Bailin, KAPTUR: A Tool for the Preservation and Use of Engineering Legacy, CTA Inc., Rockville, MD, 1992. See: http://www-ast.tds-gn.lmco.com/arch/kaptur.html
- S. Bailin, Domain Analysis with KAPTUR, Tutorials of TRI-Ada'93, Vol. I, ACM, New York, Sept. 1993.
- D. Barstow, An Experiment in Knowledge-based Automatic Programming, Artificial Intelligence 12, 73–119 (1979).
- D. Barstow, Domain-specific Automatic Programming, IEEE Transactions on Software Engineering SE-(11), 1321–1336 (Nov. 1985).
- V. Basili, G. Caldiera, and D. Rombach, The Experience Factory, in J. J. Marciniak, ed., Encyclopedia of Software Engineering, Wiley, New York, 1994. See: ftp://ftp.cs.umd.edu/pub/sel/papers/fact.ps.Z
- D. Batory, Concepts for a Database Compiler, Proceedings of ACM Principles of Database Systems Conference, Austin, TX, 1988, pp. 184–192.
-
D. Batory and
S. O'Malley,
The Design and Implementation of Hierarchical Software Systems with Reusable Components,
ACM Transactions on Software Engineering and Methodology
1(4),
355–398
(Oct. 1992).
Also see:www.cs.utexas.edu/users/schwartz
10.1145/136586.136587 Google Scholar
- D. Batory et al., Homepage of the GenVoca Project, Aug. 15, 2000. Online: www.cs.utexas.edu/users/schwartz
- D. M. Beazley and G. Van Rossum, Python Essential Reference, New Riders Publishing, Indianapolis, 1999.
- G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, Addison-Wesley, Reading, MA, 1999.
- D. Box, Essential COM, Addison-Wesley, Reading, MA, 1998.
- U. Breymann, Designing Components with the C++ STL: A New Approach to Programming, Addison-Wesley, Reading, MA, 1998.
- F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal, Pattern-Oriented Software Architecture: A System of Patterns, Wiley, Chichester, UK, 1996.
- CARDS (Central Archive for Reusable Defense Software), CARDS Engineer's Handbook, STARS-VC B002/002/00, Feb. 28, 1994.
- D. Chappell, Understanding ActiveX and Ole, Microsoft Press, 1996.
- J. C. Cleaveland, Building Application Generators, IEEE Software 4(9), 25–33 (July 1988).
- J. C. Cleaveland, Program Generators Using XML and Java XML Book Series, Prentice-Hall, Upper Saddle River, NJ, 2001.
- P. Clements, L. M. Northrop et al., A Framework for Software Product Line Practice, Version 2.0, Report from the Product Line System Program, Software Engineering Institute, Pittsburgh, PA, July 1999. Available at: www.sei.cmu.edu/plp/
- S. Cohen, From Product Line Architectures to Products, Position paper, ECOOP'99 Workshop on Object-Technology for Product-Line Architectures, Lisbon, Portugal, June 1999.
- S. Cohen and L. M. Northrop, Object-Oriented Technology and Domain Analysis, in P. Devanbu and J. Poulin, eds., Software Reuse, IEEE Computer Society Press, New York, 1998., pp. 86–93.
- K. Czarnecki, Generative Programming: Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment-Based Component Models, Ph.D. Thesis, Department of Computer Science and Automation, Technical University of Ilmenau, Germany, Oct. 1998. See: www.prakinf.tu-ilmenau.de/~czarn/diss
- K. Czarnecki and U. W. Eisenecker, Synthesizing Objects, in R. Guerraoui, ed., Proceedings of ECOOP'99 - Object-Oriented Programming, LNCS 1628, Springer-Verlag, Heidelberg, 1999a, pp. 18–42; an extended version appeared in Concurrency: Practice and Experience, Vol. 12, No. 14, Wiley, New York, Dec. 10, 2000, pp. 1345–1377. See: www.prakinf.tu-ilmenau.de/∼czarn/cpe2000/
- K. Czarnecki and U. W. Eisenecker, Components and Generative Programming, invited talk, in O. Nierstrasz and M. Lemoine, eds., Proceedings of the 7th European Software Engineering Conference, Held Jointly with the 7th ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE '99), Toulouse, France, September 1999, LNCS 1687, Springer-Verlag, Berlin and Heidelberg, 1999b, pp. 2–19. See: www.prakinf.tu-ilmenau.de/∼czarn/esec99
- K. Czarnecki and U. Eisenecker, Generative Programming: Methods, Tools, and Applications, Addison-Wesley, Boston, MA, 2000.
- P. Devanbu et al., LaSSIE: A Knowledge-Based Software Information System, Communications of the ACM 34(5), 34–49 (May 1991).
- E. W. Dijkstra, A Discipline of Programming, Prentice-Hall, Englewood Cliffs, NJ, 1976.
- P. Donohoe, ed., Software Product Lines: Experience and Research Directions, Proceedings, Kluwer Academic Publishers, Boston, MA, 2000.
- M. E. Fayad and R. E. Johnson, eds., Domain-Specific Application Frameworks: Frameworks Experience by Industry, Wiley, New York, 1999.
- B. Frakes and R. Prieto-Diaz, Introduction to Domain Analysis and Domain Engineering, Tutorial Notes, 4th International Conference on Software Reuse, Orlando, FL, Apr. 23–26, 1996.
- W. Frakes, R. Prieto-Diaz, and C. Fox, DARE: Domain Analysis and Reuse Environment, Annals of Software Engineering 5, 125–141 (1998).
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995.
- H. Gomaa, Object Oriented Analysis and Modeling for Families of Systems with UML, in W. Frakes, ed., Proceedings of the International Conference on Software Reuse (ICSR6), LNCS 1844, Springer-Verlag, Berlin, 2000, pp. 89–99.
- M. L. Griss, J. Favaro, and M. d'Alessandro, Integrating Feature Modeling with the RSEB, in P. Devanbu and J. Poulin, eds., Software Reuse, IEEE Computer Society Press, New York, 1998, pp. 76–85. Also see: www.intecs.it
-
A. Hein,
M. Schlick, and
R. Vinga-Martins,
Applying Feature Models in Industrial Settings, in
Donohoe, ed.,
Software Product Lines: Experience and Research Directions Proceedings,
Kluwer Academic Publishers,
Boston, MA,
2000,
pp. 47–70.
10.1007/978-1-4615-4339-8_3 Google Scholar
- K. Kang, S. Cohen, J. Hess, W. Nowak, and S. Peterson, Feature-Oriented Domain Analysis FODA Feasibility Study Technical Report, CMU/SEI 90-TR-21, Software Engineering Institute, Carnegie-Mellon University, Pittsburgh, PA, Nov. 1990.
- K. Lee, K. C. Kang, W. Chae, and B. W. Choi, Feature-Based Approach to Object-Oriented Engineering of Applications for Reuse, Software: Practice and Experience 30(9), 1025–1046 (2000). See: http://www.postech.ac.kr/cse/se/publications.html and http://selab.postech.ac.kr/form/
- M. Lubars, Domain Analysis and Domain Engineering in IDeA, in R. Prieto-Diaz and G. Arango, eds., Domain Analysis and Software Systems Modeling, IEEE Computer Society Press, Los Alamitos, CA, 1991, pp. 163–178.
- R. Monson-Haefel, Enterprise Java Beans, O'Reilly & Associates, Sebastopol, CA, 1999.
- T. Moran and J. Carroll, eds., Design Rationale: Concepts, Techniques, and Use, Erlbaum, Hillsdale, NJ, 1996.
- D. R. Musser and A. Saini, STL Tutorial and Reference Guide, Addison-Wesley, Reading, MA, 1996.
- J. Neighbors, Software Construction using Components, Ph.D. Thesis, Technical Report TR-160, Department of Information and Computer Science, University of California, Irvine, 1980. Also available at: www.bayfronttechnologies.com
-
D. Parnas,
On the Design and Development of Program Families,
IEEE Transactions on Software Engineering
SE-2(1),
1–9
(1976).
10.1109/TSE.1976.233797 Google Scholar
- R. Prieto-Diaz, A Software Classification Scheme, Ph.D. Thesis, Department of Information and Computer Science, University of California, Irvine, 1985.
- R. Prieto-Diaz, Reuse Library Process Model, Technical Report, IBM STARS 03041-002, Electronic Systems Division, Air Force Systems Command, USAF, Hanscom Air Force Base, Hanscom, MA, July 1991.
- R. Prieto-Diaz and G. Arango, eds., Domain Analysis and Software Systems Modeling, IEEE Computer Society Press, Los Alamitos, CA, 1991.
- E. Schoen, Intelligent Assistance for the Design of Knowledge Based Systems, Ph.D. Dissertation, Stanford University, Stanford CA (available as Schlumberger Laboratory for Computer Science TR-90-19), Sept. 1990, p. 258.
-
D. G. Schwartz,
M. Divitini, and
T. Brasethvik, eds.,
Internet-Based Organizational Memory and Knowledge Management,
Idea Group Publishing,
Hershey, PA,
2000.
10.4018/978-1-878289-82-7 Google Scholar
- SEI (Software Engineering Institute), Model-Based Software Engineering, SEI, Pittsburgh, PA, Dec. 20, 2000a, Online: www.sei.cmu.edu/mbse
- SEI (Software Engineering Institute), 2000. SEI Domain Engineering Bibliography List, SEI, Pittsburgh, PA, Dec. 20, 2000b Online: http://www.sei.cmu.edu/domain-engineering/list_of_ref.html
- M. Selbig, Development of an Editor for Feature Diagrams, Master Thesis, University of Applied Sciences Kaiserslautern at Zweibrücken, Germany, 2000. The tool can be downloaded at: www.generative-programming.org
- M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, Upper Saddle River, NJ, 1996.
- M. Simos, D. Creps, C. Klinger, L. Levine, and D. Allemang, Organization Domain Modeling ODM Guidebook, Version 2.0, Informal Technical Report for STARS, STARS-VC-A025/001/00, June 14, 1996. Available from: http://domainmodeling.com
- Y. Smaragdakis and D. Batory, Implementing Layered Designs with Mixin Layers, in E. Jul, ed., Proceeding of the 12th European Conference on Object-Oriented Programming ECOOP'98, LNCS, Springer-Verlag, Berlin, pp. 550–570.
- D. R. Smith, KIDS: A Semi-Automatic Program Development System, IEEE Transactions on Software Engineering 16(9), 1024–1043 (Sept. 1990. Also see: www.kestrel.edu
- SPC (Software Productivity Consortium), Reuse-Driven Software Processes Guidebook, Version 02.00.03, Technical Report, SPC-92019-CMC Software Productivity Consortium, Herndon, VA, Nov. 1993. Available at: www.domain-specific.com/RSPgb
- Y. Srinivas, Algebraic Specification for Domains, in R. Prieto-Diaz and A. Arango, eds., Domain Analysis and Software Systems Modelings IEEE Computer Society Press, Los Alamitos, CA, 1991, pp. 90–124.
- Y. Srinivas and R. Jüllig, Specware™: Formal Support for Composing Software, in B. Moeller, ed., Proceedings of the Conference on Mathematics of Program Construction, LNCS, Vol. 947, Springer-Verlag, Berlin, 1995. Also see: www.kestrel.edu
- STARS (Software Technology for Adaptable, Reliable Systems), Army STARS Demonstration Project Experience Report, STARS Informal Technical Report, STARS-VC-A011R/002/01, STARS, Nov. 30, 1994.
- Sun Microsystems, JavaBeans 1.01 Specification document, Sun Microsystems, Mountain View, CA, 1997. See: http://java.sun.com/beans/docs/spec.html
-
W. Tracz,
Domain-Specific Software Architecture Pedagogical Example,
ACM SIGSOFT Software Engineering Notes
20(4),
49–62
(July 1995).
Also available from: www.lmowego.com/owegofs/dssa/
10.1145/219308.219318 Google Scholar
- W. Tracz and L. Coglianese, DSSA Engineering Process Guidelines, Technical Report, ADAGE-IBM 9202, IBM Federal Systems Company, Owego, NY, Dec. 1992.
- T. Veldhuizen, Using C++ Template Metaprograms, C++ Report 7(4), 36–43 (May 1995). See: http://oonumerics.org/blitz/papers/
- A. D. Vici, N. Argentieri, A. Mansour, M. d'Alessandro, and J. Favaro FODAcom: An Experience with Domain Analysis in the Italian Telecom Industry, in P. Devanbu and J. Poulin, eds., Software Reuse, IEEE Computer Society Press, Los Alamitos, CA, 1998, pp. 166–175. Also see: www.intecs.it
- L. Wall, T. Christiansen, R. L. Schwartz, and S. Potter, Programming Perl, 2nd ed. O'Reilly & Associates, Sebastopol, CA, 1996.
- D. M. Weiss and C. T. R. Lai, Software Product-Line Engineering: A Family-Based Software Development Process, Addison- Wesley, Reading, MA, 1999.
- J. Withey, Implementing Model Based Software Engineering in your Organization: An Approach to Domain Engineering (Draft), Technical Report, CMU/SEI-94-TR-01, Software Engineering Institute, Carnegie-Mellon University, Pittsburgh, PA, 1994.
- J. Withey, Investment Analysis of Software Assets for Product Lines, Technical Report, CMU/SEI-96-TR-010, Software Engineering Institute, Carnegie-Mellon University, Pittsburgh, PA, Nov. 1996. Available from: www.sei.cmu.edu
- R. Zahavi and D. S. Linthicum, Enterprise Application Integration with CORBA Component and Web-Based Solutions, Wiley, New York, 1999.
- M. Zloof and S. de Jong, The System for Business Automation (SBA): Programming Language, Communications of the ACM 20(6), 385–396 (June 1977).