Abstracts prio.conference 2008

Keynote – Grüße aus Brickworld: Was “Patterns” in der Architektur bedeuten, warum sie dort niemand haben wollte, und warum man trotzdem nicht ohne sie auskommt // Prof. Christian Kühn
Wenn in der Softwarewelt von „Patterns“ oder „Anti-Patterns“ die Rede ist, fehlt kaum je der Hinweis auf die „Pattern Language“ des amerikanischen Architekten Christopher Alexander. Sie erschien 1978 als Buch mit dem Heilsversprechen, in 253 Kapiteln alle Fragen, die sich beim „Machen von Gebäuden“ stellen, zu diskutieren und endgültig zu beantworten. Unter Architekten galt die „Pattern Language“ von Anfang an eher als Kuriosum, und seit sich Alexander in den 1980er-Jahren in Großbritannien als Konsulent bei den fragwürdigen Versuchen von Prince Charles betätigte, in Modelldörfern die Architektur des 17. Jahrhunderts als Maßstab für die Gegenwart wiederaufleben zu lassen, war es um seine Reputation in der Architekturwelt endgültig geschehen. Neuerdings erfährt Alexanders Arbeit aus den 1960er-Jahren, in der er sich als studierter Mathematiker mit Fragen der Komplexitätstheorie und ihrer Anwendung zum Lösen architektonischer Probleme befasste, allerdings steigende Aufmerksamkeit. Der Vortrag stellt die Geschichte des „Pattern“-Konzepts von diesen Ursprüngen her als Suche nach einer Entwurfsmethode dar, die zwischen der innovativen Einzellösung und der Übernahme von bewährten Lösungsmustern vermittelt.


Vom Monolithen zu flexiblen Anwendungen // Jörg Neumann
Die Zeiten von monolithischen Anwendungen sind vorbei! Doch die Entwicklung von flexibel erweiterbaren Anwendungen ist keine leichte Aufgabe. Vom Auffinden der Add-Ins bis hin zu Absicherung reicht das Spektrum. Doch Hilfe naht: Das Managed Add-in Framework ist Teil von .NET 3.5 und enthält die Infrastruktur zur Entwicklung flexibler Software.


Smart Clients on the Road // Jörg Neumann
Viele Anwendungen kommen nicht ohne eine ständige Verbindung zum Server aus. Damit diese auch Offline funktionieren, müssen einige Hürden genommen werden. Von der lokalen Datenhaltung über die Synchronisation mit dem Server bis hin zur automatische Erkennung des Netzwerkstatus reicht das Spektrum. Doch mit Hilfe der SQL Server Compact Edition und dem neuen Sync Framework wird vieles leichter. Die Session beleuchtet die neuen Möglichkeiten und zeigt Ihnen, wie Ihre Anwendungen in kürzester Zeit auch ohne Kabel funktionieren.


WPF for Architects // Jörg Neumann
Die WPF bietet eine Fülle neuer Möglichkeiten, bricht jedoch auch konsequent mit den bisherigen Konzepten. Die Grenzen zwischen Desktop und Web verschwimmen zunehmend und Themen wie 3D-Animation, Medienwiedergabe und Sprachausgabe wandern in den Mainstream. Doch auch UI-Design, Data Binding und Deployment müssen neu bewertet werden. Die Session stellt die Kernkonzepte der WPF vor und zeigt welche Auswirkungen sich für die Anwendungsarchitektur ergeben.


Documenting Software Architectures // Jeroen van den Bos
For any serious software system, having an appropriate software architecture is crucial to its success. One of the most important steps in creating a software architecture is communicating it to all of its stakeholders. A great architecture is useless if it's not described well and understandable for everyone involved. This session shows how to create good architecture documentation based on design decisions, multiple system views and architectural styles.


Evolving Software Architectures // Jeroen van den Bos
Software systems change continually. Some changes may have been foreseen, others are completely unexpected. Most will have to be implemented as quickly as possible. Software architecture plays an important role in how to deal with and implement changes in software. This session shows how to prepare for future changes without implementing every possible feature up front as well as how to deal with unexpected changes. Techniques that are discussed and shown include variation points, refactoring to patterns and framework harvesting.


Entkopplung in verteilten Anwendungen durch Indirektion // Alexander Gnauck
Jabber/XMPP ist den meisten höchstens als Instant-Messaging-Plattform bekannt. Aber auch wenn Instant Messaging (IM) eine immer größere Rolle im Geschäftsalltag spielt, bietet Jabber weitaus mehr als IM. Jabber ist eine präsenzaktivierte Echtzeit-Plattform zur Kommunikation zwischen Menschen, aber auch Maschinen. Der Vortrag gibt eine Einführung in das Jabber-Protokoll und handfeste Anwendungsgebiete für Geschäftsanwendungen.

  • Entstehung/History von Jabber/XMPP
  • Die wichtigsten Grundlagen des XMPP Protokolls mit Telnet Beispiel
  • XMPP Namespaces
  • Sicherheit bei XMPP
  • Jabber XMPP ist mehr als nur Instant Messaging => XMPP in Business Anwendungen, Beispiele und Ausblicke.
  • Vorstellung der agsXMPP API

Architekturdokumentation in der Praxis // Markus Völter
Dokumentation ist lästig und überflüssig… naja, nicht wirklich. Vor allem für Architekturen die über eine längere Zeit verwendet werden sollen ist eine brauchbare und trotzdem nicht zu aufwändige Dokumentation essentiell. In dieser Session möchte ich deshalb auf eine Reihe von Best Practices zur Architekturdokumentation eingehen: Dazu zählen strukturierte Glossare, Patterns, Tutorials & FAQs, Diagramme und Modellierung, einige stilistische Aspekte sowie die Verwendung alternativer Kanäle wie Audio und Video.


Architektur als Sprache // Markus Völter
Essentieller Teil des Entwurfs einer Architektur ist die Definition der Architekturkonzepte – präzise und technologieneutral. In dieser Session möchte ich zeigen dass sich dazu die Definition einer formalen Sprache (Grammatik, Constraints, etc.) sehr gut eignet. Die erste Hälfte der Session zeigt ein ausführliches Beispiel, die zweite rekapituliert den Ansatz und zeigt, wie die Architekturdefinitionen automatisiert verifiziert und weiterverarbeitet werden können.


Textuelle DSLs mit Eclipse Xtext // Markus Völter
Verglichen mit grafischen domänenspezifischen Sprachen haben textuelle DSLs den Vorteil der nahtlosen Integration mit existierenden Entwicklungsinfrastrukturen (CVS/SVN diff/merge). Diese Session beleuchtet die Erstellung textueller DSLs mit Hilfe der Eclipse Xtext Tools. Markus Völter zeigt, wie Sie eine DSL und den zugehörigen Editor (incl. Syntaxhervorhebung, Code Completion, Error Checking) definieren und die erstellten Modelle weiterverarbeiten; ein Codegenerator wird C# Code aus dem Modell erzeugen.


SOA mit Web-Services in der Praxis // Nicolai Josuttis
SOA wird gerade Mainstream und eine Umsetzung mit Web-Services scheint dabei nur "natürlich" zu sein. Doch wird vielfach übersehen, dass Web-Services in der Praxis zu einigen fundamentalen Problemen und Herausforderungen führen. Nicht, dass Web-Services nicht sinnvoll seien, aber es geht eben auch nicht alles wie von selbst. Auf Basis seiner Erfahrung mit mehreren SOA-Projekten und SOA-Landschaften mit bis zu 10 Millionen Service-Calls pro Tag geht Nicolai Josuttis in diesem Vortrag auf all die Punkte ein, die bei der Umsetzung von Web-Services als SOA-Infrastruktur zwar wichtig, aber leider nicht immer ausreichend bekannt sind. Dazu gehören Themen wie Interoperabilität, die Konsequenzen von Point-to-Point-Verbindungen, WSDL-Lifecycles, der Unterschied zwischen Protokoll- und API-Standards und die Rolle von Interceptoren.


Der wahre Business Case von SOA // Nicolai Josuttis
SOA ist dabei zum Mainstream zu werden. Wirkliche Erfahrungen aus der Praxis, die über reine Piloten hinausgehen und zumindest die wichtigsten Konzepte in unternehmenskritischen Bereichen erfolgreich umsetzen, sind aber nach wie vor rar. Dafür gibt es gute Gründe, denn eine Strategie wie SOA benötigt mehrere Jahre und erst dann zeigt sich, wie gut die Konzepte wirklich funktionieren und wie ausgereift die dazu erhältlichen Plattformen und Tools sind. Eines kann jedoch schon jetzt klar festgestellt werden: Das immer wieder angeführte Schlüsselargument der besseren Wiederverwendung ist in der Praxis nicht haltbar. Genauso haben Workflow-Konzepte wie BPEL deutliche Grenzen. Womit sich die Frage stellt, ob und wo sich SOA wirklich lohnt bzw. wie man SOA am sinnvollsten einsetzt.


Roles Involved in the Architecting And Engineering of Software // Sten Sundblad
Architecture is increasingly talked about in relation to software. Unfortunately, such talk is often very general. It does not recognize the need for different kinds of architects or architecture. Often when architecture is the subject, it’s not really architecture but engineering that’s being talked about. While architecture should be concerned with the mapping of business requirements to software artifacts, engineering should be about designing how to implement that architecture. It’s important to distinguish the different kinds of arc1hitecture from each other, and also to distinguish software architecture from software engineering. When these things are mixed together rather than kept apart, the architectures involved, or the implementations, are not easily adaptable to new requirements. This talk is about five architect roles and one engineering role, all essential for the construction of the great software that the agile business needs today.


Service-Orientation and Agility // Sten Sundblad
Many will have you believe that there’s a conflict between Service-Orientation and agility. The purpose of this talk is to:

  • Show that there’s no built-in conflict between Service-Orientation and agile software developments
  • Show that SOA does not require a waterfall development process, nor a Big Design Up Front (BDUF) effort or a Grand Master Plan (GMP). To the contrary, trying to build a SOA by way of a Big Design Up Front effort and a Grand Master Plan is almost the best way you can choose if you really want to fail with SOA.
  • Show how a Service-Oriented initiative can benefit from agile development processes such as Scrum, XP, and Lean.
  • Show how agile development might considerably harm business agility if not combined with business-driven architecture.

Architecting For Organic Growth // Sten Sundblad
This talk is in many ways a continuation of my preceding talk about Service-Orientation and Agility. If you architect and build a business service from the requirements of one single application, and then make it meet the requirements from another single application, then it’s more likely than not that you’ll have to make that service grow. It’s very unlikely that it would be able to meet the second set of requirements without growth. Such growth is not planned ahead but organic. The service grows from within to make it meet new and previously unknown requirements, just as biological species might grow organically as required by their environments. However, you must architect for organic growth , even though you have no idea of what that growth is, or it won’t happen. Instead, the functionality of the service will redundantly be doubled, tripled, and so on. This talk is about how to architect individual services for organic growth, about the value of doing so, and about the harm that will come from not doing it. The ideas put forward are extremely simple. It’s just about isolating conversations from each other, thus establishing super-loose coupling between consumers of the same service.


Peer to Peer Anwendungen mit dem .NET Framework und der WCF // Dominick Baier
Traditionell sprechen Clients mit Servern oder Server mit Severn – aber selten Clients direkt miteinander. Aber gerade diese Kommunikationsbeziehung erlaubt es mächtige neue verteilte Anwendungen zu realisieren (à la MSN Messenger oder Skype, aber auch darüber hinaus). Mit der Peer-to-Peer-Infrastruktur in Windows XP, Vista und Server 2008 ist dies nun leicht. Die Protokolle erlauben es, direkte Kommunikation über Firewall und NAT Grenzen hinweg durchzuführen, um Intranet-basierte sowie globale Collaboration- und Broadcasting-Anwendungen zu realisieren. Natürlich werden hier auch unweigerlich Security-Fragen aufgeworfen. Wie P2P funktioniert und ob es für Sie nützlich und einsetzbar ist, zeigt dieser Vortrag.


Autorisierung und Identität in Service-orientierten Anwendungen // Dominick Baier
Verteilte Anwendungen werden immer komplexer. Verschiedenste Client-Typen, Netzwerk-Protokolle sowie Application Frameworks kommen zum Einsatz. Während Authentifizierung meist von der Hosting-Plattform erledigt wird, ist die Autorisierung immer noch „Handarbeit“. Rollenbasierte Sicherheit kann in diesen Systemen nicht mehr mithalten. Aus diesem Grund bietet das .NET Framework ab Version 3.0 einen neuen Autorisierungs-API rund um Tokens und Claims. Wie dieser in der Praxis funktioniert und mit anderen Techniken wie Security Token Services, Federation und Information Cards zusammenspielt, beleuchtet dieser Vortrag.


Architecture and dependencies // Patrick Smacchia
Why do we architect our software? Why do concepts such as component, abstraction, cohesion, layering or IoC are nowadays so popular? In this session, we will address these questions through the prism of dependencies. With appropriate tooling, a code base architecture can be concretely seen as a graph of dependencies. Good architectural practices and patterns result in enforcing some simple structural properties on this graph. Amongst properties exposed, we will focus on directed acyclic graph and on the need to keep components at low-level. Several real-world code bases will be dissected with the tool NDepend to illustrate principles and explanations provided.


Avoid architecture regression with active conventions // Patrick Smacchia

What the last decades taught us is that the code source is the design.
Documentation on the reasons why a particular architectural decision has been taken sits aside the code base. Quickly, such architectural documentation becomes obsolete because the cost of keeping it in-sync with the code base is too high. Intentions behind design decisions get lost and as a result, the implementation ends up violating the initial guidance. This phenomenon is known as architecture regression /erosion. In this session we will propose a way to avoid architecture erosion through the idea of custom active conventions. Concretely, custom conventions presented are written in the dedicated language Code Query Language (CQL), supported by the tool NDepend. CQL lets you write conventions about a large range of architectural principles such as as IoC, layering, cohesion, immutability/purity or encapsulation. Such convention is qualified as active because once integrated into a build process, it automatically warns as soon as it gets violated.


Addressing Non-Functional Requirements With Aspects // Gael Fraiteur
Any business application has to deal with transactions, security, logging, exception handling, and caching. Non-functional requirements affect all business functions and typically require developers to add code to hundreds of methods, resulting in error prone code duplication. Using aspects, software engineers can encapsulate non-functional requirements into special kinds of classes named ‘aspects’. Aspects make it possible to add behaviors to individual methods or to entire classes or namespaces without touching the functional code. This session gives an introduction to aspect-oriented programming by putting solutions in front of real-life problems of business applications. A few code samples will help us to abstract the problem and consider aspect-oriented software development (AOSD) from the architect’s view. Code demonstrations are based on PostSharp, an aspect framework that transforms the assemblies at build time.


Semantic contract constraints for component oriented architectures // Gael Fraiteur
How do you know, if components really fit together? Evolvable software architectures are built from components. Component services are described by separate contracts, and are developed in parallel. When it comes to integration, they need to be plugged into each other. On a syntactic level, compilers and dependency injection frameworks check, if they fit together. But how about semantics? How, for example, do specify in a formal way, what the expectations of a component in terms of input parameters are? This is where Design-by Contract (DbC) comes into play. DbC lets you define semantic constraints on component contracts to be tested for compliance automatically at runtmie by a DbC infrastructure. The talk introduces the values and virtues of DbC and demonstrates DbC based on an AOP framework.


Objekt-Relationales Mapping in modernen Architekturen // Jan Blessenohl
WCF, WPF, Silverlight: Immer neue Schlagworte, immer neue Technologien die für sich gesehen schon schwierig genug sind. Aber wie spielen denn diese Technologien zusammen? Datenzugriff wird überlicherweise in einem Data Access Layer gekapselt. Ist dieses mit Objekt-Relationalem Mapping noch sinnvoll oder nötig? Mit überraschend simplen Mitteln können einfache wie komplexe Anwendungen von dem neuen Datenzugriffsmodell profitieren. Dieser Vortrag zeigt, dass ein architektonisches Umdenken von Nöten ist, um persistente Objekte optimal in die heutigen Architekturen einzuschmiegen. Dazu muss neu über den Data Access Layer und seine Rolle nachgedacht werden. Aus solchen architektonischen Erwägungen entstehen dann neue und überraschende Anforderungen an einen Objekt-Relationalen Mapper, der Ihnen die Arbeit erleichtern und die Quellcodemenge Ihres Data Access Layers um 90% minimieren hilft.


Domain Driven Design - Zurück zu Objekten // André Fleischer
Die Ansätze des Domain Driven Design (DDD) sind nicht wirklich neu. Es wird das Geschäftsobjekt in das Zentrum der Modellierung gestellt. Doch warum werden wir dann mit einfachen Objekten glücklich? Der Vortrag stellt die Grundlagen des DDD vor und zeigt die Vorteile für Analyse, Design und Codierung auf. Auch die Frage, welche Auswirkungen sich für die Architektur ergeben, wird beantwortet. Es werden Lösungen gezeigt, wie man DDD in großen Projekten erfolgreich einsetzen kann. Das Ganze wird angereichert durch anschauliche Beispiele aus der Praxis.


Ereignisreiche Architekturen // André Fleischer
Softwaresysteme stehen vor der Aufgabe, Anfragen von Usern oder Hintergrundverarbeitung durchzuführen. Dabei wird immer auf Ereignisse reagiert. Und dabei konkurrieren diese Ereignisse immer um die viel zu knappen Systemressourcen. Eine "Event-Driven Architecture" kann helfen, auf Basis von Ereignissen und Queues ein sehr skalierbares System aufzubauen. Durch Ereignisse, Queues und einen Scheduling-Mechanismus kann die Last innerhalb des Systems verteilt werden, wobei eine Überlastung der Ressourcen vermieden werden kann. Anhand eines Beispiels aus der Praxis wird dieses Architektur-Konzept und deren Vorteile vorgestellt.


Optimierung verteilter Anwendungen mit Fokus Caching // Christian Weyer
Die "beste" verteilte Anwendung ist diejenige, die man nicht verteilt. Sobald man seine gewohnte lokale Umgebung verlässt, ändert sich die gesamte Welt. Vor allem wenn es um Geschwindigkeit und Skalierbarkeit geht, scheiden sich dann die Geister. In dieser Session versucht Christian Weyer, erprobte Patterns wie die Wahl der Kommunikationsmuster, das Mysterium Zustandslosigkeit oder das scheinbare Allheilmittel Caching auf Basis der Windows Communication Foundation (WCF) greifbar zu machen. Sehen Sie wie man mit einigen wenigen Grundprinzipien mehr aus einer verteilten Lösung heraus holen kann – entsprechende Disziplin voraus gesetzt.


Umsetzung langlaufender Geschäftsprozesse mit der Windows Workflow Foundation // Christian Weyer
Die meiste Zeit macht unsere Software... nichts. Viele Geschäftsvorfälle sind lang andauernd und die dafür geschriebenen Programme sollten deshalb diesem Umstand Rechnung tragen. In diesem Vortrag diskutiert Christian Weyer Rahmenbedingungen für lang laufende Workflows in verteilten Lösungen und wo eventuell Probleme entstehen können. Als Basis für eine mögliche technologische Lösung der Probleme wird die Windows Workflow Foundation (WF) zusammen mit der Windows Communication Foundation (WCF) aus dem .NET Framework heran gezogen – illustriert mit praxisnahen Erfahrungen.


Event Driven Architectures mit der Microsoft CCR // Andreas Schabus
In den letzten Jahren haben sich einerseits die effiziente Implementierung von SOA und andererseits die Unterstützung parallelisierter Hardware – z.B. Multi-Core – zu echten Herausforderungen für Softwarearchitekten etabliert. Eine Möglichkeit, diesen Anforderungen zu begegnen, sind ereignisgetriebene Architekturen. Derartige Architekturen lassen sich z.B. mit Hilfe der Microsoft CCR (Concurreny and Coordination Runtime) umsetzen. In seinem Vortrag gibt Andreas Schabus einen Überblick über die CCR und betrachtet die sich daraus ergebenden Optionen für die Skalierbarkeit und die Einführung von Parallelität in Anwendungen sowie die Auswirkungen auf das Programmiermodell und die Struktur der Anwendungen.


Prodiumsdiskussion: Wieviel SOA braucht meine Anwendung?

SOA ist Verheißung und Verunsicherung zugleich. Services und eine darauf ausgerichtete Unternehmensarchitektur versprechen einen entscheidenden Sprung in Richtung Flexibilisierung und Integration. Gleichzeitig ist der Begriff so weit und das Thema so komplex, dass es nur wenig Konsens gibt, wie eine Codebasis geformt und geschnitten werden soll, um überhaupt geeignete Services zu modellieren. Wieviel Umdenken ist nötig, ab wann lohnt sich der Aufwand, gibt es SOA nur ganz oder gar nicht, wie sieht es mit Alternativen aus? Das sind Fragen, die sich daher zum Hype-Thema SOA schnell einstellen. Die Diskussion auf dem Podium und auch mit den Teilnehmern möchte dieses Spannungsfeld ausleuchten und Unsicherheiten abbauen helfen.
Diskutanten: Nicolai Josuttis, Sten Sundblad, Jeroen van den Bos, Christian Weyer; Moderation: Ralf Westphal