Difference between revisions of "Systems Engineering and Software Engineering"

From SEBoK
Jump to navigation Jump to search
m (Text replacement - "SEBoK v. 2.9, released 20 November 2023" to "SEBoK v. 2.10, released 06 May 2024")
 
(134 intermediate revisions by 14 users not shown)
Line 1: Line 1:
Software is usually prominent in modern systems architectures and is often the glue for integrating complex system components.  Software engineering and systems engineering are not merely related disciplines; they are intimately intertwined; see [[Intertwined Disciplines and the SEBoK]].
+
----
 +
'''''Lead Authors:''''' ''Dick Fairley, Tom Hilburn'', '''''Contributing Authors:''''' ''Ray Madachy, Alice Squires''
 +
----
 +
Software is prominent in most modern systems architectures and is often the primary means for integrating complex system components.  {{Term|Software Engineering (glossary)|Software engineering}} and {{Term|Systems Engineering (glossary)|systems engineering}} are not merely related disciplines; they are intimately intertwined. (See [[Systems Engineering and Other Disciplines]].)  Good systems engineering is a key factor in enabling good software engineering. 
  
The SEBoK explicitly recognizes and embraces the intertwining between SE and SwE, which includes defining the relationship between the SEBoK and the Guide to The Software Engineering Body of Knowledge (SWEBOK), which is published by the IEEE (Abran et al. 2004).  
+
The SEBoK explicitly recognizes and embraces the intertwining between systems engineering and software engineering, as well as defining the relationship between the SEBoK and the Guide to the Software Engineering Body of Knowledge (SWEBOK) (Bourque, and Fairley 2014; IEEE Computer Society 2022).
[external link: http://www.swebok.org]
 
  
This knowledge area describes the nature of software, provides an overview of the 2004 SWEBOK Guide, describes the concepts that are shared by systems engineers and software engineers, and indicates the similarities and difference in how software engineers and systems engineers apply those concepts and use common terminology in similar and different ways.
+
This knowledge area describes the nature of software, provides an overview of the SWEBOK, describes the concepts that are shared by systems engineers and software engineers, and indicates the similarities and difference in how software engineers and systems engineers apply these concepts and use common terminology. It also describes the nature of the relationships between software engineering and systems engineering and describes some of the methods, models and tools used by software engineers.
  
 
==Topics==
 
==Topics==
The Systems Engineering and Software Engineering knowledge area contains the following topics:
+
Each part of the SEBoK is divided into knowledge areas (KAs), which are groupings of information with a related theme. The KAs, in turn, are divided into topics. This KA contains the following topics:  
*[[The Nature of Software]]
+
*[[Software Engineering in the Systems Engineering Life Cycle]]
 +
* [[The Nature of Software]]
 
*[[An Overview of the SWEBOK Guide]]
 
*[[An Overview of the SWEBOK Guide]]
*[[Software Engineering and Systems Engineering: Similarities and Differences]]
+
*[[Key Points a Systems Engineer Needs to Know about Software Engineering]]
 
+
*[[Software Engineering Features - Models, Methods, Tools, Standards, and Metrics]]
 
 
 
 
==An Overview of the SWEBOK Guide==
 
 
 
The Preface to the 2004 version of the Guide to the Software Engineering Body of Knowledge states external link: http://www.swebok.org]:
 
 
 
<blockquote>The purpose of the Guide to the Software Engineering Body of Knowledge is to provide a consensually validated characterization of the bounds of the software engineering discipline and to provide a topical access to the Body of Knowledge supporting that discipline.</blockquote>
 
 
 
Version 3 of the SWEBOK Guide is being developed and will be completed in late 2011 or early 2012.  Version 3 of the SWEBOK Guide contains 15 knowledge areas:
 
 
 
*Software Requirements
 
*Software Design
 
*Software Construction
 
*Software Testing
 
*Software Engineering Methods
 
*Software Maintenance
 
*Software Configuration Management
 
*Software Quality
 
*Software Engineering Process
 
*Software Engineering Management
 
*Software Professional Practice
 
*Software Economics
 
*Computing Foundations
 
*Mathematical Foundations
 
*Engineering Foundations
 
 
 
The description of each knowledge area includes an introduction, a descriptive breakdown of topics and sub-topics, recommended references, references for further reading, and a list of standards most relevant to the knowledge area.
 
  
The following table indicates the correspondences between SWEBOK knowledge areas and SEBoK knowledge areas. The similarities and differences are described below [{Systems Engineering and Software Engineering: Similarities and Differences}].
+
==Discussion==
 +
Software engineers, like systems engineers:
 +
*engage in analysis and design, allocation of requirements, oversight of component development, component integration, verification and validation, life cycle sustainment, and system retirement.  
 +
*work with or as a component specialist (for example, user interface, database, computation, and communication specialists) who construct or otherwise obtain the needed software components.
 +
*adapt existing components and incorporate components supplied by customers and affiliated organizations.
  
Table 1. Correspondences between SWEBOK and SEBoK Knowledge Areas
+
These commonalities would make it appear that software engineering is merely an application of systems engineering, but this is only a superficial appearance. The differences between the two disciplines arise from two fundamental concerns:
 +
#Differences in educational backgrounds (traditional engineering disciplines for SE and the computing disciplines for SWE) and work experiences that result in different approaches to problem solving, and
 +
#Different ways of applying shared concepts based on the contrasting natures of the software medium and the physical media of traditional engineering. 
  
<blockquote>NOTE: Table 1 To be completed</blockquote>
+
Table 1 itemizes some of the shared concepts that are applied in different ways by systems engineers and software engineers. Each discipline has made contributions to the other. Table 1 indicates the methods and techniques developed by systems engineers adapted for use by software engineers and, conversely, those that have been adapted for use by systems engineers.
  
The SWEBOK Guide also contains a chapter on related disciplines, which include:
+
<div style="text-align: center;">
 +
<blockquote>'''Table 1. Adaptation of Methods Across SE and SWE (Fairley and Willshire 2011''') Reprinted with permission of Dick Fairley and Mary Jane Willshire. All other rights are reserved by the copyright owner. <nowiki>*</nowiki>
 +
</blockquote>
 +
</div>
 +
{| align="center"
 +
|-
 +
! Systems Engineering Methods<br> Adapted to Software Engineering
 +
! Software Engineering Methods<br> Adapted to Systems Engineering
  
*Computer Engineering
+
|-
*Business Management
+
|
*Project Management
+
*Stakeholder Analysis
*Quality Management
+
*Requirements Engineering
*Systems Engineering
+
*Functional Decomposition
 +
*Design Constraints
 +
*Architectural Design
 +
*Design Criteria
 +
*Design Tradeoffs
 +
*Interface Specification
 +
*Traceability
 +
*Configuration Management
 +
*Systematic Verification and Validation
  
The related disciplines are those that share a boundary, and often a common intersection, with software engineering.  The SWEBOK Guide does not characterize the knowledge of the related disciplines but rather indicates how those disciplines interact with the software engineering discipline.
+
|
 +
*Model-Driven Development
 +
*UML-SysML
 +
*Use Cases
 +
*Object-Oriented Design
 +
*Iterative Development
 +
*Agile Methods
 +
*Continuous Integration
 +
*Process Modeling
 +
*Process Improvement
 +
*Incremental Verification and Validation
  
 +
|}
  
 +
The articles in this knowledge area give an overview of software and software engineering aimed at systems engineers.  It also provides more details on the relationship between systems and software life cycles and some of the detailed tools used by software engineers.  As systems become more dependent on software as a primary means of delivering stakeholder value, the historical distinction between software and systems engineering may need to be challenged.  This is a current area of joint discussion between the two communities which will affect the future knowledge in both SEBoK and SWEBoK.
  
 
==References==  
 
==References==  
  
===Citations===
+
===Works Cited===
  
Brooks, Fred. 1995. [[The Mythical Man-Month]], Anniversary Edition. Boston, Massachusetts: Addison Weslley Longman Inc.
+
Bourque, P. and Fairley, R.E. (eds.). 2014. ''[[Guide to the Software Engineering Body of Knowledge (SWEBOK)]]''). Los Alamitos, CA, USA: IEEE Computer Society. Accessed May 25, 2023. Available at http://www.Swebok.org
  
Fairley, Richard E. 2009. [[Managing and Leading Software Projects]]. Hoboken, New Jersey: John Wiley and Sons.
+
Fairley, R.E. and Willshire M.J., 2011. ''Teaching systems engineering to software engineering students'', ''CSEET ''2011, Software Engineering Education and Training, p: 219-226, ISBN: 978-1-4577-0349-2.  
  
Abran et al. 2004. Guide to the Software Engineering Body of Knowledge (SWEBOK. Piscataway, New Jersey: The Institute of Electrical and Electronic Engineers, Inc.
+
IEEE Computer Society. 2022. SWEBOK Guide Version 4.0 beta. Accessed August 28, 2023. Available at <nowiki>https://waseda.app.box.com/s/elnhhnezdycn2q2zp4fe0f2t1fvse5rn</nowiki>.  
  
 +
===Primary References===
  
===Primary References===
+
Bourque, P. and R.E. Fairley (eds.). 2014. ''[[Guide to the Software Engineering Body of Knowledge (SWEBOK)]]''. Los Alamitos, CA, USA: IEEE Computer Society. Accessed May 25, 2023. Available at http://www.Swebok.org
  
Brooks, Fred. 1995. [[The Mythical Man-Month]], Anniversary Edition. Boston, Massachusetts: Addison Weslley Longman Inc.
+
Brooks, F. 1995. ''[[The Mythical Man-Month]],'' Anniversary Edition. Boston, MA, USA: Addison Wesley Longman Inc.
  
Fairley, Richard E. 2009. [[Managing and Leading Software Projects]]. Hoboken, New Jersey: John Wiley and Sons.
+
Fairley, R.E. 2009. ''[[Managing and Leading Software Projects]].'' Hoboken, NJ, USA: John Wiley and Sons.
  
 
===Additional References===
 
===Additional References===
  
Abran et al. 2004. Guide to the Software Engineering Body of Knowledge (SWEBOK). Piscataway, New Jersey: The Institute of Electrical and Electronic Engineers, Inc.
+
Pressman, R. 2009. ''Software Engineering: A Practitioner's Approach.'' 7th Ed. New York, NY, USA: McGraw Hill.  
  
 +
Schneidewind, N. 2009. ''Systems and Software Engineering with Applications''. New York, NY, USA: Institute of Electrical and Electronics Engineers.
 +
 +
Sommerville, I. 2010. ''Software Engineering.'' 9th Ed. Boston, MA, USA: Addison Wesley.
 +
 
----
 
----
====Article Discussion====
 
[[{{TALKPAGENAME}}|[Go to discussion page]]]
 
<center>[[Related Disciplines|<- Previous Article]] | [[Related Disciplines|Parent Article]] | [[The Nature of Software|Next Article ->]]</center>
 
  
==Signatures==
+
<center>[[Related Disciplines|< Previous Article]] | [[Related Disciplines|Parent Article]] | [[Software Engineering in the Systems Engineering Life Cycle|Next Article >]]</center>
--[[User:Bkcase|Bkcase]] 19:07, 22 August 2011 (UTC) (on behalf of Dick Fairley)
+
 
 +
<center>'''SEBoK v. 2.10, released 06 May 2024'''</center>
  
[[Category: Part 6]][[Category:Knowledge Area]]
+
[[Category: Part 6]]
 +
[[Category:Knowledge Area]]

Latest revision as of 23:06, 2 May 2024


Lead Authors: Dick Fairley, Tom Hilburn, Contributing Authors: Ray Madachy, Alice Squires


Software is prominent in most modern systems architectures and is often the primary means for integrating complex system components. Software engineeringSoftware engineering and systems engineeringsystems engineering are not merely related disciplines; they are intimately intertwined. (See Systems Engineering and Other Disciplines.) Good systems engineering is a key factor in enabling good software engineering.

The SEBoK explicitly recognizes and embraces the intertwining between systems engineering and software engineering, as well as defining the relationship between the SEBoK and the Guide to the Software Engineering Body of Knowledge (SWEBOK) (Bourque, and Fairley 2014; IEEE Computer Society 2022).

This knowledge area describes the nature of software, provides an overview of the SWEBOK, describes the concepts that are shared by systems engineers and software engineers, and indicates the similarities and difference in how software engineers and systems engineers apply these concepts and use common terminology. It also describes the nature of the relationships between software engineering and systems engineering and describes some of the methods, models and tools used by software engineers.

Topics

Each part of the SEBoK is divided into knowledge areas (KAs), which are groupings of information with a related theme. The KAs, in turn, are divided into topics. This KA contains the following topics:

Discussion

Software engineers, like systems engineers:

  • engage in analysis and design, allocation of requirements, oversight of component development, component integration, verification and validation, life cycle sustainment, and system retirement.
  • work with or as a component specialist (for example, user interface, database, computation, and communication specialists) who construct or otherwise obtain the needed software components.
  • adapt existing components and incorporate components supplied by customers and affiliated organizations.

These commonalities would make it appear that software engineering is merely an application of systems engineering, but this is only a superficial appearance. The differences between the two disciplines arise from two fundamental concerns:

  1. Differences in educational backgrounds (traditional engineering disciplines for SE and the computing disciplines for SWE) and work experiences that result in different approaches to problem solving, and
  2. Different ways of applying shared concepts based on the contrasting natures of the software medium and the physical media of traditional engineering.

Table 1 itemizes some of the shared concepts that are applied in different ways by systems engineers and software engineers. Each discipline has made contributions to the other. Table 1 indicates the methods and techniques developed by systems engineers adapted for use by software engineers and, conversely, those that have been adapted for use by systems engineers.

Table 1. Adaptation of Methods Across SE and SWE (Fairley and Willshire 2011) Reprinted with permission of Dick Fairley and Mary Jane Willshire. All other rights are reserved by the copyright owner. *

Systems Engineering Methods
Adapted to Software Engineering
Software Engineering Methods
Adapted to Systems Engineering
  • Stakeholder Analysis
  • Requirements Engineering
  • Functional Decomposition
  • Design Constraints
  • Architectural Design
  • Design Criteria
  • Design Tradeoffs
  • Interface Specification
  • Traceability
  • Configuration Management
  • Systematic Verification and Validation
  • Model-Driven Development
  • UML-SysML
  • Use Cases
  • Object-Oriented Design
  • Iterative Development
  • Agile Methods
  • Continuous Integration
  • Process Modeling
  • Process Improvement
  • Incremental Verification and Validation

The articles in this knowledge area give an overview of software and software engineering aimed at systems engineers. It also provides more details on the relationship between systems and software life cycles and some of the detailed tools used by software engineers. As systems become more dependent on software as a primary means of delivering stakeholder value, the historical distinction between software and systems engineering may need to be challenged. This is a current area of joint discussion between the two communities which will affect the future knowledge in both SEBoK and SWEBoK.

References

Works Cited

Bourque, P. and Fairley, R.E. (eds.). 2014. Guide to the Software Engineering Body of Knowledge (SWEBOK)). Los Alamitos, CA, USA: IEEE Computer Society. Accessed May 25, 2023. Available at http://www.Swebok.org

Fairley, R.E. and Willshire M.J., 2011. Teaching systems engineering to software engineering students, CSEET 2011, Software Engineering Education and Training, p: 219-226, ISBN: 978-1-4577-0349-2.

IEEE Computer Society. 2022. SWEBOK Guide Version 4.0 beta. Accessed August 28, 2023. Available at https://waseda.app.box.com/s/elnhhnezdycn2q2zp4fe0f2t1fvse5rn.

Primary References

Bourque, P. and R.E. Fairley (eds.). 2014. Guide to the Software Engineering Body of Knowledge (SWEBOK). Los Alamitos, CA, USA: IEEE Computer Society. Accessed May 25, 2023. Available at http://www.Swebok.org

Brooks, F. 1995. The Mythical Man-Month, Anniversary Edition. Boston, MA, USA: Addison Wesley Longman Inc.

Fairley, R.E. 2009. Managing and Leading Software Projects. Hoboken, NJ, USA: John Wiley and Sons.

Additional References

Pressman, R. 2009. Software Engineering: A Practitioner's Approach. 7th Ed. New York, NY, USA: McGraw Hill.

Schneidewind, N. 2009. Systems and Software Engineering with Applications. New York, NY, USA: Institute of Electrical and Electronics Engineers.

Sommerville, I. 2010. Software Engineering. 9th Ed. Boston, MA, USA: Addison Wesley.


< Previous Article | Parent Article | Next Article >
SEBoK v. 2.10, released 06 May 2024