Architektur
Was ist Softwarearchitektur ?
Die Softwarearchitektur wird durch folgenden Faktoren beeinflusst:
- Architektur der Hardware
- Methode der Softwareentwicklung (z.B. agil)
- Bedeutung und Umfang der Tests
- Ausmaß der Integration in vorhandene EDV- Landschaften
Blaupausen moderner Architekturen
Unter folgendem Linkt stellt Microsoft einen Satz von Blaupausen für moderen, Cloud- basierte Architekturen bereit: Blaupausen für Softwarearchitekten
Grundregeln für den Entwurf einer Architektur
Separation of Concerns (SoC)
Aufteilen bezüglich der Zuständigkeitsbereiche wie z.B. im WebClient: HTML/CSS/JavaScript. Oder Aufteilung in Schichten wie Data Access Layer (DL), Business Layer, Service Layer... Q: Wikipedia
CQS
CQS ist ein Akronym für Command Query Separation. Es bezeichnet ein Prinzip des Softwareentwurfs, das von Bertrand Meyer, dem Erfinder der objektorientierten Programmiersprache Eiffel entwickelt wurde.
CQS unterteilt die Menge der möglichen Operationen auf Geschäftsobjekte in die beiden Klassen Abfragen und Kommandos.
Abfragen verändern den Zustand der Geschäftsobjekte nicht. Durch ihre Anwendung werden Daten über die Geschäftsobjekte
gewonnen. Wenn Ta qA(...)
und Tb qB(...)
zwei Abfragen sind, die in der Reihenfolge
var ra1 = qA(...); var rb1 = qB(...); var rb2 = qB(...); var ra2 = qA(...)
ausgeführt werden, dann
gilt stets: ra1 == ra2 && rb1 == rb2
Beispiele: TBo GetBo(T id); // Liefert Geschäftsobjekt mit der ID id zurück
Kommandos verändern den Zustand der Geschäftsobjekte. Ihre Ausführungsreihenfolge ist von Bedeutung.
Wenn cmdA(...)
und cmdB(...)
Kommandos sind, dann kann der Zustand des Objektmodells
nach unterschiedlichen Reihenfolgen der Kommandoausführung verschieden sein:
cmdA(...); cmdB(...) // Zustand ist jetzt Z1
cmdB(...); cmdA(...) // Zustand ist jetzt Z2
Es ist nicht garantiert, das Z1 == Z2
gilt !
Da der Zustand des Objektmodells von der Ausführungsreihenfolge der Kommandos abhängt, wird auf die Rückgabe
von Zuständen durch Kommandos verzichtet, da die unmittelbare Rückgabe eine die Bindung eines Objektzustandes
suggeriert an die Ausführung des Kommandos sugerriert, die jedoch unrealistisch ist.
In C# haben Kommandos damit immer den Rückgabetyp void
,
in VB.NET werden Kommandos durch Sub
implementiert.
Beispiele: void CreateAndAdd(TId id) // erezugt ein neues Objekt und fügt es einer Collection zu
Repository- Schnittstelle, die nach dem CQS- Prinzip erstellt wurde:
// Neues Repository für Benutzer anlegen var repo = new UserRepository(); // Kommando zum Anlegen und eines neuen Benutzers repo.CreateAndAdd("Anton"); // Abfragen, ob Benutzer nun im Repository existiert if(repo.Any("Anton")){ // Anton existiert und kann nun konfiguriert werden var userBld = repo.GetBuilder("Anton"); // Konfigurationskommandos userBld.setRole("Admin"); userBld.setBirthday("1999-12-31"); repo.SubmitChanges(); // Frisch erstelltes und fertig konfiguriertes Objekt für Anton abfragen var Anton = repo.GetBo("Anton"); }
CQRS
CQRS ist ein aus dem CQS- Prinzip abgeleitetes, asymetrisches Schichtenmodell. Dieses sieht nur noch für die Implementierung der Kommandos die explizite Entwicklung eines Business Layers vor. Die Abfragen können hingegen dierekt ans den Data Access Layer deligiert werden. Hierdurch wird der Implementierungsaufwand minimiert und die Ausführungsgeschwindigkeit von Abfragen beschleiunigt.
Law of Demeter (Prinzip der Verschwiegenheit)
Ein Client (=Objekt) sollte nur die unmittelbaren Dienste (= offentliche Methoden) eines Servers aufrufen.
Dienste, welche der Server in seiner Implementierung nutzt, sollten über seine angebotenen Dienste nicht
offengelegt werden. Q: Wikipedia
→Implementierung mittels Wrapper
Don't repeat yourself (DRY)
Vermeiden sich wiederholende Codeabschnitte. In der prozeduralen Programmierung durch Methodenextraktion und Parametrisierung umsetzbar. Konvention vor Konfiguration ist ein auf DRY aufbauendes Paradigma, welches z.B. durch Namenskonventionen sonst notwendige Konfiguration von Softwarepaketen vermeidet, und in ASP.NET MVC eingesetzt wird.
Ist ein Akronym für die Anwendung der folgenden Pakets von Grundregeln beim Entwurf und der Implementierung:
. Q: Wikipedia