Experience report: using RESOLVE/C++ for commercial software

Academic research sometimes suffers from the “ivory tower” problem: ideas that sound good in theory do not necessarily work well in practice. An example of research that potentially could impact practice over the next few years is a novel set of component-based software engineering design principles, known as the RESOLVE discipline. This discipline has been taught to students for several years [23], and previous papers (e.g., [24]) have reported on student-sized software projects constructed using it. Here, we report on a substantial commercial product family that was engineered using the same principles — an application that we designed, built, and continue to maintain for profit, not as part of a research project. We discuss the impact of adhering to a very prescriptive set of design principles and explain our experience with the resulting applications. Lessons learned should benefit others who might be considering adopting such a component-based software engineering discipline in the future.

[1]  Colin Potts,et al.  Design of Everyday Things , 1988 .

[2]  Bruce W. Weide,et al.  Micro-Architecture vs. Macro-Architecture , 1994 .

[3]  Saumyendra Sengupta,et al.  C++ object-oriented data structures , 1994 .

[4]  Robert B. Murray,et al.  C++ Strategies and Tactics , 1993 .

[5]  Bruce W. Weide,et al.  Part III: implementing components in RESOLVE , 1994, SOEN.

[6]  David Notkin,et al.  Decoupling change from design , 1996, SIGSOFT '96.

[7]  Joseph Eugene Hollingsworth Software component design-for-reuse: a language-independent discipline applied to ADA , 1992 .

[8]  Stephen H. Edwards,et al.  Design and Specification of Iterators Using the Swapping Paradigm , 1994, IEEE Trans. Software Eng..

[9]  Bruce W. Weide,et al.  Copying and Swapping: Influences on the Design of Reusable Software Components , 1991, IEEE Trans. Software Eng..

[10]  B.W. Weide,et al.  The Effects of Layering and Encapsulation on Software Development Cost and Quality , 1995, IEEE Trans. Software Eng..

[11]  Trucy Levine Reusable software components , 1997, ALET.

[12]  W. Grant Hague How to achieve. , 1914 .

[13]  Bruce W. Weide,et al.  Reverse Engineering of Legacy Code Exposed , 1995, 1995 17th International Conference on Software Engineering.

[14]  Bruce W. Weide,et al.  Part IV: RESOLVE components in Ada and C++ , 1994, SOEN.

[15]  Bruce Weide,et al.  Component-based software using RESOLVE , 1994, SOEN.

[16]  Richard C. Holt,et al.  The Geneva convention on the treatment of object aliasing , 1992, OOPS.

[17]  Stephen H. Edwards,et al.  A framework for detecting interface violations in component-based software , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[18]  Timothy A. Budd,et al.  Classic data structures in C++ , 1994 .

[19]  Bruce W. Weide,et al.  Engineering 'unbounded' reusable ada generics , 1992 .

[20]  Murali Sitaraman,et al.  Recasting algorithms to encourage reuse , 1994, IEEE Software.

[21]  Bruce W. Weide,et al.  On Local Certifiability of Software Components , 1994 .