Designing for performance starts with performance architecting. In the system architecting phase, the goal is to determine the performance aspects that need to be taken into account and to balance those with other system-level concerns. The system (reference) architecture should fit with the performance required to meet market demands, and give the system its competitive edge.
A reference architecture prescribes template solutions for the architecture of the system at hand. Reference architectures are a commonly used best practice in systems engineering, in particular for product families and product lines. A reference architecture may prescribe, for instance, the structural decomposition of the system and the software architecture, as well as hardware and software interfaces. It is important to include a performance view in reference architectures, as architectural choices can significantly impact system performance aspects.
Architecting commonly distinguishes artefacts, domain models and aspect models. Artefacts, such as documentation, code and system data, describe the current system. Domain models generalize the essential domain concepts and their interrelations beyond the scope of specific systems to the domain at hand, covering all relevant disciplines. The domain models link to aspect models that enable the analysis of particular aspects of design alternatives. For performance architecting, domain models and aspect models should make performance aspects explicit, including their relation to other system-level concerns.
In current industrial practice, there are often many system variants that each have their own system performance characteristics. Developing and evaluating all system variants individually is neither efficient nor effective. Platform-based design is a best practice that targets the development of reusable components, subsystems and technology. Feature and configuration models can be added to the domain model to enable analysis and optimization over multiple system variants. For example, to determine how a design choice in a shared component affects the performance of system variants.
Budget-based design targets budget-critical aspects, including performance, and resources in a design. When budgets are integrated in a model-driven design flow, they help to speed up the development process, to better evaluate project risks and to obtain better design trade-offs that explicitly consider performance during early design.
Performance engineering for industrial embedded data-processing systems; M. Hendriks, J. Verriet, T. Basten, M. Brassé, R. Dankers, R. Laan, A. Lint, H. Moneva, L. Somers, M. Willekens: In 1st International Workshop on Processes, Methods and Tools for Engineering Embedded Systems, volume 9459 of LNCS. Springer, 2015.
Decision support methodology for evolutionary embedded system design; T. Bijlsma. B. van der Sanden, Y. Li, R. Janssen, R. Tinsel: In 2019 International Symposium on Systems Engineering (ISSE), 2019.
On the Systematic Use of Budget-Based Design; H. Freriks, M. Heemels, G. Muller, J. Sandee: Incose, 2006