Our courses focus on the critical problems teams encounter with model based development on real projects. For example, we don't just teach the notation for a model element. We show examples of where to and where not to use it. We discuss the consequences of one modeling solution versus another. But most importantly, we take a step back and focus on the harder problem of developing useful abstractions before you even begin drawing model symbols.

Executable UML for Model Developers (5 days)

Our premiere course features a detailed and practical description of the Executable UML modeling language with an emphasis on real-time and embedded applications. This course is essential for anyone planning to develop models or who will be engaged closely with the model development process.

It features numerous short exercises to verify understanding. An in-depth case study developed incrementally throughout the week reinforces each modeling step. And an interactive, hands-on simulation of the completed project ensures a clear view of how all the model types of a complete system are integrated. Students work independently and in 2-4 person teams throughout the week.

We focus on problem solving, thinking, good abstractions and requirements analysis so in class we will be using low-tech implements like whiteboards, pencil, paper and, most importantly, your brain. (Don't forget to bring your brain).

Key topics include:

  • How Executable UML relates to standard UML and other modeling languages

  • How to separate platform specific features from essential application requirements

  • How to model rules and constraints as well as data with class models

  • How to transform contradictory, ambiguous and incomplete requirements into clear, precise, unamibiguous executable models

  • How to model platform independent synchronization requirements

  • Powerful techniques and strategies to manage complexity as model sets become large

  • How to run effective simulations on Executable UML models

  • How to organize large collaborations of state models so that they can remain reliable and maintainable

  • How to model asynchronous, concurrent behavior in real-world systems

  • How to organize large software systems non-hierarchically using domains

  • How to model platform independent actions and computations

  • How to develop and organize critical model documentation

  • How to establish a clear path from models to production code on a challenging platform

Executable UML and MBSE for Project Managers (1 day)

Not everyone in your organization needs to be an expert modeler. One of the key reasons for modeling is to expose requirements and application logic to non-developers so that the work can be directed properly and so that quality feedback can be obtained from systems engineers and product managers. This means that non-developers must be able to read models and understand the types of problems that they intend to solve.

This class provides an orientation to the most important model types and elements.

Advanced Workshop

This is a custom course for students who have completed Executable UML For Model Developers and want to learn more.

Here are some example topics that can be covered in more depth:

  • Advanced constraint modeling

  • Domain and collaboration patterns

  • How to model a network application

  • How to model a medical application

  • How to build and use a metamodel to define your own modeling language

  • How to specify a model execution architecture and compatible model compiler

  • The foundations of data modeling in logic, set theory and mathematial functions

  • Topics specific to your project

Click below to get in touch and tell us what interests you most.



Training is only the first step to success with MBSE. Whether your organization is in the early stages of adopting a model based engineering approach or is managing a rapidly expanding model library, we are here to solve problems and help you succeed.

Our consulting services ensure that your project and organization realizes tangible, significant benefits from your modeling process on a daily basis.

Each project is unique, but there are several ways we can get involved.

Launch Your Project

1 week

Get expert guidance to start your MBSE project on the right path.

This week is dedicated to learning about your project and then laying out a pragmatic plan consisting of an initial domain chart (overall architecture), where to best focus the modeling effort initially, a plan for getting from models to code, an assessment of the tools and processes necessary to get going in the right direction, a list of priority tasks and immediate deliverables and much more.

This is an excellent opportunity to get started quickly and avoid distractions and bad practices at the beginning.

Review Your Project

1-2 weeks

Solve problems and get the most out of your models.

Even the best teams will run into trouble and develop questions after creating lots of models. There may be conflicting views on how the work should progress. What should be modeled? What shouldn't be? To what level of detail? How should the big pieces come together to establish a clear path to code and deliver a complete and correct system? Should parts of the system be hand-coded? What parts? How should certain features in the target platform be incorporated?

We resolve questions like these all the time and can help your teams get the right answers so that they don't get bogged down.

Leon Starr will meet with team members and review your plan, models and domains looking for trouble spots and produce a detailed assessment with practical recommendations.

This is valuable sanity check on your project that can help you save a lot of time, increase productivity and ensure that your models make a difference.



As experts in executable modeling and code generation, we can help your organization boost productivity by delivering key system components and development tools. Your organization can then keep its focus on the subject matter and applications central to its business concerns.

Delivered system components

We deliver and help integrate fully modeled services (domains) that can be configured to suit your application's unique needs. Here are some examples:

Data collection and playback

This is a common need in embedded systems, though each application has unique requirements. Captured data can vary from simple events to complex image sets. Excessive data can be archived. Some applications require the ability to play back some or all of the data for review.

Linear or periodic scheduling of activities

Many embedded systems require the ability to schedule a sequence of activities. The schedule may need to continually adapt to circumstances such as interrupts, delays and undetected (but expected) signals. Periodic schedules which continually cycle are useful in medical pacing applications. Fixed or variable linear schedules are useful for controlling chemical processes.

Embedded networks

Many of our clients use proprietary or semi-proprietary networks, especially in vehicles. We can ensure that the network presentation layer is not hopelessly intertwined with application or device specific details.

Signal I/O

This service insulates sensor and actuator signal processing details from meaningful control and status events and values of interest to the application. For example, a set of environmental sensors might be polled at a specified frequency with conditioned events like 'Overtemp' delivered asynchronously to the application. That way the application has no need to ever poll. Raw sensor values can be scaled and converted to application level units so that when an attribute such as Engine.Actual_temperature is accessed, it will be current and in Celsius units without requiring any special function calls or polling.

Command sequencing

This component manages the translation of a high level application command such as 'Restart compressor' into a series of device specific instructions. If one model of device is replaced by another that performs the same essential functions but uses a different command set, you can reconfigure the data in this service without requiring the application to issue a different command. This service also receives commands and translates them into relevant application events.

Alarms and fault management

In safety critical systems such as power plants, aircraft and space vehicles it is not enough just to log problems; human assisted or fully automated recovery is required. An operator may need to acknowledge, clear, ignore or respond to alarms. Pre-registered automated recovery steps might be defined for certain alarms or categories of alarm. This service manages prioritization, categorization, response and logging of faults and alarms.

And a lot more

These are just a few examples of the kinds of modeled domains that we have experience building and configuring for a wide variety of embedded applications. Need something different? We'll be happy to work with you to build the right solution.

All of these components are delivered as tested, executable models that can be targeted to a wide variety of platforms. Since the models are built by experts and carefully documented, you not only obtain a solution, you also get an educational example to serve as training and reference material for your model developers.

Model Development Tools

Your organization may have one or more model development tools. But do they provide everything you expect from a serious development environment? We can help you fill the gaps in areas like these:

Model Testing

How do your teams test models? How much work is it to specify a model test? How difficult is it to create and manage test suites over large model repositories? Do you have to create a whole set of models just to test another set of models? We can develop a more productive solution that scales up to large model sets.

Model Execution and Visualization

We can develop animation and visualization tools so that you can really see what your models are doing when they execute.

Code Generation

We have experience building code generators for challenging embedded platforms. If you need a specialized code generator, we can build one for you. Your teams can then focus on building your core application and services.

Reporting and statistics

Is it easy to gather data from your models? Can you find out how many functions access a particular attribute? Can you find out which state machines participate in a given event response? We can help you develop data gathering tools so that you have a more useful view of your model data.


Is your documentation limited to scattered text, or can you integrate useful technical drawings and nicely formatted text? Are you limited to formal model documentation or can you integrate preliminary technical notes and link in background reference material? We can help you get control of your analysis and model documentation system.