The following courses are taught by Dr. Richard Thayer, CSDP, co-author of two significant IEEE Software Engineering standards. Dr. Thayer is a lecturer in software engineering, specializing in Project Management, Software Requirements Engineering, Concept of Operations (ConOps) document, and general review and application of IEEE Software Engineering Standards to software development.

Included here is a group of Dr. Thayer's most popular courses. CSDP courses can be modified to fit any software development infrastructure.

For more information email Richard H. Thayer, CSDP

Advanced Software Engineering Project Management

Software Concept of Operations Seminar

Software Cost and Schedule Estimation

CSDP Preparation Course

Software Requirements Engineering

Project Manager's Best Software Engineering's Practices

Advanced Software Engineering Project Management
As large systems become more software intensive, the roles and responsibilities of software project managers become more critical, more complex, and a lot more work. This seminar lays out a set of principles for project management and software engineering, illustrating activities and tasks recommended for managers who oversee software engineering projects. It discusses various standards and software process models, and shows techniques and procedures for planning a project, including the controlling and measuring of progress. Also included are cost estimation models like COCOMO and Function Point Analysis, and the advantages of the SEI Capability Maturity Model.

The seminar will highlight the best current practices in project management and identify the "keys" to a successful project.

Upon completion of this course:

  • New software managers will know how to manage software development projects;
  • Experienced software managers will be familiar with the latest in software engineering management techniques;
  • Managers of hardware projects will understand more thoroughly the differences between hardware and software and hardware and software project management;
  • Software engineers, programmers, analysts and other members of the technical staff will more thoroughly understand the major issues confronting project management, and will be familiar with techniques for handling them. It will also serve as a guide to their future growth to management positions;
  • Users and customers will be aware of their role in a software development project, and will understand the difficulties involved in accurately estimating project costs and schedules;

Length: three days (20-24 hours)

Who should attend: Software managers, hardware systems managers, software engineers, programmers, analysts and other members of the technical staff, and users and customers. One year experience in a software project recommended.

Course outline:

  1. Introduction to software engineering project management
  2. Software system engineering process models
  3. Planning the project
  4. Planning techniques
  5. Project organization, staffing, and directing
  6. Estimating software cost and schedule
  7. Software risk management
  8. Software engineering capability assessment
  9. Supporting processes for software engineering
  10. Software standards and documentation
  11. Project monitoring and control
  12. Best practices of software engineering

Materials provided:

  • Copy of instructor's lecture notes
  • IEEE Standard 1058, Standards for Software Project Management Planning, IEEE Standard, 1998
  • Thayer, R.H. (ed.), Software Engineering Project Management, 2nd ed., IEEE Press, 1998
  • A completed software project plan example

Back to Top of Page



Software Concept of Operations Seminar
Without solid and comprehensive information on a user’s application area, no requirements specification can be written for a project. This seminar discusses techniques for gathering the necessary information (performing the software requirements elicitation).

Difficulties facing software requirements elicitation:

  • Users do not adequately convey their needs to the developer;
  • The developer is not an expert in the application area;
  • Users or acquirers do not understand the technical requirements;
  • The functional requirement does not emphasize the operational needs;
  • Multi users have difficulty stating a common system requirement.

Concept analysis is the process of analyzing a problem domain and an operational environment, for the purpose of specifying the characteristics of a proposed system from the user’s perspective. This concept is proven the most effective means of transferring system requirements from the user to the developer in existence today.

The concept of operations (ConOps) document is a bridge between the operational requirements (events occurring over time) and the technical requirements (static, hierarchical description). It is written in narrative prose, in the user’s language. It states priorities, it uses visual images, and it leads to software requirements. This seminar is based on a new IEEE Standard 1362, IEEE Guide for Concept of Operations Document, 1998 and Standard 830-1998, IEEE Recommended Practice for Software Requirements Specifications.

Upon completion of this course, participants will:

  • Understand why differences exist between the ways in which customers and developers think about software development requirements;
  • Learn to facilitate an interactive meeting to document a customer’s needs;
  • Work with the potential user of a software system in developing a ConOps document.

Length: One day (7-8 hours)

Who should attend: Software accession and development managers who define the requirements for a new project; any team members who act as intermediaries between customer and developer

Course outline:

  • Introduction to the requirements engineering process
  • The concept analysis procedure
  • Develop the concept of operations document
  • Case study: Building a concept of operations document

Materials provided:

  • Copy of instructor's lecture notes
  • Thayer, R.H. and M. Dorfman (eds.), Software Requirements Engineering, 2nd ed., IEEE Press, 1997
  • IEEE Standard 1362, IEEE Guide to a Concept of Operations Document, IEEE, 199A completed ConOps document example

Back to Top of Page



Software Cost and Schedule Estimation
It’s no surprise that software development projects often exceed their cost or schedule estimates, or both. Project teams are notorious for not knowing their real development cost and schedule until the project is completed, and therefore external drivers, like allocated budget and required delivery date, are used with little expectation of accuracy. And yet it is possible to estimate the required cost and schedule of each part of software development with fair accuracy. This is not easy, and requires realistic determination of many factors of both the developing organization and the product to be developed.

This practical seminar familiarizes participants with tools for estimating a project’s cost and schedule. A range of methods is described – from the very general, and somewhat inaccurate, methods intended for the beginning of a project, when no better information is available, through the detailed and laborious, but conveniently mechanized, methods of estimating each activity for cost, effort and effectiveness.

Upon completion of this seminar, participants will be able to explain:

  • The current standard methods for estimating software development costs and schedules;
  • How to obtain the information necessary for an accurate software development estimate;
  • The fundamental cost drivers affecting an estimation;
  • How to accurately estimate the cost of completing an ongoing project;
  • How to arrange and manage the project for accurate measurements.

Length: Two days (14-16 hours)

Who should attend: This course targets those who are establishing a new development project and want to estimate the size of the job, and for those who work during the progression of the job to refine and amend these estimates.

Course outline:

  • Introduction to software cost and scheduling
  • Basic approaches to cost and schedule estimates
  • Work, schedule and resource estimates
  • Estimating software costs accurately
  • Estimating other cost factors
  • Cost models: COCOMO, COCOMO II,
  • Estimating software size and FPA
  • Collecting production metrics
  • Case studies in cost estimation

Materials provided:

  • Copy of instructor's lecture notes
  • Thayer, R.H. (ed.), Software Engineering Project Management, 2nd ed., IEEE Press, 1998
  • COCOMO II Model Definition Manual

Back to Top of Page



CSDP Preparation Course
This tutorial offers an overview of the new Certified Software Development Professional (CSDP) program and examination. It reviews certificate qualifications and exam specifications, gives insights into the exam contents, and provide tips for studying for, and taking, the exam. The course is based on the same set of specifications that underlie the exam.

Length: Three days (24 hours)

Who should attend: Software engineers who are qualified to take the CSDP exam.

Course outline:

1. Software Engineering and the Exam

  • Qualifications to take the CSDP exam
  • CSDP Exam contents
  • Ground rules for developing the CSDP course
  • The software crisis and economics
  • Ethics and professional practices
  • Software engineering standards

2. Software Engineering Processes - What steps are required

  • IEEE/EIA Standard 12207-1996
  • Software and software system engineering - the first step
  • Establish a software process infrastructure
  • To define and explain process and process models
    - Primary process
    - Supporting processes
    - Operational processes
    - Overview of several state-of-the-practice process models
  • To analyze the benefits and problems of reuse and prototyping
  • Implementing a process
  • Capability maturity model (CMM) as a process

3. Software Requirements - Determining the delivered product

  • Software requirements engineering process
  • Software requirements elicitation
  • Software requirements analysis
  • Software requirements specifications
  • Software requirements verification and validation
  • Software requirements management

4. Software Design - Determining how it will be done

  • General design concepts
  • Software design strategies and methods
    - General strategies
    - Function-oriented design
    - Object-oriented design
    - Data-structured-oriented design
    - Use cases
  • Software architectural design
    - Architectural structure and viewpoints
    - Architectural vs. detailed design
    - Architectural styles and patterns
    - Design patterns
    - Design of families of programs and frameworks
  • Software design concepts
    - Real-time concepts
    - Fault tolerance
    - Human factors in software design
    - Software and system safety
    - Disaster recovery
    - Distributed computing
  • Software design quality analysis and evaluations
    - Product attributes and measures
    - Quality analysis and evaluation tools
    - Performance analysis and techniques tools
  • Software design notations and documentation

5. Software Construction - Implementing the design

  • Software construction
    - Code and unit testing
    - Managing software construction
    - Construction planning
    - Construction quality assurance (QA)
    - Construction tools
  • Code design and documentation
    - Code design
    - Code documentation
    - Code tuning
  • Source code organization
  • Data design and management
  • Error processing
  • System integration and deployment

6. Software Testing - Determining if it is correct

  • Types of tests
    - Test levels
    - Test design-Testing strategies
    - Test coverage of code
    - Test coverage of specifications
    - Test execution
    - Test documentation
    - Test management

7. Software Maintenance - Fixing it when it is not always broken

  • Software maintenance process
    - Software maintenance types
  • Software maintenance measurement
  • Software maintainability
  • Software maintenance documentation

8. Software Engineering Management - Making sure it gets done

  • Modes of software management
    - Organizational management
    - Acquisition management
    - User/Operator management
    - Project management
    - Maintenance management
    - Risk management
    - Engineering management
    - Planning
    - Enactment
    - Review and evaluation
    - Project close out
    - Post-closure activates
    - Project management
    - Project planning
    - Project organizing
    - Project staffing
    - Project directing
    - Project controlling

9. Software Engineering Supporting Processes

  • Documentation process
    - Configuration management process
    - Quality assurance process
    - Verification and validation processes
    - Joint review and audit process

10. Software Engineering Tools and Methods

  • Attributes of good software engineering tools and methods
  • Intellectual, manual, and automated tools
  • Classification of tools
    - Management tools and methods
    - Development tools and methods
    - Maintenance tools and methods
    - Support tools and methods
  • Software measurement and metrics

11. Tips on taking the exam

  • Typical exam questions
  • Exam taking strategies
  • Sample 75 question exam

Materials provided:

  • Copy of instructor’s lecture notes
  • binder with presentation materials
  • Christensen, M.J. and R.H. Thayer CSDP, The Project Managerís Guide to Software Engineeringís Best Practices, IEEE Computer Society Press, Los Alamitos, CA, 2002. IEEE-CS Press catalog number 1199

Back to Top of Page



Software Requirements Engineering
Without a thorough stating of requirements, a software development process cannot begin – and without accuracy in those requirements, a project will bog down in development problems. This tutorial covers an engineering discipline that captures correctly and completely the requirements and needs of a software system under development and the expectations of the potential user.This two-day course is one in a series of Standards-Based Training (SBT) courses offered in collaboration with the IEEE Computer Society. It bases its treatment of software requirements on IEEE Standard 830-1998, IEEE Recommended Practice for Software Requirements Specifications.

This course offers:

  • Knowledge and guidance in the use of software requirements engineering
  • Knowledge and guidance in the elicitation, analysis, specifications, verification, and management of software requirements
  • Knowledge about the use of software requirement techniques and tools in the development of a software system

Length: Two-days (14-16 hours)

Who should attend: Software and system engineers, project managers, quality assurance personnel, verification and validation engineers

Course outline:

  1. Introduction to software requirements engineering
  2. Software requirements engineering concepts
  3. System and software system engineering
  4. Software requirements elicitation
  5. Software requirements analysis
  6. Software requirements specification
  7. Software requirements verification
  8. Requirements management
  9. Summary and conclusions

Materials provided:

  • Copy of instructor’s notes
  • R.H. Thayer CSDP and M. Dorfman, editors, Software Requirements Engineering, 2nd ed., IEEE Computer Society Press Tutorial, Los Alamitos, CA 1997

Back to Top of Page



Project Manager’s Best Software Engineering’s Practices
Each year the need for software grows exponentially. Good project management is generally considered the key to successful completion of a software project – one that is completed on time and within estimated budget, and that delivers a product that satisfies user needs and customer expectations. This seminar jointly addresses both acquisition project management and development project management. It presents management as an interconnected set of procedures, practices, technologies and know-how, which make possible the planning, organizing, staffing and leading necessary for a successful engineering project. The seminar will highlight the best current practices in project management and identify the "keys" to a successful project.

This course is based on the IEEE/EIA Standard 12207, with the niches filled in by a well-defined set of IEEE software engineering standards to show managers when and how to use software engineering standards.

Participants will learn:

  • how Software Engineering Standards are used in the management and development of software systems;
  • how a software system is initiated, managed and developed by an in-house software developer or a third-party software development organization;
  • about the roles of management techniques and tools in the development of a software system.

Length: five days, 7-8 hours each

Course outline:
  1. Introduction to Software Engineering Standards
  2. The Engineering of Software
  3. Software Standards and Documentation
  4. System Development Process Models
  5. Planning the Project
  6. Planning Techniques
  7. Software Requirements Engineering Concepts
  8. Estimating Software Cost and Schedule
  9. COCOMO Cost Estimation
  10. Software Sizing and Function Point Analysis
  11. Software Risk Management
  12. Supporting Processes for Software Engineering
  13. Software Reviews and Audits
  14. Project Monitoring and Control
  15. Software Metrics and Project Visibility
  16. Software Contractor Selection
  17. Software Process Improvement
  18. Best Practices of Software Engineering

Required materials: Computer projector with screen, flip chart, name tents

Materials provided:

  • Copy of the viewgraphs in sufficient detail to serve as a later reference
  • Christensen, M.J. and R.H. Thayer CSDP, The Project Manager’s Guide to Software Engineering’s Best Practices, IEEE Computer Society Press, Los Alamitos, CA, 2002, IEEE-CS Press catalog number 1199

Return to top of page

site and all contents © 2013 Richard H. Thayer, all rights reserved