Vielleicht ist mein Verständnis von agiler Entwicklung nicht so gut, wie es sein sollte, aber ich bin neugierig, wie ein agiler Entwickler möglicherweise Software von der Stange (OTS) verwenden würde, wenn sich die Anforderungen und das Wissen darüber, wie das endgültige System aussehen soll, so schnell ändern, wie ich es verstehe (oft nach jeder Iteration der Entwicklung).
Ich sehe zwei Situationen, die für mich von besonderem Interesse sind:
(1) Ein OTS-System erfüllt die anfänglichen Anforderungen mit wenigen bis gar keinen Änderungen, abgesehen von einer möglichen Integration in ein bestehendes System. Nach einigen Iterationen der Entwicklung entspricht dieses System jedoch nicht mehr den Anforderungen, ohne dass der Kerncode neu geschrieben werden muss. Die Entwickler müssen sich entscheiden, ob sie zusätzliche Zeit aufwenden, um den Kerncode dieser OTS-Software zu erlernen, oder ob sie ihn wegwerfen und von Grund auf neu entwickeln. Beides würde sich drastisch auf die Entwicklungszeit und die Projektkosten auswirken.
(2) Die anfänglichen Anforderungen entsprechen keinem der vorhandenen OTS-Systeme, doch wenn der Kunde das Produkt abnimmt, ähnelt es aufgrund der zusätzlichen Anforderungen und der Abstriche bei den Anforderungen den vorhandenen Lösungen. Hätten die Entwickler mehr Anforderungen gehabt und im Vorfeld mehr Zeit darauf verwendet, hätte man diese Lösung verwenden können, anstatt sie neu zu entwickeln. Das Projekt wurde zwar geliefert, aber später und zu höheren Kosten als nötig.
Als Software-Ingenieur gehört es zu meinen Aufgaben (wie mir beigebracht wurde), dem Kunden qualitativ hochwertige Software pünktlich und zu den geringstmöglichen Kosten zu liefern (neben anderen Dingen). Agile Entwicklung ermöglicht qualitativ hochwertige Software, aber in manchen Fällen ist es vielleicht nicht offensichtlich, dass es bessere Alternativen gibt, bis es zu spät ist und zu viel Geld ausgegeben wurde.
Meine Fragen sind:
- Wie passt Software von der Stange zur agilen Entwicklung?
- Wie gehen der agile Manager und der agile Entwickler mit diesen Fällen um?
- Was sagen die agilen Paradigmen zu diesen Fällen?