Before we begin, take a look at how this infographic celebrates over six decades of historic migration of software development practices from the waterfall to new DevOps and agile methodologies.


Share this Image On Your Site

Where Did the Term "Software" Come From?

The term “software” was coined in 1953 by 19-year-old Paul Niquette who programmed the Standards Western Automatic Computer (SWAC) at UCLA, one of only 16 digital computers in the whole United States.

When I first said "software" out loud, people around me said, "Huh?" From the very beginning I found the word too informal to write and often embarrassing to say. Nevertheless, with smirking trepidation I did occasionally feature the word "software" in speeches and lectures and media interviews

The Waterfall Model

As computers spread, Dr. Winston Royce’s Waterfall Model (1956) instructed companies on how to produce software in the shortest, most effective manner.

This logical, hierarchical system was introduced in a journal article by Bell and Thayer in 1976 and later standardized by the US Department of Defense in 1985 for its DoD software development providers.

The Six Stages of the Waterfall Model

  1. Preliminary Design
  2. Detailed Design
  3. Development
  4. Unit Testing
  5. Integration
  6. Testing

Still used today, the model is best suited for larger projects and organizations that could benefit from its stringent stages and deadlines.

The Spiral Model

In 1986, Barry Boehm combined the Waterfall model with iterative procedures in a system he called the Spiral Model.

Each of the four phases of the Model begins with a design goal and ends with the client reviewing the results. Each phase, too, has its own particular task.

The Spiral Model best suits large and complex unpredictable projects.

Approaching software development from another tangent, Frederick P. Brooks noted in his 1975 book: The Mythical Man-Month, that “adding more men lengthens, not shortens, the schedule.”

Brooks followed that up with an article called No Silver Bullet—Essence and Accident in Software Engineering that argues that since no single software has ever been completely error-free, we need software development methods for simple and reliable software.

The Scrum Framework

In that same year, 1986, Takeuchi and Nonaka introduced the term “Scrum” that, they said, was an approach to organizational knowledge creation:

“In today’s fast-paced, fiercely competitive world of commercial new product development, speed and flexibility are essential.”

The Scrum framework recommended that software development move from a “rugby” to a “relay” approach. The relay software development approach uses the traditional/waterfall method where one group passes on the process to the next.

The rugby model, in contrast, “passes the ball” within the team as it moves as a unit up the field. The last is faster and makes for more autonomy and stability.

The SCRUM Development Process

Three years later, Schwaber and Sutherland incorporated “Scrum” in their respective software development companies. And in 1995, Schwaber and Shuterland published The SCRUM Development Process that outlined the Scrum approach.

Although Scrum is relatively simple to understand, new users may find Scrum — with its values, roles, events and artifacts — complex

Rational Unified (Software) Process

One year later, IBM’s Rational Software Company created a Rational Unified (Software) Process(RUP) that splits Scrum’s software project life cycle into four phases.

Each phase contains all of the six core development disciplines, while certain processes are given more attention than others.

So far, innovators largely had midsize to large companies in mind. In 1999, Kent Beck authored his book Extreme Programming Explained for small businesses that struggled with vague and changing software development requirements.

The book introduced the Agile revolution for software processing, where the collaborative agility of Scrum was said to be better than the rigidity of the Waterfall framework.

The Agile Manifesto

In 2001, 17 software development practitioners gathered at a ski resort in Utah to ski and relax. In their spare time, they compiled their Agile Manifesto with its four values and 12 principles for more agile software development processes

“Through this work we have come to value: (1) Individuals and interactions over processes and tools; (2) Working software over comprehensive documentation; (3) Customer collaboration over contract negotiation, and (4) Responding to change over following a plan”

Later, Robert "Uncle Bob" Martin added a fifth value called: "Craftsmanship over Crap", at his Agile 2008 keynote in Toronto.

Lean Software Development

Do you want better, faster, cheaper software development? Mary and Tom Poppendieck identified seven fundamental "lean" principles in their 2003 book Lean Software Development that could be adapted to the world of software development.

Each of these principles already revolutionized manufacturing, logistics and product development. They could be applied to software development value, flow, and program developers.

DevOps

Meanwhile, a frustrated Beligan consultant, called Patrick Debois, developed and promoted the term DevOps through his presentations.

DevOps simply means the cross department integration between Development, the department creating the code, and Operations, the department using that code.

Of course, it’s far more complex than that, and its ramifications on software development and deployment were immense. By unifying development and operations, DevOps has created the opportunity for everyone to participate.

Kanban

One last influence was David Anderson’s 2010 book Kanban. Less a software methodology like Scrum, Kanban, sourced from Japan, tells you how to continually improve your software features, products or services.

In that way, its methods can be applied as much to Agile models like Scrum as to traditional models like the iterative process.

Where Does that Leave Us Now?

We’ve come a long way from when Paul Niquette coined “software”. First off, the software development ecosystem — now integrated into DevOps — has acquired an array of tools from Dockers to Kubernetes, Puppets, Chef and Ansible.

As to the best method for software production, Agile frameworks have largely replaced traditional models, with these structures helping teams plan, manage and deliver software on time.

The most popular of these are the Scaled Agile Framework (SAFe), Large Scale Scrum (LeSS) that’s a scaled version of a one-team Scrum, and Disciplined Agile Delivery (DaD).

Expect more developments with a transformative future.