What Is Software Development Blueprinting?
|
Software development is becoming increasingly complex and in order to manage that complexity we need new ways to prescriptively describe software architectures. Our ultimate vision is of a world where strongly prototyped software components plug together like Lego.
This model follows the standard laid down by more mature industries such as electronics, construction or mechanical engineering where competing suppliers create highly reusable and interoperable components that system builders purchase through distributors and connect together rapidly.
|
|
|
In order to enable this age-old and compelling business model for software a new technology-supported approach is required. This must provide the software architect with a means of logically describing their architecture in terms of composable components and primitives and then efficiently mapping this to any available processing resource at runtime.
Such architecture descriptions are referred to as software blueprints and contain a prescriptive description of an executable software framework. That is, a blueprint describes the assembly of components and not the details of the components themselves.
Mature industry has blueprints
|
Consider the building industry. In this mature industry, work is neatly partitioned between the architect (who is responsible for providing the inspirational thought) and the builder (who is responsible for performing procedural work). The highly-skilled architect captures the complete infrastructure of the building in the form of a prescriptive blueprint before the builder touches a brick.
It is the architect who considers holistic issues such as structural integrity, aesthetics, routing of pipes and wires, appropriate placement of doors and windows and all of the other complexities.
|
|
|
The architect's completed blueprint is prescriptive because at the point when he hands it to the builder, the task to completion of the infrastructure only involves the builder undertaking well-defined procedures - the builder is not required to contribute any original (inspirational) thought and is decoupled from any application-specific domain knowledge.
The same concept applies to a software blueprint. Engineers are left with tasks that can be tightly specified and accurately estimated and therefore code produced by the engineering team precisely realizes the architect's intentions. This facilitates outsourcing with real confidence.
Promoting software 'construction'
Software development projects regularly run late, overspend, fail to meet acceptance criteria, incur high through-life costs or all of the above and with the widespread advent of multicore (the concurrency revolution) and consequent necessary surge in software complexity this is only going to get worse.
We believe that these problems can be mitigated and numerous additional benefits realized by adopting a similar model to that of mature construction industries and in particular the specialization of the software architect's role.
We are dedicated to furthering the principles and methodology of software development blueprinting.
|