Gibt es ein Anti-Pattern, das ein historisch gewachsenes Softwaresystem beschreibt, bei dem mehrere Entwickler dem System gerade neue Funktionen hinzugefügt haben, aber niemand wirklich ein Auge auf die Gesamtarchitektur hat und auch keine Umgestaltungen vorgenommen wurden?
Ich denke, dies passiert, wenn das Management / der Kunde ständig nach neuen Funktionen fragt und niemand jemals etwas überarbeitet, sondern nur das hinzufügt, was andere Entwickler zuvor getan haben.
Ein Grund könnte auch sein, dass der Entwickler nur mit dem Softwaresystem überfordert ist und nicht wirklich versteht, wie es derzeit funktioniert, und dann seinen Code ganz am Ende hinzufügt / klebt (anstatt den Code umzugestalten und zu ändern).
Mit der Zeit wird es immer schwieriger, das System zu warten.
(Ich frage mich, ob es Bilder für diese Art von Anti-Pattern gibt, um dies keinem Programmierer klarer zu machen - wie ein Auto, das durch Hinzufügen von immer mehr Funktionen ohne Berücksichtigung des Gesamtdesigns gebaut wurde. Als ob jemand das Bedürfnis hätte, sich abzuschleppen Anhänger während der Rückwärtsfahrt und dann schweißt ein Ingenieur einfach eine Anhängerkupplung an die Vorderseite des Autos.
Antworten:
Sie beziehen sich auf technische Schulden .
Wir alle haben technische Schulden in den Produkten, die wir im Laufe der Zeit entwickeln. Refactoring ist eine der weit verbreiteten und wirksamen Möglichkeiten, um diese technischen Schulden zu reduzieren, obwohl viele Unternehmen ihre technischen Schulden nie abbezahlen. Diese Unternehmen neigen dazu, ihre Software in den kommenden Jahren als äußerst instabil zu empfinden, und die technischen Schulden werden so grausam, dass Sie sie nicht schrittweise abbezahlen können, da es zu lange dauern würde, sie auf diese Weise abzuzahlen.
Technische Schulden haben die Bezeichnung, weil sie dem gleichen Schuldenverhalten folgen. Sie erhalten die Schulden, und solange Sie weiterhin Geld ausgeben (Funktionen erstellen) und diese Schulden nicht abbezahlen, wird sie nur wachsen. Ähnlich wie bei Schulden kommt man bei zu großen Schulden an Punkte, an denen man sie möglicherweise vollständig mit gefährlichen Aufgaben wie vollständigen Umschreibungen löschen möchte. Ebenso wie die reale Verschuldung beeinträchtigt sie, da sie zu einem bestimmten Zeitpunkt anfällt, Ihre Fähigkeit, insgesamt Geld auszugeben (Features zu erstellen).
Nur um einen anderen Begriff in die Mischung zu werfen, bezieht sich Kohäsion darauf, wie gut ein System, Mikro auf den Linienpegel oder Makro auf den Systempegel, zusammenpasst. Bei einem System mit hohem Zusammenhalt passen alle Teile sehr gut zusammen und sehen so aus, als hätte ein Ingenieur alles geschrieben. Ihre obige Bezugnahme auf jemanden, der nur seinen Code ans Ende klebt, würde den Zusammenhalt dieses Systems verletzen.
Technische Schulden verwalten
Es gibt viele Möglichkeiten, technische Schulden zu verwalten. Wie bei echten Schulden ist es jedoch am besten, diese häufig zurückzuzahlen. Leider ist es wie bei einer echten Verschuldung gelegentlich besser, kurzfristig mehr zu erwirtschaften, wenn beispielsweise die Markteinführungszeit für ein Feature Ihren Umsatz verdoppeln oder verdreifachen kann. Der knifflige Teil besteht darin, diese konkurrierenden Prioritäten abzuwägen und herauszufinden , wann sich der ROI der Schulden für das gegebene Feature nicht lohnt.
Manchmal lohnt es sich also, die Schulden für einen kurzen Zeitraum aufzubauen, aber das ist selten der Fall, und wie bei allen Schulden gilt: Je kürzer der Zeitraum, desto besser. Wenn Sie also (möglichst schnell ) technische Schulden angehäuft haben, müssen Sie diese zurückzahlen. Dies sind die gängigen Ansätze:
quelle
Ihre Beschreibung passt zu Foote und Yoders Big Ball of Mud :
quelle