Software Engineering 2014 (SE2014)
Total Page:16
File Type:pdf, Size:1020Kb
1 Software Engineering 2014 Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering A Volume of the Computing Curricula Series 23 February 2015 . Joint Task Force on Computing Curricula IEEE Computer Society Association for Computing Machinery 2 Preface This document was developed through an effort originally commissioned by the ACM Education Board and the IEEE-Computer Society Educational Activities Board to create curriculum recommendations in several computing disciplines: computer science, computer engineering, software engineering and information systems. Other professional societies have joined in a number of the individual projects. Such was the case for the SE2004 (Software Engineering 2004) project, which included participation by representatives from the Australian Computer Society, the British Computer Society, and the Information Processing Society of Japan. SE2004 Development Process The SE2004 project was driven by a Steering Committee appointed by the sponsoring societies. The development process began with the appointment of the Steering Committee co-chairs and a number of the other participants in the fall of 2001. More committee members, including representatives from the other societies were added in the first half of 2002. The following are the members of the SE2004 Steering Committee: Co-Chairs Rich LeBlanc, ACM, Georgia Institute of Technology, U.S. Ann Sobel, IEEE-CS, Miami University, U.S. Knowledge Area Chair Ann Sobel, Miami University, U.S. Pedagogy Focus Group Co-Chairs Mordechai Ben-Menachem, Ben-Gurion University, Israel Timothy C. Lethbridge, University of Ottawa, Canada Co-Editors Jorge L. Díaz-Herrera, Rochester Institute of Technology, U.S. Thomas B. Hilburn, Embry-Riddle Aeronautical University, U.S. Organizational Representatives ACM: Andrew McGettrick, University of Strathclyde, U.K. ACM SIGSOFT: Joanne M. Atlee, University of Waterloo, Canada ACM Two-Year College Education: Elizabeth K. Hawthorne, Union County College, U.S. Australian Computer Society: John Leaney, University of Technology Sydney, Australia British Computer Society: David Budgen, Keele University, U.K. Information Processing Society of Japan: Yoshihiro Matsumoto, Musashi Institute of Technology, Japan IEEE-CS Technical Committee on Software Engineering: J. Barrie Thompson, University of Sunderland, U.K. 3 SE2014 Revision Process This updated version of the curriculum guidelines was created by a joint effort of the ACM and the IEEE-Computer Society: IEEE CS Delegation ACM Delegation Mark Ardis, Chair (Stevens Institute) David Budgen (University of Durham) Greg Hislop (Drexel University) Jeff Offutt (George Mason University) Mark Sebern (Milwaukee School of Engineering) Willem Visser (University of Stellenbosch) 4 Acknowledgements The National Science Foundation, the Association of Computing Machinery, and the IEEE Computer Society have supported the development of this document and its predecessor, SE2004. We thank the many reviewers and technical experts who provided feedback and advice for this update, starting with those who contributed suggestions for improvements to SE2004. An online anonymous survey on that subject yielded 477 responses from software engineering educators and practitioners in 42 different countries. In addition to those participants we thank Jo Atlee and Renee McCauley for their assistance in assessing and planning the revision effort that followed. We thank the many participants at workshops and feedback sessions at SIGCSE 2013, CSEE&T 2013 and ICSE 2013. Their comments were particularly helpful in confirming the revisions that had already been made, and in suggesting additional improvements that we have incorporated into the final document. We are especially thankful for the extensive comments offered by expert reviewers Dennis Frailey, Tom Hilburn, Rich LeBlanc, Andrew McGettrick and Nancy Mead. We thank Steve Chenoweth from Rose-Hulman Institute of Technology, Sarah Lee from Mississippi State University, and Frank Tsui of Southern Polytechnic State University for providing examples of software engineering courses and curricula. We hope that this collection of examples will grow larger on the accompanying website provided by the ACM Education Board. We are grateful for the expert assistance provided by the IEEE- CS Technical Publications staff in producing a more coherent and consistent document. Finally, we thank the members of the ACM and IEEE-CS education boards who supported this effort, especially Andrew McGettrick from the Association for Computing Machinery and Tom Hilburn from the IEEE Computer Society who initiated the project. 5 Table of Contents Preface .................................................................................................................................................. 2 Acknowledgements .......................................................................................................................... 4 Chapter 1. Introduction ..................................................................................................... 7 1.1 Purpose of this Volume ........................................................................................................ 7 1.2 Where This Volume Fits in the Computing Curriculum Context ............................ 7 1.3 Development Process of the SE 2014 Volume .............................................................. 8 1.4 Changes from the Previous Version ................................................................................ 8 1.5 Structure of the Volume ....................................................................................................... 9 Chapter 2: The Software Engineering Discipline ..................................................... 10 2.1 Defining Software Engineering ....................................................................................... 10 2.2 The Evolution of Software Engineering ........................................................................ 12 2.3 The Reference Disciplines for Software Engineering .............................................. 14 2.4 Professional Practice .......................................................................................................... 17 2.5 Foundations and Related Work ...................................................................................... 19 Chapter 3: Guiding Principles ........................................................................................ 20 3.1 Expected Student Outcomes ............................................................................................. 20 3.2 SE 2014 Principles ............................................................................................................... 21 3.3 SE 2014 Goals for the Guidelines .................................................................................... 23 Chapter 4: Overview of Software Engineering Education Knowledge ............. 24 4.1 Process of Determining the SEEK ................................................................................... 24 4.2 Knowledge Areas, Units, and Topics ............................................................................. 24 4.3 Core Material ......................................................................................................................... 24 4.4 Unit of Time ........................................................................................................................... 25 4.5 Relationship of the SEEK to the Curriculum ............................................................... 26 4.6 Selection of Knowledge Areas ......................................................................................... 26 4.7 SE Education Knowledge Areas ....................................................................................... 26 4.8 Computing Essentials ......................................................................................................... 28 4.9 Mathematical and Engineering Fundamentals .......................................................... 29 4.10 Professional Practice ....................................................................................................... 30 4.11 Software Modeling and Analysis .................................................................................. 31 4.12 Requirements Analysis and Specification ................................................................. 31 4.13 Software Design ................................................................................................................. 32 4.14 Software Verification and Validation ......................................................................... 33 4.15 Software Process ............................................................................................................... 34 4.16 Software Quality ................................................................................................................ 35 4.17 Security ................................................................................................................................. 36 Chapter 5: Guidelines for SE Curriculum Design and Delivery ........................... 38 5.1 Developing and Teaching the Curriculum ................................................................... 38 5.2 Constructing the Curriculum ........................................................................................... 39 5.3 Attributes and Attitudes That Should Pervade the Curriculum