Abstracts prio.conference 2007

Methodische Architekturbewertung // Gernot Starke

Bewerten Sie schon oder raten Sie noch - ob Ihre Architektur gut genug ist? Was bedeutet überhaupt "gut" für Software-Architekturen? Der Vortrag zeigt Ihnen auf, wie Sie zu konkreten Bewertungen und Risikoanalysen Ihrer Software-Architekturen gelangen können. Architekturen zu bewerten bedeutet, Qualität mit den Augen der "maßgebenden Stakeholder" zu sehen - häufig eine zur Entwicklungssicht widersprüchliche Perspektive... Erleben Sie im Vortrag die schrittweise Konkretisierung des Begriffes "Qualität", von Qualitätsmerkmalen über Qualitätsbäume bis hin zu Szenarien wie "Buchungen-pro-Zeit" oder "Aufwand-pro-Software-Änderung". Erfahren Sie, wie Sie in kurzen Sessions mit den richtigen Stakeholdern die wichtigsten Qualitätsziele konkretisieren und prioritisieren können - um daraus die Grundlage für Ihre Architekturentscheidungen ableiten zu können.


Zuverlässige Kommunikation in verteilten Anwendungen // Christian Weyer

WCF macht die Kommunikation in verteilten Anwendungen einfach. Eigentlich. Denn was tun, wenn die Kommunikationspartner durch eine eher ungeschützte und „wackelige“ Leitung verbunden sind? Christian Weyer zeigt, welche Optionen Sie mit WCF haben, um auch in diesen Fällen die Kommunikation sicher und stabil, d.h. zuverlässig zu machen. WCF bietet soviele Optionen – da tut Anleitung Not, welche für mehr Zuverlässigkeit welche Wirkung bieten.


andrena // Jochen Winzen

ISIS steht für integrierte Prozesssteuerung und Optimierung. Monatlich werden Metriken wie Kundenzufriedenheit, Anzahl der durch den Kunden gefundenen Bugs, Testabdeckung, die Schätzabweichung und mehrere Softwaremetriken ermittelt. Diese werden zu einem Prozessqualitätsindex verdichtet, der als Basis für die Steuerung und Optimierung des Prozesses dient. Die Daten werden gegenüber dem Kunden und dem Management publiziert (transparente Produktion).

Im Rahmen des Vortrags wird dieses Vorgehensmodell am Beispiel eines konkreten Projektes vorgestellt und die Vorteile, die sich aus der konsequenten und kreativen Umsetzung dieser Arbeitsweise ergeben, präsentiert.


Architect to Test // Stephan Maier

Ob Software leicht testbar ist, ist keine Frage von Werkzeugen wie NUnit. Testbarkeit ergibt sich auch nicht einfach so, nur weil Software objektorientiert ist. Testbarkeit, d.h. die Bedingung für die Möglichkeit, um ihre Korrektheit überhaupt (automatisch) feststellen zu können, muss vielmehr ein ständiges Ziel der Planung auf vielen Ebenen sein. Stephan Maier gibt einen Überblick darüber, wo und wann Sie an Testbarkeit denken sollten, bevor das Kind in den „Fehlerbrunnen“ gefallen ist.


Automatische Web UI Tests // Christoph Wille

Auch wer guten Willens ist, noch mehr automatisch zu testen, sieht seinem Willen eine natürlich Grenze bei der Benutzerschnittstelle gesetzt. Wenn das GUI ins Spiel kommt, sind wieder manuelle Tests nötig. Oder? Chritoph Wille demonstriert, wie Sie die Korrektheit auch ihrer Web-Benuzteroberflächen automatisch prüfen können. Weniger Handarbeit ist möglich!


Automatische WinForms UI Tests // Jenö Herget

Um gute Software-Qualität erreichen zu können, sollten Applikationen nach dem Daily-Build täglich automatisiert getestet werden. Aber wie testet man am besten ein WinForm GUI? Die Applikationen laufen doch in einem anderen Prozessraum. Wie ist das überhaupt automatisierbar und mit welchem Aufwand? Jenö Herget beantwortet im Vortrag nicht nur diese Fragen, sondern wirft auch einen Blick hinter die Kulissen und zeigt wie automatisierte Testtools intern arbeiten. Er gibt auch Hinweise darüber, was bei der Entwicklung berücksichtigt werden kann und zeigt wie die Erstellung der Testscripts mit einem Recorder beschleunigt wird.


Deployment - ClickOnce // Neno Loje

Mit der steigenden Anzahl und Komplexität der Softwaresysteme steigen auch die Herausforderungen für Ihre Verteilung. Dabei sind die Kriterien, die eine gute Softwareinstallation ausmachen, über Jahre hinweg die selben: Einfachheit für den Kunden und Aufwandsminimierung auf der Herstellerseite. Mit der ClickOnce-Technologie aus dem .NET Framework 2.0 bietet Microsoft neben den klassischen Verteilungsmethoden per Installationsprogramm und Push-Technologien nun eine erweiterte Form des XCOPY-Deployments für Windows Anwendungen an, die eine nähere Betrachtung verdient. Der Vortrag zeigt ihnen anhand von praktischen Beispielen und realen Szenarien wozu Sie ClickOnce einsetzen können sowie wann es nicht sinnvoll ist, gibt Tipps und Ratschläge und nicht zuletzt eine Bewertung und Abgrenzung der Technologien zu den bekannten Alternativen.


Dependencies management and Build comparison // Patrick Smacchia

The motto 'the source code is the design' is getting widely adopted with the success of agile methodologies. However source code bases are still hard to understand. With traditional tools, it is still a burden to answer simple, yet essential, structural questions such as “Who depends on this particular part of the code?”, “Which methods of a component are using which methods of another component?”, “Is there dependency cycles and what should we do to get rid of them?”, or “Which dependencies have been created/changed/removed between these 2 versions?” In this session, we'll see how to answer this kind of questions by using a new emerging kind of tool for software developers and architects. We'll concretely use the tool NDepend especially adapted for .NET code bases. We'll also present best practices to refactor your code base to ensure sustainable software structure quality in your projects.


Design by Contract // Prof. Dr. Andreas Polze

Ob Code korrekt arbeitet, hängt natürlich von der Fehlerfreiheit seines Algorithmus´ ab. Aber auch ein fehlerfreier Algorithmus wird an ungeeigneten Eingabedaten und fehlerhaften Rückgabewerten anderer scheitern. Oder allgemeiner: Ein Algorithmus kann nur so gut sein, wie der für ihn relevante Systemzustand. Zur Steigerung der Fehlerfreiheit trägt also bei, wenn Sie sich im Zusammenhang mit Funktionalität immer auch Gedanken über deren Vor- und Nachbedingungen für den Systemzustand machen. Andreas Polze macht diese eher theoretischen Überlegungen plastisch und zeigt Ansätze, wie Sie auch mit heutigen .NET-Sprachen schon mehr Fehlerfreiheit deklarativ erreichen können.


Fortgeschrittenes Unit Testing // Ralf Westphal

Software soll funktional sein. Alle Funktionen sollen korrekt arbeiten. Wie aber sichern Sie diese Korrektheit zu? Nur mit automatischen Tests ist das nachvollziehbar und verlässlich möglich. Das ist mit heutigen Testrahmenwerken eigentlich ganz einfach – und doch lauert der Teufel im Detail.Ralf Westphal führt vor, wie Sie Funktionalität punktgenau und isoliert mit Interfaces und Attrappen testen und auch asynchrone Vorgänge nicht ungeprüft lassen müssen. CbD, IoC, NMock und WaitHandle sind die Stars dieses Vortrags.


FxCop vs. CQL // Patrick Smacchia

The FxCop tool is a blessing for every .NET developer that cares about quality. The FxCop authors even recently got awarded the Microsoft Engineering Chairman's Award, the highest award for engineering group employees worlwide. FxCop consists of an extensible set of around 200 rules that automatically check, if code correctly uses the .NET framework and abides by some good practices.
The next step is to allow .NET developers to write their own rules for their own frameworks and applications. Such custom rules might be “My UI layer should not directly access my DAL layer”, “My methods should not be too complex, except the ones automatically generated”, “My fields' names should abide by these particular regular expressions”, “Clients of my framework should use my factories to instantiate my classes”, or “The code of these particular classes is sensible and I want to be advised whenever it is updated.”
In this track, we'll see how to write such custom rules with the FxCop framework. We'll also present some new kind of specific language dedicated to query and constraint code. We'll focus our attention on the Code Query Language (CQL) supported by the tool NDepend. CQL is to code bases what SQL is to relational databases. We'll see how it is especially designed to simplify writing custom rules.


Identity Management // Christian Arnold

Die Sicherheit ist eines der offensichtlichsten Qualitätsmerkmale für Software. Dazu gehört auch die Authentifizierung der Anwender. Wer ist es eigentlich, der da Ihre Anwendung nutzt? Kennen Sie ihn schon? Sind die Angaben zu seiner Person glaubwürdig? Können Anwender auch mit weniger Passwörtern mehr Applikationen sicher nutzen? Das sind Fragen, die Christian Arnold in seinem Vortrag beantwortet. Sein Thema ist für Microsoft unter den Stichworten „Federated Identity“ oder „Single sign on“ oder „CardSpace“ gerade heiß.


Ist Qualität messbar? // André Fleischer

Seitdem Probleme mit Hilfe von Softwaresystemen gelöst werden, ist man auf der Suche nach Verbesserungen. Die Verbesserungen betreffen das Projektmanagement, den Entwicklungsprozess und die eingesetzten Techniken. Um Verbesserungen feststellen zu können, müssen die Auswirkung von Veränderungen bestimmt werden. Diese Veränderungen können mit Hilfe verschiedener Kennzahlen, den Metriken, bestimmt bzw. gemessen werden. Für die Beurteilung von Prozessen, z.B. nach CMMI (Capability Maturity Model), ist das Steuern durch Metriken unerlässlich. Doch wie sieht dies auf der technologischen Seite aus und wie kann man Verbesserungen und die Qualität der Software messen? Dieser Vortrag stellt eine Auswahl von Metriken vor, zeigt deren Praxisrelevanz und skizziert deren Einsatz, sowie Vorgehensweisen, wie mit Hilfe von Metriken Software-Qualität gesteigert werden kann.

Der Vortrag zeigt anhand praktischer Erfahrungen wie Metriken gebildet werden können, damit der Teilnehmer "gleich morgen" mit dem Thema Metriken starten kann, um die Qualität seiner Software zu steigern.


Organizing software maintenance // Jeroen van den Bos

There's a lot of information available on how to create good software, from design techniques to development processes. But what about existing software? How can you reliably modify an existing system that doesn't have any unit-tests and comes with outdated documentation? This session deals with checking and improving the quality of existing and evolving software systems.


Production debugging // Ingo Rammer

Ihre Anwendung läuft beim Kunden und zeigt dort ein „merkwürdiges Verhalten“? Sie haben es schwer, dieses Verhalten unter Entwicklungsbedingungen zu reproduzieren? Dann kann Ihnen Ingo Rammer helfen. Er demonstriert, wie Sie die Fehler/Schwachstellen auch in Produktivsystemen finden, um wieder alle funktionalen und nicht-funktionalen Anforderungen zu erfüllen.


Qualität sichern durch einen automatischen Build-Prozess // Neno Loje

Softwarequalität wollen alle. Wer will schon faulen Code haben? Doch Qualität resultiert nicht nur aus einer Maßnahme, sondern aus einem ganzen Bündel. Der Vortrag stellt Ihnen den Werkzeugkasten für Qualitätssicherung vor und zeigt was davon sich pragmatisch mit angemessenem Aufwand in die Praxis umsetzen lässt. Kernstück dabei ist der Buildprozess der als aktuelles Qualitätsbarometer fungiert und den stätigen Entwicklungsfortschritt sichtbar (und testbar) macht. Auch werden dabei die Werkzeuge vorgestellt, die der Autor verwendet der grauen Theorie Leben einzuhauchen und es Ihnen ermöglichen in Ihren Projekten das Thema Softwarequalität zu leben


Requirements Engineering // Andreas Bräsen

Welche Anforderungen soll Ihre Software eigentlich erfüllen? Haben Sie dem Kunden wirklich alle für ihn relevanten Qualitätskriterien entlockt? Die Qualität einer Software steht und fällt mit der Sicherheit, ob auch das aus Kundensicht wirklich Notwendige implementiert wird. Das betrifft funktionale wie nicht-funktionale Anforderungen. Andreas Bräsen nimmt sich dieses zentralen und doch gleichzeitig ungeliebten Themas an und demonstriert einen auch für Entwickler pragmatischen Ansatz zum Umgang mit Kundenanforderungen.


Responsiveness steigern mit Multithreading // Bernd Marquardt

Kunden wollen immer nur mehr Performance? Nein! Oft wollen sie nur, dass das Antwortzeitverhalten einer Anwendung besser wird. Dafür liegt die Lösung aber nicht unbedingt in schnelleren Algorithmen oder einem Rückgriff auf Unsafe oder Unmanaged Code, sondern in der Parallelisierung der Verarbeitung. Bernd Marquardt zeigt, was der .NET Framework dafür bietet und wie Sie Fallgruben umgehen. Denn zur Parallelisierung gehört mehr, als einen Hintergrundthread zu starten.


Scrum - Projektmanagement muss nicht schwer sein // Andreas Bräsen

Mit der Projekt-Management Methode Scrum managen Sie strukturiert, schnell und einfach (Software-)Projekte. Ob im Team oder alleine: Scrum sollte in keinem Entwickler/Projektleiter-Werkzeugkasten fehlen. Mit Scrum bekommen Sie jederzeit klare Antworten auf Fragen wie “Wann ist welches Feature zu realisieren?”, “Wo steht das Projekt?”, “Welche Probleme haben wir?”, “Wie weit ist das Feature umgesetzt?” und viele andere, ohne auf Ihr Bauchgefühl vertrauen zu müssen. Das ist einfacher als Sie denken.


Sicherheit in verteilten Applikationen // Dominick Baier

Es gibt keine verteilten Anwendungen ohne Sicherheit-Anforderungen - und Begriffe wie Authentifizierung, Autorisierung und sichere Kommunikation stehen bei diesen Betrachtungen im Mittelpunkt. Dazu bedingt die Service Orientierung immer komplexer werdende Kommunikations-Beziehungen und Sicherheits-Szenarien. Mit der WCF verfügen wir über einen Kommunikations-Stack, der diese Anforderungen für die unterschiedlichsten Anwendungstypen realisieren kann. Doch gerade durch diese Flexibilität ergibt sich eine manchmal verwirrende Komplexität und es ist nicht immer einfach die richtige Technologie aus den vorhandenen Möglichkeiten für das konkrete Szenario auszuwählen. Dieser Vortrag betrachtet die generelle WCF Sicherheits-Infrastruktur sowie ihrer Erweiterungspunkte um WCF in vorhandene Umgebungen zu integrieren. Weiterhin werden typische Sicherheits-Aufgaben und -Szenarien besprochen, sowie mögliche Fallstricke und Probleme die dabei auftreten können.


Soft Skills // Renate Klein

Software wird in Teams entwickelt. Kommunikation zwischen Menschen ist daher ihr Fundament. Soll die Softwarequalität steigen, dann sind nicht nur bessere Werkzeuge gefragt, sondern auch eine bewusstere und wirksame Gesprächskultur. Die gezielten Wissensvermittlung und Reflektion durch Sprache ist dabei besonders wichtig. Der Vortrag macht die formellen und informellen Kommunikationsprozesse während der Softwareentwicklung bewusst und gibt erste Handreichungen, wie bei ihnen angesetzt werden kann, um den Entwicklungsprozess effektiver zu machen.


Softwarequalität durch das richtige Vorgehen steigern // Christian Bunse

Komplexe Softwareprojekte erfordern ein systematisches/planbares Vorgehen. Das ist jedoch alles andere als einfach: Die Komplexität eines Softwareproduktes spiegelt sich in der Komplexität der Entwicklungsprozesse wider. Daher kann das inzwischen beträchtliche Angebot an Vorgehensmodellen nicht überraschen. Das große Angebot und die häufig emotional geführten Diskussionen zeigen, dass bez. der Systematik der Softwareentwicklung keine Einigkeit besteht. Unbestritten ist aber der Nutzen von Vorgehensmodellen zur Qualitätssteigerung. Christian Bunse gibt in diesem Vortrag einen Überblick zum Thema Einsatz von Vorgehensmodellen sowie praxisnahe Tipps für die Auswahl und Anpassung von Modellen an den Unternehmenskontext.


Usability Engineering // Markus Flückiger

Funktionalität kann sich in der Benutzerschnittstelle so oder so darstellen. Zur Qualität einer Software trägt also nicht nur bei, ob eine Funktionalität überhaupt vorhanden ist, sondern auch wie einfach dem Anwender der Umgang mit ihr fällt. Ist eine Funktionalität schlecht nutzbar, ist ihr Wert gering und die Unzufriedenheit des Kunden groß. Markus Flückiger bricht daher eine Lanze für mehr Augenmerk auf das Wie von Funktionalität. Ob Funktionalität gewünscht ist, klärt die Anforderungenanalyse. Wie sich aber gewünschte Funktionalität dann optimal dem Anwender präsentiert, das ist Thema des Usabiltiy Engineering.


CardSpace // Dominick Baier

Durch die Integration von CardSpace in eigene Anwendungen kann man die Sicherheit der Benutzer sowie seine eigene drastisch erhöhen. Dies wird durch die Reduzierung der benötigten Benutzerkonten und Eliminierung von Passwörtern und den damit verbunden Angriffen wie Phishing erreicht. Das klingt toll – aber wie funktioniert das? Dieser Vortrag erläutert auf praktische Art und Weise die Technik hinter CardSpace sowie die verfügbaren APIs. Weiterhin werden eine Reihe von typischen Aufgabenstellungen, wie z.B. Implementieren der Registrierungs/Login-Logik, das Mischen von Passwort und CardSpace basierter Authentifizierung, Handhabung von verlorenen Karten sowie die Auswahl des richtigen Zertifikats, beleuchtet.