Reflective Steps: A Collaborative Learning Oriented Approach to Software Development and Process Improvement

Tesfaye Biru · 2008

This research attempted to explore the possibility of using context sensitive methodical approaches to address the software development challenges in Ethiopia. Based on extensive case studies and surveys supported by reflections on the researcher’s years of practical experience in both teaching and practicing software development, the situation in Ethiopia including the challenges faced by practitioners were documented. According to the findings, the software development situation is mostly dominated by failure cases characterized by: unrealized benefits, unsatisfied users, substantial budget and time overruns far beyond expected, frustrated developers, etc. Among the main causes identified for the failures is the oversize gap between demand and supply. On the demand side, most outsourced projects: are very large (by local standards); involve the development of multiple applications systems for specific organizations; involve business process redesign as a front-end process to the software development; and operate in unstable organizational environments. On the supply side, most of the software development firms: are inexperienced and small; follow ad hoc processes and methods; lack competence in project management and soft-skills; and are affected by very high staff turnovers. There are inadequate educational and training support infrastructure and absence of home-grown or contextualized methods, as well as absence of national standards or guidelines. In this research, methodical approaches that address contextual issues on both demand and supply sides are considered to tackle the gap. On the demand side, strategies around project design that involve scoping, prioritizing, outsourcing and the like were considered. On the supply side, competence development measures, at both organizational level (software process improvement) and individual level(learning and training mechanisms), were considered. Most importantly, institutionalization of collaborative approaches between developers and users, based on transformational participation principles, and feedback-based reflective learning, were considered. The effort resulted in the development of a comprehensive methodical approach known as Reflective Steps. The approach evolved from the process of tailoring the STEPS model and complementary aspects of contemporary methods and processes based on the contextual issues identified. In the process, home-grown collaborative techniques and proven practices in the areas of business process redesign for software development and project management were incorporated. As proposed, Reflective Steps provides an explicit treatment of software development activities which are considered important to the local setting but either missing or implicitly treated in popular methods and processes. An integrated development cycle that combines project design, application production, and application embedment and use aspects is proposed. Reflective Steps promotes the process of discovering suitable processes and methods for a project in the course of developing the software itself. As such, it uses a contextualized approach as a starter and proceeds with a step-by-step improvisation process through collaborative reflective learning based project experience. For this purpose, a multi-level collaborative reflective learning model is introduced by tailoring organizational learning and communication models. Combination of single-loop learning and double-loop learning based on reflections on process, progress, product and context are proposed. Each learning cycle involved action-reflection-improvement. A Reflective Steps workshop technique is also developed as a learning platform. Although the approach for the most part evolved from years of experience in teaching and practice, attempts were also made as part of this research to further experiment with aspects of Reflective Steps in real-life project environments. Encouraging results were obtained in the field experiments conducted both in software development project and in teaching at postgraduate studies. In particular, the experiment in the teaching area showed promising results and optimism on how Reflective Steps could be used to better educate students with practical skills through the integration of real-life problem scenarios into software engineering curriculum. Taken together, with further work, it is expected that Reflective Steps will gradually achieve wider acceptance and contribute to increased use of methodical approaches that would in turn contribute to the improvement in the productivity of project teams and quality of products in the local setting. Diese Forschungsarbeit stellt einen Versuch dar, kontextsensitive methodische Ansatze zu nutzen, um den Herausforderungen der Softwareentwicklung in Athiopien zu begegnen. Auf der Grundlage von Langzeit-Fallstudien und Umfragen, untermauert durch Reflexion uber die langjahrigen praktischen Erfahrungen des Forschers in Lehre und Praxis der Softwareentwicklung, wird die Situation in Athiopien und die Herausforderungen fur die Praktiker dokumentiert. Die Untersuchung macht deutlich, dass die Lage der Softwareentwicklung vorwiegend durch das Scheitern von Projekten dominiert wird. Kennzeichnend sind: nicht eingetretene Vorteile, unzufriedene Benutzer, substantielles Uberschreiten von Budget und Zeit weit uber alle Erwartungen, frustrierte Entwickler etc. Als einer der wichtigsten Grunde fur das Scheitern wurde die ubergrose Lucke zwischen Nachfrage und Angebot identifiziert. Auf der Nachfrageseite sind die meisten in Auftrag gegebenen Projekte sehr gros (fur lokale Verhaltnisse). Sie beinhalten die Mehrfach- Entwicklung von Anwendungssystemen, die auf spezielle Organisationen zugeschnitten sind, und die Neugestaltung von Geschaftsprozessen im Vorfeld der Softwareentwicklung. Die Systeme werden in einem instabilen Organisationsumfeld betrieben. Auf der Angebotsseite sind die meisten Softwarefirmen unerfahren und klein; sie befolgen Ad-Hoc-Prozesse und -Methoden, haben wenig Kompetenz im Management und in Soft-Skills, und leiden unter einer hohen Personalfluktuationsrate. Die Ausbildungs- und Trainingsinfrastruktur zu ihrer Unterstutzung ist inadaquat, selbst entwickelte oder kontextualisierte Methoden fehlen ebenso wie nationale Standards und Richtlinien. Um die Lucke zu uberwinden, werden in dieser Arbeit methodische Ansatze behandelt, die Kontextfragen auf der Nachfrage- und der Angebotsseite adressieren. Auf der Nachfrageseite geht es um Strategien im Umfeld des Projekt-Design: um das Abgrenzen von Projekten, das Setzen von Prioritaten, die Vergabe von Auftragen und ahnliches. Auf der Angebotsseite werden Masnahmen zur Kompetenzentwicklung auf der Organisationsebene (Software Process Improvement) und der individuellen Ebene (Lernix und Trainingsansatze) behandelt. Vor allem wird der Institutionalisierung von Ansatzen zur Zusammenarbeit von EntwicklerInnen und NutzerInnen auf der Grundlage von transformationsorientierten partizipativen Prinzipien und reflektivem Lernen in Ruckkopplungszyklen eine hohe Bedeutung zugemessen. Ergebnis der Forschung ist die Entwicklung eines umfassenden Methodenansatzes unter dem Namen Reflective Steps. Dieser Ansatz hat seinen Ursprung im STEPS-Modell, das angepasst und um komplementare Aspekte von aktuellen Methoden und Prozessen auf der Grundlage der identifizierten kontextuellen Anliegen angereichert wurde. In diesem Prozess wurden selbst entwickelte Techniken der Zusammenarbeit und bewahrte Praktiken des Geschaftsprozessentwurfs fur Softwareentwicklung und Projektmanagement einbezogen. Reflective Steps bietet eine explizite Behandlung von Aktivitaten der Softwareentwicklung, die im lokalen Kontext bedeutsam erscheinen, aber in verbreiteten Methoden und Prozessen entweder fehlen oder nur implizit behandelt werden. Ein integrierter Entwicklungszyklus wird vorgeschlagen, der Projekt-Design, die Entwicklung und Einbettung von Anwendungen sowie Aspekte der Nutzung umfasst. Reflective Steps unterstutzt den Prozess, geeignete Vorgehensweisen und Methoden fur ein Projekt im Verlauf der Softwareentwicklung selbst herauszufinden. Als Ausgangpunkt dafur verwendet es einen kontextualisierten Ansatz und setzt sich fort in kollaborativem, reflektivem Lernen auf der Basis von Projekterfahrungen. Zu diesem Zweck werden Ansatze zum Verstandnis von Lernen und Kommunikation in Organisationen angepasst, um ein Modell fur kollaboratives, reflektives Lernen auf mehreren Ebenen einzufuhren. Vorgeschlagen wird die Kombination von Lernen in einfachen und doppelten Ruckkopplungsschleifen auf der Grundlage von Reflexion uber Prozess, Fortschritt, Produkt und Kontext. Jeder Lernzyklus beinhaltet Aktion-Reflexion- Verbesserung. Als Forum fur kollaboratives Lernen wird eine Reflective Steps Workshop-Technik vorgestellt. Obwohl sich der Ansatz in grosen Teilen auf langjahrige Erfahrung in Lehre und Praxis grundet, wurden im Rahmen dieser Forschung auch weitere Experimente mit Aspekten von Reflective Steps durchgefuhrt. In der experimentellen Anwendung bei Softwareentwicklungsprojekten und der postgraduierten Lehre wurden ermutigende Ergebnisse erzielt. Insbesondere fuhrten die Experimente im Lehrbereich zu viel versprechenden Ergebnissen und zu optimistischen Einschatzungen daruber, wie Reflective Steps genutzt werden konnte, um echte Problem-Szenarien ins Software Engineering einzubeziehen und Studierende praxisgerechter auszubilden. Insgesamt ist zu erwarten, dass Reflective Steps nach entsprechender Weiterentwicklung allmahlich eine breitere Akzeptanz gewinnen und zur vermehrten Anwendung von Methoden beitragen wird, welche die Verbesserung der Produktivitat von Projektteams und die Qualitat der Produkte im lokalen Kontext erhohen.

Read the paper · More papers on PaperTik