Software development
Software development is the process of creating a computer software. It includes the software release life cycle of preparing a design, coding the program, and fixing the bugs. The final goal is software release of a product that serves the wishes of users.[1]
Software product is usually a result of research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities.[2]
There are 3 main goals of software development:
- to meet specific needs of a specific client/business;
- to meet a need of some set of potential users;
- for personal use.
Process
A software development process (model, methodology) is a system that is used to structure, plan, and control the process of developing information systems. Each model is defferent, more or less structured and is considered to be suitable to only some kinds of projects.[3]
There are several stages of software development:
- Analyzing the problem
- Market research
- Gathering requirements for the proposed software
- Devising a plan or design for the software
- Implementation (coding) of the software
- Testing the software
- Deployment
- Maintenance and bug fixing
Activities
Understanding the need
There are different sources of ideas for software products like market research. The next step is market evaluation. It includes a check of cost and time assumptions, economic feasibility, fit with existing channels distribution, effects on existing product lines, required features, fit with the company's marketing objectives.[4]
This process is also connected with non-technical activities like human resources, risk management, intellectual property, budgeting, crisis management, etc.
Planning
An important task in creating a software program is understanding the requirements.[5] The software engineers must accept the client's idea and adapt it to the working process.
Designing
After establishing the requirements, the engineers start creating a software design document. Design of the software means the high-level design of the main modules with a full picture of how the parts fit together. The language, operating system, and hardware components should be clear at this stage.
Implementation, testing and documenting
There are 3 next processes which are combined:
- implementation — programming the code for the project.
- testing — looking for defects
- documenting — making documents of the inner design of software, API can be also included
Deployment and maintenance
The deployment includes installation, customization, testing, and possibly a longer period of evaluation.
Software training and support are important because software is only effective if it is used rightly.
Maintaining and improving software is the stage to cope with new faults or requirements, it usually takes a lot of time and effort.
Software Development Media
Flowchart of the evolutionary prototyping model, an iterative development model[6]
Anjuta, a C and C++ IDE for the GNOME environment
The TEAF Matrix of Views and Perspectives
References
- ↑ Birrell, N.D. (1985). A Practical Handbook for Software Development. Cambridge University Press. ISBN 0-521-25462-0.
- ↑ "New Product Development Glossary". Archived from the original on 2021-04-08. Retrieved 2021-04-01.
- ↑ System Development Methodologies for Web-Enabled E-Business: A Customization Framework Linda V. Knight (DePaul University, USA), Theresa A. Steinbach (DePaul University, USA) and Vince Kellen (Blue Wolf, USA).
- ↑ Joseph M. Morris (2001). Software Industry Accounting. p.1.10.
- ↑ "Ralph, P., and Wand, Y. A Proposal for a Formal Definition of the Design Concept. In, Lyytinen, K., Loucopoulos, P., Mylopoulos, J., and Robinson, W., (eds.), Design Requirements Engineering: A Ten-Year Perspective: Springer-Verlag, 2009, pp. 103-136" (PDF). Archived from the original (PDF) on 2018-01-27. Retrieved 2021-04-01.
- ↑ Dooley 2017, p. 12.