By mark the activities within software development

By mark the activities within software development


In this text we mark the important tasks of software development. The bulk of this book describes techniques for running out these tasks. As part of the story, we clarify the nature of two important activities that take place throughout software development – validation and verification. If you have ever written a program, there a number of activities that you know you are going to have to run out, for example, testing. The same is true of larger developments, but for big programs and large software systems, there are additional elements.

The activities are:

 1.    A viability study
  2.     Requirements engineering
3.     User interface design
4.    Architectural design

5.    Detailed design
6.     Programming
7.     System integration
8.    Validation
9.    Verification (testing)
10.  Production
11.  Documentation
12.  Maintenance
13.  Project management.

A method model is a plan that makes provision for all these required activities and seeks to include the stages in a methodical way. At the end of this chapter, we introduce the idea of method model, which is an overall trick for accomplishing software development. However, while it may seem obvious that they are carried out in a certain order, we shall see that this is not always the best trick. For example, it may not be ideal to run out validation as final step. Similarly, not all method models included the activities as unique actions.

A viability study

Before anything else is done, a viability study establishes whether or not the project is to proceed. It may be that the system is unnecessary, too expensive or too risky. One method to a viability study is to perform cost-benefit analysis. The cost of the recommended system is about, which may involve new hardware as well as software, and compared with the cost of likely savings. This comparison then determines whether the project goes ahead or not.

Requirements engineering

At the start of a project, the developer finds out what the user (client or customer) wants the software to do and records the requirements as clearly as possible. The product of this stage is a requirements specification.

User interface design

Most software has a graphical user interface, which must be carefully designed so that it is easy to use.

Architectural design

A software system may be large and complex. It is sometimes too large to be written as one single program. The software must be constructed from modules or substance. Architectural or large-scale design breaks the overall system down into a number of simpler modules. The products of this activity are an architectural design and module specifications.

Detailed design


The design of each module or component is carried out. The products are detailed designs of each module

Programming

The detailed designs are converted into instructions written in the programming language. There may be a choice of programming languages, from which one must be selected. The product is the code.

System integration

The individual substance of the software is combined together, which is sometimes called the build. The product is the complete system.

Validation

This seeks to ensure that the software meets its users’ needs. According to Beerbohm, validation answers the question: Are we building the right product? Validation is to do with the client’s view of the system, the external view of the system. It is no use creating a piece of software that works completely (that is tested to perfection) if it doesn't do what its users want. An important example of a validation activity is acceptance testing. This happens at the end of the project when the software is deemed complete, is displayed to its client and accepted by them as satisfactory. The inputs to acceptance testing are the client and the apparently complete software. The products are either a sign-off document and an accepted system or a list of faults. The outcome is that the system complies with the requirements of the client or it does not. Current evidence suggests that many computer systems do not meet the needs of their users, and that therefore successful validation is a major problem in software engineering today. It is a common experience that users think they have articulated their needs to the software engineer. The engineer will then spend months or even years developing the software only to find, when it is displayed, that it was not what the user wanted. This is not only demoralizing for both users and developers, but it is often massively costly in terms of the try needed to correct the deficiencies. As an extreme alternative the system is abandoned. It is too easy to nag the requirements analysis stage of development, when in reality the basic problem is the quality of the communication between users and developers. Users do not know (and usually do not care) about technicalities, since the software engineer expects detailed instructions. Worst of all is the problem of some common language for accurately describing what the user wants. The users are probably happiest with natural language (e.g. English), since the software engineer would probably prefer some more rigorous language that would be unknowable to the users. There is a cultural gap.

No comments:

Post a Comment