Model-based Specification and Design
Software requirements are becoming increasingly complex, and the number of systems that need to exchange data is growing.
Essentials for a successful software design include
- clearly defined requirements
- a detailed description of the system behavior and the data to be processed
- a common understanding of the system to be developed
That is why we rely on a model-driven development. Our software developers use UML (Unified Modeling Language) modeling tools such as Enterprise Architect, which support the entire software development process.
Our approach to designing, developing and implementing software
This is how we conduct software development and implementation projects:
- Business process analysis – In close coordination with the clients’ respective departments, we map all processes and parties involved from business point of view. This is done both at a high level and in form of a detailed description of the individual activities. This ensures that all use cases that the system must support are fully and properly described.
- System analysis – When analyzing a system, all the use cases, the parties involved in the process and the activities are technically described from the system’s perspective. Logically separated system areas (domains) are formed, and connections to external systems are shown.
- Architecture – The requirements specified in the two previous steps are decisive for the system architecture. Based on this, our software architects develop a system design that maps the use cases and processes to functional units, the so-called components. In line with the Service Oriented Architecture (SOA) approach, these components encapsulate all their functions and provide these using cross-platform standard interfaces for other components or systems.
- Design – Before beginning the actual software development, the data entry masks of user interface (GUI) can be defined. Here, both the sequence of possible dialogs and the precise design of the masks are established. In order to manage and store the system’s data in an object-oriented way, a so-called class model is created, which maps the individual objects (e.g. car) and their attributes (e.g. motor). The design model is still independent of the technology used.
- Implementation – the actual development – and thus the choice of the technology – is done in the implementation phase. In the process, the design model is transformed into an implementation model that closely follows the chosen technology. This implementation model is then used as a basis for large parts of the actual source code. This reduces development time significantly because programming simple functions is no longer necessary and manual sources or errors are excluded. This step is performed incrementally in case additional functions are required. Such functions are carried out in the design model, transformed into the implementation model and then converted into source code. Interfaces can be partially automated as well. The software developers then add the program logic to this source code.
- Test – To ensure the system’s functionality, we create individual tests and extensive text scenarios based on use cases. The different tests are also stored in the models above mentioned and generated as a test code.