Whenever you listen to the name software, one question comes in your mind, that is “how software is made and how the software development process happens? So you will get all the solutions to your questions in this article.
Now before going to software, first you have to understand what is the computer? Because all software is made to run on computers, so let’s take a look at a computer.
The computer is an electronic device that takes input process it and gives output.
To understand this computer let’s take one example: Suppose you are creating a document using MS-word, here Ms-word is the software and we give input from the keyboard, after giving input computer process it and show output to the screen. Now you get an idea that how the computer takes input then process it and gives output but, for this specific task that is creating a document, we need software like MS-word.
So the conclusion is we need software to perform the task on the computer.
Software is a set of instructions instructing a computer to do specific tasks.
This set of instructions is also known as a program. These softwares which are running on the computer is in the form of binary code that is 1 and 0 which is an executable file as shown in the figure below.
As every task in the computer is done with the help of these programs the developer can change it as he wants by doing a program that’s why a computer is also called a programmable machine.
Writing the software in the form of binary is impossible and tedious hence, the engineers made various programming languages like C, C++, JAVA, Python, etc. Sometimes two or more languages are used for making one particular software.
How software is made?
Any program is written using any language that is understandable for a human is called source code and after making this source code with the help of the compiling process is converted into executable file. Here is one example of a basic C program source code converting into software as shown in the figure below.
This simple program can be written by a developer in a reasonable amount of time however, professional software may involve hundreds of developers. A large software would be split up into hundreds or even thousands of files. one concept that allows them to do so is called revision control. So how it works?
As you can see in the above figure, all the source code for the software is stored on a server each developer stores a copy of these files on their machine. they can make changes to the server when they are ready. The server stores a detailed list of what files were changed? what those changes were and who submitted it. If any times the program gets into a bad state the developer can undo the changes until the software program is working correctly again.
Software developers work hard on their software but there are always a few problems with the code and we call these problems as a bugs. Even after a piece of software is released to the public, the software developers must continue to fix bugs and further improve the software. that is why software has updates or new versions that come out periodically.
The software can be created in two different ways: Proprietary, and Open source. These are explained as following below.
The software owned by a person or software company and sold to make money. The source code is not released to the public, only the software is released.
- Open source:
The software is free and anyone can access the source code. Open-source software owners get money through donations.
Types of Software:
- System Software:
Software that work for system or computers. Examples: OS, Drives, Firmwares etc. Firmware is a software which is permanently attached into hardware like the keyboard or TV remote etc.
- Application Software:
Software that works for User. Examples: MS-Word, Firefox, etc.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
- MPI - Distributed Computing made easy
- Downloading gists from Github made simple
- Software Engineering | Halstead’s Software Metrics
- Software Engineering | Classification of Software Requirements
- Software Engineering | Classification of Software
- Software Engineering | Software Project Management Complexities
- Software Engineering | Role and Responsibilities of a software Project Manager
- Software Engineering | Seven Principles of software testing
- Software Engineering | Agile Software Development
- Software Engineering | Software Maintenance
- Software Engineering | Jelinski Moranda software reliability model
- Software Engineering | Schick-Wolverton software reliability model
- Software Engineering | Introduction to Software Engineering
- Software Engineering | Software Business and Development
- Software Engineering | Characteristics of good Software
- Software Engineering | Identifying Software Development Metrics
- Software Engineering | Changing Nature of Software
- Software Engineering | Software Characteristics
- Software Engineering | Software Quality Assurance
- Software Engineering | Software Quality Assurance (SQA) Set 2
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : Ganesh_Giri