January 26, 2015

Before Waterfall

Interested in the History of Software Development Methodologies?

... Of course you are! Who wouldn't be? 

Here are a few ancestors to the waterfall method: 

Production of Large Computer Programs, 1956

Adapted from a presentation he had given at an event sponsored by the Navy Mathematical Computing Advisory Panel and the Office of Naval Research in June 1956, Herbert D. Benington talked about his experience working on the Semi-Automatic Ground Environment (SAGE) system at MIT's Lincoln Laboratory.

Mr. Benington presents in his paper, Production of Large Computer Programs, 1956 (PDF) the various stages as:

Operational Plan, Operational Specs, Program Specs, Coding Specs, Coding, Parameter Testing, Assembly Testing, Shakedown, and Evaluation... a minimum production time of 18 months.

Managing the Development of Large Software System, 1970

The August 1970 issue of IEEE WESCON published an article by Dr. Winston W. Royce, director of Lockheed Software Technology. The article was titled, Managing the Development of Large Software Systems, 1970 (PDF)  He detailed how in his nine years of experience with developing software packages for spacecraft mission planning, he saw many successes and failures in projects.

He talks about how many projects he comes across are designed in what we would recognize as the Waterfall method: Generate System Requirements, Software Requirements, Perform Analysis, Program Design, Coding, Testing, then Operations.

He recommended a few changes, such as doing the preliminary program design first, then documenting the design. How much documentation? "'Quite a lot' [...] certainly more than most programmers, analysts, or program designers are willing to do if left to their own devices". If the document is in default, replace project management. He also recommends planning on writing the software product twice: A first pass, then once more after the customer sees the product. Involve the customer in the testing. 

Software Engineering Economics, 1983

Barry Boehm was Founding Director of the Center for Systems and Software Engineering at the University of Southern California. He published a paper Software Engineering Economics, 1983 (PDF) which detailed the steps as:

Feasibility Phase. "How much should we invest in information system
analyses (user questionnaires and interviews, current-system analysis,
workload characterizations, simulations, scenarios, prototypes) in order
to converge on an appropriate definition and concept of operation for
the system we plan to implement?"
Plans and Requirements Phase. "How rigorously should we specify
requirements? How much should we invest in requirements validation
activities (automated completeness, consistency, and traceability
checks, analytic models, simulations, prototypes) before proceeding to
design and develop a software system?"
Product Design Phase. "Should we organize the software to make it
possible to use a complex piece of existing software that generally but
not completely meets our requirements?"
Programming Phase. "Given a choice between three data storage and
retrieval schemes that are primarily execution-time efficient, storage
efficient, and easy to modify, respectively, which of these should we
choose to implement?"
Integration and Test Phase. "How much testing and formal verification
should we perform on a product before releasing it to users?"
Maintenance Phase. "Given an extensive list of suggested product
improvements, which ones should we implement first?"
Phaseout. "Given an aging, hard-to-modify software product, should we
replace it with a new product, restructure it, or leave it alone?"

... The Software Development Life Cycle is ever changing, where people are always trying to find the quickest and most efficient way to design, create, and test software. 

Next, I will go into Extreme Programming and the Agile Software Development Methodology. 

-T.J. Maher
 Sr. QA Engineer
 Quincy, MA

No comments: