Over a million developers have joined DZone.

Java Forum Nord 2015: 'Reflecting Software Architectures' by Stefan Zörner

Stefan Zörner talked software architectures at Java Forum Nord 2015. Learn about key factors, best practices, and more.

· Integration Zone

Learn how API management supports better integration in Achieving Enterprise Agility with Microservices and API Management, brought to you in partnership with 3scale

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

  1. architectural relevant technical requirements,
  2. the architecture itself (models, concepts, decisions),
  3. best practices and
  4. 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:

  1. 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.
  2. 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."
  3. 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:


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.

Unleash the power of your APIs with future-proof API management - Create your account and start your free trial today, brought to you in partnership with 3scale.

java,conference,integration,ei,enterprise integration,software architecture

Published at DZone with permission of Steven Schwenke. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}