|
|
|
||
|
"Je planmäßiger die Menschen vorgehen, desto wirksamer trifft sie der Zufall." Design der Modelle"Design" bedeutet hier nicht das "Aussehen" der Software, sondern das "Entwerfen" der Software, d.h. die Ableitung der wesentlichen Modelle aus der Spezifikation. Daran sollte auf jeden Fall der Anlalytiker beteiligt sein, der in der Analysephase des Projekts die Spezifikation mit dem Ansprechpartner des Kunden gemeinsam aufgestellt hat, weil dieser sowohl die Fachlichkeit des Kunden kennengelernt hat als auch die entscheidenden Mitglieder des Projektteams (oder zumindest den Projektleiter) wahrscheinlich schon lange kennt. Außerdem wird der Analytiker auch genug Erfahrung und aktuelles IT-Know-How mitbringen, um die wesentlichen Befürchtungen und Probleme des Entwicklerteams zu kennen. In dieser Design- oder Entwurfsphase werden vorrangig drei Hauptmodelle entwickelt: das Datenmodell, das Objektmodell der Geschäftslogik (engl. business logic, also middle tier) sowie das Präsentationsmodell. Wenn Sie die Architektur nach dem n-tier-Modell entwerfen, werden Sie bei größeren Anwendungen auch Objektmodelle im presentation tier und data tier bauen, wenn Sie auf die Serverfarmen mehrerer Unternehmen gleichzeitig zugreifen, werden Sie mit mehreren Datenmodellen arbeiten und wenn Sie verschiedene Typen von Clients (Browser, Windows, Handy) implementieren werden Sie mehrere Präsentationsmodelle benötigen. Bei den meisten Anwendungen kommen Sie aber sicherlich mit den drei Hauptmodellen aus. Die Erstellung der Modelle ist jeweils eine Wissenschaft für sich - es gibt beispielsweise Entwickler, die sich ausschließlich auf den Entwurf von Datenmodellen spezialisiert haben. Andere wiederum haben über mehrere Projekte hinweg im Laufe von einigen Jahren viel Erfahrung mit ganz bestimmten objektorientierten Plattformen gesammelt und sind von daher absolut fit im Entwurf von Klassenhierarchien. Es geht mir in dieser Abhandlung insgesamt um die systematische Arbeitsweise bei der Entwicklung von Software. Daher ist es mir sehr wichtig zu betonen, dass diese Modelle erstellt werden sollten, aber ich will hier nicht im Detail erläutern, wie das geht. Dafür gibt es bereits reichlich Literatur und Tools. Ich gebe daher nur einen kurzen Überblick.
Klassenmodell... DatenmodellIn den Anwendungsfällen werden Sie bereits Basisdaten erkannt haben, die eigentlich weitgehend konstant sind und an vielen Stellen in dem Software-System benutzt werden, z.B. Städtenamen, Verbandsmitglieder, LKW-Typen, Lagerhallenbezeichnungen. Sie werden auch schon für die Funktionsanwendungsfälle Datengruppierungen erkannt haben, die dort typisch sind und als Stammdaten für mehrere Detail- oder auch Funktionsanwendungsfälle gelten, z.B. Artikeldaten, Kundendaten, Projektdaten, Rechnungsdaten, Adressdaten, technische Datenblätter. Dies sind Ihre ersten Entitäten (engl. entities), also Einzelinformationen und Informationseinheiten. Sie werden auch schon Beziehungen (engl. relations oder relationships) zwischen diesen Entitäten erkannt haben, z.B. Stücklisten bestehen aus Artikeln, Kunden erhalten mehrere Rechnungen, Datenblätter gehören zu Maschinen. Ein Datenmodell wird auch als ER-Model (Entity-Relationship-Model) bezeichnet. Sie nutzen für die Erstellung des Datenmodells ein Werkzeug, dass manchmal in die Entwicklungsumgebung integriert ist, manchmal aber besser auch separat erworben wird. Sie können damit die Strukturen (Spaltennamen und -typen) Ihrer Datentabellen festlegen, Standardwerte für Informationen vorgeben, Regeln für Informationen definieren (z.B. "zwischen 0 und 100" bei Prozentangaben) und auch die Beziehungen zwischen den Datentabellen mitsamt der Kardinalitäten definieren. Die Erstellung des Datenmodells ist ein erster akribischer Test der Spezifikation durch Entwickler, die mit der Fachlichkeit noch nicht sehr vertraut sind. Daher sollte der Analytiker dabei sein und sehr genau darauf achten, wo seine Spezifikation wackelt und daher noch weiterer Analysebedarf besteht.
Bei dem Design des Datenmodells ist darauf zu achten, dass es vollständig normalisiert
wird, d.h. alle folgenden Normalformen durchlaufen werden: Die Normalisierung der Daten entfernt die Redundanzen, so dass die Daten klar beschrieben werden, eindeutige Beziehungen zwischen Datenteilen bestehen, die Datenintegrität gewährleistet ist, ein schneller Zugriff auf die Daten möglich ist und nicht zuletzt Platz beim Speichern der Daten gespart wird. Es handelt sich bei der Normalisierung um eine bewährte Technologie, die schon seit vielen Jahren erfolgreich von Programmierern eingesetzt wird. Wird beim Design des Datenmodells von vornherein mit ER-Diagrammen gearbeitet und jeder Datentabelle grundsätzlich ein internes Schlüsselfeld zugeordnet, so sind bereits wichtige Schritte auf dem Weg zur normalisierten Datenbank erledigt. Ich pflege meine logischen Datenmodelle - wenn irgendwie möglich - so, dass sich keine Linien kreuzen und alle Beziehungen sich 1:n von links nach rechts über das Diagramm ziehen. Dies erfordert viel Disziplin und ich kenne bereits mehrere Leute, die das ziemlich albern finden, aber es hat einen entscheidenen Vorteil: ich kann einen wichtigen Test durchführen. Wenn ich eine Konstruktion erkenne, die ich "small diamond" ("kleiner Diamant") nenne, stimmt in der Regel etwas mit den Beziehungen nicht. Oft gibt es dann eine redundante Beziehung, was von den Normalisierungsstufen nicht abgedeckt wird. Falls eine solche Beziehungskiste aber erforderlich ist, muss sie auf jeden Fall im business tier oder presentation tier plausibilisiert und damit abgedichtet werden. Als "small diamond" bezeichne ich eine rautenförmige Beziehungskonstruktion zwischen vier bis etwa acht Tabellen. ... Bei der späteren Implementierung wird zu beachten sein, dass je nach Bedarf verschiedene Methoden für den Datenzugriff existieren: bei tabellarischen Darstellungen wird eher per Abfrage (View) zugegriffen, bei einzelnen "punktuellen" Informationen wird eher eine Gespeicherte Prozedur (Stored Procedure) aufgerufen und bei komplexen Ermittlungen mit Fallunterscheidungen über mehrere Tabellen hinweg wird evtl. stufig mehrfach vom mittleren tier aus zugegriffen. ...
Modellierung
Identifikation von Klassen, Assoziationen, Aggregationen,
Generalisierung, Subsysteme
Architekturentwurf Risikomanagement: In dieser Phase Risiken herausarbeiten, die das Design des Softwaresystems birgt bzw. die anhand des Designs erkennbar werden. |
|
|