The Harmony process is a comprehensive, well-defined process that supports Model-Driven Development (MDD). It provides a step-by-step guide for system engineers, enabling a seamless transition to subsequent system development by using the Systems Modelling Language (SysML). This process is fundamental in managing the complexity of systems and ensuring that they meet the desired requirements.
Table of Contents
- Requirement Analysis
- System Functional Analysis
- Design Synthesis
- SW Analysis & Design
- SW Implementation & Unit Test
- Module Integration & Test
- (Sub-)System Integration & Test
- System Acceptance
- The Harmony Process: An Overview
- Use of Actors in the Harmony Process
- Interface Concept: Use of Ports
- Allocating Requirements to Model Elements
- Virtualisation of Verification Activities
- Model Execution for Verification
- Reference
Requirement Analysis
In the Harmony process, we initiate with the Requirement Analysis phase. This stage sees us diligently gathering, refining and sorting requirements into distinct categories – functional and non-functional. We find great utility in Requirement Models to help us pictorially organise this taxonomy of requirements. Subsequently, we allocate these elements to specific Use Cases.
To do this, we employ the use of System Use Case Models to cluster the requirements into relevant Use Cases. However, it’s crucial to remember that the models we derive from this phase aren’t executable. Rather, they simply serve as valuable tools to drive the progression of the project and facilitate a clearer understanding of the requirements.
System Functional Analysis
In the next phase, we dive into a functional analysis of the use cases we’ve identified during the Requirement Analysis stage. We start by developing scenarios and activities from each use case. Consequently, these activities and scenarios then shape executable models, which ultimately define the system’s behaviour for each individual use case.
Following this step, we perform a comparison of these behavioural models against the core requirements. This verification is done through model execution, ensuring their true alignment. Lastly, we allocate functional requirements to the elements of the behavioural model. This is done for the executable models of each unique use case, making sure every aspect is covered.
Design Synthesis
During the Design Synthesis stage, we actively merge the behaviours of the executable models for each unique use case into a singular, comprehensive system model, encapsulating every identified use case. Through model execution, we then validate this newly merged system model against the specific use cases and their corresponding requirements.
Subsequently, the next step in the process is to allocate specific functionalities to respective subsystems. This is achieved once we’ve successfully derived an executable system model. Following this, the transition occurs to the allocation of non-functional requirements, which are then assigned to the relevant architectural elements.
Key Elements of Design Synthesis
- Merging of Use Case Models: This involves the integration of the behaviours of the executable models for each use case into a unified system model. This model encompasses all identified use cases.
- Verification: The merged model is verified against the individual use cases and the underlying requirements through model execution.
- Allocation of Functionality: Once the executable system model is derived, the functionality is allocated to subsystems.
- Architectural Concept Model: An architectural concept model is developed based on the allocation of functionality to subsystems. This model is then verified against the merged system model through model execution.
- Allocation of Non-functional Requirements: Non-functional requirements are allocated to architectural elements.
Benefits of Design Synthesis
- Consistency: The process of merging use case models into a single system model ensures consistency in system behaviour across all use cases.
- Verification: The verification process ensures that the system model aligns with the individual use cases and underlying requirements, eliminating the risk of deviating from the original requirements.
- Effective Allocation: The allocation of functionality to subsystems ensures an efficient distribution of tasks, leading to optimal system performance.
- System Architecture Clarity: The development of an architectural concept model provides a clear representation of the system’s architecture, aiding in understanding and further development.
- Comprehensive Requirement Allocation: By assigning non-functional requirements to architectural components, we ensure that these requirements receive consideration during the system’s design process. This proactive approach enhances system robustness and reliability.
SW Analysis & Design
Transitioning from the preceding systems engineering process, we pass the resultant model as a specification blueprint to the forthcoming hardware and software development stage. Then, the software development part can, once again, follow a Model Based Development process. Nonetheless, it’s essential to note that the Harmony process doesn’t encompass how we organise the software analysis and development phase.
SW Implementation & Unit Test
This phase actively engages in the formulation of implementations for each sub-system and software component. However, the specific organisation of this implementation phase falls outside the jurisdiction of the Harmony process.
Module Integration & Test
Hardware and software components implemented and unit tested in the previous phase are integrated into modules. Module integration is verified against the system decomposition obtained from the design synthesis phase.
(Sub-)System Integration & Test
The modules are integrated into the system realisation. The integrated system is then verified against the requirements.
System Acceptance
When the integrated system successfully complies with all requirements, it signifies the successful completion of the engineering and development process. At this stage, we gladly accept the system.
The Harmony Process: An Overview
The Harmony Process is a comprehensive approach to systems engineering that emphasises the importance of balance and integration in the development of complex systems. It is a process that combines principles from both hardware and software engineering, resulting in a holistic method that prioritises both functionality and efficiency. This process is particularly beneficial in the development of large-scale, complex systems where the interaction of numerous components can become a significant challenge.
Use of Actors in the Harmony Process
In the Harmony Process, we actively model the environmental elements of the engineered system using actors. Right from the initial stages of the requirement analysis phase, we introduce these actors and allocate specific requirements to particular use cases. By utilising actors in the Harmony Process, we gain a more precise comprehension of the system’s environment and the interactions that occur within it. Consequently, thanks to this approach, we are able to design a system that’s both more efficient and effective.
Interface Concept: Use of Ports
The Harmony Process strictly follows a transparent and uncompromising interface concept, where all interactions among subsystems and between subsystems and actors occur through events shared via ports. Subsequently, this strategy guarantees that the operations of the subsystems in question are free from any side-effects. Furthermore, it ensures that communications with other subsystems or actors are smooth and effective.
Allocating Requirements to Model Elements
The Harmony Process champions the employment of stereotyped dependencies as the key to tie model elements with requirements. Moving in this direction, we craft a traceability framework tailor-made for modelling actions. This handy tool creates ease of navigation for users, deftly guiding them between model elements and their matching requirements. On top of that, this approach assures a direct connection between each aspect of the system design and a pinpointed requirement. Aside from boosting the overall efficiency, this skilled methodology significantly ramps up the effectiveness of the system.
Virtualisation of Verification Activities
The Harmony Process gives priority to pinpointing errors in the prime phases of the engineering process, acknowledging its imperative nature. Achieving this primarily calls for the virtualisation of verification activities, like examining system integration tests against decomposition artefacts. Not only does this method permit the detection of mistakes at an early stage, but it also supports their prompt remediation. Consequently, this saves considerable time and resources during the later development stages, thereby fostering efficiency in system engineering processes.
Model Execution for Verification
Model execution for verification of model transition in the Harmony process requires high manual efforts. Manual inspection and assessment of execution observations is necessary to establish evidence of correctness for a transition step. Test Conductor and Automatic Test Generator can help reduce testing efforts and automatically establish evidence of correctness for model transition steps, thus increasing the overall efficiency of the Harmony Process.
Reference
This article provides a brief and general overview of the Harmony Process. For a more detailed and accurate understanding, readers are referred to the “System Engineering Best Practices with the Rational Solution for Systems and Software Engineering Deskbook” (Release 4.1) by Hans-Peter Hoffmann. This comprehensive guide offers an in-depth exploration of the Harmony Process, providing clear, detailed information and best practices for implementing this approach in systems and software engineering. The deskbook can be accessed here.