Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

Share this Page URL

Part 1: Background > Software Development Defined - Pg. 20

20 Chapter 3. Software Development Defined This chapter provides some basic background on software development concepts and terminology. A wide range of concepts, from software life cycle to programming paradigms to software architec- tures, are defined. Everyone on your software development team, from junior system administrators to senior project managers, should be familiar with the concepts presented in this chapter. This will provide a "common vocabulary" for everyone on your team to communicate with. If you are starting a new project, or have a large number of new team members, you might want to hold a "Software Development 101" training day, covering some of the basic concepts discussed in this chapter. Besides using such a training day to build a common vocabulary, it also provides a great chance for team building. If you do have a training day, be sure to give everyone the opportunity for hands- on activities. You might want to start with projects using the sample programs contained in this chapter or perform other simple activities such as having everyone build their own web page. If you are a manager or other non-developer who has never written code before, this chapter may seem very long and difficult to get through. We have kept it as simple as possible but did want to include sufficient background in one chapter to allow you to complete the rest of the book. For experienced developers, this chapter may contain a lot of basic information that can be safely skip- ped over. As this chapter is intended to be only an overview, all the concepts introduced, plus many more, are covered further in either the Process or Technology sections of this book. Software Life Cycle Overview Many people unfamiliar with large-scale software development view it as a one-step process. Sit down and write the code. This may work for a simple program developed by one person, but such a process quickly breaks down when any level of complexity is introduced. A more typical software life cycle includes at least seven well defined stages: · · · · · · · requirements specification functional specification design implementation integration validation and verification maintenance Early software development life cycles followed a "waterfall" model, as illustrated in Figure 3-1, where one stage followed another sequentially in time. Winston Royce first described the waterfall model in his 1970 paper, Managing the Development of Large Software Systems. At the time of its development, the waterfall model was a large step forward in software development. For the first time, it added a formal structure to the overall software development process and identified key steps such as requirements definition, system design, coding, and testing. As software development organizations adopted the waterfall model, software development tasks such as requirements anal- ysis, system design, and coding were each done by separate groups of people. For instance, when