CMP EMBEDDED.COM

Login | Register     Welcome Guest  
HOME DESIGN PRODUCTS COLUMNS E-LEARNING CONFERENCES CODE FORUMS/BLOGS NEWSLETTERS CONTACT FEATURES RSS RSS

Doing real time UML systems design using the Harmony process: Part 1
What is the Harmony Process?



Embedded.com
Despite its well-known problems, waterfall lifecycle is still by far the most common way of scheduling and managing projects. Nevertheless, the most fundamental issue with the waterfall lifecycle is that defects introduced early in the process are not identified or fixed until late in the process.

Certain kinds of strategic defects - requirements and architectural defects, specifically - are three or four orders of magnitude more expensive to repair in the waterfall lifecycle because they have broad sweeping implications. This is inherent in the waterfall lifecycle because testing comes at the end.

The longer you wait to identify and repair defects, the more they have become entrenched and the greater the number of dependencies on the flawed aspects. Put another way, the problem with the waterfall lifecycle is that it fundamentally assumes each step in the process can be completed more-or-less without serious defects, but in fact that is demonstrably untrue. When the defects are finally identified and repaired, the cost is very high.

Figure 2.2. Harmony process time frames

The spiral (also known as the iterative) lifecycle has become popular to address the concerns associated with the waterfall lifecycle. The basic advantage of the spiral lifecycle is that the system is tested far earlier and far more often.

This results in the identification and repair of defects much earlier and at a significantly reduced cost. The spiral lifecycle essentially breaks up the development project into a set of smaller projects, and incrementally adds capabilities to the system, but not before validating the ones already present. Each addition of a set of capabilities is called a "spiral" or "increment."

Each of these subprojects is more limited in scope, is produced with much greater ease, and has a much more targeted focus than the entire system. The result of each spiral is what Harmony calls an iterative prototype—a functional, high-quality system that may not be as complete (or perhaps not done in as high fidelity) as the final system.

Nevertheless, the prototype does correctly implement and execute some portion of the requirements and/or reduce some set of risks and contains the actual code that will ship with the product, once complete.

The Harmony process can be conceptualized as occurring simultaneously in three different scales or time frames (see Figure 2.2 above). The macrocycle process occurs over the course of many months to years and guides the overall development from concept to final delivery.

The Harmony macro process has four primary, but overlapping, phases. Each macrophase actually contains multiple microcycles, as we will see shortly, and the result of each microcycle is the production of an iterative prototype.

The macrophases are a way to show that the missions of the prototypes tend to evolve over time in a standard way. The early prototypes tend to focus on key concepts, such as requirements, architecture, or technology. The next several prototypes introduce and focus on the secondary concepts of requirements, architecture, and technology.

After that, the focus shifts to design and implementation concerns. The last set of prototypes emphasizes optimization and deployment (in the target hardware and in the customer's environment). The shift in focus of the prototypes tends to be gradual, hence the overlapping nature of the macrophases.

If required, Preliminary Design Reviews (PDRs) and Critical Design Reviews (CDRs) are easily incorporated into the process. Usually a PDR occurs at or near the end of the first macrophase and a CDR occurs at or near the end of the second macrophase.

Each macrocycle contains several microcycles, or spirals. Each microcycle is fairly short, usually completing within 4"6 weeks. Each microcycle is focused around the production and delivery of a single incremental prototype with limited but highquality functionality. This is most commonly focused around one or a small number of use cases, but may also include specific risk-reduction activities.

Within the microcycle, the developers work to produce the high-quality object collaborations that realize the use cases of the prototype. During this process, the increasingly complete collaborations are executed dozens to hundreds of times.

This very short execution cycle - in the order of minutes to hours (at the long end) - is called the nanocycle. If an object collaboration will ultimately consist of 100 objects, experience has shown - clearly - that the best way is NOT to put down all 100 objects and say "Oh God, I Hope This Works" but instead to start with one (incomplete) object and get that to work in isolation, through model execution.

Then add another object and get them to work together. Then refine the objects, or add a third; and so on, making small enhancements to the capabilities supported in the collaboration but validating, through execution, each small incremental step. Executable modeling tools, such as Rhapsody, make this process highly efficient.

The basic premise of the nanocycles is to make tiny incremental steps and demonstrate through execution that they are right before adding the next. The so-called "agile processes" such as the Extreme Programming (XP) approach focus almost exclusively on the nanocycle scale of development.

1 | 2 | 3

Rate this article: Low High
Current rating
  • .
Embedded.com Career Center
Looking for a new job?
SEARCH JOBS

Browse all jobs

SPONSOR
RECENT JOB POSTINGS





 :