Intrenion

Framework: IEEE Computer Society Software Engineering Body of Knowledge 4.0a

Table of Contents

Software Requirements

Software Requirements Fundamentals

  1. Definition of a Software Requirement
  2. Categories of Software Requirements
  3. Software Product Requirements and Software Project Requirements
  4. Functional Requirements
  5. Nonfunctional Requirements
  6. Technology Constraints
  7. Quality of Service Constraints
  8. Why Categorize Requirements This Way?
  9. System Requirements and Software Requirements
  10. Derived Requirements
  11. Software Requirements Activities

Requirements Elicitation

  1. Requirements Sources
  2. Common Requirements Elicitation Techniques

Requirements Analysis

  1. Basic Requirements Analysis
  2. Economics of Quality of Service Constraints
  3. Formal Analysis
  4. Addressing Conflict in Requirements

Requirements Specification

  1. Unstructured Natural Language Requirements Specification
  2. Structured Natural Language Requirements Specification
  3. Acceptance Criteria-Based Requirements Specification
  4. Model-Based Requirements Specification
  5. Additional Attributes of Requirement
  6. Incremental and Comprehensive Requirements Specification

Requirements Validation

  1. Requirements Reviews
  2. Simulation and Execution
  3. Prototyping

Requirements Management Activities

  1. Requirements Scrubbing
  2. Requirements Change Control
  3. Scope Matching

Practical Considerations

  1. Iterative Nature of the Requirements Process
  2. Requirements Prioritization
  3. Requirements Tracing
  4. Requirements Stability and Volatility
  5. Measuring Requirements
  6. Requirements Process Quality and Improvement

Software Requirements Tools

  1. Requirements Management Tools
  2. Requirements Modeling Tools
  3. Functional Test Case Generation Tools

Software Architecture

Software Architecture Fundamentals

  1. The Senses of “Architecture”
  2. Stakeholders and Concerns
  3. Uses of Architecture

Software Architecture Description

  1. Architecture Views and Viewpoints
  2. Architecture Patterns, Styles, and Reference Architectures
  3. Architecture Description Languages and Architecture Frameworks
  4. Architecture as Significant Decisions

Software Architecture Process

  1. Architecture in Context
    1. Relation of Architecture to Design
  2. Architectural Design
    1. Architecture Analysis
    2. Architecture Synthesis
    3. Architecture Evaluation
  3. Architecture Practices, Methods, and Tactics
  4. Architecting in the Large

Software Architecture Evaluation

  1. Goodness in Architecture
  2. Reasoning about Architectures
  3. Architecture Reviews
  4. Architecture Metrics

Software Design

Software Design Fundamentals

  1. Design Thinking
  2. Context of Software Design
  3. Key Issues in Software Design
  4. Software Design Principles

Software Design Processes

  1. High-Level Design
  2. Detailed Design

Software Design Qualities

  1. Concurrency
  2. Control and Event Handling
  3. Data Persistence
  4. Distribution of Components
  5. Errors and Exception Handling, Fault Tolerance
  6. Integration and Interoperability
  7. Assurance, Security, and Safety
  8. Variability

Recording Software Designs

  1. Model-Based Design
  2. Structural Design Descriptions
  3. Behavioral Design Descriptions
  4. Design Patterns and Styles
  5. Specialized and Domain-Specific Languages
  6. Design Rationale

Software Design Strategies and Methods

  1. General Strategies
  2. Function-Oriented (or Structured) Design
  3. Data-Centered Design
  4. Object-Oriented Design
  5. User-Centered Design
  6. Component-Based Design (CBD)
  7. Event-Driven Design
  8. Aspect-Oriented Design (AOD)
  9. Constraint-Based Design
  10. Domain-Driven Design
  11. Other Methods

Software Design Quality Analysis and Evaluation

  1. Design Reviews and Audits
  2. Quality Attributes
  3. Quality Analysis and Evaluation Techniques
  4. Measures and Metrics
  5. Verification, Validation, and Certification

Software Construction

Software Construction Fundamentals

  1. Minimizing Complexity
  2. Anticipating and Embracing Change
  3. Constructing for Verification
  4. Reusing Assets
  5. Applying Standards in Construction

Managing Construction

  1. Construction in Life Cycle Models
  2. Construction Planning
  3. Construction Measurement
  4. Managing Dependencies

Practical Considerations

  1. Construction Design
  2. Construction Languages
  3. Coding
  4. Construction Testing
  5. Reuse in Construction
  6. Construction Quality
  7. Integration
  8. Cross-Platform Development and Migration

Construction Technologies

  1. API Design and Use
  2. Object-Oriented Runtime Issues
  3. Parameterization, Templates, and Generics
  4. Assertions, Design by Contract, and Defensive Programming
  5. Error Handling, Exception Handling, and Fault Tolerance
  6. Executable Models
  7. State-Based and Table-Driven Construction Techniques
  8. Runtime Configuration and Internationalization
  9. Grammar-Based Input Processing
  10. Concurrency Primitives
  11. Middleware
  12. Construction Methods for Distributed and Cloud-Based Software
  13. Constructing Heterogeneous Systems
  14. Performance Analysis and Tuning
  15. Platform Standards
  16. Test-First Programming
  17. Feedback Loop for Construction

Software Construction Tools

  1. Development Environments
  2. Visual Programming and Low-Code/Zero-Code Platforms
  3. Unit Testing Tools
  4. Profiling, Performance Analysis, and Slicing Tools

Software Testing

Software Testing Fundamentals

  1. Faults vs. Failures
  2. Key Issues
    1. Test Case Creation
    2. Test Selection and Adequacy Criteria
    3. Prioritization/Minimization
    4. Purpose of Testing
    5. Assessment and Certification
    6. Testing for Quality Assurance/Improvement
    7. The Oracle Problem
    8. Theoretical and Practical Limitations
    9. The Problem of Infeasible Paths
    10. Testability
    11. Test Execution and Automation
    12. Scalability
    13. Test Effectiveness
    14. Controllability, Replication, and Generalization
    15. Off-Line vs. Online Testing
  3. Relationship of Testing to Other Activities

Test Levels

  1. The Target of the Test
    1. Unit Testing
    2. Integration Testing
    3. System Testing
    4. Acceptance Testing
  2. Objectives of Testing
    1. Conformance Testing
    2. Compliance Testing
    3. Installation Testing
    4. Alpha and Beta Testing
    5. Regression Testing
    6. Prioritization Testing
    7. Non-functional Testing
    8. Security Testing
    9. Privacy Testing
    10. Interface and Application Programming Interface (API) Testing
    11. Configuration Testing
    12. Usability and Human-Computer Interaction Testing

Test Techniques

  1. Specification-Based Techniques
    1. Equivalence Partitioning
    2. Boundary-Value Analysis
    3. Syntax Testing
    4. Combinatorial Test Techniques
    5. Decision Table
    6. Cause-Effect Graphing
    7. State Transition Testing
    8. Scenario-Based Testing
    9. Random Testing
    10. Evidence-Based
    11. Forcing Exception
  2. Structure-Based Test Techniques
    1. Control Flow Testing
    2. Data Flow Testing
    3. Reference Models for Structure-Based Test Techniques
  3. Experience-Based Techniques
    1. Error Guessing
    2. Exploratory Testing
    3. Further Experience-Based Techniques
  4. Fault-Based and Mutation Techniques
  5. Usage-Based Techniques
    1. Operational Profile
    2. User Observation Heuristics
  6. Techniques Based on the Nature of the Application
  7. Selecting and Combining Techniques
    1. Combining Functional and Structural
    2. Deterministic vs. Random
  8. Techniques Based on Derived Knowledge
  1. Evaluation of the SUT
    1. SUT Measurements that Aid in Planning and Designing Tests
    2. Fault Types, Classification and Statistics
    3. Fault Density
    4. Life Test, Reliability Evaluation
    5. Reliability Growth Models
  2. Evaluation of the Tests Performed
    1. Fault Injection
    2. Mutation Score
    3. Comparison and Relative Effectiveness of Different Techniques

Test Process

  1. Practical Considerations
    1. Attitudes/Egoless Programming
    2. Test Guides and Organizational Process
    3. Test Management and Dynamic Test Processes
    4. Test Documentation
    5. Test Team
    6. Test Process Measures
    7. Test Monitoring and Control
    8. Test Completion
    9. Test Reusability
  2. Test Sub-Processes and Activities
    1. Test Planning Process
    2. Test Design and Implementation
    3. Test Environment Set-up and Maintenance
    4. Controlled Experiments and Test Execution
    5. Test Incident Reporting
  3. Staffing

Software Testing in the Development Processes and the Application Domains

  1. Testing Inside Software Development Processes
    1. Testing in Traditional Processes
    2. Testing in Line with Shift-Left Movement
  2. Testing in the Application Domains

Testing of and Testing Through Emerging Technologies

  1. Testing of Emerging Technologies
  2. Testing Through Emerging Technologies

Software Testing Tools

  1. Testing Tool Support and Selection
  2. Categories of Tools

Software Engineering Operations

Software Engineering Operations Fundamentals

  1. Definition of Software Engineering Operations
  2. Software Engineering Operations Processes
  3. Software Installation
  4. Scripting and Automating
  5. Effective Testing and Troubleshooting
  6. Performance, Reliability, and Load Balancing

Software Engineering Operations Planning

  1. Operations Plan and Supplier Management
    1. Operations Plan
    2. Supplier Management
  2. Development and Operational Environments
  3. Software Availability, Continuity, and Service Levels
  4. Software Capacity Management
  5. Software Backup, Disaster Recovery, and Failover
  6. Software and Data Safety, Security, Integrity, Protection, and Controls

Software Engineering Operations Delivery

  1. Operational Testing, Verification, and Acceptance
  2. Deployment/Release Engineering
  3. Rollback and Data Migration
  4. Problem Resolution

Software Engineering Operations Control

  1. Incident Management
  2. Change Management
  3. Monitor, Measure, Track, and Review
  4. Operations Support
  5. Service Reporting

Practical Considerations

  1. Incident and Problem Prevention
  2. Operational Risk Management
  3. Automating Software Engineering Operations
  4. Software Engineering Operations for Small Organizations

Software Engineering Operations Tools

  1. Containers and Virtualization
  2. Deployment
  3. Automated Test
  4. Monitoring and Telemetry

Software Maintenance

Software Maintenance Fundamentals

  1. Definitions and Terminology
  2. Nature of Software Maintenance
  3. Need for Software Maintenance
  4. Majority of Maintenance Costs
  5. Evolution of Software
  6. Categories of Software Maintenance

Key Issues in Software Maintenance

  1. Technical Issues
    1. Limited Understanding
    2. Testing
    3. Impact Analysis
    4. Maintainability
  2. Management Issues
    1. Alignment with Organizational Objectives
    2. Staffing
    3. Process
    4. Supplier Management
    5. Organizational Aspects of Maintenance
  3. Software Maintenance Costs
    1. Technical Debt Cost Estimation
    2. Maintenance Cost Estimation
  4. Software Maintenance Measurement

Software Maintenance Processes

  1. Software Maintenance Processes
  2. Software Maintenance Activities and Tasks
    1. Supporting and Monitoring Activities
    2. Planning Activities
    3. Configuration Management
    4. Software Quality

Software Maintenance Techniques

  1. Program Comprehension
  2. Software Reengineering
  3. Reverse Engineering
  4. Continuous Integration, Delivery, Testing, and Deployment
  5. Visualizing Maintenance

Software Maintenance Tools

Software Configuration Management

Management of the SCM Process

  1. Organizational Context for SCM
  2. Constraints and Guidance for the SCM Process
  3. Planning for SCM
    1. SCM Organization and Responsibilities
    2. SCM Resources and Schedules
    3. Tool Selection and Implementation
    4. Vendor/Subcontractor Control
    5. Interface Control
  4. SCM Plan
  5. Monitoring of Software Configuration Management
    1. SCM Measures and Measurement
    2. In-Process Audits of SCM

Software Configuration Identification

  1. Identifying Items to Be Controlled
    1. Software Configuration
    2. Software Configuration Item
  2. Configuration Item Identifiers and Attributes
  3. Baseline Identification
  4. Baseline Attributes
  5. Relationships Scheme Definition
  6. Software Libraries

Software Configuration Change Control

  1. Requesting, Evaluating, and Approving Software Changes
    1. Software Configuration Control Board
    2. Software Change Request Process
    3. Software Change Request Forms Definition
  2. Implementing Software Changes
  3. Deviations and Waivers

Software Configuration Status Accounting

  1. Software Configuration Status Information
  2. Software Configuration Status Reporting

Software Configuration Auditing

  1. Software Functional Configuration Audit
  2. Software Physical Configuration Audit
  3. In-Process Audits of a Software Baseline

Software Release Management and Delivery

  1. Software Building
  2. Software Release Management

Software Configuration Management Tools

Software Engineering Management

Initiation and Scope Definition

  1. Determination and Negotiation of Requirements
  2. Feasibility Analysis
  3. Process for the Review and Revision of Requirements

Software Project Planning

  1. Process Planning
  2. Determine Deliverables
  3. Effort, Schedule, and Cost Estimation
  4. Resource Allocation
  5. Risk Management
  6. Quality Management
  7. Plan Management

Software Project Execution

  1. Implementation of Plans
  2. Software Acquisition and Supplier Contract Management
  3. Implementation of Measurement Process
  4. Monitor Process
  5. Control Process
  6. Reporting

Software Review and Evaluation

  1. Determining Satisfaction of Requirements
  2. Reviewing and Evaluating Performance

Closure

  1. Determining Closure
  2. Closure Activities

Software Engineering Measurement

  1. Establish and Sustain Measurement Commitment
  2. Plan the Measurement Process
  3. Perform the Measurement Process
  4. Evaluate Measurement

Software Engineering Management Tools

Software Engineering Process

Software Engineering Process Fundamentals

  1. Introduction
  2. Software Engineering Process Definition

Life Cycles

  1. Life Cycle Definition, Process Categories, and Terminology
  2. Rationale for Life Cycles
  3. The Concepts of Process Models and Life Cycle Models
  4. Some Paradigms for Development Life Cycle Models
  5. Development Life Cycle Models and Their Engineering Dimension
  6. The Management of SLCPs
  7. Software Engineering Process Management
  8. Software Life Cycle Adaptation
  9. Practical Considerations
  10. Software Process Infrastructure, Tools, Methods
  11. Software Engineering Process Monitoring and Its Relationship with the Software Product

Software Process Assessment and Improvement

  1. Overview of Software Process Assessment and Improvement
  2. Goal-Question-Metric (GQM)
  3. Framework-Based Methods
  4. Process Assessment and Improvement in Agile

Software Engineering Models and Methods

Modeling

  1. Modeling Principles
  2. Properties and Expression of Models
  3. Syntax, Semantics, and Pragmatics
  4. Preconditions, Postconditions, and Invariants

Types of Models

  1. Structural Modeling
  2. Behavioral Modeling

Analysis of Models

  1. Analyzing for Completeness
  2. Analyzing for Consistency
  3. Analyzing for Correctness
  4. Analyzing for Traceability
  5. Analyzing for Interaction

Software Engineering Methods

  1. Heuristic Methods
  2. Formal Methods
  3. Prototyping Methods
  4. Agile Methods

Software Quality

Software Quality Fundamentals

  1. Software Engineering Culture and Ethics
  2. Value and Costs of Quality
  3. Standards, Models, and Certifications
  4. Software Dependability and Integrity Levels
  5. Dependability
  6. Integrity Levels of Software

Software Quality Management Process

  1. Software Quality Improvement
  2. Plan Quality Management
  3. Evaluate Quality Management
    1. Software Quality Measurement
  4. Perform Corrective and Preventive Actions
    1. Defect Characterization

Software Quality Assurance Process

  1. Prepare for Quality Assurance
  2. Perform Process Assurance
  3. Perform Product Assurance
  4. V&V and Testing
    1. Static Analysis Techniques
    2. Dynamic Analysis Techniques
    3. Formal Analysis Techniques
    4. Software Quality Control and Testing
    5. Technical Reviews and Audits

Software Quality Tools

Software Security

Software Security Fundamentals

  1. Software Security
  2. Information Security
  3. Cybersecurity

Security Management and Organization

  1. Capability Maturity Model
  2. Information Security Management System
  3. Agile Practice for Software Security

Software Security Engineering and Processes

  1. Security Engineering and Secure Development Life Cycle (SDLC)
  2. Common Criteria for Information Technology Security Evaluation

Security Engineering for Software Systems

  1. Security Requirements
  2. Security Design
  3. Security Patterns
  4. Construction for Security
  5. Security Testing
  6. Vulnerability Management

Software Security Tools

  1. Security Vulnerability Checking Tools
  2. Penetration Testing Tools

Domain-Specific Software Security

  1. Security for Container and Cloud
  2. Security for IoT Software
  3. Security for Machine Learning-Based Application

Software Engineering Professional Practice

Professionalism

  1. Accreditation, Certification and Qualification, and Licensing
    1. Accreditation
    2. Certification and Qualification
    3. Licensing
  2. Codes of Ethics and Professional Conduct
  3. Nature and Role of Professional Societies
  4. Nature and Role of Software Engineering Standards
  5. Economic Impact of Software
  6. Employment Contracts
  7. Legal Issues
    1. Standards
    2. Trademarks
    3. Patents
    4. Copyrights
    5. Trade Secrets
    6. Professional Liability
    7. Legal Requirements
    8. Trade Compliance
    9. Cybercrime
    10. Data Privacy
  8. Documentation
  9. Trade-Off Analysis

Group Dynamics and Psychology

  1. Dynamics of Working in Teams/Groups
  2. Individual Cognition
  3. Dealing with Problem Complexity
  4. Interacting with Stakeholders
  5. Dealing with Uncertainty and Ambiguity
  6. Dealing with Equity, Diversity, and Inclusivity

Communication Skills

  1. Reading, Understanding, and Summarizing
  2. Writing
  3. Team and Group Communication
  4. Presentation Skills

Software Engineering Economics

Software Engineering Economics Fundamentals

  1. Proposals
  2. Cash Flow
  3. Time-Value of Money
  4. Equivalence
  5. Bases for Comparison
  6. Alternatives
  7. Intangible Assets
  8. Business Model

The Engineering Decision-Making Process

  1. Process Overview
  2. Understand the Real Problem
  3. Identify All Reasonable Technically Feasible Solutions
  4. Define the Selection Criteria
  5. Evaluate Each Alternative Against the Selection Criteria
  6. Select the Preferred Alternative
  7. Monitor the Performance of the Selected Alternative

For-Profit Decision-Making

  1. Minimum Acceptable Rate of Return
  2. Economic Life
  3. Planning Horizon
  4. Replacement Decisions
  5. Retirement Decisions
  6. Advanced For-Profit Decision Considerations

Nonprofit Decision-Making

  1. Benefit-Cost Analysis
  2. Cost-Effectiveness Analysis

Present Economy Decision-Making

  1. Break-Even Analysis
  2. Optimization Analysis

Multiple-Attribute Decision-Making

  1. Compensatory Techniques
  2. Non-Compensatory Techniques

Identifying and Characterizing Intangible Assets

  1. Identify Processes and Define Business Goals
  2. Identify Intangible Assets Linked with Business Goal
  3. Identify Software Products That Support Intangible Assets
  4. Define and Measure Indicators
  5. Intangible Asset Characterization
  6. Link Specific Intangible Assets with the Business Model
  7. Decision-Making

Estimation

  1. Expert Judgment
  2. Analogy
  3. Decomposition
  4. Parametric
  5. Multiple Estimates

Practical Considerations

  1. Business Case
  2. Multiple-Currency Analysis
  3. Systems Thinking
  1. Accounting
  2. Cost and Costing
  3. Finance
  4. Controlling
  5. Efficiency and Effectiveness
  6. Productivity
  7. Product or Service
  8. Project
  9. Program
  10. Portfolio
  11. Product Life Cycle
  12. Project Life Cycle
  13. Price and Pricing
  14. Prioritization

Computing Foundations

Basic Concepts of a System or Solution

Computer Architecture and Organization

  1. Computer Architecture
  2. Types of Computer Architectures
    1. Von Neumann Architecture
    2. Harvard Architecture
    3. Instruction Set Architecture
    4. Flynn’s Architecture or Taxonomy
    5. System Architecture
  3. Microarchitecture or Computer Organization
    1. Arithmetic Logic Unit
    2. Memory Unit
    3. Input/Output Devices
    4. Control Unit

Data Structures and Algorithms

  1. Types of Data Structures
  2. Operations on Data Structures
  3. Algorithms and Attributes of Algorithms
  4. Algorithm Complexity
  5. Measurement of Complexity
  6. Designing Algorithms
  7. Sorting Techniques
  8. Searching Techniques
  9. Hashing

Programming Fundamentals and Languages

  1. Programming Language Types
  2. Programming Syntax, Semantics, Type Systems
  3. Subprograms and Coroutines
  4. Object-Oriented Programming
  5. Distributed Programming and Parallel Programming
  6. Debugging
  7. Standards and Guidelines

Operating Systems

  1. Processor Management
  2. Memory Management
  3. Device Management
  4. Information Management
  5. Network Management

Database Management

  1. Schema
  2. Data Models and Storage Models
  3. Database Management Systems
  4. Relational Database Management Systems and Normalization
  5. Structured Query Language
  6. Data Mining and Data Warehousing
  7. Database Backup and Recovery

Computer Networks and Communications

  1. Types of Computer Networks
  2. Layered Architectures of Networks
  3. Open Systems Interconnection Model
  4. Encapsulation and Decapsulation
  5. Application Layer Protocols
  6. Design Techniques for Reliable and Efficient Networks
  7. Internet Protocol Suite
  8. Wireless and Mobile Networks
  9. Security and Vulnerabilities

User and Developer Human Factors

  1. User Human Factors
  2. Developer Human Factors

Artificial Intelligence and Machine Learning

  1. Reasoning
  2. Learning
  3. Models
  4. Perception and Problem-Solving
  5. Natural Language Processing
  6. AI and Software Engineering

Mathematical Foundations

Basic Logic

  1. Propositional Logic
  2. Predicate Logic

Proof Techniques

  1. Direct Proof
  2. Proof by Contradiction
  3. Proof by Induction
  4. Proof by Example

Set, Relation, Function

  1. Set Operations
  2. Properties of Sets
  3. Relation and Function

Graph and Tree

  1. Graph
  2. Tree

Finite-State Machine

Grammar

  1. Language Recognition

Number Theory

  1. Types of Numbers
  2. Divisibility
  3. Prime Number
  4. Greatest Common Divisor

Basics of Counting

Discrete Probability

Numerical Precision, Accuracy, and Error

Algebraic Structures

  1. Group
  2. Ring

Engineering Calculus

New Advancements

  1. Computational Neurosciences
  2. Genomics

Engineering Foundations

The Engineering Process

Engineering Design

  1. Engineering Design in Engineering Education
  2. Design as a Problem-Solving Activity

Abstraction and Encapsulation

  1. Levels of Abstraction
  2. Encapsulation
  3. Hierarchy
  4. Alternate Abstractions

Empirical Methods and Experimental Techniques

  1. Designed Experiment
  2. Observational Study
  3. Retrospective Study

Statistical Analysis

  1. Unit of Analysis (Sampling Units), Population, and Sample
  2. Correlation and Regression

Modeling, Simulation, and Prototyping

  1. Modeling
  2. Simulation
  3. Prototyping

Measurement

  1. Levels (Scales) of Measurement
  2. Implications of Measurement Theory for Programming Languages
  3. Direct and Derived Measures
  4. Reliability and Validity
  5. Assessing Reliability
  6. Goal-Question-Metric Paradigm: Why Measure?

Standards

Root Cause Analysis

  1. Root Cause Analysis Techniques
  2. Root Cause–Based Improvement

Industry 4.0 and Software Engineering


Homepage - Terms of service • Privacy policy • Legal notice