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.
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