In den letzten Wochen habe ich Einiges gelesen über "Requirements engineering" (zu deutsch: Anforderungserhebung).
Wir wollen ja unsere Web-Anwendung programmieren, dafür müssen wir aber natürlich auch wissen, was unsere Anwendung alles leisten soll. Und das müssen wir auch aufschreiben (wie genau, dazu komme ich weiter unten).
Währendd meiner Recherchen bin ich nach und nach davon weggekommen, zunächst sämtliche Anforderungen aufzuschreiben und dann mit der Programmierung zu beginnen. Ich bin dabei dann auf den Ansatz des "agilen Entwickelns" gestoßen, der nämlich (u.a.) genau in diesem Bereich vom klassischen Entwicklung-Prozess abweicht. Daraufhin habe ich mir auch direkt das Buch "Agile Softwareentwicklung: Werte, Konzepte und Methoden" zugelegt (Amazon-Link) (und bereits durchgelesen). Die darin verwendeten Prinzipien scheinen super für ein Projekt wie das unsere zu passen, besser als das klassische "Wasserfallmodell". Ein interessanter Text über einen Vergleich "Wasserfall-Modell/agile Entwicklung" findet man hier.
Hier ein paar Sätze über agile Softwareentwicklung:
Wir konzentrieren und bei der Programmierung immer auf "Zwischen-Ziele", die wiederum jeweils funktionierenden Web-Anwendungen sind. Diese "Versionen" unserer Anwendung haben dann nach und nach mehr Features. Für die jeweils nächste Version entscheiden wir uns vor dem Start des Entwicklungs-Zeitraums (wird auch "Sprint" genannt), welche Features in diesem Sprint programmiert werden sollen (priorisierte Liste mit Unterstützung von Jira). Das wollen wir zum Einen in vielen kleinen Versions-Schritten bis zu der ersten "öffentlichen", produktiven Version unserer Web-Anwendung machen. Zum Anderen kann man dieses Verfahren aber auch dann weiter verfolgen, wenn man bereits produktiv ist: Durch kleine Versions-Sprünge wird das Risiko minimiert, dass auf Einmal Vieles nicht mehr funktioniert, und wir bekommen schnell Feedback von unseren Anwendern. Die Frage, welche Anforderungen unsere erste produktive Version erfüllen muss, ist eine sehr interessante Frage, die wir in einem einzelnen Thread gesondert behandeln sollten.
Was soll unsere Software leisten?
Das werden wir anhand von sog. "User Stories" (Wikipedia) aufschreiben. User Stories sind eine "leichtgewichtige" Möglichkeit, Anforderungen der Benutzer aufzuschrieben. Typischerweise macht das jemand, der die "Fachlichkeit" sehr gut kennt, der also bei uns genau weiß, was unsere Web-Anwendung leisten soll. Eine Liste interessanter Artikel über User Stories findet man hier.
Wie gesagt wollen wir unsere User Stories im Jira festhalten. Typischerweise entstehen dann daraus eine oder mehrere Aufgaben (Jira: Tasks), die erledigt werden müssen, bevor die User Story umgesetzt ist. Ich habe in unserem Jira-Projekt "Oregami Webanwendung" bereits einige solche User-Stories erstellt, hier kann man sie sehen.
Ich werde das in den nächsten Tagen/Wochen noch genauer erarbeiten und das auch nochmal in einem ausführlichen Blog-Posting darstellen. Damit wird unser Vorgehen um Einiges konkreter und besser greifbar für alle. Insbesondere die Frage "welche Dinge muss unsere Anwendung können, wenn sie zum ersten mal produktiv geht?" finde ich sehr interessant und daran kann sich ja eigentlich auch jeder beteiligen.
Ich habe die für mich/uns zentralen Aussagen des oben genannten Buchs bei uns im Wiki aufgeschrieben. Unbedingt durchlesen!
Was denkt ihr über dieses Thema?
Wir wollen ja unsere Web-Anwendung programmieren, dafür müssen wir aber natürlich auch wissen, was unsere Anwendung alles leisten soll. Und das müssen wir auch aufschreiben (wie genau, dazu komme ich weiter unten).
Währendd meiner Recherchen bin ich nach und nach davon weggekommen, zunächst sämtliche Anforderungen aufzuschreiben und dann mit der Programmierung zu beginnen. Ich bin dabei dann auf den Ansatz des "agilen Entwickelns" gestoßen, der nämlich (u.a.) genau in diesem Bereich vom klassischen Entwicklung-Prozess abweicht. Daraufhin habe ich mir auch direkt das Buch "Agile Softwareentwicklung: Werte, Konzepte und Methoden" zugelegt (Amazon-Link) (und bereits durchgelesen). Die darin verwendeten Prinzipien scheinen super für ein Projekt wie das unsere zu passen, besser als das klassische "Wasserfallmodell". Ein interessanter Text über einen Vergleich "Wasserfall-Modell/agile Entwicklung" findet man hier.
Hier ein paar Sätze über agile Softwareentwicklung:
Für uns würde das konkret heißen:http://www.it-agile.de/wasistagilesoftwareentwicklung.html wrote:Im Kern geht es bei agiler Softwareentwicklung um möglichst häufige Rückkopplungsprozesse und zyklisches (iteratives) Vorgehen auf allen Ebenen: bei der Programmierung, im Team und beim Management.
Anders als in der klassischen Vorgehensweise wird das neue System nicht im Voraus in allen Einzelheiten genau geplant und dann in einem einzigen langen Durchgang entwickelt, denn schließlich können sich die Anforderungen während der Projektlaufzeit noch ändern, und oft sind sie zu Projektbeginn noch gar nicht vollständig bekannt.
Stattdessen wechseln sich beim agilen Vorgehen kurze Planungs- und Entwicklungsphasen ab. Nachdem eine Vision für das neue System entwickelt wurde, also die Ziele festgelegt und gewichtet wurden, die mit der Software erreicht werden sollen, wird ein Plan für eine erste Version ausgearbeitet, und die Entwicklung beginnt. Danach werden notwendige Anpassungen vorgenommen.
Wir konzentrieren und bei der Programmierung immer auf "Zwischen-Ziele", die wiederum jeweils funktionierenden Web-Anwendungen sind. Diese "Versionen" unserer Anwendung haben dann nach und nach mehr Features. Für die jeweils nächste Version entscheiden wir uns vor dem Start des Entwicklungs-Zeitraums (wird auch "Sprint" genannt), welche Features in diesem Sprint programmiert werden sollen (priorisierte Liste mit Unterstützung von Jira). Das wollen wir zum Einen in vielen kleinen Versions-Schritten bis zu der ersten "öffentlichen", produktiven Version unserer Web-Anwendung machen. Zum Anderen kann man dieses Verfahren aber auch dann weiter verfolgen, wenn man bereits produktiv ist: Durch kleine Versions-Sprünge wird das Risiko minimiert, dass auf Einmal Vieles nicht mehr funktioniert, und wir bekommen schnell Feedback von unseren Anwendern. Die Frage, welche Anforderungen unsere erste produktive Version erfüllen muss, ist eine sehr interessante Frage, die wir in einem einzelnen Thread gesondert behandeln sollten.
Was soll unsere Software leisten?
Das werden wir anhand von sog. "User Stories" (Wikipedia) aufschreiben. User Stories sind eine "leichtgewichtige" Möglichkeit, Anforderungen der Benutzer aufzuschrieben. Typischerweise macht das jemand, der die "Fachlichkeit" sehr gut kennt, der also bei uns genau weiß, was unsere Web-Anwendung leisten soll. Eine Liste interessanter Artikel über User Stories findet man hier.
Wie gesagt wollen wir unsere User Stories im Jira festhalten. Typischerweise entstehen dann daraus eine oder mehrere Aufgaben (Jira: Tasks), die erledigt werden müssen, bevor die User Story umgesetzt ist. Ich habe in unserem Jira-Projekt "Oregami Webanwendung" bereits einige solche User-Stories erstellt, hier kann man sie sehen.
Ich werde das in den nächsten Tagen/Wochen noch genauer erarbeiten und das auch nochmal in einem ausführlichen Blog-Posting darstellen. Damit wird unser Vorgehen um Einiges konkreter und besser greifbar für alle. Insbesondere die Frage "welche Dinge muss unsere Anwendung können, wenn sie zum ersten mal produktiv geht?" finde ich sehr interessant und daran kann sich ja eigentlich auch jeder beteiligen.
Ich habe die für mich/uns zentralen Aussagen des oben genannten Buchs bei uns im Wiki aufgeschrieben. Unbedingt durchlesen!
Was denkt ihr über dieses Thema?