Software Architecture

Solution architecture is an evolving discipline, as more and larger software systems are built and new challenges emerge. Software now runs on an increasingly diverse array of devices and interacts with more software components than ever before. The quality, robustness, security and adaptability of ​a software system is determined by its solution architecture and software engineering. We believe that focus on the engineering process and the architecture are required to build large software systems.

Research Ambitions

Our ambitions, framed as research questions, offer us the opportunity to shape the future. Are you a master’s student and would you like to significantly contribute to our thought leadership position in the Software Architecture domain? Please reach out to Rinse van Hees, Head of Research Software Architecture, for more information.

Emerging behavior

Infrastructure as code is one of the foundations of the new wave of web scale software systems. The infrastructure of the software systems dynamically reconfigures itself to react to the demands on the system as a whole. The system can decide to instantiate new instances of a sub component, reroute requests or build a complete copy of itself in another location. These new capabilities can have unspecified interactions with the running software itself and have undesired and unexpected results. This is called emergent behavior, behavior not explicitly built into the system. As part of our ambition to build and maintain quality software systems we feel that infrastructure as code should be part of our solution architecture and we should have the same quality guarantees as the rest of the system.

Multi paradigm programming languages

Scala is a programming language at the intersection of object-oriented programming (OOP) and functional programming (FP). As Scala is used in larger and more complex projects, how can we ensure the same level of quality and maintainability we have for more traditional languages such as Java and C#? For both OOP and FP paradigms we have metrics and quality guidelines but for multi-paradigm programming languages these are not yet available. Can we apply the current OOP and FP metrics to multi-paradigm languages? How do the OOP and FP metrics interact and compare to each other? Are there metrics unique to multi-paradigm programming languages and what can they tell us? How do metrics on multi paradigm languages signal quality? These are questions we feel are necessary to answer to maintain the same level of quality when building Scala software systems.

Are you interested in working in this area?

Don’t hesitate to reach out! Contact Rinse van Hees, Head of Research Software Architecture. Or apply directly to one of our assignments.

Software Architecture Publications