Barbecue Recipe

A recipe is a form of procedure!

Models, frameworks, and methodologies are like the three outer layers of a matryoshka doll.  Once we have opened up the layers from models to frameworks and methodologies, components focused on defining “what” steps or tasks needed to build or deliver a product, the next set of layers shift to defining how to do a specific task or groups of tasks. The next three layers of our process architecture matryoshka doll are processes, procedures and techniques.  Each layer is more granular.

Processes are the workhorses of the most software departments. Processes define well-documented, repetitive groups of tasks and decisions needed to achieve an outcome. A simple example of a process is the steps needed to hold a standup meeting. A process provides a view of the main elements needed to meet the processes business goals.

(more…)

1481963246_fc8d418e34_o

Similar, but not the same.

Models, frameworks, methods, processes, procedures, and the list goes on and on.  Whether we are discussing Agile or plan based software development, works like methods, models, frameworks, processes and others are often used.  The people that use these terms in polite conversation often assume or imply a hierarchy in these terms.  For example, a model might include one or more frameworks and be instantiated in several methods. Each layer in the hierarchy breaks down into one or more items at the next level. Words and their definitions are an important tool to help understand how all the pieces and parts fit together and how to interpret the conversations about how software is developed and maintained in the lunch room or in hallways at conferences like Agile 2016. The unfortunate part is that few people agree on the hierarchy of models, methods, and frameworks.  These words are often used synonymously sowing seeds of confusion and mass hysteria (ok , that might be a teeny tiny overstatement). 

A proposed process hierarchy or architecture is as follows: (more…)

note

Software development frameworks and methodologies are roadmaps.  Frameworks provide scaffolding based on a set values and principles. Methodologies (as we noted here) augment a framework with tools, processes and practices. One framework can be implemented by many methodologies, each representing different interpretations of the embedded values and principles.  Each different interpretation requires a different combination of tools, processes and practices.

Disciplined Agile Delivery (DAD) is a methodology that builds on many other frameworks and methodologies, including Extreme Programming (xP), which is also a methodology. Even though xP predates the Agile Manifesto (Kent Beck the creator of xP helped create the Agile Manifesto), both xP and DAD leverage Agile as their core framework.  DAD uses a three phase structure: inception, construction and transition, with iterations/sprints, stand-ups, demonstrations and retrospectives as processes in all phases.  xP features a flow that begins with an architectural spike followed by release planning, construction iterations, acceptance tests and small releases. Both represent very different implementations of Agile.

There isn’t a one-to-one relationship between software development frameworks and methodologies. One framework can be interpreted, and therefore implemented, in many different ways.  Different does not mean wrong, but it does mean that anyone that wants to embrace a specific framework needs to find (or create) a methodology that fits their interpretation of the values and principles within the framework.

189

What is the difference between a software development framework and a methodology?  We define a framework as a scaffold for an approach to developing, maintaining and enhancing software. Agile is a framework. A methodology is the structure, a set of principles and values, tools and practices which can be used to guide processes to develop, maintain and/or enhance software. Extreme Programming (xP) is an Agile Methodology. Methodologies use frameworks as a roadmap and provide the tools to make frameworks work.

Scrum is an example of a framework. In his recent keynote at the Scrum Gathering in Las Vegas, Dr. Cockburn suggested that Scrum could be defined in “five sentences and that everything else are just barnacles.” Even if we decide that the statement was hyperbole, the framework describes three roles, four meetings, and three artifacts. Scrum does not specify how the meetings or artifacts are to be created or how they should look, but they must be done within the values and principles of the Agile Manifesto.  xP is a methodology that includes a framework featuring feedback and planning loops, principles such as test first, practices such as pair programing and tool supported practices such as continuous integration.  A methodology specifies not only how the development team should act, but also a specific structure and rules to guide behavior.

A framework is not a methodology, however every methodology represents an implementation path for a framework.  Methodologies tell you how to achieve the structure, principles and values that a framework describes.  The distinction between framework and methodology might sound semantic, however understanding the distinction is important to managing exceptions when implementing changes using either a framework or methodology. Methodologies describe how the work is to be accomplished, rather than just the outline of what is to be done. Therefore methodologies are by definition prescriptive, which needs to be communicated and managed during implementation.

176

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.