Software products are either driven by market or they drive the market. Customer satisfaction was the main aim in the 1980s. Customer delight is today's logo and customer ecstasy is the buzzword of the new millennium. Products which are not customer-oriented have no place in the market even though they might be designed using the best technology. The front end of the product is as crucial as the internal technology of the product.
A market study is necessary to identify a potential customer's needs. This process is also called market research. The already existing need and the possible future needs are combined together for the study. A lot of assumptions are made during market study which constitute important factors in the development or start of a product's development. The assumptions which are not realistic can cause a nosedive in the entire venture. Although assumptions are conceptual, there should be a move to develop tangible ones to move towards a successful product.
Once the market study is done, the customer's need is given to the research and development department to develop a cost-effective system that could potentially solve customer's needs better than the competitors. Once the system is developed and tested in a hypothetical environment, the development team takes control of it. The development team typically adopts one of the software development models to develop the proposed system.
The basic popular models used by many software development firms are as follows:
A) System Development Life Cycle (SDLC) Model
B) Prototyping Model
C) Rapid Application Development Model
D) Component Assembly Model
A) System Development Life Cycle Model (SDLC Model):
This is also called Classic Life Cycle Model (or) Linear Sequential Model (or) Waterfall Method. This model has the following activities.
1. System/Information Engineering and Modeling
2. Software Requirements Analysis
3. Systems Analysis and Design
4. Code Generation
1) System/Information Engineering and Modeling
As software development is a large process, work typically begins by establishing requirements for all system elements and then allocating some subset of these requirements to software. The view of this system is necessary when software must interface with other elements such as hardware, people and other resources. System is the very essential requirement for the existence of software in any entity. In some cases for maximum output, the system should be re-engineered and spruced up. Once the ideal system is designed according to requirement, the development team studies the software requirement for the system.
2) Software Requirement Analysis
Software Requirement Analysis is also known as feasibility study. In this phase, the development team visits the customer and studies their system requirement. They examine the need for possible software automation in the given software system. After feasibility study, the development team provides a document that holds the different specific recommendations for the candidate system. It also consists of personnel assignments, costs of the system, project schedule and target dates.
The requirements analysis and information gathering process is intensified and focused specially on software. To understand the type of programs to be built, the system analyst must study the information domain for the software as well as understand required function, behavior, performance and interfacing. The main purpose of requirement analysis phase is to find the need and to define the problem that needs to be solved.
3) System Analysis and Design
In System Analysis and Design phase, the whole software development process, the overall software structure and its outlay are defined. In case of the client/server processing technology, the number of tiers required for the package architecture, the database design, the data structure design etc., are all defined in this phase and subsequently a software development model is created. Analysis and Design are very important in the whole development process. Any fault in the design phase could be very expensive to solve in the software development process. In this phase, the logical system of the product is developed.
4) Code Generation
In the Code Generation phase, the design must be decoded into a machine-readable form. If the design of software product is done in a detailed manner, code generation can be achieved without much complication. For generation of code, programming tools like compilers, interpreters, and debuggers are used along with different high level programming languages like C, C++, Pascal, Java etc. The right programming language is chosen according to the type of application.
After code generation phase the software program testing begins. Different testing methods are available to detect the bugs and errors that might have occurred in the previous phases. A number of testing tools and methods are already available for testing purpose.
Most software tend to go through changes once it is delivered to the customer. There are large numbers of reasons for the change. Change could happen due to some unpredicted input values into the system. In addition to this the changes in the system directly have an effect on the software operations. The software should be implemented to accommodate changes that could happen post the development period.