Vancouver, BC
June 26, 2011
June 26, 2011
June 29, 2011
2153-5965
Systems Engineering
13
22.1401.1 - 22.1401.13
10.18260/1-2--18941
https://peer.asee.org/18941
565
Richard E. (Dick) Fairley is founder and principal associate of Software and System Engineering Associates (S2EA; a consulting and training company) and an Adjunct Professor at Colorado Technical University in Colorado Springs, Colorado. Dr. Fairley has bachelors and masters degree in electrical engineering. His Ph.D. in computer science is from UCLA. He can be contacted at d.fairley@computer.org.
Mary Jane Willshire is a principal associate of S2EA. Dr. Willshire has bachelor's and masters degrees in mathematics. Her Ph.D. in computer science is from Georgia Tech. She can be contacted as mjwillshire@ieee.org.
Teaching Software Engineering Concepts to Undergraduate System Engineering Students By Richard E. (Dick) Fairley and Mary Jane Willshire Corresponding author: d.fairley@computer.org Note to reviewers: This abstract is less than 500 words. Addition of author information has resulted in a document of more than 500 words. ABSTRACT This paper will describe the software engineering concepts that system engineering students need to understand in order to effectively communicate with, and work with software engineers who may be members of their system engineering teams, both as students and as practitioners. In this paper, systems are taken to mean complex arrangements of diverse hardware, software, and people elements that include computing hardware and software. System engineering as conceived by computer engineers is thus subsumed. It is widely recognized that software is the element that binds together the diverse components in modern systems and provides much of the functionality in those systems. However, many system engineering students are never exposed to the ways in which software engineering students are taught (or not taught) to think about systems as complex entities that include hardware, software, people, the interconnections among major system components, and the social/technical environments in which total systems exist. It is somewhat ironic that there should be a disconnect between system engineering education and software engineering education because many of the concepts of software engineering have been adapted from system engineering, including stakeholder analysis, requirements engineering, functional decomposition, design constraints, architectural design, design criteria and design tradeoffs, interface specification, traceability, configuration management, and systematic verification and validation. However, the lack of physical properties and the resulting malleability of software has resulted in differences in the ways the methods and techniques are applied at the system level and at the software level. It is also the case that some methods developed by software engineers, such as model-‐driven development, UML-‐SYSML, use cases, object-‐oriented design, agile methods, continuous integration, incremental V&V, and process modeling and improvement can be, and are being used by system engineers. However, system engineering and software engineering students need to understand the similarities and differences in the ways in which these concepts are applied in each discipline. In addition, the nature of software and the methods used to develop software have resulted in different uses of terminology and emphasis on different aspects of the artifacts produced by system engineers and by software engineers. Some examples: the term “performance” is often used by software engineers in the narrow sense of throughput and response time, whereas system engineers often take performance to mean satisfaction of all the non-‐functional requirements for a system. Safety and dependability are sometimes addressed in software engineering curricula; however, both system and software engineering students need to understand how these issues can and cannot be addressed at the software level. In addition, system-‐engineering students need to understand how software engineers quantify (and do not quantify) non-‐functional considerations such as cost/benefit tradeoffs, risk management, reliability, and MTTF at the system level. This paper will address these and other issues and indicate how software engineering concepts can be injected into undergraduate system engineering curricula. About The Authors: Richard E. (Dick) Fairley is founder and principal associate of Software and System Engineering Associates (S2EA; a consulting and training company) and an adjunct professor at Colorado Technical University in Colorado Springs, Colorado. Dr. Fairley has bachelors and masters degree in electrical engineering. His PhD in computer science is from UCLA. He can be contacted as d.fairley@computer.org. Mary Jane Willshire is a principal associate of S2EA. Dr. Willshire has bachelors and masters degrees in mathematics. Her PhD in computer science is from Georgia Tech. She can be contacted as mjwillshire@ieee.org.
Fairley, R. E. (2011, June), Teaching Software Engineering to Undergraduate System Engineering Sudents Paper presented at 2011 ASEE Annual Conference & Exposition, Vancouver, BC. 10.18260/1-2--18941
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2011 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015