Es gibt Unmengen von Ressourcen im Web, die auf Code-Gerüche verweisen und diese auflisten. Ich habe jedoch noch nie Informationen über architektonische Gerüche gesehen . Ist das irgendwo definiert und gibt es eine Liste? Wurden formelle Untersuchungen zu Architekturfehlern und deren Auswirkungen auf die Projektgeschwindigkeit, Fehler und dergleichen durchgeführt?
Bearbeiten: Ich habe nicht wirklich nach einer Liste in den Antworten gesucht, sondern nach einer Dokumentation (im Internet oder in einem Buch) über Architekturgerüche.
architecture
code-smell
quality
Kreuz
quelle
quelle
Antworten:
Das völlige Fehlen des Gegenteils ist auch wahr.
Hier ist der Link der zehn häufigsten Fehler in der Softwarearchitektur .
quelle
Alles ist konfigurierbar . Wenn ein Architekt Ihnen mitteilt, dass sein System aufgrund seiner umfassenden Konfigurierbarkeit veränderungssicher oder in hohem Maße anpassbar ist, ist dies ein Architekturgeruch.
Das Problem ist, dass Sie wirklich nur Konfigurationsmechanismen bereitstellen können, die Ihrer Meinung nach konfiguriert werden müssen. Sobald Ihre Anwendung jedoch in Betrieb ist, ist dies nicht mehr ausreichend. Dann erweitern sich die Konfigurationsmechanismen und schließlich erhalten Sie den Inner Platform Effect.
Und dann bist du in der Software-Hölle.
quelle
Eine von einem ORM gestaltete Datenbank! Oder ein nicht relationales Datenbank-Backend, das relational sein sollte. Oder eine Datenbank, in der Sie Ansichten verwenden, die Ansichten aufrufen, die nicht nur Ansichten aufrufen, sondern auch zu langsam sind (Datenbanken müssen von Anfang an für die Leistung ausgelegt sein) (Eine Überabstraktion, wie @AmirResaei sagte, macht es leicht, sich im Code zu verirren, wenn Sie etwas reparieren müssen, das sich am Ende all dieser Ebenen befindet.)
quelle
Codegerüche und Architekturgerüche sind ein und dasselbe. Code fängt an zu "riechen", weil die Architektur nicht optimal ist.
In Martin Fowlers wegweisendem Buch zum Thema Refactoring stellt er eine Reihe von Code Smells vor und zeigt auf, wie Sie sie aus Ihrem System refactoring können. Joshua Kerievskys Refactoring to Patterns hebt diese Idee weiter hervor, indem er spezifische Architekturmuster angibt , um verschiedene Code-Gerüche zu reparieren (und wie man sie Schritt für Schritt refactoring kann ).
Das meiste Refactoring wird durchgeführt, um suboptimalen Code durch eine verbesserte Architektur zu verringern. Man könnte argumentieren, dass der einzige von Natur aus geborene "architektonische Geruch" (außer Big Ball of Mud) die BDUF-Architektur (Big Design Up Front) ist. Wo Sie versuchen, alles unterzubringen, was Sie brauchen, bevor die erste Codezeile geschrieben wird. Bei einem agilen Softwareprojekt, bei dem das Design nach Bedarf ausgeführt wird (selbst wenn Code als Design behandelt wird ), wird die Architektur organisch wachsen.
quelle
(Viele) Kopplungen - in welcher Form auch immer - lassen Architekturen riechen. Je mehr es gekoppelt ist, desto mehr riecht es.
Das heißt, überhaupt keine Kopplung riecht oft nach Leistungsproblemen.
quelle
Hier ist ein konkreter Architektur- / Designgeruch, dem ich ständig begegne: Analyse und Berichterstellung direkt aus einer Transaktionsdatenbank.
Dies ist in einigen Situationen (z. B. bei Light-Berichten) sicherlich in Ordnung, aber in vielen Fällen bestehen Konflikte zwischen den Anforderungen an die Berichterstellung und die Transaktionsverarbeitung. Da dies jedoch einfach und kostengünstig ist, werden Berichte direkt von der Transaktionsdatenbank ausgeführt. Dies verursacht auf beiden Seiten der Gleichung alle möglichen Kopfschmerzen.
Dies ist in der Regel in Enterprise LOB-Apps zu sehen, übrigens. Ich verstehe, dass viele SMBs einfach nicht über die Ressourcen oder das Know-how verfügen, um Warehouses und Datamarts zu erstellen (Cubes oder kartenreduzierte Setups vergessen), aber viele größere Organisationen, mit denen ich zusammengearbeitet habe, haben dieselben Probleme.
Beim Entwerfen eines Systems sollte der Architekt unbedingt berücksichtigen, dass Berichterstellung - insbesondere Analyseberichte - und Transaktionsanforderungen am besten als separate Probleme behandelt werden und nicht nur auf Datenbankebene zusammengefasst werden.
quelle
Ich bin nicht sicher, ob dies zu Recht auf die Architekturebene passt, aber wenn ich eine Reihe von Manager-Klassen / Modulen in einem vermeintlichen OO-Design sehe, ist dies eine Garantie dafür, dass die einzige Person, die die Architektur / das Design versteht ist der Architekt / Designer selbst ohne viel Erklärung / Lernen durch andere.
quelle
Es gibt viele Architekturgerüche, die von der Community dokumentiert werden. Eine häufig vorkommende Menge ist die folgende.
Ich habe kürzlich eine Taxonomie der Gerüche erstellt . Derzeit werden 38 Architekturgerüche und mehr als 260 Code-Gerüche dokumentiert.
quelle