Graduate Education in Software Architecture and Product-Line Engineering
John W. Brackett
Professor of Computer Systems Engineering
College of Engineering, Boston University
Boston, MA 02215
Telephone: (617) 353-5898; Fax: (617) 353-6440
Significant work has been done in the last 5 years in the United States on development of domain-specific software architectures for product families (1,2,3) and the prototype application of this work on industrial-size projects (4,5). However, this technology has had surprisingly little impact on industrial practice in spite of significant technology transfer efforts by such organizations as the Software Productivity Consortium. As a result of my participation in both the development and technology transfer of Consortium’s Synthesis product-line engineering process (6), I believe the focus of the ARES workshop should go beyond “methods, techniques and tools” to include the issue of how to increase corporate adoption of architecture-driven product-line engineering techniques.
One component of an adoption strategy is the education of practicing software engineers in software architecture and the use of product-family oriented approaches. An example of a course with this goal is “Advanced Software Design” which is now part of the Computer Systems Engineering graduate curriculum at Boston University. Before describing the course, some description of the curriculum and our students is relevant. The Computer Systems Engineering graduate program at Boston University is designed to provide a strong engineering background for embedded system developers by combining hardware engineering and software engineering in a single course of study. Graduate students pursuing Masters degrees are from such companies as Raytheon, Hewlett-Packard Medical, Motorola, MITRE, Raytheon, GTE, and United Technologies. There is an active Ph.D. program in the department in areas such as reliable computing, multi-media communications, testing of object-oriented software, and rapid application development for embedded systems.
The following is the description of “Advanced Software Design” which I am teaching for the first time in the 1996 fall semester:
“The course emphasizes designing software for distributed systems, especially embedded and real time systems. Software architecture is the unifying theme of the course. Object-oriented software design with emphasis on techniques applicable to large, highly concurrent software systems (i.e, software for telecommunications, avionics, manufacturing control, etc.). Domain-specific software architectures facilitating software reuse. Architecture specification languages and tools. Model-based software engineering techniques for the development of families of similar systems (i.e., product-line engineering). Laboratory component consisting of a team project building a product-line architecture, and generating product variants, utilizing a model-based development tool (ObjecTime) on Silicon Graphics workstations in the Software Engineering Laboratory.”
For the team project the ROOM language (6) is being used to represent the product-line architecture; ROOM was selected because, in my opinion, it is the best commercially-supported notation (at least in North America) for describing product-line architectures. ROOM is supported by the ObjecTime toolset from ObjecTime Ltd. of Ottawa, Canada(7); the toolset is based upon technology originally developed in Bell-Northern Research, the research and development arm of Nortel. It is the result of over 120 person-years of research and development since 1986 into the use of executable, object-oriented models for producing large-scale embedded systems. The tool provides C++ code generation targeted for multiple real-time operating systems. One of the objectives in the development of ROOM and Objectime was to facilitate specification of product-line architectures.
The successful adoption in major corporations of the approaches to be discussed at the workshop requires overcoming major barriers, both technical and non-technical (i.e., how funding is obtained for creating the product-line architecture in advance of constructing product-family members). However, I believe perhaps the most difficult problem is how to reeducate experienced software designers to think in terms of product lines and how to use effectively the methods and tools to be discussed at the workshop.
1. Shaw and Garlan, “Software Architecture: Perspectives on an Emerging Discipline”, Prentice Hall., 1996.
2. “Reuse-Driven Software Process Guidebook”, Tech. Report SPC-92019 (Version 2), Software Productivity Consortium, Herndon, VA, 1993 (www.software.org)
3. Metalla and Graham, “The Domain-Specific Software Architecture Program”, Technical Report CMU/SEI-92-SRT-9, Carnegie Mellon Software Engineering Institute, June 1992.
4. O’Connor and Mansour, “Introducing Systematic Reuse to the Command and Control Systems Division of Rockwell International”, Tech. Report SPC-92020, Software Productivity Consortium, Herndon, VA, 1992.
5. Marcala, Stuckey and Gross, “Managing Domain-Specific, Product-Line Development”, IEEE Software, May, 1996, p. 57-66. (this work was based upon the process in ).
6. Brackett and Pyster, “High-Level Software Synthesis”, Proc. 1993 NCOSE International Symposium on Systems ngineering, p. 207-214.
7. Selic, Gullekson and Ward, “Real-Time Object-Oriented Modeling”, Wiley, 1994.
8. More information on the ObjecTime tool set can be obtained from: www.objectime.on.ca