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
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.
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)
|
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.
Table of Contents
Preface 2
Acknowledgements 4
Chapter 1.Introduction 6
Purpose of this Volume 6
Where This Volume Fits in the Computing Curriculum Context 6
Development Process of the SE 2014 Volume 7
Changes from the Previous Version 7
Structure of the Volume 8
The Software Engineering Discipline 9
Defining Software Engineering 9
1.The Evolution of Software Engineering 11
The Reference Disciplines for Software Engineering 13
B.3.Engineers emphasize the use of a disciplined process when creating and implementing designs and can operate effectively as part of a team in doing so. 14
B.4.Engineers can have multiple roles: research, development, design, production, testing, construction, operations, and management in addition to others such as sales, consulting, and teaching. 14
B.5.Engineers use tools to apply processes systematically. Therefore, the choice and use of appropriate tools is a key aspect of engineering. 14
B.6.Engineers, via their professional societies, advance by the development and validation of principles, standards, and best practices. 14
B.7.Engineers reuse designs and design artifacts. 14
Professional Practice 16
Foundations and Related Work 18
Guiding Principles 19
Expected Student Outcomes 19
SE 2014 Principles 20
SE 2014 Goals for the Guidelines 22
Overview of Software Engineering Education Knowledge 23
Process of Determining the SEEK 23
Knowledge Areas, Units, and Topics 23
Core Material 23
Unit of Time 24
Relationship of the SEEK to the Curriculum 24
Selection of Knowledge Areas 25
SE Education Knowledge Areas 25
Computing Essentials 27
Mathematical and Engineering Fundamentals 28
Professional Practice 29
Software Modeling and Analysis 30
Requirements Analysis and Specification 30
Software Design 31
Software Verification and Validation 32
Software Process 33
Software Quality 34
Security 35
Guidelines for SE Curriculum Design and Delivery 37
Developing and Teaching the Curriculum 37
Constructing the Curriculum 38
Attributes and Attitudes That Should Pervade the Curriculum and Its Delivery 40
General Strategies for Software Engineering Pedagogy 46
Concluding Comment 49
Designing an Undergraduate Degree Program 50
Factors to Consider When Designing a Degree Program 50
The Capstone Project 54
Patterns for Delivery 55
Adaptation to Alternative Environments 57
Alternate Teaching Environments 57
Issues Related to Alternate Institutional Models 59
Programs for Associate-Degree Granting Institutions in the United States and Community Colleges in Canada 61
Program Implementation and Assessment 62
Curriculum Resources and Infrastructure 62
Assessment and Accreditation Issues 63
SE in Relation to Other Computing-Related Disciplines 64
References 65
B.23.Curriculum Examples 68
B.23.Curriculum Examples 68
B.24.Mississippi State University 69
B.24.Mississippi State University 69
B.25.Rose-Hulman Institute of Technology 75
B.25.Rose-Hulman Institute of Technology 75
B.26.Course Examples 82
B.26.Course Examples 82
B.27.Management of Software Projects (MSU) 83
B.28.Software Requirements Engineering (RHIT) 85
B.29.Software Project Management (RHIT) 92
B.30.Formal Methods (RHIT) 97
B.31.Software Design (RHIT) 101
B.32.Software Construction & Evolution (RHIT) 107
B.33.Software Quality Assurance (RHIT) 113
B.34.Software Architecture (RHIT) 117
B.35.Software Testing and Quality Assurance (SPSU) 122
Share with your friends: |