Course 300:
Approaches to Software Engineering

(2 days)

 

Course Description

Software engineering is a systematic, disciplined, quantifiable approach to developing, operating, and maintaining mission critical applications. This course explores the major components of software engineering—development, maintenance, and support activities, as defined in industry standards. The student with a professional interest in creating or maintaining software, managing software projects, or monitoring outsourced development and maintenance efforts, will gain a “big picture” understanding of software engineering. The insights can point the way toward more effective approaches to producing high-quality maintainable software.

Learning Objectives

At the end of this course, the participant will know:

  • The scope and goals of software engineering
  • How to distinguish software engineering from conventional software development
  • The characteristics of sound software engineering processes: requirements definition, analysis, design, software construction, and testing
  • The nature and roles of support activities essential to successful software engineering projects: project management, configuration management, and quality assurance
  • Techniques that enable long-term, cost-effective maintenance of mission critical software: corrective, adaptive, and perfective maintenance
  • The customer’s and contractor’s roles in an outsourced software engineering project

Who Should Attend

This course is suited for software practitioners, project managers, software engineering process designers, and quality assurance and configuration management professionals.

Prerequisites

No specific prerequisites are assumed. A familiarity with information system concepts is recommended.


Course Outline

Unit 1: Introduction to Software Engineering

  • Software Engineering Concepts
    • Definitions of Software and Software Engineering
    • Purpose of Software Engineering
    • Scope of Software Engineering
    • Software Engineering Standards
  • Software Engineering Process
    • Process Structure
    • Recursive Nature of Processes
    • Process Standards
    • Phase Names
  • Life Cycle Models
    • Sequential Models
    • Iterative Models
    • Agile Models
    • Continuous Flow and Delivery Models
    • How to Pick a Model for Your Project
  • Workshop: Picking a Life Cycle Model for a Project
  • Unit Summary and Best Practices

Unit 2: Requirements

  • Requirements Concepts
    • Definitions
    • Need for Requirements
    • Establishing the System Context
    • User, System, and Software Requirements
    • Requirements Standards
  • Eliciting Requirements
    • Identifying Stakeholders
    • Methods of Elicitation
  • Specifying Requirements
    • Specification Contents
    • How to Write Functional Requirements
    • How to Write Performance Requirements
    • How to Write System Characteristics
    • How to Write Design Constraints
  • Workshop: Writing a Structured Use Case Description
  • Analyzing Requirements
    • Purpose of the Analysis Phase
    • Structured Analysis: Process Modeling
    • Structured Analysis: Data Modeling
    • Object-Oriented Analysis
  • Validating Requirements
    • Inspections vs. Reviews
    • Prototyping
    • Checklists
    • Traceability
  • Workshop: Validating Requirements
  • Managing Requirements
    • Change Management
    • Using Traceability Matrices
    • Requirements Management Tools
  • Unit Summary and Best Practices

Unit 3: Design

  • Design Concepts
    • Definitions
    • The Design Process
  • Design Drivers
    • Identifying Candidate Drivers
    • Selecting Drivers for a Given Application
  • Design Views
    • Structural Views
    • Behavioral Views
    • Design View Standards
  • Architectural Design
    • Definitions
    • Design Patterns
    • Reference Models
    • Decomposition Methods
  • Detailed Design
    • Transforming Functions into Procedures
    • Pseudocode vs. Flowcharts
  • Design Verification
    • Inspection vs. Review
    • Prototyping and Simulation
    • Design Tools
  • Workshop: Choosing Among Design Alternatives
  • Unit Summary and Best Practices

Unit 4: Construction

  • Construction Process
    • Steps
    • Code Verification
    • Language Standards
  • Procedural Languages
    • Where and When to Use
    • Examples
  • Non-Procedural Languages
    • Where and When to Use
    • Examples
  • Visual Languages
    • Where and When to Use
    • Examples
  • Tools
  • Workshop: Choosing a Language
  • Unit Summary and Best Practices

Unit 5: Testing

  • Testing Process
    • Definitions
    • Goals
    • Test Planning
    • Test Scenario Design
    • Test Execution and Analysis
    • Role of Configuration Management
    • Testing Standards
  • White Box Testing
  • Black Box Testing
  • Testing in the Maintenance Phase
  • Testing Tools
  • Workshop: Creating a Test Strategy
  • Unit Summary and Best Practices

Unit 6: Maintenance

  • Maintenance Process
    • Goals of the Maintenance Process
    • Corrective Maintenance
    • Adaptive Maintenance
    • Perfective Maintenance
  • Keys to Successful Maintenance
    • Documentation
    • Configuration Management
    • Regression Test Suite
    • Traceability and Other Factors
  • Workshop: Monitoring Maintainability
  • Unit Summary and Best Practices

Unit 7: Support

  • Support Concepts
    • Definitions
    • Need for Support Functions
    • Support Process standards
  • Software Engineering Management
    • Planning
    • Tracking
  • Software Configuration Management
    • Identification
    • Control
    • Configuration Audits
    • Status Accounting
  • Software Quality Assurance
    • Contrast with Testing
    • Software Process Definition
    • Process Auditing
    • Metrics
  • Unit Summary and Best Practices

Unit 8: The Bottom Line

  • Ideas to Use
  • Where to Go for More Information

Please Contact Your ROI Representative to Discuss Course Tailoring!