Software Development as a Service: Agile Experiences

At the IBM Almaden Research Center, we have been working with other divisions of IBM, offering Software Development as a Service (SDaaS). We work with our colleagues to understand their business and pain points, and then leverage that knowledge to build an application that at least meets, but ideally exceeds their needs. In our experience, applications built in the mode of Software Development as a Service have the following characteristics. There is a single client that owns the program requirements, the requirements are not fully formed, and, the software is at least partly, if not completely, custom. With many decades of software development experience in our group, we have used many different techniques for conducting software projects. In SDaaS, the style of interaction between the client team and the development team is a natural fit for Agile Software Development methods. Although our conditions do not fit the ideal Agile Software Development project profile, we have consistently experienced significant gains from taking the approach of iterative and incremental development. We have used the Waterfall, or plan-based, method many times for past projects, and we have consistently paid a significant price for the "Big Design Up Front" problems that go with that type of schedule. Although agile methods have consistently outperformed other methods in the early stages of a project, they do less well as the application program grows and the project matures. Once an application is in production and has an established user base, the emphasis of the client and development teams change from fast, easy and elegant feature additions to stability, release planning and maintenance. The imposition of a fixed schedule naturally transitions the overall project management into a plan-based model. However, we came to realize that agile methods still play an essential role, even when the overall project has matured to a steady state and is managed in a plan-based fashion. When developing a new program requirement, unless it is completely understood (i.e. all aspects and expected results documented), then it must go through an agile prototyping phase in order for it to be properly developed and scheduled. That agile prototyping phase is still bound inside a plan-based schedule, but that leaves room for iteration and innovation that we would not otherwise have in a fixed schedule. In this paper, we examine the various forces that influence both the client and development organizations that are engaged in Software Development as a Service. Using several projects from our past as examples, we show that the level of program technology and requirement understanding determines which development method will be more successful. Plan-based methods will work if all aspects of the project are known and there are minimal variables. Otherwise, our experience shows that an Agile Development model is likely to be the best choice for the beginning of a project. Once a project reaches steady state, with production releases, then a hybrid model works best, where agile methods are used to prototype new features, but bounded inside of a plan-based schedule.