While I was attending a recent conference I heard the term framework used at least five times in five different contexts in the span of one morning.  Software development frameworks are a scaffold for developing, maintaining and enhancing software. Values and principles help shape the framework so that specific types of techniques and practices fit into the scaffold.

All major buildings begin with scaffold into which all sorts of things like windows, rooms and the façade are added.  The scaffold will only hold the parts it has been constructed to hold.  Just think of tacking the façade or windows of the MOMA in New York onto the Chrysler Building.  The result of that mess would not be fit for use.  The scaffold of the building was influenced by the values and principles that the architects chose to express in their creative vision.  Software development frameworks have the same architecture; a scaffold shaped by values and principles. For example, Scrum is a framework that is molded by the principles and values set forth in the Agile Manifesto. The CMMI© is also a framework.  Goals which embody values and principles govern each process area in the framework.

There are numerous frameworks to develop, maintain and enhance software. A framework provides a structure for software developers to create or maintain software using a set practices and techniques that fit into the framework. A framework provides a blueprint to guide you you while building software. The techniques and practices you use to fill in the scaffold define how you will build.