What is software?
Definition: The programs, routines and symbolic languages that control the functioning of the hardware and direct its operations. It can perform specific or multiple tasks and is like blood in human body.
Software can be of three types:
1-Application Software
2-System Software
3-Programming software
Software Product Development
Software product development is a structure imposed on the development of a software product. Synonyms include software development life cycle and software development process.
The software development lifecycle involves mainly six stages.
1. Requirement Stage
2. Analysis Stage3. Design Stage
4. Construction Stage
5. Testing Stage (QA)
6. Deployment Stage
1. Requirement Stage: First of all we have to determine the requirements to be met by system being contemplated and arrive at a consensus after a thorough discussion among managers. Then comes the Software Requirement Specification or the SRS Document. SRS means to draw up understandable plan of what the system will provide as outputs. User’s requirements are found out through discussion and specification is drawn up and documented. The different applications of the software are to be prioritized and the one with the highest priority is to be selected for the implementation of the software.
2. Analysis Stage: In this stage, first a feasibility analysis is required to be conducted. We need to assess the resources that are required to carry out the project in terms of- Equipments, Manpower and funds.
We also need to assess whether the benefits we are going to derive from the software covers all the cost that we are going to incur to develop it. It is called the cost-benefit analysis. Then we need to draw up the final specifications of the software as to what exactly the software will deliver as output. SRS is Written-Delivered-Agreed upon.
3. Design Stage: After collecting the necessary hardware and software required to carry out the project, we will proceed towards preparing a logical design of the system. The design is nothing but a blueprint of the future software that is going to be developed. In this stage, we also need to create a database for the system using which the software we are going to develop will answer our queries. The last step of the design stage is to draw up the final technical specifications of the software development project.
4. Construction Stage: This is the most important stage of the software development life cycle where the actual construction of the software takes place. An implementation plan is written as per the technical specifications of the software that were finalized in the design stage and accordingly the software is developed by the engineers with the help of various programming languages. A software is developed in a phase by phase manner and there are various models available for the development of the software. The model which best suits the requirements is supposed to be adopted.
5. Testing Stage (QA): Once the software is developed, it is handed over to the Quality Assurance department for testing. The testing engineers check the software thoroughly to determine if the software is functioning as per the requirements. For software testing there are two methods available- Manual Testing and Automated Testing. Once testing is over, the software is sent for a trial run. Based on the results of the trial run, the final evaluations of the software are done.
6. Deployment Stage: This is the sixth and the final; stage of the software development life cycle. The software is delivered to the client and is also installed at the client location. Necessary customizations are made as per the requirements of the client. The workforce of the client or the users are trained to work efficiently on the software. The deployment stage also involves the maintenance or the post delivery technical support. It is provided by the developer as per the service contract which is a part of the SRS Document.
Software development models
Waterfall Model
It is the most widely used model. It is very systematic and easy to plan. In the waterfall model the activities are executed one after another and in fully sequential manner. An activity starts only when its preceding activity is done. Here faults can be found immediately and thus time and money are saved. This model is used by US Department of defense, NASA and many large government agencies in the US and elsewhere.
Spiral Model
This model combines the features of the prototyping model and waterfall model. It is most often used in large projects. It was used by the US army to develop the Future Combat System. The estimates in this model are more realistic. In the first stage the system requirements are defined and a preliminary design is created. A prototype is created based on the preliminary design. A second prototype is evolved by a four fold process. Then more prototypes are added if necessary. A fixed system is constructed and is sent for testing.
Chaos Model
The Chaos Model extends the Spiral model and Waterfall model. In chaos model the phases of the life cycle apply to all levels of projects.
1. The whole project must be defined, implemented, and integrated.
2. Systems must be defined, implemented, and integrated.
3. Modules must be defined, implemented, and integrated.
4. Functions must be defined, implemented, and integrated.
5. Lines of code are defined, implemented and integrated.
A complex software emerges from the combination of smaller building blocks.
Top-down and Bottom-up models
Top down emphasizes on planning and a complete understanding of the system. It is more time consuming and less risky. It involves traditional procedural languages. Bottom up emphasizes on coding and early testing. It is less time consuming and more risky. It involves object oriented languages such as C++ and Java. Modern software design approaches usually combine both the models.
Unified Model
It is an iterative and incremental development process. Organizations utilizing unified process invariably incorporate their own modifications and extensions viz. Agile unified process, Basic unified process, Essential unified process, Open unified process, Enterprise unified process, Rational unified process. The various stages involved are-
(1)Inception Stage (2)Elaboration Stage
(3)Construction Stage (4)Transition Stage
Prototyping Model
Prototyping is the process of quickly putting together a working model (a prototype) in order to test various aspects of a design, illustrate ideas or features and gather early user feedback. Prototyping is often treated as an integral part of the system design process, where it is believed to reduce project risk and cost. Often one or more prototypes are made in a process of iterative and incremental development where each prototype is influenced by the performance of previous designs, in this way problems or deficiencies in design can be corrected. When the prototype is sufficiently refined and meets the functionality, robustness, manufacturability and other design goals, the product is ready for production.
Conclusion
Software product development is a release-based process, which implies several versions of the product exist at any given time. It is imperative for management to determine the status of each product, the direction of progress, and the final destination.