.
guest editors’ introduction
The State of Software Engineering Education and Training NANCY MEAD Software Engineering Institute DAVID CARTER Motorola MICHAEL LUTZ Rochester Institute of Technology
The 1968 and 1969 NATO Conferences did more than add the term “software engineering” to the professional lexicon. As the organizers hoped, these meetings spurred research into the theory of software systems and the creation of tools and technologies to move software development away from an art form and ever closer to a true engineering discipline. Initially, however, our industry gave little attention to ensuring proper professional education for software engineers or training practitioners already in the field, assuming that these issues were best addressed within existing disciplines. Eventually it became apparent that neither traditional engineering nor computer science programs were adequately preparing graduates for software engineering positions. This in turn generated interest in specialized programs in software engineering. In addition, training organizations began to incorporate modules on effective software development practices to improve software system productivity and quality. 22
0740-7459/97/$10.00 © 1997 IEEE
NOVEMBER/DECEMBER 1997
.
A seminal event in this history was the creation of the Wang Institute, which offered a master’s program in software engineering. Though the Institute eventually closed, the program developed there had a profound effect on those that followed, including the prototypical MS/SE program created at the Software Engineering Institute. What is more, the graduates of the Wang Institute provided proof as to the importance of proper education for those who develop, test, maintain, and deploy software. Today, master’s programs in software engineering are ubiquitous, with several dozen in North America and a similar number spread throughout Europe, the Indian subcontinent, and the eastern Pacific Rim. As these programs have proven their value—primarily by producing highly skilled software specialists—some of the material previously at the graduate level has found its way into undergraduate programs in computer science and engineering. Australia and the United Kingdom have led the way in creating specialized undergraduate programs that confer a baccalaureate degree in software engineering. More recently, as of the fall of 1996 two such programs were begun in North America at the Rochester Institute of Technology in New York and the University of Ottawa in Canada. As the field matures and demand for competent, qualified software engineers increases, it is likely that many more such programs will be developed. Industrial training efforts complement those in academia. While organizations such as Motorola University offer training on specific technical topics (such as programming languages), they have also evolved course sequences on more general software engineering principles. In part this is a reaction to the lack of such knowledge by entry-level developers; in addition, the need to upgrade the skills of the existing work force has become critical as software pervades industrial products. IEEE SOFTWARE
CURRENT ISSUES The education community still hotly debates the role software engineering should play at the undergraduate level. Notwithstanding the emergence of BSSE programs, many argue that software engineering should be simply a component of traditional computer science or computer engineering curricula. Those who favor separate software engineering programs still lack a broad consensus as to the shape such programs should take. Programs emerging from computer science departments naturally tend to place computer science courses at the foundation. Programs developed in engineering schools, by way of contrast, tend to build on traditional engineering science and mathematics. Apparently, the most promising solution synthesizes these two approaches and bases the curriculum on computer science concepts and engineering principles. A related concern is the role of professional societies in the accreditation of software engineering programs. Within the US, the Accreditation Board for Engineering and Technology has a long and prominent history in the development of engineering programs. ABET accreditation has served to ensure basic knowledge and competency for entry into the profession. More recently, computer science programs have also been eligible for accreditation by the Computer Science Accreditation Board, an entity distinct from ABET. Should either or both ABET and CSAB accredit new software engineering programs? How should accreditation guidelines be structured to ensure appropriate professional preparation? Are the core guidelines of either accrediting agency flexible enough to support programs that address the wide spectrum of software development applications? If undergraduate programs proliferate, as appears likely, the relationship between software engineering BS and MS programs must be defined. Until recently, master’s level programs offered the only
avenue for intensive education in software engineering. This meant that a portion of each program’s core was devoted to issues that will now be addressed in undergraduate programs. As material formerly part
Many argue that software engineering should be simply a component of traditional computer science curricula. of the core becomes remedial in nature, master’s programs will have the opportunity and obligation to encompass more advanced material. Whether this material should be technical or managerial in nature must still be determined. Finally, training organizations must react to the increasing number of new employees who have formal software engineering degrees, whether at the baccalaureate or graduate level. Over time, we should expect that training will more directly address an organization’s specific technology and skill needs, depending on software engineers’ basic engineering background to provide the general background and context. How training programs should evolve in light of these developments is a challenging problem in its own right.
THE ARTICLES In this issue you will see a mix of articles. Our focus has been on education for the practicing software professional. As such these articles represent a variety of views and have a significant focus on software practice. Steve Tockey’s article, “A Missing 23
.
RESOURCES FOR ADDITIONAL INFORMATION: There are many publications and conferences that focus on pertinent issues in software engineering education. We will describe a few of these and give some pointers where to look for additional information. Many SEI publications deal with software engineering education and training, including “Directory of Industry and University Collaborations, with a Focus on Software Engineering Education” (CMU/SEI-96-SR-011) and “Subject Matter of Process Improvement: A Topic of Reference Source for Software Engineering Education and Training” (CMU/TR-95-003). Both are available through the SEI Web site at www.sei.cmu.edu. The IEE’s Computing and Control Engineering Journal published a pertinent article, “Professional Issues in Software Engineering: The Perspective of UK Academics,” in December 1996. The article, identified as the first stage in a larger research program, discusses the issues of teaching professional issues such as ethics. There are several conferences that focus on software engineering and training. There are also many conferences that regularly feature articles on the topic. ♦ The Conference on Software Engineering and Training is an annual conference jointly sponsored by IEEE, the SEI, and ACM. The topics vary each year; academic papers usually outnumber the industrial training papers. Most papers are from the US but 10 to 20 percent are typically from other countries. Proceedings are available from the IEEE Computer Society Press in Los Alamitos, Calif. The ISBN number for the 1997 proceedings is 0-8186-7886-0; information about the 1998 conference is available at http://www.sei.cmu.edu/products/cseet98/call.html. ♦ The annual Frontiers in Education Conference will be held 5-8 Nov. in Pittsburgh. Proceedings are published by IEEE, New York. The ISBN for the 1996 conference is 0-7803-3348-9; information about the 1998 conference is available at http://www.eas.asu.edu/~asufc/conference/fiehmpg.html. ♦ The 29th SIGCSE: Technical Symposium on Computer Science Education will be held 26 Feb. through 1 Mar. in Atlanta. Additional information is available at http://www.cs.virginia.edu/SIGCSE. ♦ The Third Australasian Computer Science Education Conference will be held 8-10 July 1998 in Brisbane, Australia. Additional information is available at http://www.it.uq.edu.au/~acse98. ♦ The Third Annual Conference on Integrating Technology into Computer Science Education will be held 19-21 Aug. 1998 in Dublin, Ireland. Additional information is available at http://www.dcu.ie/~ctc98. ♦ The 1996 International Conference on Software Engineering: Education and Practice, held in New Zealand, also featured good papers that are available from the IEEE Computer Society Press. The ISBN number for the 1996 proceedings is 0-8186-7379-6. ♦ COMPSAC ’96—the 20th International Computer Software and Applications Conference—also featured a few good papers on software engineering education, including “Emerging Software Engineering Education” and “Software Education in the 21st Century.” This conference was sponsored by the Korean Information Science Society and the proceedings were published by the IEEE Computer Society Press. The ISBN number for the 1996 conference is 0-8186-7579-9. ♦ The Seventh Israeli Conference on Computer Systems and Software Engineering featured a good paper, “Computer Science Apprenticeship.” It offers a slightly different angle to the point-counterpoint discussion on page 26. Proceedings are published by the IEEE Computer Society Press; the ISBN number for the 1996 conference is 0-8186-7536-5. ♦ The Asia Pacific Software Engineering Conference usually has a good paper or two on education. Proceedings are published by the IEEE Computer Society Press; the ISBN number for the 1996 conference is 0-8186-7638-8.
Link in Software Engineering,” addresses a typical gap in software engineers’ education: Engineering economy is generally excluded from the curriculum. The article presents a survey of an engineering economy curriculum and then relates it to the software industry. Tockey also discusses his experience in presenting engineering economy to software engineering graduate students. Ray Dawson and Ron Newsham’s article, “Introducing Software Engineers to the Real World,” is unusual in that it studies software engineering educational material that has been offered by the authors in both an industry and a university setting. The article compares and contrasts the various offerings, and discusses pros and cons for each. Tom Hilburn’s article, “Software 24
Engineering Education: A Modest Proposal” offers a conceptual model based on the triad of people, process, and technology that addresses the current state of software engineering education in the United States and forms the foundation for a curriculum designed to help solve the profession’s problems. Kathy Beckman, Neal Coulter, Soheil Khajenoori, and Nancy Mead discuss industry–university collaboration in their article “Closing the IndustryAcademia Gap.” The authors discuss their collective experiences with industry–university collaboration and offer an initial model for such work. They show that collaboration can help bridge the gap between academic offerings and industry expectations. Gerald Powell, Jorge Diaz-Herrera,
and Dennis Turner also describe a collaboration, this time between government and Monmouth University, in their article “Achieving Synergy in Collaborative Education.” Their article describes a graduate-level program that helps develop software engineering professionals for the government. The authors also discuss their views on the fundamental knowledge and skills needed by software engineers. Philip Dart, Lorraine Johnston, Cameron Schmidt, and Liz Sonenberg present an important issue in their article “Developing an Accredited Software Engineering Program.” There are only a few undergraduate programs in software engineering. Many industry organizations bemoan that new hires are not prepared to practice software engineering. This article describes the developNOVMEBER/DECEMBER 1997
.
ment of undergraduate software engineering curricula and the issues involved in accreditation. The Point/Counterpoint articles by James Bach and Mike McCracken discuss whether software engineers can best learn the practice of software engineering in industry, via apprenticeship methods, or in universities, via formal education. Their contending viewpoints show the strengths of both environments and suggest the synergistic ways in which they can interact.
A companion article in Computer this month, “Agents of Change: Educating Future Leaders in Software Engineering,” by David Garlan, James Tomayko, and David Gluch describes a special master of software engineering program. It is specifically oriented toward the education of “agents of change,” those practitioners who will be able to inject new technologies into the software engineering profession and software development processes. These articles show the changing landscape of software engineering educa-
Nancy Mead is a senior member of the technical staff in the Networked Systems Survivability Program of the Software Engineering Institute and is on the faculty of the Master of Software Engineering Program at Carnegie Mellon University. She is currently involved in the study of survivable system architectures and the development of professional infrastructure for software engineers. She served as director of education for the SEI from 1991-1994. Her research focuses on software requirements engineering, software architectures, software metrics, and real-time systems. Prior to joining the SEI, Mead was a senior technical staff member at IBM Federal Systems, where she spent most of her career developing and managing large real-time systems. She has developed and taught many courses on software engineering topics, both at universities and in professional education courses. Mead has a BA and an MS in mathematics from New York University, and a PhD in mathematics from Polytechnic Institute of New York. She is a senior member of the IEEE and the IEEE Computer Society, and a member of ACM.
tion. Collaboration between industry, government, and universities is increasing significantly. At the same time, software engineering education is becoming more widespread at both the undergraduate and graduate levels. Software engineering organizations are taking a more proactive role in their employees’ education, both during and after formal degree programs. We believe that software engineering education will continue to evolve, and will parallel or even lead the ♦ maturation of our profession.
David Carter is currently the engineering training manager for the Land Mobile Products Sector of Motorola. In December of 1996, he took an early retirement from Texas Instruments where he had been the software engineering training manager for the Defense Systems and Electronic Group. He has been involved in software development or training for the last 30 years. He has given presentations, been on panel discussions, and/or been on the program committee on the Conference on Software Engineering and Training for the last seven years. Carter received a BS and an MS degree in mathematics from Louisiana Tech University and an EdS degree in counseling from Northeast Louisiana University.
Michael Lutz is the Motorola Professor of Software Engineering at the Rochester Institute of Technology, where he heads RIT’s new bachelor’s degree program in software engineering. His professional interests span software engineering, object-oriented development, formal methods, and computing education. Lutz received a BS in mathematics from St. John Fisher College and an MS in computer science from the State University of New York at Buffalo.
Address questions about this article to Mead at the Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA 15213-3890;
[email protected].
IEEE SOFTWARE
25