Even before written history, mankind has followed methods to invent, build, and use tools. As our tools have evolved so have our methods, and in today's software industry there are lots of articulations and communities built around software development methodologies. Despite the zealous beliefs within some of these communities, no single method is the silver bullet or the one truth from which to engineer and craft software in all contexts.
Methods continue to evolve and new methods continue to be discovered. This is a serious challenge facing software development professionals and organizations wishing to adopt them. Especially as market aspirations of various method communities create factions and lots of "us vs. them" rhetoric. This splintering causes confusion and waste. Our industry needs integration not isolation of methods.
Recently my colleague Mark Kennaley did some research on the history of software engineering methods. A diagram of this analysis is depicted in Figure 1.0.
Figure 1.0 – SDLC 3.0
Clearly from the diagram depicted in Figure 1.0 one can see, that much like branching of code versions, this space is a configuration nightmare. We need to rebase the methods in our industry and drive towards a new consolidated frame of reference.
A significant industry initiative is underway to achieve just this. The Software Engineering Methods and Theory organization (SEMAT.org) has made a call to action that intends to, "refound software engineering based on a solid theory, proven principles and best practices". I attended the historic kick-off in Zurich, where Richard Soley, Chairman and CEO of the OMG, in his opening address stated if "SEMAT defines the N+1 method it has failed". Soley made it clear that SEMAT needs to integrate all methods and prior experience in software development into a new industry standard.
Granted this is no small undertaking and various critics are already taking shots at the effort. However, there is an undeniable growing need to tackle this problem in our industry. In January, Kennaley published a new book that made some big steps in this direction, titled: SDLC 3.0, Beyond a Tacit Understanding of Agile . SDLC 3.0 addresses some of the large scale concerns related to the integration of methods.
In the first few chapters in the book, Kennaley gives the reader a deeper understanding of the roots of Agile and explains why Agile works as most of us tacitly know to be true. Chapter three boils down Control Theory to a mere forty pages and provides a mathematical foundation for how control naturally occurs in an Agile project. Chapter three was not a quick read for me, and I only recommend the later half of this chapter for methodologists and researchers.
Kennaley outlines ten guiding principals for a new generation of software development methods. Two key principals among these are: Integrated and Evolving. SDLC 3.0 attempts to establish a new baseline among the configuration nightmare found in today's software processes. This integrated baseline in not the end state but a new starting point, from where SDLC 3.1, 3.2, 3.x, and even a 4.0 will emerge and evolve.
In the book and as can be seen in the history of software engineering methods diagram, there are three significant method streams that need to be consolidated, Unified Process, Agile, and Lean. In chapter five which starts with a picture of the United Nations building, Kennaley uncovers the common ground between these methods and identifies a set of distinct practices that each stream has to offer. This theme is continued in chapter six, where he outlines the significant contributions from Lean, Agile, and UP.
The last few chapters are focused on scaling these consolidated industry practices to meet the specific needs of an organization and how enactment technologies can be used to enable organizational agility. Many of us have heard the term, Agility at Scale, this book lays some of the groundwork required to achieve it. SDLC 3.0 is filled with pictures and diagrams that show practice architectures, value-stream maps, enactment blueprints, digital kanban, and more.