This article is part of a series about Java Forum Nord 2015, a conference that took place in Hannover, Germany. Links to articles about other talks I visited there can be found below.

Stefan Zörner is known for having built quite a nice brand around himself and his thoughts about software architecture. He is one of the few speakers I know who have a corporate identity on his website, book design and slides.

Stefan began his talk with THE question concerning software architecture: "What is software architecture?" According to Stefan, it is the sum of all important decisions. These decision are the ones that are fundamental facts and hard to change afterwards. As Grady Booch said in his "The accidental architecture": "Every interesting software-intensive system has an architecture. While some of these architectures are intentional, most appear to be accidental."

Knowing that every system has some kind of architecture, it is important to assess this architecture. This assessment includes the balance between

architectural relevant technical requirements, the architecture itself (models, concepts, decisions), best practices and the implementation of this architecture.

Also of importance is the balance between key factors of the system, such as usability, portability, maintainability, security, costs and so on.

Besides other interesting thoughts Stefan mentioned, I found one tool very important: scenarios. Scenarios are short texts like user stories that describe quality attributes of the software. They are a tool for communication between software developers to discuss consequences and solutions of specific situations. There are different scenarios like

Quality scenario: "Connection to database broke down. Within 2 seconds, the user gets informed about the consequences". A quality scenario consists of a source (person, system, event), a trigger / action, an artifact (object of the action), a response (of the system or the environment) and some kind of metric for this response, for example time. Change scenario: "The user interface should be translated to a new language. Given a complete textual translation, the programmer is able to integrate this translation into the application within 1 day." Error scenarios: "Client lost connection to backend. After reestablishing the connection, the work can go on and no data was lost."

Listening to the talk, I remembered a thought I heard earlier, maybe in a podcast or an article: Systems can be tested continuously against errors, even within a productive environment. To do that, specific scenarios are programmatically triggered and the response of the system monitored.

Other content of Java Forum Nord 2015

These are the talks I visited:

TL;DR

At Java Forum Nord 2015, Stefan Zörner talked about what software architecture is, how it can be defined in the context of a given software system and how scenarios can be used to discuss the behavior of a system.