Building an Effective CBSE Handbook
Position Paper for ICSE99 Workshop
"Developing a Handbook for Component-Based Software Engineering"
ICSE99, Los Angeles, May 17th-18th, 1999
Martin L. Griss
Hewlett-Packard Laboratories, 1U16
1501 Page Mill Road, Palo Alto, CA 94304-1126
Tel: (650)857-8715, fax: (650)813-3668
The community has made tremendous progress in understanding the critical technology, methods, processes, and organizational factors that lead to effective architected, component reuse. There is of course much more we can do, but still, far too few software developing organizations see reuse or CBSE as the solution to the problems they have, nor do they practice component reuse systematically. Far too few schools teach much about reuse and components. A CBSE handbook, summarizing industry best practice and state-of-the-art, could be an extremely useful vehicle for moving us forward.
However, experience with such handbooks in the past suggests that we should think very carefully about who the audience(s) for the handbook are, how this handbook should be used, and how it should consequently be structured. I propose several additions and modifications to the strawman handbook outline, to clarify these issues, as well as incremental adoption, organizational and process maturity, and CBSE methods.
Keywords: software engineering, components, education, technology transfer, best-practice, architecture.
For the last 16 years, I have worked on reuse methods, modeling, component software, software education and software engineering process improvement at HP[griss95]. I have also gained a lot of experience with software engineering, VB and ActiveX components and reuse courses as an adjunct professor at the University of Utah[kessler97]. I have recently worked on the joint ACM/IEEE software engineering education taskforce and helped develop accreditation guidelines[griss98], and have reviewed the outline and content of a "software engineering body of knowledge".
Over these years, I have had the opportunity to lead and/or work on three handbook projects, a book on architected reuse and component-based software reuse, and several related projects. These include:
My related work on the UML standardization effort, on reuse and process maturity models, on technology transfer for an architected, component based product line at HP, on model-driven management agents, and on software engineering standards, provided the many opportunities for thinking and writing about architecture, components, models, patterns, and knowledge transfer. I have produced many training slides, run workshops, produced many small briefing documents and templates.
I learned a number of things from the various handbook experiences above, which could be valuable in the proposed CBSE handbook effort, and the workshop itself.
Content is of course really important. We have lots of promising technology, methods, and guidelines that can be adapted from the reuse, architecture, OO and patterns community. But too little is taught systematically[bucci98], or practiced widely. As an example, we believe that we have a good understanding of how issues and choices in several areas could influence critical success or failure of architected, component reuse -- CBSE:
As an expert in many of these areas, I can contribute to content in many sections of the strawman handbook, such as 1b -- "how does CBSE relate to similar fields ", 2a - "processes and methodologies", 2b - "organizational issues", and to many of the sub-sections of 3, such as "UML", "libraries", tool, etc.
A key learning from the HP handbook project, was the tension between size and usability of the handbook (partially addressed by a loose leaf approach). Another was the need to provide customized material to different groups. Another was the difficulty of keeping such a handbook up-to-date. And finally, the difficulty in getting groups to use such handbooks.
Thus an important concern for the handbook effort proposed is to discuss the goals and audiences(s)of the handbook and how we expect it to be used. This will certainly have an impact on the structure of the outline and mechanisms used for customization and adoption, if any.
Some other observations and suggested changes to the strawman outline:
Key outline elements of the HP reuse handbook (developed before the growing use of modeling, UML) are included in the appendix. Book also provides an interesting overall outline, separating architecture, process and management issues[jacobson97]. The knowledge captured in the CBSE handbook, as a component community best-practice consensus could be injected into the evolving software body of knowledge (SWEBOK)[IEEE98].
There are now many books on reuse, components and architecture, and a growing number of reuse courses, both at schools and from vendors. However, apart from the DOD Reuse technology roadmap [DOD96], and the SPC adoption guidebooks, there does not seem to be a community consensus on CBSE best practice, or how best to drive adoption. No one seems to be addressing this in the context of the new licensing and accreditation context.
[bucci98] Bucci, Paolo, and Timothy J. Long and Bruce W. Weide, "Teaching Software Architecture Principles in CS1/CS2", Position Paper, Third International Software Architecture Workshop, Orlando, Nov 1-2, 1998, pp. 9-12. (Seehttp://www.cis.ohio-state.edu/ ).
[DOD96] Reifer, Don, "Reuse Technology Roadmap", Department of Defense, 1996.
[griss95] Griss, Martin and Wosser, Marty, "Making reuse work at Hewlett-Packard." IEEE Software, January 1995, V12, #1, pp. 105-107. .
[griss97] Griss, Martin and Balasubramanian, Ramesh, "Reuse Process Guide", HP PSO/HPL working document, Nov 1997.
[griss98] Griss, Martin, "Letter from the Executive Committee," Software Engineering Notes, Vol. 23, No. 5, Sept. 1998, pp. 1-2.
[IEEE98] Bourque, Pierre at. al., "Guide to the Software Engineering Body of Knowledge (SWEBOK)", Strawman Version, IEEE Computer Society, September 1998. (Seehttp://www.ieee.org/ ).
[jacobson97] Jacobson, Ivar, and Martin Griss and Patrik Jonsson, "Software Reuse: Architecture, Process and Organization for Business Reuse," Addison-Wesley-Longman, 1997.
[kessler97] Kessler, Robert R.,"CS451-CS453 - Software Engineering Laboratory", Computer Science Department, University of Utah, Salt Lake City, UT, 1997. Seehttp://www.cs.utah.edu/~cs451.
[tracz98] Tracz, Will, and Mary Shaw, and Martin Griss, and Don Gotterbarn, "Panel: Views on the State of Texas Licensure of Software Engineers", Proceedings of FSE-6: ACM SIGSOFT 6th International Symposium on the Foundations of Software Engineering, Nov 3-5, Orlando, ACM SIGSOFT, 1998, pp. 203-208.
Martin L. Griss(email@example.com) HP Laboratories, http://www.hpl.hp.com/reuse.
Martin is a Principal Laboratory Scientist in the Software Technology Laboratory at Hewlett-Packard Laboratories, Palo Alto, California. He has over 30 years of experience in software development, education and research. For the last 16 years at HP, he has researched software engineering processes and systems, systematic software reuse, object-oriented development and software process improvement at HP. He created and led the first HP corporate reuse program and participated in the development and execution of the HP corporate software initiative. He led HP efforts to standardize UML for the OMG, and is a member of the OMG UML revision taskforce. He was previously director of the Software Technology Laboratory at HP Laboratories, and an Associate Professor of Computer Science at the University of Utah.
Martin is co-author of the influential book "Software Reuse: Architecture, Process and Organization for Business Success" (with Ivar Jacobson and Patrik Jonsson), which holistically addresses technology, people and process issues in a UML framework. He writes numerous articles on software engineering and a reuse column for the "Object Magazine/Component Strategies". He lectures widely on systematic reuse and software process improvement. He is a member of the ACM SIGSOFT Executive Committee, and of the joint IEEE/ACM committee on software engineering education and accreditation. He is an adjunct professor at the University of Utah, co-developing component-oriented software engineering courses, and advising on software engineering curriculum design.
Appendix: Extract from HP reuse handbook, circa 1994.