Software Application Development is the process by which an application is developed for several devices such as computer, personal digital assistants, enterprise digital assistants or mobile phones. From calculating monthly expenses to scheduling reports, these applications help to automate process and increase efficiency of business.
There are several different approaches for software application development. Some use structured, engineering based approach to developing software, whereas others may take an incremental approach. One system development process is may not be suitable for use by all products. Each of the available processes are best suited to specific kinds of projects based on technical, organizational and team requirements.
Most processes have same combination of the following stages of application development. These are:
- Analyzing the problem
- Market Research
- Gathering prerequisites for the proposed application
- Devising a plan for the application
- Coding for the application
- Testing the application
- Development
- Maintenance and bug fixing
These stages are often referred as Software Development Life Cycle (SDLC).
Different processes to software development may follow these stages in different orders, or devote more or less time to different stages.These stages may be carried out in a turn or they may be repeated over various cycles or iterations (an extreme approach). The extreme approach usually involves less time spent on planning and documentation, and more time spent on coding and development of automated tests. Extreme approaches also promote continuous testing throughout the development life cycle as well as having a working product at all times.
Software Development Activities
There are numerous sources of ideas. These ideas can come from market research including the demographics of potential new customers, existing customers, sales prospects, internal software development staff, or creative third party.
Ideas for software products are usually first evaluated by marketing personnel for economic feasibility for fit with existing channel distribution, for effects on existing products, required features and for fit with the company’s marketing objectives.
Planning Process:
An important task in creating a software program is extracting the requirements or requirements analysis. Usually client have an abstract idea of what they want as an end result but do no know what software should do. Expert and experienced software engineers recognize incomplete and ambiguous requirements at this stage.
the requirements are gathered from the client, an analysis of the scope of development should be determined and clearly stated. This is usually called a scope document.
Designing:
Once the requirements are established, the design of the software can be established in a software design document. The language, operating system and hardware components should be known at this time.
This involves a high level design of the main modules and a low level design is created perhaps with prototyping as proof of concept or to firm up requirements.
Implementing, Testing and Documentation:
Implementation actually the part of the process where software engineers actually program the code for the project.
Software testing is an integral part of the software development process. This part of the process ensures that defects or errors are recognized to the earliest.
Documenting the design of software for the purpose of future maintenance and enhancement done through development. The software engineering process chosen by the developing team determine how much documentation is necessary.
Deployment and Maintenance:
Deployment is the stage right after the code is tested, approved for release and distributed into a production environment. This may involve installation, customization, testing and possibly an extended period of evaluation.
Maintaining and enhancing a software to cope with newly discovered faults or required improvements can take substantial time and efforts, as missed requirements may force redesign of the software.
In most cases maintenance is required on regular basis to fix reported issues and keep the software running.