The process of computer programming, testing, documenting, creating and maintaining applications that results in a software product is called software development. It starts from conception of the software and ends in the final product through a planned and structured method that takes into account writing and maintaining the source code. This is why software development requires intensive research, prototyping, re-engineering through to the development of new software applications and products.
While software development can be done for a variety of reasons, they can be broadly clubbed into three categories.
Meet specific client or business need – This is customised software that meets specific needs of an organisation or venture. With the exponential boom in smart phone usage, more transactions are being carried out over these small Internet enabled handheld devices than ever before. Hence, to stay competitive, businesses are developing their exclusive mobile applications.
Other than apps, each company has their own software that runs their systems and takes care of key operating functions. These include accounting, personnel management, inventory management, Management Information Systems (MIS) and specialised software that run automated processes within the organisation.
Perceived need of potential users – This is usually in the domain of commercial and open source software. This is different from other types of software which is commonly known as “proprietary” software where only a person or team or organisation that created the software has the authority to modify it. In “open source software” any person can inspect, modify and enhance the original source code. Thus, programmers who have access to a computer program source code can improve on it by adding features or moulding it to meet particular requirements.
Such software is generally used in commercial establishments which buy and then modify it to meet individual and specific requirements. For example, accounting software can have various fields but an organisation that buys one can add fields that are specific to that company only. Users of “open source” software are permitted by its developers to view the code, copy it, alter it and share it.
Software for personal use – This type of software is developed exclusively for personal use. A scientist may have one developed to speed up some tasks that he/she is engaged in or an engineer may have a software created that will facilitate handling and calculations of a project.
Methodologies for software development include a framework that is used to plan, control and structure the process of creating information systems. Over the years a wide range of such frameworks have evolved that has their own strengths and weaknesses. The purpose for developing a particular software is the basis on which the decision to use a specific framework is made. For example, a framework needs to be a highly structured one for software development if the end-use is primarily for precision engineering based business solutions. Others can have an incremental approach where the software is developed piece by piece over time as the need arises.
Whatever may be the techniques and technologies used for software development, a few standardised methods are usually adopted. It starts with analysing the problem and purpose for which the software has to be developed and compiling the requirements for the proposed business solution. The next step is devising a plan or design for the software followed by coding which is the implementation of the software. After testing the software it is deployed in the area for which it has been structured. After the software has been used for some time, programmers will again study it for maintenance and bug fixing. The time required for this whole cycle to be completed depends on the complexities of the software being developed.