We conduct research in the following major areas.
There is a growing awareness of the importance of Architectural Knowledge (AK) in the software architecture community. Within the context of the Griffin project, we investigate this notion of AK and do this in the context of an envisioned architectural knowledge grid. This knowledge grid is an omnipresent knowledge infrastructure for capturing, publishing, sharing, and managing architectural knowledge. So far, we have investigated what AK entails, how this can be captured in architectural documentation, the relationship between architectural analysis and AK, and architectural decisions, which are an important form of AK. Currently, we are investigating the AK sharing and reusing across organizations, especially in geographically distributed context using various AK domain models. The objective of this research is to (1) predict the AK sharing quality more accurately, (2) facilitate the AK sharing activity before real sharing cost was spent, and (3) take the user involvement into account for the AK sharing in different sharing context, and (4) carry out and evaluate AK sharing AK in industrial organizations.
|Architecture Reasoning Process|
Architecting is to a large extent a decision-making process. Although many established architecting approaches exist in the literature, little guidance can be found to support the reasoning part of decision-making. To fill this knowledge gap, we conducted a survey with industrial software architects to find out how they reason in real software projects. We derived reasoning best practices that can support especially inexperienced architects with optimizing their decision-making process. In addition to analyzing the innate reasoning processes of architects, we have been conducting multiple case studies to examine the influence of systematic and continuous architecture decision documentation on the reasoning activities followed by inexperienced software engineers. Furthermore, we have developed a documentation framework for architecture decisions, consisting of five viewpoints, each dedicated to specific decision-related concerns. Finally, we developed the Open Decision Repository (ODR), a tool for supporting decision documentation.
|Architecting Embedded Systems|
Embedded Systems (ESs) have become pervasive in modern society. However, the development of these systems is still challenging, as their complexity grows together with the innovations and necessities of modern society. In order to facilitate the development of ESs and support the guarantee of quality within their design, we are performing research on two topics: process models and the architecting process. The first research aims at developing a new process framework mechanism for defining and handling process components, with respect to specific requirements that apply in the domain of ES development, i.e. the multi-disciplinary, multi-lifecycle, multi-site and multi-organisation development. Such a framework is expected to reduce the effort for process engineers in designing and applying high-quality processes. The second research aims at defining an architecting process for designing a special type of ES, critical embedded system, in which the assurance of critical quality attributes plays an important role, once, in case of failure, this type of systems may cause serious damage to the environment, to human lives, to expensive equipment, or non-recoverable financial losses.
|Quality Metrics and Analytics|
The object-oriented paradigm is a dominant way in developing software systems. A basic argument of developers in favor of object-orientation is that it is closer to the way that human brains think, i.e. in terms of objects and actions. However, in order for object-oriented software development to preserve its main advantage, the developed software should stay modular and understandable. The group's focus in terms of object-oriented design is on methods and techniques that guarantee the internal and external product quality. Our work until now has been focused on GoF design patterns, code refactoring, and quality assessment. We have applied our research on some emerging application domains like game development. As future development, we aim at investigating approaches on artifact traceability, the validation of existing metrics, the introduction of new metrics and metric suites, and continue the work of the group on patterns, refactorings, component extraction and OO game development.
Technical debt, which refers to immature software artifacts that fail to meet the required level of quality, has recently been attracted increasing attention from both academic and industry in software engineering field. To date, little work has been done on technical debt at architecture level, i.e., architectural debt. In the short term, architectural debt may be incurred to fulfill specific business advantages; and, in the long term, architectural debt can to a great extent reduce the maintainability and evolvability of a software system. Our group focuses on architectural debt management which main goal is to achieve the balance between value and cost of architectural debt. Until now, we have proposed a conceptual model of architectural debt and an architectural technical debt management process applying this ATD conceptual model in order to facilitate the decision-making in a value-oriented perspective of architecting. Our current work is focusing on identifying, measuring, and documenting architectural debt.
|Architecture-Based Self-Adaption for Multiple Concerns|
Self-adaptive systems are resilient and flexible systems capable of autonomously adapting themselves. Due to the continuous evolution of software-intensive systems, a self-adaptive system changes its behavior to deal with uncertain operating conditions such as unpredicted system faults, changing stakeholders needs, and changing environment and system characteristics. In this project we study a systematic approach for self-adaption of multiple concerns at runtime. The research is driven in the domain of healthy ageing and smart home services for elderly people. The particular focus is on two main concerns: robustness of solutions when the technology is scaled up, and openness for dynamic service selection and integration of new services. We study and develop models that capture the required knowledge of these concerns and investigate how these models can be employed at runtime to support tradeoff analysis and conflict resolution.
Critics of traditional architecting processes argue that they tend to employ a Big Design Up-Front (BDUF) approach leading to excessive documentation and implementation of possibly unneeded features, which introduce additional development effort. As an alternative to BDUF, agile development is proposed, which mainly focuses on adapting to change and delivering products of high quality through simple work-processes. Freudenberg and Sharp listed the top 10 burning research questions in the agile development community collected from about 300 practitioners at the XP 2010 conference, and the question “Architecture and agile - how much design is enough for different classes of problem?” is ranked in the second position. Many approaches, techniques, processes, and tools have been proposed and developed to support either the use of software architecture or the use of agile methods in software development. However, ways to combine them is a challenging issue, which has been heavily debated over the past years.
In a recent study we showed that many challenges in software development emerge at the limit between systems, and not inside a single system itself. One first step towards solving this problem is an developing infrastructure that treats the entire codebase and associated artifacts as a single ecosystem (One company which treats its entire source code in this manner is Google). By analyzing the entire ecosystem in a holistic manner and applying data science to software engineering artifacts, we can (1) Provide a more efficient way to get feedback about which are the weak points of the development process (2) Detecting and preventing intra- and inter-project quality problems, and (3) Improving software engineering tools beyond the capabilities of the programming language.
Cloud computing has become very popular in the last years due to its well documented benefits to organizations and individuals with respect to transferring capital to operational expenses, potentially unlimited access to computational resources in a self-service manner, and utility-based charging for the use of these resources. In this respect, cloud computing offers a platform for innovative software systems that are partially or completely implemented around cloud offerings. Challenges in this effort arise from the Everything as a Service (*aaS) nature of the platform and the software that is to be developed for it, the volatility of the perceived performance due to its multi-tenant characteristics, the need for cost awareness during operation/execution, and the heterogeneous nature of available offerings for system distribution. These challenges need to be addressed irrespective of the adopted cloud deployment model (public, private, or hybrid), and of whether a system is developed natively on the cloud or migrated to it later. Our research aims to provide the tools and concepts required for engineering software in this context.
|Completed Research Projects|
More information about the completed research projects by SEARCH group.