Software development The term software development refers to the set of processes through which electronic software is produced and created. It is also known as the process of developing and creating a specific program using a programming language. The software development process is a logical, iterative process that aims to create a computer program designed and programmed to accomplish a specific task or process. generate code for their devices even though they may not be software developers originally
The history of software development The history of software development dates back to more than 125 years before the advent of the computer, where programming was used in some industrial fields, a kind of software was produced to control the Jacquard Loom by designing punched cards in a way In 1948, the first real program appeared in history, when Tom Kilburn and his colleague designed a small-scale Manchester experimental machine that was used to perform calculations that took about an hour, and it is worth noting that the time it took was considered fast at that time. Modern structured programming languages were first introduced in the 1950s and 1960s, such as Fortran, Lisp, and other languages that became the basis for technical computing and programming during the middle of that century, then object-oriented programming emerged during the 1970s, and the following decade witnessed the The past made a great deal of software development and production, as software appeared in personal computers, such as AutoCAD and Microsoft Word programs. Interest in open source software that the user can modify appeared during the nineties of the twentieth century, and later software became not limited to the computer world, as it was used to develop smartphones and portable devices, and in our time software is involved in almost everything that surrounds us, starting from the simplest things to The most complex of them, using many ancient and modern programming languages.
Software development stages During its development, software passes through what is known as the systems development life cycle (in English: Software Development Life Cycle), and this term refers to all the stages that the software development process goes through, starting from planning its production to its maintenance, and these stages are as follows:
Planning stage: in which software developers collect from the client the requirements and desired goals of the software, during which the way the software works are determined, and this process is usually accompanied by an analysis of market surveys related to the field of software to be developed.
Feasibility Analysis Phase: In this phase, a complete analysis of the client’s requirements is carried out, and how to perform them. This phase witnesses the creation of a document known as the Program Requirements Specifications (SRS), where it is included with all the requirements necessary to complete the project.
Design phase: During this phase, the units of the overall software system are designed, by defining the function of each software unit, and how those units interact with the third party.
Code writing phase: in which programmers start writing the code according to the programming tools available to them, and the standards of the company executing the software project.
Testing phase: It searches for defects or errors in the created program, and checks that it works correctly with external hardware and software.
Deployment and maintenance phase: In this phase, the software is presented in its final form.
Maintenance phase: in which software is maintained, improved and developed according to the change of the system environment on which it may operate in the future.
Types of software being developed
There are four different types of software, which are as follows
System Software: Software that deals with operating systems, managing memory disks, hardware, and other operational necessities.
Programming software: This is a type of software that deals with software development, such as a text editor, tools for writing and debugging code, and so on.
Application software: It is concerned with developing applications designed to help users accomplish certain tasks, such as data management programs, smartphone applications, web applications, and various social networking sites.
Embedded software, which is software that is developed to control machines and electronic devices that are not computers, such as industrial robots, and other types of machines
Software development models
Software is created in all its stages within what is known as the systems or application development life cycle (SDLC) through many models, where the team of programmers who work on creating the software choose the model they want to adopt to develop all stages of that software. Here are the most important models and forms that software developers resort to To build a specific software:
Waterfall Model: This model is named after the way it is implemented, which is similar to the flow of a waterfall. The software is built according to this model in a linear manner; So that each stage of the software development cycle is completed sequentially before the start of the next stage, and the outputs of each stage are the inputs of the subsequent stage.
Spiral Model This model is based on the principle of using different types of software development models and merging them together, through which software prototypes are presented, in addition to the synchronization in the work of programmers teams, including designers and developers.
Agile Modelling This model adopts dividing programmers into groups, and each of them is assigned to complete a specific stage of software development, and these teams all work at the same time so that the entire project is completed in a short time, and it is worth noting that this model has become in recent years the most widely used software development in software companies small and large.
Rapid Model This model focuses on delivering early versions of the software, in order to achieve the fastest possible software development speed while adhering to a strict and fast schedule, and deferring design improvements to later product releases.