Software Development Models

views updated

81
SOFTWARE DEVELOPMENT MODELS

Software development models are formal methods for organizing and managing the process of creating software. These schemes for organizing the labor of software coding have existed throughout the history of software, but specific models have gained and lost favor in different eras. Models are likewise selected based on the type of project at hand and the expected resources needed to complete it. In the e-business era, for example, some developers argued that traditional software models didn't adequately describe the fast pace and interactive qualities of designing an e-business application. Instead, they offered new models which they believed better addressed these facets of Internet-related software development.

The basic question a software development model tries to answer is: how do I optimize my staff and resources in order to produce the best software possible in the shortest time and for the lowest cost? Of course, no model can guarantee you will reach these lofty goals, but models offer techniques for pursuing them. A more modest question is, how do I go about organizing the complex relations and processes needed to produce a software application? The answer, some would argue, is to choose the right model.

Before looking at some of the particular models that have been used to organize software development, it helps to understand broad changes in the philosophy of software development since the 1970s, when some of the first large-scale methods were codified. Some have labeled the 1970s to mid-1980s the project-oriented stage, when developers were mainly concerned with managing the intricacies of software design without drifting too far afield in project scope or failing to produce the software that was originally intended. Under these models, the lion's share of the development cycle was devoted to producing code according to a fixed plan. Relatively little time was given for planning and designing at the front end of the process, or testing at the back end.

In the 1980s, so-called process models gained a large backing as a result of successful Japanese and European experiments. Process models paid more attention to design, to measuring achievements, and to ensuring the quality of the finished product.

In the 1990s, with the advent of object-oriented programming and the rise of Internet technologies, newer models aimed at rapid development and automation gained popularity. Often centered on developing early prototypes and reusing code structures, these methods remain popular today. In addition to emphasizing efficient mass-production of program code, recent methods have also tried to capture interactive and evolutionary qualities of the development process. They try to find ways to allow changing or reshaping the project late in the development cycle without losing previous work and without delaying completion of the project. When software vendors have done this successfully, it has been key to their competitive strategy. In essence, it is an attempt to ensure software features will be well-received and time-to-market is very short, two goals usually at odds with one another.

WATERFALL MODEL

Probably the best-known model of software development is the waterfall model, first used in the early 1970s in U.S. military-related endeavors. It is a relatively linear model that orders the development cycle into these steps:

  • Document the system concept
  • Record its functional requirements
  • Divide the work into components
  • Design, develop, and test the components
  • Bring the components together and test them
  • Deploy and manage the system

This model, also known as the system development life cycle model, emphasizes an orderly transition through each step, with a sign-off by key decision makers at each stage to prevent sliding backwards when disagreements arise or people change their minds. Indeed, the name stems from the metaphor that once water passes over a cliff, there is no turning back.

While it has been roundly criticized and seems outdated to many, the waterfall model continues to be used. Various developers have proposed "modified" waterfall approaches as well as approaches by other names that subsume the waterfall model as one of their techniques. Many have claimed specifically that the waterfall model isn't appropriate for the pace of Web design, yet it still claims adherents among e-commerce developers. It also appeals to managers who want a strong handle on what is being developed and are uncomfortable with the lack of clear direction other models appear to suffer. Waterfall models are considered most appropriate when the end users of the system are well-known, such as with internal business systems.

EVOLUTIONARY MODELS

Several more recent development models emphasize the evolutionary nature of software production. They try to articulate more of a cyclical or iterative process of developing software that incorporate new information—most importantly, customer feedback—into the plan as the project progresses. These models depend mightily on prototyping, or building simple working versions of the software starting at the earliest stages of the process. In fact, according to the evolutionary prototyping model, the entire development process is essentially aimed at fine-tuning the prototype to a point where it is acceptable to the customer and competitively viable. In theory, this can mean dropping planned features if users are satisfied without them. Likewise, it raises the possibility of adding new features that were not originally intended.

An evolutionary strategy was perhaps most famously used by Microsoft in the mid-1990s when it developed version three of its Internet Explorer. Facing an uphill struggle against the popular Netscape browser, Microsoft employed a fluid and interactive development process that allowed it to obtain customer feedback quickly, and more importantly, incorporate the feedback into its product over just a few months. In-depth, actionable responses from customers are key to making this process succeed. In the end, the new browser proved to be more acceptable to users than earlier versions, and using various tactics Microsoft was able to unseat Netscape for browser dominance.

Similar methods have been adopted directly for Web site development. Such site designs attempt to create a core set of functions that can be launched to users quickly, and then refine the functions and add new ones as users share their experiences.

FURTHER READING

Coffee, Peter. "Coding Over the Waterfalls." eWeek, April 2, 2001.

Fielden, Tim. "Gone in 60 Seconds." InfoWorld, October 23, 2000.

MacCormack, Alan. "Product-Development Practices That Work." MIT Sloan Management Review, winter 2001.