Software architecture is a metaphor borrowed from civil architecture. To create a functional and aesthetic building in which one feels at home, many requirements must be met, including the function of the building, aesthetic aspects, requirements of the environment, and the needs of all stakeholders, such as the residents, neighbors, and investors. The architect's task is to find solutions for implementing these requirements, holistically balancing a complex system of forces.
Software architecture deals with similar situations in the realm of software-intensive systems. Software systems are becoming more and more complex, and the discipline of software architecture provides principles, techniques, and tools to support and facilitate their development and evolution with a holistic perspective. Our major research topics are:
- In civil architecture as well as software architecture proven design solutions to recurring design problems exist. We research on architectural patterns that describe such solutions for software systems and investigate how they can be effectively applied by software architects and developers.
- Software architecture deals with central design decisions of software systems and abstracts from details. We are interested in recording and analyzing why architectures are built in a certain way – in contrast to only modeling how they are built.
- Many complex software systems today are distributed systems. Service-oriented architectures (SOA) enable the composition of distributed systems from services: reusable, independent, and interoperable software components that provide specific functionalities (e.g., processing an order) to remotely connected computer systems. They can be used as the primary units of business processes, which are sequences of activities that need to be executed (e.g., to produce a good). SOA is currently becoming more frequently complemented by event-based architectures (EDA). Events, which are notable things that happen inside or outside a business (e.g., a product has been assembled), are the foundation of an EDA. We use SOA and EDA concepts to build adaptive architectures that are able to quickly adapt to a changing environment.
- Another major research theme is model-driven software development (MDD), a systematic approach for making software development more domain-related. MDD enables domain experts (e.g., an analyst from the banking domain) to participate in the development of software systems. The basic principle of MDD is the creation of domain-specific abstractions, e.g., by developing domain-specific languages (DSL). DSLs are tailor-made, little languages for a specific problem domain that might even be understandable for non-technical domain experts.
In these and similar research themes, our group researches on identifying and documenting architectures, its patterns and styles, developing tools and systems for supporting software architects, and analyzing existing software systems and prototypes. Our research themes are relevant for software systems in the scope of all three focus areas in the development plan of the Faculty of Computer Science. We specifically focus on Distributed Multimedia Systems in our research on SOA and EDA, as well as Knowledge-based Process Management in our research on process-based architectures and architectural knowledge (i.e., patterns and decisions).