Methods, Processes, Languages, and Tools for Engineering in Software Design
Due to the raising usage of software-controlled systems in our daily live, we have to relay on the correctness, safety, and efficiency of this software. We have to handle the increasing complexity of such software-controlled systems as like the rising significance satisfaction of functional and non-functional requirements. Therefor we research methods, processes, languages, and tools to develop software in an engineer-like way. This engineering process is characterized by a planed, predicable and result driven design of the system.
We as professorship of Software Engineering focus on the fulfillment of functional but also non-functional requirement during the design time of software systems. We use techniques know form model-based and model driven software development. For the model-based and model driven system development we relay e.g. on UML (Unified Modeling Language, v2.x) and DSLs (Domain Specific Languages).
The Professorship is built on three pillars: Modeling and analysis of functional and non-functional software properties, methods of engineering-like software design, and re-engineering of existing systems.
While modeling and analyzing we focus on different quality attributes like performance, reliability, maintainability, scalability, elasticity, cost-efficiency, security, and safety. Therefore, we use and extend formal analysis models e.g. Markove Chains, Queuing Networks, and stochastical process algebra. Moreover, we deal with the integration of the models to suitable simulation tools whenever it is needed.
The development of high quality software requires technical, engineer-like methods for software development to considering the complexity of today’s systems. This development depends on a set of well-defined methods that systematically capture the requirements of the system in a model first. A seconded step is to transform the model into runnable code---preferable full automated. To advance reusability and to enable scalability analysis we use component- and services-based techniques for e.g. business information systems and embedded systems
When no component or service based model exists yet, it is necessary to extract the model out of the existing systems. This is a re-engining approach. Therefore, we develop methods and tools to support software architects during the model extraction.