Methods & Modeling Training

Absolute Software features training on "Agile Architecture-Driven Development", the Colbert Object–Oriented Software Development method (OOSD), the Object Management Group's (OMG) Unified Modeling Language (UML) and it's System Modeling Language (SysML), and the Society of Automotave Engiineers's (SAE) Architecture Analysis & Design Language (AADL). We also teach and consult on Rational Unified Process, Booch, Rumbaugh, and other methods; please inquire about services comparable to those below.

The method courses described below are tailored to incorporate either the software system you are developing, or a representative example based on the system you are developing that we will work with you to define.

Developing Real-time Systems, Part 1

Format: Immersion, 5 days

Intended For: Experienced software developers and systems engineers who need to develop or understand the development of embedded real-time or pervasive high-volume systems.

Prerequisites: At least 1 year experience in software development with Ada, C++, Object-C, C#, or Java. Familiarity with OS functions involving threads, message passing, and synchronization. Experience with software design preferred.

Overview: Embedded real-time, and pervasive high-volume systems, whether implemented using single-core, multi-core, distributed technology or combinations, raise additional concerns about architecture reliability, fault tolerance, timeliness, and completeness not found in other kinds of systems and not addressed by most software development approaches. Timeliness requires detailed understanding of (a) task scheduling and queuing, (b) coordination and collaboration of processes, potentially across multiple cores and/or networked computers or devices, (c) message processing and queuing, (d) sharing resources, and (e) non-regular occurrence of interrupts.

This set of courses teaches the student how to think about, design, and implement real-time and pervasive high-volume multi-core and/or distributed systems.

This course, which first in the series, explains (a) the critical concerns of these systems, (b) the reason most common software development methods fail or are inefficient, (c) why testing alone is inadequate and inefficient, (d) how common practices, e.g. maximizinge CPU utilization, can prdouce results ranging from inefficient execution to disastrous results.

Students will learn fundamental concepts and techniques required to design, and analyze embedded real-time and pervasive high-volume systems. They will learn to design tasks that are allocated to available hardware so CPU and other resourses are efficiently used, and avoiding failures such as race conditions, deadlocks, and roll-backs, which can slow or kill a system. They will learn to scheduling algorithms and analysis techniques that assure delivery of timely results when the design is properly implemented.

After this course, a student should be able to:

  • Understand the differences between embedded real–time systems, pervasive high-volume systems, and other systems
  • Contribute to the design of embedded real–time systems and/or pervasive high-volume systems
  • Analyze the design of an embedded real–time systems and/or pervasive high-volume systems
  • Apply scheduling theory techniques to perform worst-case response analysis of an evolving system

This course is an intense immersion in to the topic. Each day will consist of lectures, workshops, and/or exercises. In class, the students will apply the information covered in lectures to sample problems in workshops. Outside class, the students will be expected to do some reading or exercises. Extensive examples will be used to illustrate the concepts in the lectures.

Full Descriptions

When this course and the follow-on course are taught in on-site, we tailor both courses to the project that the people are working on. We will work with you to define example and exercises that are based on the software being developed and the environment the software will execute on, using the project’s languages and tools.

ss

Developing Real-time Systems, Part 2 for Ada

Format: Lecture–Immersion, 5 days

Intended For: Ada programmers and designers, who intend develop embedded real-time or pervasive high-volume Ada programs.

Prerequisites: Developing Real-time Systems, Part 1 course, or instructor-approved equivalent training or work experience

Overview: This course teaches how to immplement embedded real-time or pervasive high-volume in Ada, achieving predictable schedules and efficient use of resources, based on the concepts and techniques taught in the Developing Real-time Systems, Part 1 course.  The student will learn to use Ada's support for:

  • single core, multi-core, and distributed implementation;
  • task scheduling, including static and dynamic priorities, scheduling algorithms, priority inheritance and ceiling protocols, and entry–queue protocols;
  • system programming, including interrupt handling, device handling, physical data structures.

The student will learn how almost all of these capabilities are facilitiated by the Ada 2012 standard's new aspects and contracts. This course also introduce the student to a) the Spark subset of Ada for safety-critical and/or secure systems, and (b) Ada's integration of real-time and object-oriented features.

This course is an intense immersion in to the topic. Each day will consist of lectures, workshops, and/or exercises. In class, the students will apply the information covered in lectures to sample problems in workshops. Outside class, the students will be expected to do some reading or exercises. Extensive examples will be used to illustrate the concepts in the lectures.

Developing Real-time Systems, Part 2 for C++ (under development)

Format: Immersion, 5 days

Intended For: C++ programmers and designers, who intend develop embedded real-time or pervasive high-volume systems.

Prerequisites: Developing Real-time Systems, Part 1 course, or instructor-approved equivalent training or work experience

Overview: TBD

Developing Real-time Systems, Part 2 for Java (under development)

Format: Immersion, 5 days

Intended For: Java programmers and designers, who intend develop embedded real-time or pervasive high-volume systems.

Prerequisites: Developing Real-time Systems, Part 1 course, or instructor-approved equivalent training or work experience

Overview: TBD

Intoduction to the Unified Modeling Lanagage

Format: Lecture–workshop, 5 days

Intended For: Software development personnel, including management and QA engineers

Prerequisites: Experience with, or training in, an object–oriented programming language (recommended)

Overview: This course teaches the student the Unified Modeling Language (“UML”) for software development.  This language is as an industry standard of the Object Management Group (“OMG”). UML provides system & software developers working on object analysis and design with a consistent language for specifying, visualizing, constructing, and documenting the artifacts of software systems, as well as for business modeling. 

The student will learn the fundamental concepts of UML and its notations for representing a system.

Introduction to SysML

Format: Lecture–workshop, 5 days

Intended For: System Engineers, software architects and designers, project management, and QA engineers

Prerequisites: Experience with or training in UML (helpful, but not required)

Overview: This course teaches the student the Sytem Modeling Language (“UML”) for software development.  This language is as an industry standard of the Object Management Group (“OMG”) and was developed in cooperation with the International Council of System Engineering (INCOSE). SysML builds upon UML to provide system describe a system to be built using consistent language for specifying, visualizing, constructing, and documenting the artifacts of the systems. 

The student will learn the fundamental concepts of SysML and its notatiosn for representing a system.

Introduction to the SAE's Architecture Analysis & Design Language (AADL)

Format: Lecture–workshop, 5 days

Intended For: System & Software development personnel, including management and QA engineers, working on systemes requiring predictability (e.g. safety, secure, reliable).

Prerequisites: Experience with, or training in, developing systems that are real-time, embedded, safe and/or secure (recommended)

Overview: This course teaches the student the Archiecture Analysis & Design Language (“AADL”) for developing predictable software-intensive systems.  This language is as an industry standard of the Society of Automotive Engineers (“OMG”). AADL provides developers with the ability to design a combined system & software architecture that supports analysis of the issues that can make or break systems that require high predicability. It also supports the generation of the software load image, so (1) maintaining the architectural description is not just an exercise in documentation, but rather an integral part of the development strategy, (2) retargeting software to new hardware is made easier. 

The student will learn the fundamental concepts of AADL and its notations for representing a system.

Object–Oriented Software Development

Format: Lecture–workshop, 5 days

Intended For: All software engineers

Prerequisites: Experience with or training in an object–oriented programming language is recommended.

Overview: This course teaches the student to apply the principles, practices, and goals of the object–oriented paradigm of software development using the Colbert method. Students will learn how to construct a system, and analyze the model of the system to validate that the system will meet the customer’s needs and to verify that the system will operate as required. The student will learn how an evolutionary approach reduces risks and helps achieve software & system engineering goals. Students will learn how to apply OOSD with a view to using an object–oriented programming language like C++, Java, or Ada.

Agile Architecture-Driven Development

Description Being Revised