Doing real time UML systems design using the Harmony process: Part 1A methodology consists of a language to specify elements and relations of interest and a process that tells the developer what parts of the language to use, how to use them, and when to use them.
The Harmony process uses UML and variants, such as the Systems Modeling Language (SysML) or the Department of Defense Architecture Framework (DoDAF) UML profiles, as the language. The Harmony process also specifies an integrated set of workflows to guide the developer so that they can use the UML to its fullest advantage in developing robust, capable, and safe systems.
It is basically the next revision in the ROPES (Rapid Object-oriented Process for Embedded Systems) process, discussed in the author's previous books with greatly expanded coverage for systems engineering.
There is a very broad range of development processes in use today, from "We don't need no stinking process" to very formal rigorous processes. This chapter begins the discussion with an overview of the two major variants of the Harmony process, and then gives detailed workflows for each of the phases in the process.
The Harmony Development Process
A process is an integrated set of workflows. Each workflow takes some aspect, typically a phase in the process, and elaborates what activities are necessary for the workers to accomplish, when and how they are going to accomplish it, and what artifacts they generate.
A good process provides guidance on an effective way to develop high-reliability systems at minimal costs. Far too many processes are either completely under-specify workflows or waste valuable developer time and resources doing the wrong things, such as generating reams of paperwork. A good process usually produces some paper artifacts, but only those that add value, and even then in a cost-effective manner.
|Figure 2.1. Basic elements of process|
The basic reason why we, as software and system developers, should be concerned about and use a good process is to improve our lives and our products. Specifically, a good process:
1) Provides a project template to guide workers through the development and delivery of a product
2) Improves product quality
in terms of
- Decreased number of defects
- Lowered severity of defects
- Improved reusability
- Improved stability and maintainability
3) Improves project predictability in terms of
- Total amount of effort
- Length of calendar time required for completion
4) Communicates project information appropriate to different stakeholders in ways that allow them to use it effectively
If you have a process that doesn't achieve these goals, then you have a bad process and should think about changing it for the better. These goals can be achieved with a good process or they can be inhibited by a bad process.
So, what's a process? In Harmony, we define a process to be the specification of a sequenced set of activities performed by a collaborating set of workers resulting in a coherent set of project artifacts, one of which is the desired system.
A process consists of worker roles, the "hats" worn by workers while doing various project activities. Each activity results in the creation or modification of one or more artifacts. For example, most processes have requirements capture (activity) somewhere early on before design occurs.
This is performed by a requirements analyst (worker) acting as a software modeler (a worker role), and might result in an artifact, such as a portion of the software model from which code will be generated. Figure 2.1 above depicts these fundamental aspects and relations inherent in a development process.
The activities are the tasks that the worker does in performance of his or her duty. The activities are grouped together into workflows focused around a common thread, such as the work done
1) in a development phase
2) to achieve a specific goal
3) to create a specific artifact
4) by a particular worker role. A process is normally organized into phases, which might be thought of as the largest-scale activities. Each phase is specified with one more workflows.
Each workflow is a sequenced set of activities - simple tasks performed by workers - with resulting artifacts. A common way to represent workflows is with UML activity diagrams, and that approach will be followed here.
Artifacts are the things created or modified during activities. The singular most important artifact is The System being produced but there are many others, such as the source code, the software model, the requirements specification, test vectors, and so on.
Generally speaking, every activity results in the creation or modification of at least one artifact. The Harmony process, described in more detail in the next section, is applicable to (and in current use in) projects of widely different scale.
Harmony achieves this scalability in a couple of different ways. First, the process is viewed at multiple timescales—macro, micro, and nano. Smaller projects will give much more attention to the micro and nano cycles, but as the projects grow in size, more attention is shifted to the macro scale to organize and orchestrate the entire development process.
Secondly, a number of artifacts are optional and created during the process only as needed. Hazard analysis, for example, is only used for safety-critical applications. The subsystem architecture view, for another example, is only created when systems are large enough to profit from such decomposition.
In fact, the Harmony process has two major variants: one, called the
Full Harmony process, includes a detailed systems-engineering process
that precedes the subsystem development, and another, called
Harmony-SW, focuses on software development only.