SWEBOK Guide V4.0 Topics

SWEBOK V4.0 comprises 18 Knowledge Areas, plus a new Appendix on Standards.
This page lists the Table of Contents.
DOWNLOAD

Chapter 1: Software Requirements Fundamentals


1. Software Requirements Fundamentals

  • 1.1. Definition of a Software Requirement
  • 1.2. Categories of Software Requirements
  • 1.3. Software Product Requirements and Software Project Requirements
  • 1.4. Functional Requirements
  • 1.5. Nonfunctional Requirements
  • 1.6. Technology Constraints
  • 1.7. Quality of Service Constraints
  • 1.8. Why Categorize Requirements This Way?
  • 1.9. System Requirements and Software Requirements
  • 1.10. Derived Requirements
  • 1.11. Software Requirements Activities

2. Requirements Elicitation

  • 2.1. Requirements Sources
  • 2.2. Common Requirements Elicitation Techniques

3. Requirements Analysis

  • 3.1. Basic Requirements Analysis
  • 3.2. Economics of Quality of Service Constraints [3*]
  • 3.3. Formal Analysis
  • 3.4. Addressing Conflict in Requirements

4. Requirements Specification

  • 4.1. Unstructured Natural Language Requirements Specification
  • 4.2. Structured Natural Language Requirements Specification
  • 4.3. Acceptance Criteria-Based Requirements Specification
  • 4.4. Model-Based Requirements Specification
  • 4.5. Additional Attributes of Requirement
  • 4.6. Incremental and Comprehensive Requirements Specification

5. Requirements Validation

  • 5.1. Requirements Reviews
  • 5.2. Simulation and Execution
  • 5.3. Prototyping

6. Requirements Management Activities

  • 6.1. Requirements Scrubbing
  • 6.2. Requirements Change Control
  • 6.3. Scope Matching

7. Practical Considerations

  • 7.1. Iterative Nature of the Requirements Process
  • 7.2. Requirements Prioritization
  • 7.3. Requirements Tracing
  • 7.4. Requirements Stability and Volatility
  • 7.5. Measuring Requirements
  • 7.6. Requirements Process Quality and Improvement

8. Software Requirements Tools

  • 8.1. Requirements Management Tools
  • 8.2. Requirements Modeling Tools
  • 8.3. Functional Test Case Generation Tools

Chapter 2. Software Architecture


1. Software Architecture Fundamentals

  • 1.1. The Senses of “Architecture”
  • 1.2. Stakeholders and Concerns
  • 1.3. Uses of Architecture

2. Software Architecture Description

  • 2.1. Architecture Views and Viewpoints
  • 2.2. Architecture Patterns, Styles and Reference Architectures
  • 2.3. Architecture Description Languages and Architecture Frameworks
  • 2.4. Architecture as Significant Decisions

3. Software Architecture Process

  • 3.1. Architecture in Context
    • 3.1.1. Relation of Architecture to Design
  • 3.2. Architectural Design
    • 3.2.1. Architecture Analysis
    • 3.2.2. Architecture Synthesis
    • 3.2.3. Architecture Evaluation
  • 3.3. Architecture Practices, Methods, and Tactics
  • 3.4. Architecting in the Large

4. Software Architecture Evaluation

  • 4.1. Goodness in Architecture
  • 4.2. Reasoning about Architectures
  • 4.3. Architecture Reviews
  • 4.4. Architecture Metrics

Chapter 3: Software Design


1. Software Design Fundamentals

  • 1.1. Design Thinking
  • 1.2. Context of Software Design
  • 1.3. Key Issues in Software Design
  • 1.4. Software Design Principles

2. Software Design Processes

  • 2.1. High-Level Design
  • 2.2. Detailed Design

3. Software Design Qualities

  • 3.1. Concurrency
  • 3.2. Control and Event Handling
  • 3.3. Data Persistence
  • 3.4. Distribution of Components
  • 3.5. Errors and Exception Handling, Fault Tolerance
  • 3.6. Integration and Interoperability
  • 3.7. Assurance, Security, and Safety
  • 3.8. Variability

4. Recording Software Designs

  • 4.1. Model-Based Design
  • 4.2. Structural Design Descriptions
  • 4.3. Behavioral Design Descriptions
  • 4.4. Design Patterns and Styles
  • 4.5. Specialized and Domain-Specific Languages
  • 4.6. Design Rationale

5. Software Design Strategies and Methods

  • 5.1. General Strategies
  • 5.2. Function-Oriented (or Structured) Design
  • 5.3. Data-Centered Design
  • 5.4. Object-Oriented Design
  • 5.5. User-Centered Design
  • 5.6. Component-Based Design (CBD)
  • 5.7. Event-Driven Design
  • 5.8. Aspect-Oriented Design (AOD)
  • 5.9. Constraint-Based Design
  • 5.10. Other Methods

6. Software Design Quality Analysis and Evaluation

  • 6.1. Design Reviews and Audits
  • 6.2. Quality Attributes
  • 6.3. Quality Analysis and Evaluation Techniques
  • 6.4. Measures and Metrics
  • 6.5. Verification, Validation, and Certification

Chapter 4: Software Construction


1. Software Construction Fundamentals

  • 1.1. Minimizing Complexity
  • 1.2. Anticipating and Embracing Change
  • 1.3. Constructing for Verification
  • 1.4. Reusing Assets
  • 1.5. Applying Standards in Construction

2. Managing Construction

  • 2.1. Construction in Life Cycle Models
  • 2.2. Construction Planning
  • 2.3. Construction Measurement
  • 2.4. Managing Dependencies

3. Practical Considerations

  • 3.1. Construction Design
  • 3.2. Construction Languages
  • 3.3. Coding
  • 3.4. Construction Testing
  • 3.5. Reuse in Construction
  • 3.6. Construction Quality
  • 3.7. Integration
  • 3.8. Cross-Platform Development and Migration

4. Construction Technologies

  • 4.1. API Design and Use
  • 4.2. Object-Oriented Runtime Issues
  • 4.3. Parameterization, Templates, and Generics
  • 4.4. Assertions, Design by Contract, and Defensive Programming
  • 4.5. Error Handling, Exception Handling, and Fault Tolerance
  • 4.6. Executable Models
  • 4.7. State-Based and Table-Driven Construction Techniques
  • 4.8. Runtime Configuration and Internationalization
  • 4.9. Grammar-Based Input Processing
  • 4.10. Concurrency Primitives
  • 4.11. Middleware
  • 4.12. Construction Methods for Distributed and Cloud-Based Software
  • 4.13. Constructing Heterogeneous Systems
  • 4.14. Performance Analysis and Tuning
  • 4.15. Platform Standards
  • 4.16. Test-First Programming
  • 4.17. Feedback Loop for Construction

5. Software Construction Tools

  • 5.1. Development Environments
  • 5.2. Visual Programming and Low-Code/Zero-Code Platforms
  • 5.3. Unit Testing Tools
  • 5.4. Profiling, Performance Analysis, and Slicing Tools

Chapter 5: Software Testing Fundamentals


1. Software Testing Fundamentals

  • 1.1. Faults vs. Failures
  • 1.2. Key Issues
    • 1.2.1. Test Case Creation
    • 1.2.2. Test Selection and Adequacy Criteria
    • 1.2.3. Prioritization/Minimization
    • 1.2.4. Purpose of Testing
    • 1.2.5. Assessment and Certification
    • 1.2.6. Testing for Quality Assurance/Improvement
    • 1.2.7. The Oracle Problem
    • 1.2.8. Theoretical and Practical Limitations
    • 1.2.9. The Problem of Infeasible Paths
    • 1.2.10. Testability
    • 1.2.11. Test Execution and Automation
    • 1.2.12. Scalability
    • 1.2.13. Test Effectiveness
    • 1.2.14. Controllability, Replication, and Generalization
    • 1.2.15. Off-Line vs. Online Testing
  • 1.3. Relationship of Testing to Other Activities

2. Test Levels

  • 2.1. The Target of the Test
    • 2.1.1. Unit Testing
    • 2.1.2. Integration Testing
    • 2.1.3. System Testing
    • 2.1.4. Acceptance Testing
  • 2.2. Objectives of Testing
    • 2.2.1. Conformance Testing
    • 2.2.2. Compliance Testing
    • 2.2.3. Installation Testing
    • 2.2.4. Alpha and Beta Testing
    • 2.2.5. Regression Testing
    • 2.2.6. Prioritization Testing
    • 2.2.7. Non-functional Testing
    • 2.2.8. Security Testing
    • 2.2.9. Privacy Testing
    • 2.2.10. Interface and Application Program Interface (API) Testing
    • 2.2.11. Configuration Testing
    • 2.2.12. Usability and Human-Computer Interaction Testing

3. Test Techniques

  • 3.1. Specification-Based Techniques
    • 3.1.1. Equivalence Partitioning
    • 3.1.2. Boundary-Value Analysis
    • 3.1.3. Syntax Testing
    • 3.1.4. Combinatorial Test Techniques
    • 3.1.5. Decision Table
    • 3.1.6. Cause-Effect Graphing
    • 3.1.7. State Transition Testing
    • 3.1.8. Scenario-Based Testing
    • 3.1.9. Random Testing
    • 3.1.10. Evidence-Based
    • 3.1.11. Forcing Exception
  • 3.2. Structure-Based Test Techniques
    • 3.2.1. Control Flow Testing
    • 3.2.2. Data Flow Testing
    • 3.2.3. Reference Models for Structure-Based Test Techniques
  • 3.3. Experience-Based Techniques
    • 3.3.1. Error Guessing
    • 3.3.2. Exploratory Testing
    • 3.3.3. Further Experience-Based Techniques
  • 3.4. Fault-Based and Mutation Techniques
  • 3.5. Usage-Based Techniques
    • 3.5.1. Operational Profile
    • 3.5.2. User Observation Heuristics
  • 3.6. Techniques Based on the Nature of the Application
  • 3.7. Selecting and Combining Techniques
    • 3.7.1. Combining Functional and Structural
    • 3.7.2. Deterministic vs. Random
  • 3.8. Techniques Based on Derived Knowledge

4. Test-Related Measures

  • 4.1. Evaluation of the SUT
    • 4.1.1. SUT Measurements that Aid in Planning and Designing Tests
    • 4.1.2. Fault Types, Classification and Statistics
    • 4.1.3. Fault Density
    • 4.1.4. Life Test, Reliability Evaluation
    • 4.1.5. Reliability Growth Models
  • 4.2. Evaluation of the Tests Performed
    • 4.2.1. Fault Injection
    • 4.2.2. Mutation Score
    • 4.2.3. Comparison and Relative Effectiveness of Different Techniques

5. Test Process

  • 5.1. Practical Considerations
    • 5.1.1. Attitudes/Egoless Programming
    • 5.1.2. Test Guides and Organizational Process
    • 5.1.3. Test Management and Dynamic Test Processes
    • 5.1.4. Test Documentation
    • 5.1.5. Test Team
    • 5.1.6. Test Process Measures
    • 5.1.7. Test Monitoring and Control
    • 5.1.8. Test Completion
    • 5.1.9. Test Reusability
  • 5.2. Test Sub-Processes and Activities
    • 5.2.1. Test Planning Process
    • 5.2.2. Test Design and Implementation
    • 5.2.3. Test Environment Set-up and Maintenance
    • 5.2.4. Controlled Experiments and Test Execution
    • 5.2.5. Test Incident Reporting
  • 5.3. Staffing

6. Software Testing in the Development Processes and the Application Domains

  • 6.1. Testing Inside Software Development Processes
    • 6.1.1. Testing in Traditional Processes
    • 6.1.2. Testing in Line with Shift-Left Movement
  • 6.2. Testing in the Application Domains

7. Testing of and Testing Through Emerging Technologies

  • 7.1. Testing of Emerging Technologies
  • 7.2. Testing Through Emerging Technologies

8. Software Testing Tools

  • 8.1. Testing Tool Support and Selection
  • 8.2. Categories of Tools

Chapter 6: Software Engineering Operations


1. Software Engineering Operations Fundamentals

  • 1.1. Definition of Software Engineering Operations
  • 1.2. Software Engineering Operations Processes
  • 1.3. Software Installation
  • 1.4. Scripting and Automating
  • 1.5. Effective Testing and Troubleshooting
  • 1.6. Performance, Reliability and Load Balancing

2. Software Engineering Operations Planning

  • 2.1. Operations Plan and Supplier Management
    • 2.1.1. Operations Plan
    • 2.1.2. Supplier Management
  • 2.2. Development and Operational Environments
  • 2.3. Software Availability, Continuity, and Service Levels
  • 2.4. Software Capacity Management
  • 2.5. Software Backup, Disaster Recovery, and Failover
  • 2.6. Software and Data Safety, Security, Integrity, Protection, and Controls

3. Software Engineering Operations Delivery

  • 3.1. Operational Testing, Verification, and Acceptance
  • 3.2. Deployment/Release Engineering
  • 3.3. Rollback and Data Migration
  • 3.4. Change Management
  • 3.5. Problem Management

4. Software Engineering Operations Control

  • 4.1. Incident Management
  • 4.2. Monitor, Measure, Track, and Review
  • 4.3. Operations Support
  • 4.4. Operations Service Reporting

5. Practical Considerations

  • 5.1. Incident and Problem Prevention
  • 5.2. Operational Risk Management
  • 5.3. Automating Software Engineering Operations
  • 5.4. Software Engineering Operations for Small Organizations

6. Software Engineering Operations Tools

  • 6.1. Containers and Virtualization
  • 6.2. Deployment
  • 6.3. Automated Test
  • 6.4. Monitoring and Telemetry

Chapter 7: Software Maintenance


1. Software Maintenance Fundamentals

  • 1.1. Definitions and Terminology
  • 1.2. Nature of Software Maintenance
  • 1.3. Need for Software Maintenance
  • 1.4. Majority of Maintenance Costs
  • 1.5. Evolution of Software
  • 1.6. Categories of Software Maintenance

2. Key Issues in Software Maintenance

  • 2.1. Technical Issues
    • 2.1.1. Limited Understanding
    • 2.1.2. Testing
    • 2.1.3. Impact Analysis
    • 2.1.4. Maintainability
  • 2.2. Management Issues
    • 2.2.1. Alignment with Organizational Objectives
    • 2.2.2. Staffing
    • 2.2.3. Process
    • 2.2.4. Supplier Management
    • 2.2.5. Organizational Aspects of Maintenance
  • 2.3. Software Maintenance Costs
    • 2.3.1. Technical Debt Cost Estimation
    • 2.3.2. Maintenance Cost Estimation
  • 2.4. Software Maintenance Measurement

3. Software Maintenance Processes

  • 3.1. Software Maintenance Processes
  • 3.2. Software Maintenance Activities and Tasks
    • 3.2.1. Supporting and Monitoring Activities
    • 3.2.2. Planning Activities
    • 3.2.3. Configuration Management
    • 3.2.4. Software Quality

4. Software Maintenance Techniques

  • 4.1. Program Comprehension
  • 4.2. Software Reengineering
  • 4.3. Reverse Engineering
  • 4.4. Continuous Integration, Delivery, Testing, and Deployment
  • 4.5. Visualizing Maintenance

5. Software Maintenance Tools

Chapter 8: Software Configuration Management


1. Management of the SCM Process

  • 1.1. Organizational Context for SCM
  • 1.2. Constraints and Guidance for the SCM Process
  • 1.3. Planning for SCM
    • 1.3.1. SCM Organization and Responsibilities
    • 1.3.2. SCM Resources and Schedules
    • 1.3.3. Tool Selection and Implementation
    • 1.3.4. Vendor/Subcontractor Control
    • 1.3.5. Interface Control
  • 1.4. SCM Plan
  • 1.5. Monitoring of Software Configuration Management
    • 1.5.1. SCM Measures and Measurement
    • 1.5.2. In-Process Audits of SCM

2. Software Configuration Identification

  • 2.1. Identifying Items to Be Controlled
    • 2.1.1. Software Configuration
    • 2.1.2. Software Configuration Item
  • 2.2. Configuration Item Identifiers and Attributes
  • 2.3. Baseline Identification
  • 2.4. Baseline Attributes
  • 2.5. Relationships Scheme Definition
  • 2.6. Software Libraries

3. Software Configuration Change Control

  • 3.1. Requesting, Evaluating, and Approving Software Changes
    • 3.1.1. Software Configuration Control Board
    • 3.1.2. Software Change Request Process
    • 3.1.3. Software Change Request Forms Definition
  • 3.2. Implementing Software Changes
  • 3.3. Deviations and Waivers

4. Software Configuration Status Accounting

  • 4.1. Software Configuration Status Information
  • 4.2. Software Configuration Status Reporting

5. Software Configuration Auditing

  • 5.1. Software Functional Configuration Audit
  • 5.2. Software Physical Configuration Audit
  • 5.3. In-Process Audits of a Software Baseline

6. Software Release Management and Delivery

  • 6.1. Software Building
  • 6.2. Software Release Management

7. Software Configuration Management Tools

Chapter 9: Software Engineering Management


1. Initiation and Scope Definition

  • 1.1. Determination and Negotiation of Requirements
  • 1.2. Feasibility Analysis
  • 1.3. Process for the Review and Revision of Requirements

2. Software Project Planning

  • 2.1. Process Planning
  • 2.2. Determine Deliverables
  • 2.3. Effort, Schedule, and Cost Estimation
  • 2.4. Resource Allocation
  • 2.5. Risk Management
  • 2.6. Quality Management
  • 2.7. Plan Management

3. Software Project Execution

  • 3.1. Implementation of Plans
  • 3.2. Software Acquisition and Supplier Contract Management
  • 3.3. Implementation of Measurement Process
  • 3.4. Monitor Process
  • 3.5. Control Process
  • 3.6. Reporting

4. Review and Evaluation

  • 4.1. Determining Satisfaction of Requirements
  • 4.2. Reviewing and Evaluating Performance

5. Closure

  • 5.1. Determining Closure
  • 5.2. Closure Activities

6. Software Engineering Measurement

  • 6.1. Establish and Sustain Measurement Commitment
  • 6.2. Plan the Measurement Process
  • 6.3. Perform the Measurement Process
  • 6.4. Evaluate Measurement

7. Software Engineering Management Tools

Chapter 10: Software Engineering Process


1. Software Engineering Process Fundamentals

  • 1.1. Introduction
  • 1.2. Software Engineering Process Definition

2. Life Cycles

  • 2.1. Life Cycle Definition, Process Categories, and Terminology
  • 2.2. Rationale for Life Cycles
  • 2.3. The Concepts of Process Models and Life Cycle Models
  • 2.4. Some Paradigms for Development Life Cycle Models
  • 2.5. Development Life Cycle Models and Their Engineering Dimension
  • 2.6. The Management of SLCPs
  • 2.7. Software Engineering Process Management
  • 2.8. Software Life Cycle Adaptation
  • 2.9. Practical Considerations
  • 2.10. Software Process Infrastructure, Tools, Methods
  • 2.11. Software Engineering Process Monitoring and its Relationship with the Software Product

3. Software Process Assessment and Improvement

  • 3.1. Overview of Software Process Assessment and Improvement
  • 3.2. Goal-Question-Metric (GQM)
  • 3.3. Framework-Based Methods
  • 3.4. Process Assessment and Improvement in Agile

Chapter 11: Software Engineering Models and Methods


. Modeling

  • 1.1. Modeling Principles
  • 1.2. Properties and Expression of Models
  • 1.3. Syntax, Semantics, and Pragmatics
  • 1.4. Preconditions, Postconditions, and Invariants

2. Types of Models

  • 2.1. Structural Modeling
  • 2.2. Behavioral Modeling

3. Analysis of Models

  • 3.1. Analyzing for Completeness
  • 3.2. Analyzing for Consistency
  • 3.3. Analyzing for Correctness
  • 3.4. Analyzing for Traceability
  • 3.5. Analyzing for Interaction

4. Software Engineering Methods

  • 4.1. Heuristic Methods
  • 4.2. Formal Methods
  • 4.3. Prototyping Methods
  • 4.4. Agile Methods

Chapter 12: Software Quality


1. Software Quality Fundamentals

  • 1.1. Software Engineering Culture and Ethics
  • 1.2. Value and Costs of Quality
  • 1.3. Standards, Models, and Certifications
  • 1.4. Software Dependability and Integrity Levels
    • 1.4.1. Dependability
    • 1.4.2. Integrity Levels of Software

2. Software Quality Management Process

  • 2.1. Software Quality Improvement
  • 2.2. Plan Quality Management
  • 2.3. Evaluate Quality Management
    • 2.3.1. Software Quality Measurement
  • 2.4. Perform Corrective and Preventive Actions
    • 2.4.1. Defect Characterization

3. Software Quality Assurance Process

  • 3.1. Prepare for Quality Assurance
  • 3.2. Perform Process Assurance
  • 3.3. Perform Product Assurance
  • 3.4. V&V and Testing
    • 3.4.1. Static Analysis Techniques
    • 3.4.2. Dynamic Analysis Techniques
    • 3.4.3. Formal Analysis Techniques
    • 3.4.4. Software Quality Control and Testing
    • 3.4.5. Technical Reviews and Audits

4. Software Quality Tools

Chapter 13: Software Security


1. Software Security Fundamentals

  • 1.1. Software Security
  • 1.2. Information Security
  • 1.3. Cybersecurity

2. Security Management and Organization

  • 2.1. Capability Maturity Model
  • 2.2. Information Security Management System
  • 2.3. Agile Practice for Software Security

3. Software Security Engineering and Processes

  • 3.1. Security Engineering and Secure Development Life Cycle (SDLC)
  • 3.2. Common Criteria for Information Technology Security Evaluation

4. Security Engineering for Software Systems

  • 4.1. Security Requirements
  • 4.2. Security Design
  • 4.3. Security Patterns
  • 4.4. Construction for Security
  • 4.5. Security Testing
  • 4.6. Vulnerability Management

5. Software Security Tools

  • 5.1. Security Vulnerability Checking Tools
  • 5.2. Penetration Testing Tools

6. Domain-Specific Software Security

  • 6.1. Security for Container and Cloud
  • 6.2. Security for IoT Software
  • 6.3. Security for Machine Learning-Based

Chapter 14: Software Engineering Professional Practice


1. Professionalism

  • 1.1. Accreditation, Certification and Qualification, and Licensing
    • 1.1.1. Accreditation
    • 1.1.2. Certification and Qualification
    • 1.1.3. Licensing
  • 1.2. Codes of Ethics and Professional Conduct
  • 1.3. Nature and Role of Professional Societies
  • 1.4. Nature and Role of Software Engineering Standards
  • 1.5. Economic Impact of Software
  • 1.6. Employment Contracts
  • 1.7. Legal Issues
    • 1.7.1. Standards
    • 1.7.2. Trademarks
    • 1.7.3. Patents
    • 1.7.4. Copyrights
    • 1.7.5. Trade Secrets
    • 1.7.6. Professional Liability
    • 1.7.7. Legal Requirements
    • 1.7.8. Trade Compliance
    • 1.7.9. Cybercrime
    • 1.7.10. Data Privacy
  • 1.8. Documentation
  • 1.9. Trade-Off Analysis

2. Group Dynamics and Psychology

  • 2.1. Dynamics of Working in Teams/Groups
  • 2.2. Individual Cognition
  • 2.3. Dealing with Problem Complexity
  • 2.4. Interacting with Stakeholders
  • 2.5. Dealing with Uncertainty and Ambiguity
  • 2.6. Dealing with Equity, Diversity, and Inclusivity

3. Communication Skills

  • 3.1. Reading, Understanding, and Summarizing
  • 3.2. Writing
  • 3.3. Team and Group Communication
  • 3.4. Presentation Skills

Chapter 15: Software Engineering Economics


1. Software Engineering Economics Fundamentals

  • 1.1. Proposals
  • 1.2. Cash Flow
  • 1.3. Time-Value of Money
  • 1.4. Equivalence
  • 1.5. Bases for Comparison
  • 1.6. Alternatives
  • 1.7. Intangible Assets
  • 1.8. Business Model

2. The Engineering Decision-Making Process

  • 2.1. Process Overview
  • 2.2. Understand the Real Problem
  • 2.3. Identify All Reasonable Technically Feasible Solutions
  • 2.4. Define the Selection Criteria
  • 2.5. Evaluate Each Alternative Against the Selection Criteria
  • 2.6. Select the Preferred Alternative
  • 2.7. Monitor the Performance of the Selected Alternative

3. For-Profit Decision-Making

  • 3.1. Minimum Acceptable Rate of Return
  • 3.2. Economic Life
  • 3.3. Planning Horizon
  • 3.4. Replacement Decisions
  • 3.5. Retirement Decisions
  • 3.6. Advanced For-Profit Decision Considerations

4. Nonprofit Decision-Making

  • 4.1. Benefit-Cost Analysis
  • 4.2. Cost-Effectiveness Analysis

5. Present Economy Decision-Making

  • 5.1. Break-Even Analysis
  • 5.2. Optimization Analysis

6. Multiple-Attribute Decision-Making

  • 6.1. Compensatory Techniques
  • 6.2. Non-Compensatory Techniques

7. Identifying and Characterizing Intangible Assets

  • 7.1. Identify Processes and Define Business Goals
  • 7.2. Identify Intangible Assets Linked with Business Goal
  • 7.3. Identify Software Products That Support Intangible Assets
  • 7.4. Define and Measure Indicators
  • 7.5. Intangible Asset Characterization
  • 7.6. Link Specific Intangible Assets with the Business Model
  • 7.7. Decision-Making

8. Estimation

  • 8.1. Expert Judgment
  • 8.2. Analogy
  • 8.3. Decomposition
  • 8.4. Parametric
  • 8.5. Multiple Estimates

9. Practical Considerations

  • 9.1. Business Case
  • 9.2. Multiple-Currency Analysis
  • 9.3. Systems Thinking

10. Related Concepts

  • 10.1. Accounting
  • 10.2. Cost and Costing
  • 10.3. Finance
  • 10.4. Controlling
  • 10.5. Efficiency and Effectiveness
  • 10.6. Productivity
  • 10.7. Product or Service
  • 10.8. Project
  • 10.9. Program
  • 10.10. Portfolio
  • 10.11. Product Life Cycle
  • 10.12. Project Life Cycle
  • 10.13. Price and Pricing
  • 10.14. Prioritization

Chapter 16: Computing Foundations


1. Basic Concepts of a System or Solution

2. Computer Architecture and Organization

  • 2.1. Computer Architecture
  • 2.2. Types of Computer Architectures
    • 2.2.1. Von Neumann Architecture
    • 2.2.2. Harvard Architecture
    • 2.2.3. Instruction Set Architecture
    • 2.2.4. Flynn’s Architecture or Taxonomy
    • 2.2.5. System Architecture
  • 2.3. Microarchitecture or Computer Organization
    • 2.3.1. Arithmetic Logic Unit
    • 2.3.2. Memory Unit
    • 2.3.3. Input/Output Devices
    • 2.3.4. Control Unit

3. Data Structures and Algorithms

  • 3.1. Types of Data Structures
  • 3.2. Operations on Data Structures
  • 3.3. Algorithms and Attributes of Algorithms
  • 3.4. Algorithm Complexity
  • 3.5. Measurement of Complexity
  • 3.6. Designing Algorithms
  • 3.7. Sorting Techniques
  • 3.8. Searching Techniques
  • 3.9. Hashing

4. Programming Fundamentals and Languages

  • 4.1. Programming Language Types
  • 4.2. Programming Syntax, Semantics, Type Systems
  • 4.3. Subprograms and Coroutines
  • 4.4. Object-Oriented Programming
  • 4.5. Distributed Programming and Parallel Programming
  • 4.6. Debugging
  • 4.7. Standards and Guidelines

5. Operating Systems

  • 5.1. Processor Management
  • 5.2. Memory Management
  • 5.3. Device Management
  • 5.4. Information Management
  • 5.5. Network Management

6. Database Management

  • 6.1. Schema
  • 6.2. Data Models and Storage Models
  • 6.3. Database Management Systems
  • 6.4. Relational Database Management Systems and Normalization
  • 6.5. Structured Query Language
  • 6.6. Data Mining and Data Warehousing
  • 6.7. Database Backup and Recovery

7. Computer Networks and Communications

  • 7.1. Types of Computer Networks
  • 7.2. Layered Architectures of Networks
  • 7.3. Open Systems Interconnection Model
  • 7.4. Encapsulation and Decapsulation
  • 7.5. Application Layer Protocols
  • 7.6. Design Techniques for Reliable and Efficient Network
  • 7.7. Internet Protocol Suite
  • 7.8. Wireless and Mobile Networks
  • 7.9. Security and Vulnerabilities

8. User and Developer Human Factors

  • 8.1. User Human Factors
  • 8.2. Developer Human Factors

9. Artificial Intelligence and Machine Learning

  • 9.1. Reasoning
  • 9.2. Learning
  • 9.3. Models
  • 9.4. Perception and Problem-Solving
  • 9.5. Natural Language Processing
  • 9.6. AI and Software Engineering

Chapter 17: Mathematical Foundations


1. Basic Logic

  • 1.1. Propositional Logic
  • 1.2. Predicate Logic

2. Proof Techniques

  • 2.1. Direct Proof
  • 2.2. Proof by Contradiction
  • 2.3. Proof by Induction
  • 2.4. Proof by Example

3. Set, Relation, Function

  • 3.1. Set Operations
  • 3.2. Properties of Sets
  • 3.3. Relation and Function

4. Graph and Tree

  • 4.1. Graph
  • 4.2. Tree

5. Finite-State Machine

6. Grammar

  • 6.1. Language Recognition

7. Number Theory

  • 7.1. Types of Numbers
  • 7.2. Divisibility
  • 7.3. Prime Number
  • 7.4. Greatest Common Divisor

8. Basics of Counting
9. Discrete Probability
10. Numerical Precision, Accuracy, and Error

11. Algebraic Structures

  • 11.1. Group
  • 11.2. Ring

12. Engineering Calculus

13. New Advancements

  • 13.1. Computational Neurosciences
  • 13.2. Genomics

Chapter 18: Engineering Foundations


1. The Engineering Process

2. Engineering Design

  • 2.1. Engineering Design in Engineering Education
  • 2.2. Design as a Problem-Solving Activity

3. Abstraction and Encapsulation

  • 3.1. Levels of Abstraction
  • 3.2. Encapsulation
  • 3.3. Hierarchy
  • 3.4. Alternate Abstractions

4. Empirical Methods and Experimental Techniques

  • 4.1. Designed Experiment
  • 4.2. Observational Study
  • 4.3. Retrospective Study

5. Statistical Analysis

  • 5.1. Unit of Analysis (Sampling Units), Population, and Sample
  • 5.2. Correlation and Regression

6. Modeling, Simulation, and Prototyping

  • 6.1. Modeling
  • 6.2. Simulation
  • 6.3. Prototyping

7. Measurement

  • 7.1. Levels (Scales) of Measurement
  • 7.2. Implications of Measurement Theory for Programming Languages
  • 7.3. Direct and Derived Measures
  • 7.4. Reliability and Validity
  • 7.5. Assessing Reliability
  • 7.6. Goal-Question-Metric Paradigm: Why Measure?

8. Standards

9. Root Cause Analysis

  • 9.1. Root Cause Analysis Techniques
  • 9.2. Root Cause–Based Improvement

10. Industry 4.0 and Software Engineering

Inside the Computer Society