Artikel

 
Dezember 2011 | Artikel

Be pragmatic, not dogmatic: Die zwei Gesichter der Agilität

(Link zum Artikel: http://www.it-republik.de/jaxenter/artikel/4219)

Wie stehen sich Business Value und technische Refactorings gegenüber?

Text: Joachim Arrasz
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share
Im letzten Teil der Kolumne ging es um Dogmen versus pragmatisches Vorgehen bei der Einhaltung von Architekturvorgaben. Daraus ergab sich eine lebhafte Diskussion und zudem eine Umfrage zum Thema. Doch Dogmen als auch pragmatisches Vorgehen finden sich nicht nur in der Implementierung der Entwicklung wieder, sondern auch in den Prozessen rund um die Entwicklung!

Steigen wir also in den zweiten, dieses Mal nicht sonderlich entwicklungslastigen Erfahrungsbericht ein.

Noch ein wichtiger Punkt, der unbedingt angemerkt werden muss: Alles, was ich hier schreibe, ist meine persönliche Meinung und spiegelt auch nur diese wider. Diskussionen sind herzlich willkommen! Falls sich der eine oder andere Kollege angesprochen fühlt, natürlich ist alles frei erfunden und Ähnlichkeiten sind rein zufällig... :-)

Agilität versus fachlicher Mehrwert?
Wir arbeiteten mit einem Kunden seit Monaten an einem größeren Code-Clinic-Projekt, in dem wir während des Betriebs nach und nach fachliche Teile der Anwendung refactored und mit einer neuen technischen Servicearchitektur versahen. Von Beginn an wurde der Aufwand im technischen Stack so klein wie möglich und so groß wie nötig gehalten. Es war einfach noch viel zu wenig Erfahrung aus dem bereits acht Jahre laufenden Projekt vorhanden, um wirklich bewusst eine sinnvolle Architekturentscheidung zu treffen. Wir wollten erst einmal viel mehr fachliches Wissen aufbauen, die versteckten Features finden, und waren uns auch der Gefahr dabei sehr bewusst. Dokumentation war der Code, die fachliche Logik steckte in Stored-Procedures und falsch verwendeten Triggern (manche dieser Trigger manipulierten fünf bis sechs Datenbanktabellen). Der Sponsor des Kunden war von der Idee, agil vorzugehen, von Beginn an begeistert und trug diese voll mit.

Neun Monate später war es dann soweit. Wir begannen mit dem weiteren Refactoring unseres neuen Stacks, da die Wissenslücken einigermaßen gefüllt waren und sich der Nebel des weiteren Vorgehens lichtete. Aus einer Webanwendung auf Basis von Wicket und Spring (-Remoting, -Integration usw.) entwickelten wir eine komplette serviceorientierte Architektur, in der die eigentliche Middleware in einer Serviceanwendung steckte, die Wicket-Anteile in reine Webanwendungen ausgelagert wurden, die kleine fachliche Einheiten bildeten (warum dies so entschieden wurde, ist ein anderes Thema und kann jederzeit separat mit mir diskutiert werden).

Das Refactoring dauerte alles in allem ca. 60 Stunden, inklusive weiterer Tests (Akzeptanz, Integration, Regression). Als der Product Owner dies absegnen sollte, bekam er Bedenken, dass der Sponsor dies nicht akzeptieren würde, da wir ja auf einer „niegelnagelneuen“ Anwendung arbeiten würden. Er könne dem Sponsor durch die 60 Stunden Mehraufwand keinen fachlichen Mehrwert liefern. Vergessen wurde bei dieser Aussage wohl das Modell, in dem entwickelt wurde, das eben agil war. Aufwände sollten somit erst dann entstehen können, wenn es nötig wurde.

Meine Meinung zu diesem Dilemma
Normalerweise stehe ich hier ganz klar auf der Seite des Product Owners und vertrete den dogmatischen Ansatz des agilen Modells, dass jede Story für den Sponsor wirklich einen fachlichen Nutzen, einen Mehrwert haben sollte. Allerdings sollte man in Projekten, die zur Anwendungszeit weiterentwickelt werden, in der Lage sein, hier Kompromisse einzugehen. Es macht nur bedingt Sinn zu versuchen, jederzeit einen fachlichen Mehrwert zu erzeugen, wenn dadurch kritische Produktionsbedingungen entstehen. In unserem Fall hätte das Team nun begonnen, immer bestimmte Teile des Refactorings während der User Stories mit zu implementieren.

Dies halte ich für kritisch, da Umbauten in diesen Größenordnungen die volle Aufmerksamkeit des Teams benötigen. Auf der anderen Seite steht natürlich die Aussage, dass der Sponsor ja hier auch einen Businessvalue bekommt: Dieser kommt indirekt durch die Hintertür, da seine Anwendung auf dem Laufenden bleibt, sein Entwicklungsteam motiviert bleibt und es leichter hat, Erweiterungen zu entwickeln.

Wie ist ein Team in der Lage, dies zu kommunizieren, ohne dass es dabei nach einem Schutzschild für die eigene Inkompetenz in Sachen Planung ausschaut?

Man sollte jederzeit die totale Transparenz über die Dogmen des agilen Modells stellen und das große Refactoring vorab genau skizzieren, um dem Sponsor dabei zu helfen, den Mehrwert anerkennen zu können. Es gibt eine Menge Möglichkeiten, dies mit recht wenig Zeitaufwand zu schaffen. Umgekehrt jedoch wird der Sponsor wenig davon haben, wenn sein Team Zeit aufwenden muss, um die fachlichen Values eines Refactorings herauszuarbeiten, da es meist einfach nur wenige gibt:

  • schnellere Implementierungen mit saubereren fachlichen Grenzen
  • Motivation des Teams
  • Wissensaustausch innerhalb des Teams durch die Planung und Restrukturierung des Codes
  • schnelleres Ausrollen besser gekapselter fachlicher Erweiterungen und Änderungen

Derzeit kann man die Diskussionen, die sachlich mit dem Thema Agilität in der IT umgehen, eher an einer Hand abzählen, wogegen jedoch die Powerpoint-Präsentationen, bei denen Agilität alle Probleme der IT-Welt auf einmal löst, unzählbar werden. Agilität hilft nur dann wirklich weiter, wenn innerhalb des Teams – angefangen beim Sponsor bis zum DevOp - jeder das gleiche darunter versteht. Aus meiner Erfahrung heraus ist dies leider nicht sehr oft der Fall. Man muss innerhalb des kompletten Teams, vom Sponsor bis zur Teamassistenz, immer und immer wieder dafür werben, dieses Vorgehen konsequent einzusetzen. Dann erfährt auch JEDER im Team die Vorteile, nicht nur die arbeitende oder nur die organisierende und bezahlende Seite.

Ich würde mich sehr über eine anregende Diskussion freuen und verspreche, wie schon im vorigen Artikel, auch dieses Mal sehr zeitnah zu reagieren und mich intensiv in die Diskussion einzuklinken, denn das ist ja schließlich auch ein Ziel dieser Kolumne !

Leute, in einem niegelnagelneuen Projekt kann ich meinem Chef kein Refactoring verkaufen!

Joachim Arrasz ist als Software und Systemarchitekt in Karlsruhe bei der Synyx GmbH & Co. KG als Leiter der CodeClinic tätig. Darüber hinaus twittert und bloggt er gerne @arrasz.

andere Artikel dieser Serie


Anzeige

Kommentare

Gravatar Sven Peters 09.12.2011
um 11:41 Uhr
Das ist meiner Meinung nach, kein Problem allein in agilen Projekten. Das gleiche würde bei einem Wasserfall Projekt auch passieren. Das Problem besteht doch einfach nur darin , dem Management klar zu machen, dass dies Refactoring notwendig ist. Wenn man das Auto 3 Jahre nicht zur Werkstatt gebracht hat, müssen halt ein paar mehr Teile ausgetauscht werden.
Wie du auch schon geschrieben hast, bekommt der Kunde ja doch einen indirekten Mehrwert. Das System bleibt auf dem laufenden und somit wartbar. Ich stimme mit dir überein, dass es manchmal notwendig ist eine größere Reparatur / Verjüngung durchzuführen, ohne direkten Mehrwert zu erhalten. Der Trick besteht nur darin, dem Sponsor den langfristigen Nutzen klar zu machen, bzw. eher die Konsequenzen des Unterlassens näher zu bringen.
#zitieren
Gravatar kathrin 09.12.2011
um 12:55 Uhr
Ich antworte gemäß des Themas mal etwas dogmatisch:

Agilität bedeutet nicht zwangsläufig, dass man Refactorings macht, dass man jeden Tag um zehn Uhr ein Stand Up macht, dass man feste Releasezyklen hat, dass man Tests schreibt oder Aufgaben in Story Points schätzt.
Agilität hat meiner Meinung nach ein Hauptziel, und das ist, so oft und so schnell wie möglich Mehrwert zu liefern.

Versetze ich mich als Software Entwickler daher in die Rolle eines Auftraggebers, wäre ich über eine komplette Iteration Refactorings auch alles andere als glücklich. Aus dem Grund käme es mir nie in den Sinn, unseren Auftraggebern so etwas vorzuschlagen.

Ich sehe das so: Refactorn, Tests schreiben, Infrastruktur herstellen, dokumentieren, das sind alles Sachen, die für mich zum normalen Entwicklungsprozess dazu gehören. Das ist Teil meiner Verantwortung und Teil meiner täglichen Arbeit. Wenn ich Software anfasse, mache ich immer alles davon und nie nur Teile. Schließlich möchte ich von der Software, die ich ausliefere, behaupten, dass sie funktioniert. Zu jedem Zeitpunkt. Und das wiederum ist eigentlich eine logische Konsequenz aus agilen Prozessen, deren Ziel es eben ist, ständig, so oft wie möglich, mehrwert und laufende Software zu produzieren.
Aufgeschobene Refactorings, Tests oder Dokumentation klingt für mich daher immer irgendwie nach "Job nicht ordentlich gemacht".
Ein vielleicht blöder Vergleich, aber: Wenn mich jemand fragt, wie lang ich morgens im Bad brauche, lass ich ja auch nicht die Zeit fürs Zähneputzen weg und erzähl ihm dann Sonntags, dass ich jetzt noch mal 20 Minuten extra brauche, weil ich es die restlichen sieben Tage nicht gemacht habe, um schneller zu sein.

Ich würde daher sagen:
Agile Prozesse und Refactorings stehen in keinster Weise irgendwie orthogonal zueinander. Agile Prozesse und einen Monat lang refactorn, bei dem man den für den Kunden wahrnehmbaren Mehrwert nicht wirklich erklären kann, passen jedoch definitiv nicht zusammen.

Und um jetzt noch mal auf das Thema Pragmatismus vs. Dogmen zurückzukommen:
Ich bin definitiv Dogmatiker. Weil ich überzeugt bin, dass es wichtig ist, dass das Ziel und die Vision klar sind. Aber auf dem Weg dahin, darf man natürlich pragmatisch sein. Solang man das Ziel dabei nicht aus den Augen verliert und man sich nicht mit weniger zufrieden gibt, als geht.
#zitieren
Gravatar Joachim Arrasz 09.12.2011
um 13:13 Uhr
Hi Sven,

Sven Peters:
Das ist meiner Meinung nach, kein Problem allein in agilen Projekten. Das gleiche würde bei einem Wasserfall Projekt auch passieren. Das Problem besteht doch einfach nur darin , dem Management klar zu machen, dass dies Refactoring notwendig ist. Wenn man das Auto 3 Jahre nicht zur Werkstatt gebracht hat, müssen halt ein paar mehr Teile ausgetauscht werden.
Wie du auch schon geschrieben hast, bekommt der Kunde ja doch einen indirekten Mehrwert. Das System bleibt auf dem laufenden und somit wartbar. Ich stimme mit dir überein, dass es manchmal notwendig ist eine größere Reparatur / Verjüngung durchzuführen, ohne direkten Mehrwert zu erhalten. Der Trick besteht nur darin, dem Sponsor den langfristigen Nutzen klar zu machen, bzw. eher die Konsequenzen des Unterlassens näher zu bringen.


ich stimme absolut mit Dir überein. Man muss allerdings hier die "Best Practices" in agilen Prozessen mit berücksichtigen, über die ich auch selbst gestolpert bin. Man muss den Business Value KLAR hervorheben, was mir nicht direkt im ersten Anlauf gelang. Hier bin ich zwischen zwei der "Regeln" hin und her geschoben worden. Einmal die Tatsache das jede Story einen Business Value erzeugen sollte und zum anderen die Tatsache das in agilen Vorgehensmodellen eben die Architektur IN den Stories entwickelt werden sollte, was leider nicht gelang, da der Umbau einfach eine Nummer größer wurde wie erwartet. Wie geht Ihr mit solchen Dingen um?
Ich empfinde es als schwer hier die Brücke ordentlich zu schlagen. Kleine Kundenanforderungen bringen in der IT einfach oftmals (vor allem in agilen Modellen) auf einmal mehr Aufwand mit sich, wie erwartet, da man ja den Aufwand wirklich erst erzeugt, wenn er für einen Business Value benötigt wird...
#zitieren
Gravatar Joachim Arrasz 09.12.2011
um 13:49 Uhr
Hi Kathrin,


Agilität hat meiner Meinung nach ein Hauptziel, und das ist, so oft und so schnell wie möglich Mehrwert zu liefern.


Mit möglichst angebrachtem Aufwand... oder?


Versetze ich mich als Software Entwickler daher in die Rolle eines Auftraggebers, wäre ich über eine komplette Iteration Refactorings auch alles andere als glücklich. Aus dem Grund käme es mir nie in den Sinn, unseren Auftraggebern so etwas vorzuschlagen.


Warum nicht, wenn es der einzige Weg ist den verlangten Business Case zu lösen?


Ich sehe das so: Refactorn, Tests schreiben, Infrastruktur herstellen, dokumentieren, das sind alles Sachen, die für mich zum normalen Entwicklungsprozess dazu gehören. Das ist Teil meiner Verantwortung und Teil meiner täglichen Arbeit. Wenn ich Software anfasse, mache ich immer alles davon und nie nur Teile. Schließlich möchte ich von der Software, die ich ausliefere, behaupten, dass sie funktioniert. Zu jedem Zeitpunkt. Und das wiederum ist eigentlich eine logische Konsequenz aus agilen Prozessen, deren Ziel es eben ist, ständig, so oft wie möglich, mehrwert und laufende Software zu produzieren.


Das klingt nach einer sehr guten Aufassung des Jobs als Softwareentwickler aus meiner Sicht, dennoch ist es die ideale Welt, der man leider nicht immer folgen kann. Wobei es hier vielleicht auch zu unterscheiden gilt, WAS für ein Projekt da eigentlich gerade bearbeitet wird. Im kleinen Rahmen werden hier vermutlich einige Sponsoren wild brüllen. In Longterm Projekten kann ich mir vorstellen, dass sich einige Teamleiter solche Entwickler wünschen, da gerade hier oft der Schlendrian eingekehrt ist!


Aufgeschobene Refactorings, Tests oder Dokumentation klingt für mich daher immer irgendwie nach "Job nicht ordentlich gemacht".


Hier muss ich schnell aufpassen, klang es für Dich nach einem aufgeschobenen Refactoring? Das war es nicht, es war vorher einfach nicht zu sehen, wohin das Projekt sich entwickelt, daher wurde schlicht NOCH kein Refactoring in diesem Ausmaß nötig.

Agile Prozesse und Refactorings stehen in keinster Weise irgendwie orthogonal zueinander. Agile Prozesse und einen Monat lang refactorn, bei dem man den für den Kunden wahrnehmbaren Mehrwert nicht wirklich erklären kann, passen jedoch definitiv nicht zusammen.


Hier gebe ich Dir völlig recht. Das passt nicht zusammen, aber es ist im Umkehrschluss aus meiner Sicht völlig logisch, da man sich ja eben nicht wie bei einem Wasserfallmodell zu Beginn des Projekts wochenlang einschliesst bis man die "finale" Architektur für die Problemstellung gefunden hat. Man erarbeitet das Refactoring dann wenn man es braucht.

Dazu kommen unvorhergesehene Dinge wie Zukauf weiterer Firmen oder vergleichbares. Ein Architekt der so etwas von vorneherein in seiner Architektur mit abbildet wird sicherlich auch nicht ungeschoren davon kommen, oder?


Und um jetzt noch mal auf das Thema Pragmatismus vs. Dogmen zurückzukommen:

Ich bin definitiv Dogmatiker. Weil ich überzeugt bin, dass es wichtig ist, dass das Ziel und die Vision klar sind. Aber auf dem Weg dahin, darf man natürlich pragmatisch sein. Solang man das Ziel dabei nicht aus den Augen verliert und man sich nicht mit weniger zufrieden gibt, als geht.


Das lass ich einfach mal so stehen, denn ich sehe das sehr sehr ähnlich und bin dann wohl auch ein Dogmatiker, auch wenn ich mich vor diesem Kommentar vermutlich nicht als einer bezeichnet hätte :-)

Danke für den anregenden Kommentar!
#zitieren
Gravatar Dominik 09.12.2011
um 14:29 Uhr
Der PO ist ja auch eine Art "Verkäufer". Dabei muss er so argumentieren, dass der Kunde den Mehrwert erkennt. Somit hat der Kunde auch seinen Business Value. Den Vergleich von Sven mit dem Auto finde ich als Argumentation dabei recht gut.

Weiterhin bedeutet Agilität auch seine Arbeit als permanenten Lernprozess zu sehen. Das Refactoring basiert auf dem neuen Wissensstand des Teams. Akzeptiert der Kunde den Lernprozess, akzeptiert er mit hoher Wahrscheinlichkeit auch das Refactoring.
#zitieren
Gravatar JoachimArrasz 09.12.2011
um 15:48 Uhr
Hallo Dominik,


Der PO ist ja auch eine Art "Verkäufer". Dabei muss er so argumentieren, dass der Kunde den Mehrwert erkennt. Somit hat der Kunde auch seinen Business Value. Den Vergleich von Sven mit dem Auto finde ich als Argumentation dabei recht gut.

Weiterhin bedeutet Agilität auch seine Arbeit als permanenten Lernprozess zu sehen. Das Refactoring basiert auf dem neuen Wissensstand des Teams. Akzeptiert der Kunde den Lernprozess, akzeptiert er mit hoher Wahrscheinlichkeit auch das Refactoring.


Dem kann ich wenig hinzufügen, nur, wie bringe ich das dem Kunden letztlich bei, wenn er darauf besteht das sowas in einem "niegelnagelneuen" Projekt nicht passieren sollte, im Gegenzug aber gerne annimmt das er zu Beginn die Wasserfall-Projektplanung spart.
Letztlich ist es ja das was ich mit meiner Meinung aussagen möchte, agile Methodik funktioniert wirklich gut nur wenn das ganze Team mitzieht. Meine Erfahrung spricht hier aber andere Bände.
Auf keinen fall möchte ich deswegen das Modell nicht mehr anwenden, ich möchte jedoch vielleicht Wege finden, Erfahrungen anderer hier diskutieren die uns allen helfen solche Symptome von Beginn an zu erkennen und zu vermeiden, proaktiv sozusagen :-)
#zitieren
Gravatar Marco 12.12.2011
um 10:42 Uhr
"Aufgeschobene Refactorings" öhmm, man kann ja nicht jeden Tag so 5% mal ein bisschen Refactoring machen.
Manchmal ist es einfach ein Fact, dass viele Stunden für ein Refactoring aufgewendet werden müssen z.B. von SOAP auf Rest wechseln, weil man sich fälschlicherweise am Anfang für SOAP entschieden hat. Und es macht Sinn dies in einem Rutsch zu tun, weil effizienter (und vielleicht auch langweiliger) als es in Stories zu "verstecken".
#zitieren
Gravatar joschi 12.12.2011
um 12:56 Uhr
Vielleicht sollte man zunächst den Begriff des "Refactorings" genauer definieren. Laut Martin Fowler (http://martinfowler.com/refactoring/) ist ein Refactoring "a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.".

Die von Marco angesprochene Migration von SOAP zu REST(ful HTTP) ist also kein Refactoring, da sich das von außen sichtbare Verhalten der Anwendung ändert. Das wäre eher ein Change Request bzw. ein neues Feature.

Ich finde daher auch die in der Kolumne genutzte Definition von Refactoring (generell jede Änderung des Codes?!) nicht geglückt und verstehe darunter etwas anderes.
#zitieren
Gravatar Dan 12.12.2011
um 17:18 Uhr
Bisher wurde dem wirtschaftlichen Aspekt m.E. zu wenig Bedeutung zugeordnet. Es macht kein Sinn bei einer Software, welche noch eine geplante Lebensdauer von 1 Jahr hat, grosse Refaktorings zu machen, welche sicher erst über einen Zeitraum von 2 - 5 Jahren auszahlen. Das nur so am Rande. #zitieren
Gravatar Marco 13.12.2011
um 08:34 Uhr
"Das wäre eher ein Change Request bzw. ein neues Feature." Das mag stimmen, aber ein Feature ohne Business Value :) #zitieren
Gravatar Joachim Arrasz 13.12.2011
um 10:37 Uhr
Hallo Marco,

"Aufgeschobene Refactorings" öhmm, man kann ja nicht jeden Tag so 5% mal ein bisschen Refactoring machen.Manchmal ist es einfach ein Fact, dass viele Stunden für ein Refactoring aufgewendet werden müssen z.B. von SOAP auf Rest wechseln, weil man sich fälschlicherweise am Anfang für SOAP entschieden hat. Und es macht Sinn dies in einem Rutsch zu tun, weil effizienter (und vielleicht auch langweiliger) als es in Stories zu "verstecken".


Das ist für mich nur zum Teil ein Refactoring, da hier ganze Teile des Stacks ausgetauscht werden. Wenn man aber betrachtet, das nach dem Austausch des Stacks auch bestimmte andere Elemente angepasst werden müssen, handelt es sich doch auch wieder, zumindest zum Teil, um ein Refactoring, oder?
Nichts desto trotz stimme ich mit Dir überein, es ist manchmal einfach sinnvoll gewisse Dinge mit einem Big bang abzulösen, man sollte nur sehr genau betrachten ob es nötig ist. Ein "Big Bang" ist meiner Meinung nach etwas sehr gefährliches innerhalb der Softwareentwicklung. Kleine abgeschlossene Einheiten sind einfacher zu testen, einfacher zu deployen usw.
Was meint denn der Rest hierzu?
#zitieren
Gravatar Joachim Arrasz 13.12.2011
um 10:43 Uhr
Hallo Joschi,

Vielleicht sollte man zunächst den Begriff des "Refactorings" genauer definieren. Laut Martin Fowler (http://martinfowler.com/refactoring/) ist ein Refactoring "a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.".

Hehe, spannend, das ist aus meiner Sicht genauso ein Dogma :-) Hat denn Herr Fowler, den ich sehr schätze, den Begriff des Refactoring erfunden und als alleiniger Mensch dessen Definition in der Hand? Sehe ich etwas anders.

Die von Marco angesprochene Migration von SOAP zu REST(ful HTTP) ist also kein Refactoring, da sich das von außen sichtbare Verhalten der Anwendung ändert. Das wäre eher ein Change Request bzw. ein neues Feature.

Hier bin ich vollkommen bei Dir, siehe mein voriger Kommentar.

Ich finde daher auch die in der Kolumne genutzte Definition von Refactoring (generell jede Änderung des Codes?!) nicht geglückt und verstehe darunter etwas anderes.

Wie hättest Du diesen technischen Eingriff benannt?
Aus meiner Sicht ist nicht generell jeder technische Eingriff ein Refactoring. Ich sehe es hier im konkreten Beispiel aber wie Herr Fowler. Was die umgebaute Anwendung tut, ist exakt das selbe, nur sie macht es intern technisch anders, aus meiner Sicht also ein Refactoring...
Ich bin aber gerne bereit es zu konkretisieren, wenn wir eine alternative Benennung finden können ;-)
#zitieren
Gravatar Joachim Arrasz 13.12.2011
um 10:46 Uhr
Guten Morgen Dan,

Bisher wurde dem wirtschaftlichen Aspekt m.E. zu wenig Bedeutung zugeordnet. Es macht kein Sinn bei einer Software, welche noch eine geplante Lebensdauer von 1 Jahr hat, grosse Refaktorings zu machen, welche sicher erst über einen Zeitraum von 2 - 5 Jahren auszahlen. Das nur so am Rande.

Das stimmt selbstverständlich, leider hatte ich das vergessen zu erwähnen. Das Projekt ist selbstverständlich ein Dauerläufer und wird hoffentlich nun wieder viele Jahre erfolgreicher verlaufen.
Ich denke ansonsten würde ich keine Refactorings in solch einer Größenordnung befürworten.
#zitieren
Gravatar joschi 13.12.2011
um 22:11 Uhr
Hallo,


Hehe, spannend, das ist aus meiner Sicht genauso ein Dogma :-) Hat denn Herr Fowler, den ich sehr schätze, den Begriff des Refactoring erfunden und als alleiniger Mensch dessen Definition in der Hand?

Martin Fowler hat den Begriff nicht erfunden und es gab den Begriff schon eine Weile in der Smalltalk-Szene. Allerdings hat er unumstritten ein prägendes literarisches Werk zu diesem Thema verfasst und meiner Meinung nach ist die Definition, die er in seinem Buch verwendet, durchaus allgemein etabliert.

In diesem Fall auf Wikipedia zu verlinken ist zwar etwas sinnlos, aber ich mache es trotzdem: http://en.wikipedia.org/wiki/Refactoring

Wir können natürlich Äpfel ab sofort auch Birnen nennen, aber der Vorteil solcher Definitionen ist doch, dass alle wissen, wovon der andere spricht. Allein deswegen gibt es Entwurfsmuster mit festen Namen. ;)


Wie hättest Du diesen technischen Eingriff benannt?

Ganz altmodisch hätte ich es vermutlich „Umstrukturierung der Anwendung” oder „Portierung der Anwendungsarchitektur” genannt.

Im Artikel schriebst Du:

Aus einer Webanwendung auf Basis von Wicket und Spring […] entwickelten wir eine komplette serviceorientierte Architektur, in der die eigentliche Middleware in einer Serviceanwendung steckte, die Wicket-Anteile in reine Webanwendungen ausgelagert wurden, die kleine fachliche Einheiten bildeten.

Dadurch ist die Änderung der Anwendung eben nicht mehr transparent für Beobachter von außen. Der Endbenutzer merkt davon vielleicht nichts, aber allein beim Ausrollen der Anwendung hat sich dadurch doch einiges geändert - Monolith vs. modulare Einzelteile.
#zitieren
Gravatar Joachim Arrasz 14.12.2011
um 10:12 Uhr
Moin,



Martin Fowler hat den Begriff nicht erfunden und es gab den Begriff schon eine Weile in der Smalltalk-Szene. Allerdings hat er unumstritten ein prägendes literarisches Werk zu diesem Thema verfasst und meiner Meinung nach ist die Definition, die er in seinem Buch verwendet, durchaus allgemein etabliert.



Oh, das sehe ich, auch nach den Kommentaren hier doch ein wenig anders. Wir sehen ja, das es innerhalb von diesen paar Kommentaren schon unterschiedliche Auffassungen gibt.



Allein deswegen gibt es Entwurfsmuster mit festen Namen. ;)



Entwurfsmuster würde ich hier nicht mit Methodiken gleichsetzen wollen. Wie der Name schon sagt...



Wie hättest Du diesen technischen Eingriff benannt?





Ganz altmodisch hätte ich es vermutlich „Umstrukturierung der Anwendung” oder „Portierung der Anwendungsarchitektur” genannt.



Okay, damit könnte ich leben und ich denke ich werde mir das für zukünftiges gut überlegen. Danke für die Anregung.



Im Artikel schriebst Du:



Aus einer Webanwendung auf Basis von Wicket und Spring […] entwickelten wir eine komplette serviceorientierte Architektur, in der die eigentliche Middleware in einer Serviceanwendung steckte, die Wicket-Anteile in reine Webanwendungen ausgelagert wurden, die kleine fachliche Einheiten bildeten.



Dadurch ist die Änderung der Anwendung eben nicht mehr transparent für Beobachter von außen. Der Endbenutzer merkt davon vielleicht nichts, aber allein beim Ausrollen der Anwendung hat sich dadurch doch einiges geändert - Monolith vs. modulare Einzelteile.



Aber ist es nicht genau das was wir wollen, der Endanwender merkt nichts davon. Es ist für ihn komplett transparent, es tut genauso wie vorher, nur intern technisch hoffentlich besser und einfacher zu bearbeiten?

Um nicht am Thema vorbeizuschrammen, wie hättest Du es denn dem Sponsor versucht zu verkaufen? (darum gings ja eigentlich :-) )
#zitieren

Anzeige

zurück zum Seitenanfang