INTRODUCTION
In order to circumscribe software engineering, it is necessary to identify the disciplines with which software engineering shares a common boundary. This chapter identifies, in alphabetical order, these Related Disciplines. Of course, the Related Disciplines also share many common boundaries between themselves.
Using a consensus-based recognized source, this chapter identifies for each Related Discipline:
An informative definition (when feasible)
A list of knowledge areas
Figure 1 gives a graphical representation of these Related Disciplines.
Figure 1 Related Disciplines of Software Engineering
LIST OF RELATED DISCIPLINES AND THEIR KNOWLEDGE AREAS
Computer Engineering
The draft report of the volume on computer engineering of the Computing Curricula 2001 project (CC2001)1 states that “computer engineering embodies the science and technology of design, construction, implementation and maintenance of software and hardware components of modern computing systems and computer-controlled equipment.”
This report identifies the following Knowledge Areas (known as areas in the report) for computer engineering:
Algorithms and Complexity
Computer Architecture and Organization
Computer Systems Engineering
Circuits and Systems
1 http://www.eng.auburn.edu/ece/CCCE/Iron_Man_Draft_October_2003.pdf
Digital Logic
Discrete Structures
Digital Signal Processing
Distributed Systems
Electronics
Embedded Systems
Human-Computer Interaction
Information Management
Intelligent Systems
Computer Networks
Operating Systems
Programming Fundamentals
Probability and Statistics
Social and Professional Issues
Software Engineering
Test and Verification
VLSI/ASIC Design
12-2 © IEEE –2004 Version Computer Science
The final report of the volume on computer science of the Computing Curricula 2001 project (CC2001)2 identifies the following list of knowledge areas (identified as areas in the report) for computer science:
Discrete Structures
Programming Fundamentals
Algorithms and Complexity
Architecture and Organization
Operating Systems
Net-Centric Computing
Programming Languages
Human-Computer Interaction
Graphics and Visual Computing
Intelligent Systems
Information Management
Social and Professional Issues
Software Engineering
Computational Science and Numerical Methods Management
The European MBA Guidelines defined by the European association of national accreditation bodies (EQUAL)3 states that the Master of Business Administration degree should include coverage of and instruction in
1) Accounting
Finance
Marketing and Sales
Operations Management
Information Systems Management
Law
Human Resource Management
Economics
Quantitative Analysis
Business Policy and Strategy Mathematics
Two sources are selected to identify the list of knowledge areas for mathematics. The report titled “Accreditation Criteria and Procedures”4 of the Canadian Engineering Accreditation Board identifies that appropriate elements of the following areas should be present in an undergraduate engineering curriculum:
• Linear Algebra
2 http://www.computer.org/education/cc2001/final/cc2001.pdf
3 http://www.efmd.be/
4 http://www.ccpe.ca/e/files/report_ceab.pdf
Differential and Integral Calculus
Differential Equations
Probability
Statistics
Numerical analysis
Discrete Mathematics
A more focused list of mathematical topics (called units and topics in the report) that underpin software engineering can be found in the draft report of the volume on software engineering of the Computing Curricula 2001 project (CC2001).5
Project Management
Project management is defined in the 2000 Edition of A Guide to the Project Management Body of Knowledge (PMBOK® Guide6) published by the Project Management Institute and adopted as IEEE Std 1490-2003, as “the application of knowledge, skills, tools, and techniques to project activities to meet project requirements.”
The Knowledge Areas identified in the PMBOK Guide for project management are
Project Integration Management
Project Scope Management
Project Time Management
Project Cost Management
Project Quality Management
Project Human Resource Management
Project Communications Management
Project Risk Management
Project Procurement Management Quality Management
Quality management is defined in ISO 9000-2000 as
“coordinated activities to direct and control an organization with regard to quality.” The three selected reference on quality management are
ISO 9000:2000 Quality management systems -- Fundamentals and vocabulary
ISO 9001:2000 Quality management systems – Requirements
ISO 9004:2000 Quality management systems -- Guidelines for performance improvements
The American Society for Quality identifies the following Knowledge Areas (first-level breakdown topics in their
5 http://sites.computer.org/ccse/volume/FirstDraft.pdf
6 PMBOK is a registered trademark in the United States and other nations.
outline) in their Body of Knowledge for certification as a Quality Engineer:7
2) Management and Leadership in Quality Engineering
Quality Systems Development, Implementation And Verification
Planning, Controlling, and Assuring Product and Process Quality
Reliability and Risk Management
Problem Solving and Quality Improvement
Quantitative Methods Software Ergonomics
The field of ergonomics is defined by ISO Technical Committee 159 on Ergonomics as follows: “Ergonomics or (human factors) is the scientific discipline concerned with the understanding of the interactions among human and other elements of a system, and the profession that applies theory, principles, data and methods to design in order to optimize human well-being and overall system performance.”8
A list of Knowledge Areas for ergonomics as it applies to software is proposed below:9
Cognition
Cognitive AI I: Reasoning
Machine Learning and Grammar Induction
Formal Methods in Cognitive Science: Language
Formal Methods in Cognitive Science: Reasoning
Formal Methods in Cognitive Science:
--Cognitive Architecture
Cognitive AI II: Learning
Foundations of Cognitive Science
Information Extraction from Speech and Text
Lexical Processing
Computational Language Acquisition
The Nature of HCI --(Meta-)Models of HCI
9 This list was compiled for the 2001 edition of the SWEBOK Guide from the list of courses offered at the John Hopkins University Department of Cognitive Sciences and from the ACM SIGCHI Curricula for Human-Computer Interaction.
The list was then refined by three experts in the field: two from Université du Québec à Montréal and W. W. McMillan, from Eastern Michigan University.
They were asked to indicate which of these topics should be known by a software engineer. The topics that were rejected by two of the three respondents were removed from the original list.
Use and Context of Computers --Human Social Organization and Work --Application Areas
Human-Machine Fit and Adaptation
Human Characteristics
--Human Information Processing
--Language, Communication, Interaction --Ergonomics
Computer System and Interface Architecture --Input and Output Devices
--Dialogue Techniques --Dialogue Genre --Computer Graphics
Dialogue Architecture
Development Process --Design Approaches --Implementation Techniques --Evaluation Techniques
--Example Systems and Case Studies
A more focused list of topics on human-computer interface design (called units and topics in the report) for software engineering curriculum purposes can be found in the draft report of the volume on software engineering of the Computing Curricula 2001 project (CC2001).10
Systems Engineering
The International Council on Systems Engineering (INCOSE)11 states that “Systems Engineering is an interdisciplinary approach and means to enable the realization of successful systems. It focuses on defining customer needs and required functionality early in the development cycle, documenting requirements, then proceeding with design synthesis and system validation while considering the complete problem: operations performance, test, manufacturing, cost and schedule, training and support and disposal.”
Systems engineering integrates all the disciplines and specialty groups into a team effort forming a structured development process that proceeds from concept to production to operation. Systems engineering considers both the business and the technical needs of all customers with the goal of providing a quality product that meets user needs.
The International Council on Systems Engineering (INCOSE, www.incose.org) is working on a Guide to the Systems Engineering Body of Knowledge. Preliminary versions include the following first-level competency areas:
1. Business Processes and Operational Assessment (BPOA)
10 http://sites.computer.org/ccse/volume/FirstDraft.pdf
11 www.incose.org
12-4 © IEEE –2004 Version 2. System/Solution/Test Architecture (SSTA)
3. Life Cycle Cost & Cost-Benefit Analysis (LCC & CBA) 4. Serviceability / Logistics (S/L)
5. Modeling, Simulation, & Analysis (MS&A) 6. Management: Risk, Configuration, Baseline (Mgt)