D. Kalinsky Associates
 Home  |  Training Courses  |  Online Learning  |  Resources  |  About Us  |  Contact  |  Site Map  
Advanced Course:

"C++ Wizardry for Embedded"

*  Solutions to Common Problems in Embedded Software Design using C++ Language Facilities

*  An Advanced Course for Experienced Embedded Software Developers and Technical Managers

*  2-
or 3-Day Intensive Class        (lectures, discussions, example C++ problem-solving, classroom exercises)
COURSE OVERVIEW

This course examines and demonstrates the applicability and advantages of C++ to the embedded developer. Using
numerous tested and proven programming techniques, solutions are demonstrated for avoiding common problem
areas in software design relating to quality, reliability, maintainability and performance using C++ language facilities.
Techniques are shown to reduce source code size and eliminate common manual programming tasks -- all leading
to more maintainable software with significantly lower bug counts, faster development times and shorter debug cycles.

Examples of high consequence real world embedded software failures are examined. Strategies are then presented
for how those problems could have been avoided using advanced C++ programming techniques. Particular attention
is paid to issues of memory and resource management which can lead to intermittent, difficult to detect and hard to
find and fix classes of bugs. In addition, performance implications of advanced C++ constructs,
decoupling/maintainability, test driven development/defensive programming and interface-hidden performance
enhancement techniques are covered in great detail.

This course is not intended as an introduction to C++ and it features. Rather it is focused on advanced techniques
and patterns that make ingenious use of C++ features to increase maintainability and quality without degradation of
performance.


WHO SHOULD ATTEND ?

This course is intended for engineers and consultants in the embedded field with intermediate to advanced C++
experience wishing to improve the quality, reliability, maintainability and performance of their software projects. Also,
technically oriented managers and architects who wish to gain an understanding of why and how choosing C++ can
benefit their new or existing projects.

Course participants are expected to be familiar with C++ and related topics such as object oriented programming and
templates.


COURSE OBJECTIVES

The primary goal of this course is to give the participant a better understanding of C++ constructs, and when it is and
is not appropriate to use those constructs. The course will arm participants with a new set of C++ programming
techniques to enhance the quality, reliability, maintainability, performance and ease of coding of their software
projects. These programming techniques are also useful as a baseline and “food for thought” for participants to build
upon to formulate their own techniques to improve their software projects.


COURSE CONTENTS

Overview of C++ for Embedded

Generality and Flexibility
Superset of C - Backward Compatibility
Pay Only for What you Use

Advanced C++ Features and Overheads

Zero Overhead Features
Constructor / Destructor Overhead
Inheritance / Virtual Function Overhead
Multiple Inheritance Overhead
Virtual Inheritance Overhead
Exercise: Inheritance / Virtual Functions
Template Overhead
RTTI Overhead
Exception Overhead

Resource Management

Introduction
Resource Acquisition Is Initialization
Canonical Class
boost::scoped_ptr
boost::shared_ptr
Canonical Smart Pointer
STL Containers
boost::optional
Exercise: Resource Management
Resource Objects
Overloading Operator "new" and Operator "delete"
Placement "new"

Performance Enhancement

Inline Functions
Pass by Const Reference
Temporary Variables
Pre and Post Increment
Exercise: Performance Enhancement
Reference Counted Class Data
Mutable, Caching and Lazy Evaluation
Template Caches

Specialized Topics

Const Correctness
Macro Alternatives
Decoupling
Unit Classes
Case Study: Mars Climate Orbiter
Templatized Precision
Exercise: Templatized Precision Unit Classes
Separation of Model and View
Case Study: Crash of F22 Avionic Computer

Testing

Test Driven Development
Programming by Contract
Exercise: Programming By Contract
Mathematical Testing
Templatized Automated Tests
Loggers and Timers

Final Examination.


INSTRUCTOR:  Mr. Omri Kalinsky
Price of an On-Site Course
Schedule an On-Site Course
© Copyright 2011, D. Kalinsky Associates, All Rights Reserved.
This page Updated J
une 28, 2011
New