Advanced C++ 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-Day Intensive Class (lectures, discussions, example C++ problem-solving scenarios, classroom exercises)
|
|
|
Highlights:
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.
Objective of the course
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.
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.
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
He has extensive experience in the design, development, maintenance and refactoring of software. He has worked in
a variety of software fields including medical imaging, military training / simulation, office applications, gaming and
client / server applications. His experience includes development on many platforms including S60, UIQ, Windows
Mobile, Linux, Windows, MacOS and pSOS+ on small to large projects. He is a C++ specialist and advocate and is
considered a “language lawyer”.
When not programming or teaching about software, Omri is most likely soaring in his sailplane. In his spare time,
Omri is building a self-launching piloted glider.
|
We are a professional organisation providing training services to companies. We offer a comprehensive range of training courses, workshops and seminars covering every aspects relating to engineering.
We provide various training programs that meet the immediate and future needs of engineers. The training is organised through seminar style, hands-on workshop, project-based tutorial or a mixture to bring the maximum learning benefits to the enginners. |
|
We have a quality pool of leading authorities, worldwide experts and fully trained up professionals who are constantly striving to uncover the pitfalls and best practices of modern technology development. |
 |
|