Modern System Design and Software Design Patterns

(code DESA)


The goal of this advanced hands-on course is to analyse, design and implement customisable and maintainable software systems using state-of-the-art design techniques in combination with object-oriented programming languages such as C++ and C#. We integrate these techniques to produce a seamless and defined process from problem description to working code. We pay particular attention to system decomposition, software design patterns and their implementation. Finally, we discuss the software trajectory for a number of model applications from various domains. These cases can be used as motivation and foundation for your own applications.

The percentage theory/practice is approximately 70/30. Exercises involve designing new compact test cases and determining how to modify existing designs. You have access to the source code of the five test cases that we discuss in Part E of the course. There are also opportunities to write small code samples in C++ or C# and integrate them into the working prototype.

Finally, in this outline we give some examples of the standard visual representations (for example, UML diagrams) that are used in the course to aid in understanding the main topics.

Subjects Covered

  • Scope and manage the project as early as possible.
  • Develop a system model and align it with functional requirements and system features.
  • Categorise the system to enhance reusability and reduce risk.
  • Create a stable system context diagram and proof-of-concept prototype.
  • Decompose and refine system components into classes with well-defined interfaces.
  • Design and implementation using a combination of object-oriented, generic and functional programming styles.
  • Coding in C++ and C#.


DUKIfig 9.01 Phases in System Decomposition.png

System decomposition


  • A defined process to design robust and customisable applications.
  • Gain insights into software development from architecture through to C++ and C# code.
  • Learn multiparadigm software design patterns and extensions to object-oriented software patterns.
  • Fully worked test cases in C++ and C#.
  • The ability to estimate project size and complexity; manage the project.
  • Complete software lifecycle model A-Z.


For whom is this Course?

This is an advanced course for experienced software developers, designers and architects who wish to create libraries, frameworks and applications for medium and large software projects.

If you are interested in taking this course (in original or customised form) please contact us at

There are ample opportunities to interact with the trainer and with the other attendees in order to promote understanding of the topics in the course.


Click here for course contents.


Your Trainer

Daniel J. Duffy started the company Datasim in 1987 to promote C++ as a new object-oriented language for developing applications in the roles of developer, architect and requirements analyst to help clients design and analyse software systems for Computer Aided Design (CAD), process control and hardware-software systems, logistics, holography (optical technology) and computational finance. He used a combination of top-down functional decomposition and bottom-up object-oriented programming techniques to create stable and extendible applications (for a discussion, see Duffy 2004 where we have grouped applications into domain categories). Previous to Datasim he worked on engineering applications in oil and gas and semiconductor industries using a range of numerical methods (for example, the finite element method (FEM)) on mainframe and mini-computers.

Daniel Duffy has BA (Mod), MSc and PhD degrees in pure and applied mathematics and has been active in promoting partial differential equation (PDE) and finite difference methods (FDM) for applications in computational finance. He was responsible for the introduction of the Fractional Step (Soviet Splitting) method and the Alternating Direction Explicit (ADE) method in computational finance. He is also the originator of the exponential fitting method for time-dependent partial differential equations.

He is the originator of two very popular C++ online courses (both C++98 and C++11/14) on in cooperation with Quantnet LLC and Baruch College (CUNY), NYC. He also trains developers and designers around the world. He can be contacted for queries, information and course venues, in-company course and course dates.


Duffy, D.J. (2004) Domain Architectures, Wiley Chichester.



Modern System Design and Software Design Patterns

Fill in your personal details