Читать книгу Prinzipien des Softwaredesigns - John Ousterhout - Страница 9

Definition der Komplexität

Оглавление

Für dieses Buch definiere ich »Komplexität« eher praktisch: Komplexität ist all das, was mit der Struktur eines Softwaresystems in Zusammenhang steht und dieses schwer verständlich und schwer anpassbar macht. Komplexität kann viele Formen annehmen. So kann es beispielsweise schwierig sein, zu verstehen, wie ein bestimmter Codeabschnitt funktioniert; es kann viel Aufwand erfordern, eine kleine Verbesserung umzusetzen, oder es ist nicht klar, welche Teile des Systems für die Verbesserung angepasst werden müssen; es kann schwer sein, einen Fehler zu beheben, ohne gleich einen neuen Fehler einzubauen. Lässt sich ein Softwaresystem nur schwer verstehen und anpassen, ist es kompliziert – lässt es sich leicht verstehen und anpassen, ist es einfach.

Sie können die Komplexität auch unter Kosten- und Nutzenaspekten betrachten. In einem komplexen System ist viel Arbeit erforderlich, um selbst kleine Verbesserungen umzusetzen. In einem einfachen System können größere Verbesserungen mit weniger Aufwand erreicht werden.

Komplexität sieht man sich beim Entwickeln zu einem bestimmten Zeitpunkt gegenüber, wenn man versucht, ein bestimmtes Ziel zu erreichen. Sie hängt nicht zwingend mit der Gesamtgröße oder der Gesamtfunktionalität des Systems zusammen. Häufig wird das Wort »komplex« genutzt, um große Systeme mit ausgefeilten Features zu beschreiben, aber wenn es einfach ist, an solch einem System zu arbeiten, ist es – im Rahmen dieses Buchs – nicht komplex. Natürlich arbeitet es sich mit so gut wie allen großen und ausgefeilten Softwaresystemen schwer, daher erfüllen sie auch meine Definition von Komplexität, aber das muss nicht zwingend der Fall sein. Es ist auch für ein kleines und schlichtes System möglich, ziemlich komplex zu sein.

Komplexität wird durch die am häufigsten vorkommenden Aktivitäten bestimmt. Besitzt ein System ein paar Teile, die zwar sehr kompliziert sind, aber so gut wie nie angefasst werden, haben diese keinen allzu großen Einfluss auf die Gesamtkomplexität des Systems. Wir stellen das mathematisch einmal sehr rustikal dar:


Die Gesamtkomplexität eines Systems (C) wird bestimmt durch die Komplexität jedes Teils p (cp), gewichtet mit dem Anteil der Zeit, die Entwickler an diesem Teil arbeiten (tp). Wenn Sie die Komplexität an einem Ort isolieren, an dem sie niemand zu sehen bekommt, ist das fast so gut, als würden Sie die Komplexität komplett ausmerzen.

Komplexität ist eher beim Lesen als beim Schreiben zu erkennen. Wenn Sie Code schreiben, der Ihnen einfach erscheint, aber andere der Meinung sind, er sei komplex, dann ist er auch komplex. Finden Sie sich selbst in solchen Situationen wieder, lohnt es sich, mit den anderen Entwicklern und Entwicklerinnen zu sprechen, um herauszufinden, warum sie den Code komplex finden – vermutlich erhalten Sie dadurch einige interessante Lektionen, aus denen Sie lernen können, warum es einen Unterschied zwischen deren und Ihrer Meinung gibt. Beim Entwickeln ist es Ihre Aufgabe, nicht nur Code zu schaffen, mit dem Sie leicht arbeiten können, sondern auch solchen, mit dem andere leicht arbeiten können.

Prinzipien des Softwaredesigns

Подняться наверх