System design and architecture
Aspects of system design
The design of a system defines its structure from different perspectives or aspects. The functional view describes which functions are necessary to fulfil the requirements. For instance, almost every project requires a function for authenticating and authorising users, whereas a sophisticated authorisation model is not necessarily required in every project. The architectural view identifies the necessary components of the system and their interaction, as well as the allocation of functions to components. The above example would imply that the “User Manager” and “Privilege Manager” components exist, which lead to the “Authentication” and “Authorisation” functions respectively. Both components should only exist on one “server”. The logical view takes care of the data flow between the components and the necessary interfaces. For example, “User Manager” would offer a specific API for password checking and “Privilege Manager” an API for querying a user’s enabled permissions. The physical view defines which components are implemented how, which concrete communication mechanisms are used and on which endpoints the components run. To linger with the example a moment longer, the server could be implemented as a Java application with a REST interface and made available in a docker container.
We work with you to develop a future-proof system design that meets your current requirements and is best prepared to change your requirements or framework conditions through the use of best practices and proven design paradigms. In order to weigh up design alternatives or minimise the risk of a (theoretical) design decision, we can also validate a design alternative using a demonstrator or a small prototype, depending on the expected effort. The user focus in the system design clearly relates to software. In order to be in the position to assess the properties of the physical view and thus meet our requirements as a system vendor, we do not shy away from contact with hardware. We don’t solder circuit boards, but we know how to build a computer – be it motivated by extensions of our own self-managed data centre or by customer requirements, e.g. the selection of SoC platforms. Even hardware-acceptance communication protocols are not alien to us.
Regardless of whether you entrust us with a specific task in the area of system design for your own project (depending on the requirements and project stage) or whether you entrust us with a complete system development – we keep the design aspects in mind and ensure a solid basis for the actual implementation, also accompanying the project. We are happy to adapt to your tool landscape or document the design with standard procedures such as UML.