Software Engineering

A Systems Approach

a course presented over five days by Mr. Hanno Retief

Software Engineering Course Introduction

Software is everywhere, starting with small apps. At the other extreme, complex business, defence, aerospace, transportation and other technology-based projects typically involve large-scale software development. Without exception, these projects are loss-prone, high-risk enterprises. Even the smaller projects are success-challenged. Following something like the Standish annual reports makes it depressingly clear that there has been only modest improvement in the last 20 years in terms of the ability to successfully complete software projects, large and small.  As well as the high rate of failure, performance of software large and small is uneven across the industry.  This exposes at the elements that contribute to success, not just in the areas of software requirements, architecture and design but across all aspects of the software development life cycle, as well as the organizational infrastructure.

This 5-day course in Software Engineering provides an overview of the elements for the effective realization of software and software-intensive systems that are cost-effective, on schedule and meet stakeholder needs over the full life cycle.

The course approaches software development from a systems perspective: as an interactive and concurrent, interdisciplinary, collaborative approach between multiple parties in engineering both small and large, simple and complex software-intensive systems.  All course subject areas provide actionable information on creating cost-effective solutions to practical problems by applying scientific and practical knowledge to building software.

Who Should Attend This Course?

This course is designed for people who are responsible for specifying, acquiring, developing, evaluating, supporting and/or managing software-intensive systems, for example:

  • Software Development Team Leaders
  • Software Engineers
  • Business Analysts
  • Programmers
  • System Engineers
  • Project Managers of Software-Intensive Projects
  • Verification & Validation Managers
  • Configuration Managers
  • System Safety Managers
  • Software Maintainers
  • Software Procurement Managers
  • software maintainers
  • software procurement managers
  • risk managers
  • cost engineers.

Training Method and Materials

The course is delivered using a mixture of presentation, discussion and a variety of practical exercises and group work sessions. The course utilizes different adult learning techniques optimized for the type of content that needs to be mastered.

Throughout the course there is a strong focus on interaction, variety, the social aspects of learning and integration with the learner’s existing knowledge framework. The result is a highly engaging course with a great degree of subject mastery.

In this software engineering course, you will be provided with numerous supplementary descriptions, forms and charts which you can put to use immediately.

Key Questions

  • Why do so many software projects fail?
  • Which paradigms. methodologies, models and standards are used in software development? What should be used where and more importantly; why?
  • What are the leading software development technical and management practices?
  • What are agile development method and techniques and where do they apply?
  • How do you determine whether software requirements are adequate?
  • What are the commonly used analysis and design patterns, techniques and tools?
  • What is verification and validation and how is it effectively integrated with core development activities?
  • How do you develop system architectures and what is their significance?
  • How should software intensive projects be planned and managed?
  • How do you implement a cost-effective risk management program?
  • What can be done to extract maximum value from inspections and technical reviews?
  • What is the role of metrics in software development?
  • How do you establish and maintain effective software development teams?
  • What techniques are used for developing critical and trusted systems?

Software Engineering Training Objective

At the conclusion of this course participants will:

  • be better prepared to specify, plan, develop, deliver, maintain and operate a software-intensive system. Given the constant evolution of software development methodologies, delegates who are already experienced software professionals will further develop their skills;
  • become an advocate in their organization for practical methods to improve software project performance;
  • identify causes of software development problems and drive project performance improvements; and
  • value the substantial body of public domain knowledge that defines world's leading practice in software engineering. For example, ISO/IEC/IEEE 12207, other IEEE and ISO standards, the Software Engineering Institute (SEI) Capability Maturity Models and the Guide to the Software Engineering Body of Knowledge (SWEBOK).

Software Engineering Course Outline

1.Introduction and Overview

  • introduce the presenter and go over the learning methodology
  • an overview of course structure and methodology 
  • general introduction into software engineering
  • history of software development, recent trends, the current state and beyond the current state 
  • an engineering approach to software development including concurrent engineering, systems methodology and thinking 
  • key role-players in a typical software development environment
  • life cycle characteristics and typical stages
  • process fundamentals and development models
  • sequential versus incremental and iterative development models
  • different software development methodologies and their applicability
  • the performance of different software development methodologies
  • lean software development and value driven design
  • tailoring and process improvement principles

2. Technical Processes

  • requirement analysis
    • system requirements, system boundaries, hierarchy and subsystems
    • requirement quality attributes and other fundamentals
    • requirement documentation, natural language, UML, and storyboards
    • requirement parsing
    • concept of use documents
    • software tools  
    • common pitfalls in performing RA
  • software design
    • design fundamentals
    • architectural styles and patterns
    • evolutionary architecture
    • design methods
    • software design notations and presentations
    • documentation and tools
  • software construction
    • dealing with complexity
    • standards for coding
    • process
    • assessing quality
  • system and software integration
    • integration strategies
    • system oriented architecture
    • web services
    • communication protocols
    • interface controls
    • pitfalls and pointers
  • validation and verification
    • fundamentals
    • formal, informal, technical, design, code, requirement and other reviews
    • testing
    • other V&V methods
  • transition (transfer between different owners)
  • operations, maintenance and support
  • disposal or retirement

3. Project Processes

  • project management: frameworks, planning, assessment and control
  • estimation and costing
  • risk management
  • configuration management
  • change management
  • quality management
  • release and deployment
  • information management
  • human elements and building effective teams

4. Agreement Processes

  • overview and contract models
  • acquisition
  • supply

5. Enterprise Level Processes

  • project portfolio management and program management
  • life cycle model management
  • quality management
  • human resource management
  • knowledge management
  • enterprise tools

6. Specialty Fields

  • This section briefly looks at a couple of speciality fields, providing enough information to appreciate the significance and be able to interact with experts in the field. Topics includes:

    • engineering of trusted/high integrity systems
    • software life cycle cost analysis
    • interoperability
    • usability analysis and human system integration

Software Engineering Course Schedule

How to Register

There are three simple ways to register to one of our courses.

  1. Online. You may register online by clicking the "register online" link next to the course of interest.
  2. Fax. Download a registration form by clicking the link above the schedule and fax the completed form to our offices on +61 3 9876 2664 (Australia) or +1 888 772 5191 (North America).
  3. Email. Download a registration form by clicking the link next to the course of interest and email the form here.

Upon receiving a completed registration form, a course confirmation letter and invoice will be sent electronically to the email provided within 1-2 business days. Payment can made by credit card or by bank transfer.

If you need any assistance with the registration process or have any queries, please call one of our friendly team members on Australia +61 3 9876 7345, UK +44 20 3286 1995, North America +1 888 772 5174, Brazil +55 11 3230 8256 or email us.

Select your region

Find out when PPI's Software Development course is being presented in your region:


"Excellent, detailed course material"

delegate, Australia

All courses are available on-site

Benefits of on-site training for your organisation include:

  • tailored in delivery to your industry
  • savings of up to 50%
  • encourages teamwork
  • formal tailoring possible

Enquire about on-site training for your company

Quote of the Day

The meanings of the terms Operational Concept Description (OCD) and Concept of Operations (CONOPS) have become so hopelessly muddled that it is time to invent new, clearly distinguishable names for each. Watch this space. -Robert Halligan

Systems Engineering NEWSLETTER

SyEN makes informative reading for the project professional, containing scores of news and other items summarizing developments in the field of systems engineering and in directly related fields.