HomeContact

Main Menu

  • Home
  • Contact Us
  • About
  • James' Blog

The Software Renaissance

  • Agile Renaissance
  • Embedded Renaissance

Services

  • Coaching
  • Training
  • Public Training
  • Workshops
  • Testimonials
  • Customer Feedback

Resources

  • Papers and Presentations
  • CppUTest
  • James' Blog

Who's Online

None

Member Login






Forgot login?
Register

Designed by:
SiteGround web hosting Joomla Templates
Agile Design for Embedded C++ Programmers - Hands-on (5 days) PDF Print E-mail
This is an in depth course for the Embedded C++ programmer that wants to learn the practices that support an evolving embedded code base. You will learn how to effectively use C++ and objects to guard you from the volatility of hardware, code and markets that make it difficult to keep a code in top form. You will learn the advantages of objects in embedded software development. You will learn how Test Driven Development can help keep your code running, keep the design clean and have fewer bugs to chase. You will learn to recognize the early signs of code degradation. You will refactor a code base protected with automated tests. You will learn techniques to help tame an untested legacy code base. You will also get experience with some of the important design patterns that have helped many embedded developers.

Ingrained in this course are the techniques needed to isolate your code from its execution environment, the hardware and the operating system. You will see how to use test driven development right next to the hardware. You will see how to abstract you hardware, making your code more testable and more portable in the process.

See what attendees of this and similar classes had to say.

Length
  • 5 days
Audience
  • Embedded Software Developers
  • Technical team leaders
  • Managers that want to know the technology they manage
Prerequisites
  • Embedded C++ Programming Skills
Related Courses
  • TDD for Embedded C Programmers
  • TDD and Refactoring for Embedded C++ Programmers
  • The Agile Embedded Experience

Course Outline

Motivations

  • Evolution
  • Cost of retests low
  • The importance of clean code

Object Oriented Design for Embedded Software

  • Why OO for Embedded Software?
  • Hardware Abstraction
  • OO Design Model
  • Agile Design
    • Rules of Simple Design
    • SOLID Design Principles
    • DRY Principle
    • Mind Your Own Business
    • Architectural Vision
    • The Big Picture
    • Vertical Slices
    • From Specific to General
  • Exercise - Design Envisioning

Test Driven Development

  • Why Test Driven Development?
  • What is Test Driven Development?
  • The Microcycle
  • TDD Starting Point for C++
  • Exercise

Special Considerations for Embedded

  • Leveraging the Development System
  • Risks of Development System Unit Testing
  • Embedded TDD Cycle
  • Hardware/Platform Independence

TDD with Collaborating Objects

  • TDD with Printed Output
  • Exercise

TDD with the Code in the Middle

  • Programming to Interfaces
  • Spies and Fakes
  • Abstracting the Hardware
  • Controlling the Clock
  • Exercise

Refactoring Tests

  • Why?
  • How?
  • Exercise

More on Fakes

  • When to Fake it
  • Link-time Test Doubles
  • Breaking Dependencies with Function Pointers
  • Exercise
  • Self-verifying Mock Objects
  • Exercise

Refactoring

  • Why is Clean Code Important?
  • Critical Skills
  • Test Smells, Code Smells
  • Envisioning an Improvement
  • Incremental Improvement through Refactorings
  • Removing Smells with Refactorings
    • Long Method; Exercise
    • Feature Envy; Exercise
    • Large Class; Exercise
    • Duplicate Conditional Logic; Exercise
    • Duplication; Exercise

Legacy Code Refactoring

  • Boy Scout Rule
  • Legacy Change Algorithm
  • Seams
  • Sprouting
  • Parameterize Constructor; Exercise
  • Extract and Override; Exercise
  • Introduce Instance Delegator; Exercise
  • Crash to Pass Algorithm
  • Learning Tests
  • Legacy Code Test Addition Strategy
  • TDD and Bug Fixes

Design Patterns for Embedded Software

  • What are Patterns?
  • Observer
  • Action
  • Active Object
  • Adapter
  • Template Method
  • Exercise
  • Anti-Patterns
  • Singleton vs. Just Have One

Wrap up, Review, Questions

< Prev   Next >
Last Updated on Monday, 03 August 2009 15:09
 

See Attendee Feedback

  • Test-Driven Development
  • Legacy Code Workshop
  • Instructor
  • Other

Valid XHTML and CSS.

renaissancesoftware.net, Powered by Joomla! and designed by SiteGround web hosting