Software Factory: Towards the Holy Grail of Software Development
Remember the days when you used to punch some quirky looking characters on a flickering green screen they used to call a "computer"? I guess most of us were not even born then.
Today with the luxury of High Level Languages (Man! When was the last time we spoke about "high level language"?) and sophisticated IDE with stuff like intellisense, software development has reached a new peak altogether. And so has the complexity of software systems.
The business, from the days of the green screen, has grown manifold to what it is today, and it's changing faster than ever. Software development methodologies have been trying to keep pace with the changing businesses finding new ways of addressing complexities and dynamism. Despite all the tools, complexities have been on the rise and the line connecting business and technology has continues to be elusive.
Increasing sophistication has only taken us so far, while a host of other issues from developer productivity to receptiveness to changes, faster production, adoption of standards, creating more predictable and sustainable systems have been a huge onus on the technology communities. One way the developers have tried to counter this is by creating reusable artifacts, frameworks and components. But for a swifter, cost-effective business, technology keeps changing so fast, that the reusable components itself may have to be revisited and updated every few months and hence increasing the overall development, maintenance and support cost of these components.
Today, we are at the forefront of another evolution. High Level languages with their english-like syntax will soon give way to business flow diagrams which would have the ability to emit and manage code all by themselves. Much like the assembly lines in the manufacturing industry where a base product line is created, and modified to come up with different variants, the current phase of the evolution is based on identifying software product lines and coming up with variants to suit specific businesses. This is broadly called Software Factories.
I’ll be writing more on the views, theories and practices of this next big thing in software evolution in the coming days.