SAM – Software Architecture Modelling
The "SAM" research initiative seeks to support the reflected software architect by developing, researching and evaluating a novel modeling method and conceptual modeling language addressing challenges of software architecture design, communication and maintenance. A key objective of the research initiative is to synthesize a reflected, differentiated view on software architecture and architecture modelling building on a sound empirical and theoretical foundation. By reflecting practitioner requirements in the light of scientific knowledge on software architecture and architecture modeling, SAM aspires to build a bridge between theoretical insights and practical solutions, ensuring that architects - both scholarly and practically - have the tools and knowledge to excel in their roles. Through these endeavors, SAM aims to contribute to the software architecture landscape.
Architecture as a “praxis” pertains to the planning and design of buildings and other physical structures. In Computer Science, Architecture is used as an analogy in a metaphorical sense to refer to the high-level structure and design of software systems, i.e. software architecture is assumed as a foundation for developing complex software systems.
Software architecture is seen as a multi-faceted concept in Computer Science and Business Informatics (Coulin et al. 2019):
- Multiformity: Software can come in various forms and scales, ranging from tiny embedded systems to extensive cloud applications spread across the globe. Finding a universal definition that encompasses all software architectures might not be straightforward.
- Separate the variant from the invariant: The realms of software development and design are ever-changing. With technological progress and shifting requirements, the foundational concepts and best practices of software architecture might undergo changes.
- Account for the dynamics of change: As software architectures evolve over time, adapting to new technologies, requirements, and methodologies, it's crucial to establish approaches that not only address the current state of a system but also its potential evolution. This involves understanding how architectural decisions made today can impact the flexibility, adaptability, and maintainability of the system in the future, and devising strategies to accommodate such changes effectively.
- Multiple levels of abstraction: A key research objective is to arrive at convincing concepts to represent and reconstruct software architectures.
- Metaphorical complexity: Applying the idea of architecture from the tangible realm of buildings to the more elusive domain of software might have its challenges. Unlike a building with a set physical structure, software can be more adaptable and mutable.
Objectives of the research initiative
- Conceptual clarity about software architecture: Software architecture goes beyond mere code structuring or software design. It also addresses non-functional requirements, such as security, performance, and scalability. A clear, scientifically sound definition should address these levels of complexity and serve as a reference for future discussions and research.
- Differentiated reconstruction of prospective users’ requirements: Before engaging in the evaluation or development of modeling languages, it is critical to understand the needs and requirements of actual users - the software architects and developers. Empirical studies can capture what challenges they experience in practice and what tools and techniques they would like to see in order to work more effectively.
- Thorough reconstruction of existing approaches: Current modeling languages, such as UML or ArchiMate, offer various ways to represent software architectures. But to what extent do they cover all aspects of a software architecture? A critical examination of their strengths, weaknesses and application areas is essential to identify the need for a new or complementary language.
- Dedicated domain-specific modeling language and modeling method: A dedicated language should take into account both the theoretical insights and the practical challenges. It should be able to adequately represent the complexity of modern software architectures, but at the same time be intuitive and accessible to gain wide acceptance in the developer community.
Participation opportunities in the SAM research initiative
We invite motivated and curious students to join the SAM research initiative and contribute to the evolving field of software architecture. Opportunities for thesis topics include:
- Conceptualization of Software Architecture: Engage in defining a holistic and multi-perspective definition of software architecture. This involves exploring diverse aspects and viewpoints to establish a comprehensive understanding of what constitutes software architecture, setting a foundational basis for further discourse and research in the field.
- Empirical Analysis of Software Architecture Practices: Conduct studies to understand current practices, challenges, and tools used in the industry.
- Evolutionary Software Architecture: Explore strategies for designing architectures that can adapt to changing requirements and technologies over time.
- Comparative Analysis of Existing Modeling Methods: Critically examine current modeling languages like UML or ArchiMate, assessing their strengths and weaknesses in various application scenarios.
- Integration of Non-functional Requirements in Software Architecture: Study how to effectively incorporate aspects like security, scalability, and performance into architectural designs.
This project offers a unique opportunity to work at the intersection of theoretical research and practical application, contributing to a field that is pivotal in the modern software development landscape.
Coulin T, Detante M, Mouchère W, Petrillo F (2019) Software Architecture Metrics: a literature review