2.3 Software Development Process


2.3 Software Development Process

As mentioned previously, computer problem solving involves finding one or more possible solutions to a problem, and describing the solution(s) in an appropriate form to implement the solution in a computer. Software engineering attempts to guide the developer into a well-defined process to be carried out in a disciplined manner, and to accomplish development of correct software. The life cycle is used to organize and manage the software development process and the phases to maintain and retire the software. The overall goal is to produce a quality software product at a reasonable cost. This is one of the basic issues in software engineering.

2.3.1 Software Life Cycle

The entire development process consists of a sequence of activities or phases that are carried out by a team of developers. These activities represent the complete life of the software from birth to retirement. In most cases, the development process is also known as the system life cycle.

The life cycle of a software system can be broadly divided into four groups of activities:

  1. Software development, which includes all the phases necessary to carry out the initial development of the software product

  2. Using the developed software, which includes the activities that support the software in production

  3. Maintenance, which includes the activities that report defects in the software and the subsequent fixes and releases of new versions of the software product

  4. Retirement, which takes the software off production when it can no longer be maintained

The software maintenance is the most expensive, difficult, and time-consuming of these groups of activities. To minimize this, it is important that the development process be well planned and well carried out.

One of the earliest and simplest models for the software life cycle is the waterfall model. This model represents the sequence of activities to develop the software system up to installation for using the software. In this model, the activity in a given stage or phase cannot be started until the activity of the previous phase has been completed.

Figure 2.2 illustrates the sequence of activities or phases involved in the waterfall model of the software life cycle.

click to expand
Figure 2.2: The waterfall model of development process.

2.3.2 Tasks in the Software Development Process

Starting with the description of the initial problem statement, the general sequence of tasks that need to be carried out for developing a correct program is:

  1. Analysis describes what the problem solution is supposed to accomplish. The outcomes of this phase are the various requirement documents, which include specifying the requirements of the problem in a more complete, precise, clear, and understandable form.

  2. Design describes the detailed structure and behavior of the components of the system model. The outcome of this phase is a detailed description of the data structures and algorithms in each component of the model.

  3. Implementation includes the translation of the design solution into a programming language, followed by the compilation of the code written. This is the actual construction of the program(s) for the application. The outcome of this phase is the set of programs constructed.

  4. Testing verifies the program(s) works according to requirements with appropriate data according to the set of examples provided. This phase includes unit testing, which involves the testing of individual components (modules), and integration testing, which involves testing all the components together. The outcome of this phase is the verified application software.

  5. Deployment includes delivery and installation of the program in the user environment.

The overall outcome of this process is a well-documented computer program (software application) that has been tested in the computer with appropriate data and that produces reliable results.

The analysis phase details the requirements of the problem and entails a thorough understanding of the problem and describing in a very precise manner of what the problem is, and what is to be done. It can be argued that this is the most critical phase of program development, because if not done well, the rest of the phases are fruitless.

The analysis phase produces the description of the product in a form that is clear, precise, easy to understand, complete, and consistent.

The decomposition of the software into smaller parts is usually part of the preliminary design. The rationale for this step is that it is much easier to manage small pieces of the software instead of the whole product.

The detailed design may be the most intellectually challenging in program development. In this step, one or more solutions to the problem are investigated. The data structures and the algorithms are designed, written in some appropriate notation (i.e., pseudo-code and/or flowcharts), and documented.

The implementation phase is what is normally called coding, or programming. The implementation phase consists of converting the solution to a suitable programming language and then compiling the corresponding modules of the program.

Note

For large programs, it is necessary to follow the life cycle as a process. This allows for the program construction to be accomplished in an organized and disciplined manner. Even for small programs, it is good practice to carry out these activities in a well-defined development process.

2.3.3 Other Development Approaches

The main limitation of the waterfall model is that it is not iterative, which is extremely necessary in practice. There are some variations proposed for the waterfall model. These include returning to the previous phase when necessary. Recent trends in system development have emphasized the iterative approach. In this approach, previous stages can be revised and enhanced.

The spiral model of software development is a more complete model that incorporates the construction of prototypes in the early stages. A prototype is an early version of the application that does not have all the final characteristics. Other development approaches involve prototyping and rapid application development (RAD).

In carrying out the tasks in the software development process, the following general practices have been proposed:

  • For the design task, the strategy called design refinement has proven very useful. You start with a general, high-level and incomplete design (no details); it provides a big picture view of the solution. Next, work through a sequence of improvements or refinements of the design, each with more detail, until a final design that reflects a complete solution to the problem is obtained.

  • For the implementation task, a similar strategy is followed. This is sometimes called incremental development. This captures the importance of the modular decomposition of the software system. At each step, a single module is implemented (and tested). This practice is sometimes called continuous integration.




Object-Oriented Programming(c) From Problem Solving to Java
Object-Oriented Programming (From Problem Solving to JAVA) (Charles River Media Programming)
ISBN: 1584502878
EAN: 2147483647
Year: 2005
Pages: 184

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net