Software is a computer program that provides instructions and data to execute user’s commands. It is an indispensable part of the machine you cannot see, but it allows you to use the computer.Software is programmed instructions stored in the memory of stored-program digital computers for execution by the processor. Software is a recent development in human history, and it is fundamental to the Information Age.
Software, in its most general sense, is a set of instructions or programs instructing a computer to do specific tasks. Software is a generic term used to describe computer programs that run on PCs, mobile phones, tablets, or other smart devices. Software is often used to describe all the functional aspects of a computer that do not refer to its physical components (hardware). Scripts, applications, programs and a set of instructions are all terms often used to describe software. Everything that “runs” on a computer, from an operating system, to a diagnostic tool, video game, or app can be defined as software.
Historical Overview of Software
The first generation of software for early stored-program digital computers in the late 1940s had its instructions written directly in binary code, generally written for mainframe computers. Later, the development of modern programming languages alongside the advancement of the home computer would greatly widen the scope and breadth of available software, beginning with assembly language, and continuing on through functional programming and object-oriented programming paradigms.
The first known computer algorithm was written by Charles Babbage in the 19th century for his planned Analytical Engine, to translate Luigi Menabrea's work on Bernoulli numbers for machine instruction. However, this remained theoretical only - the lesser state of engineering in the lifetime of these two mathematicians proved insufficient to construct the Analytical Engine.
The first modern theory of software was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (decision problem).
This eventually led to the creation of the twin academic fields of computer science and software engineering, which both study software and its creation. Computer science is more theoretical (Turing's essay is an example of computer science), whereas software engineering is focused on more practical concerns.
However, prior to 1946, software as we now understand it – programs stored in the memory of stored-program digital computers – did not yet exist. The very first electronic computing devices were instead rewired in order to "reprogram" them. The ENIAC, one of the first electronic computers, was programmed largely by women who had been previously working as human computers. Engineers would give the programmers blueprints of the ENIAC wiring and expected them to figure out how to program the machine. The women who worked as programmers prepped the ENIAC for its first public reveal, wiring the patch panels together for the demonstrations. Kathleen Booth developed Assembly Language in 1950 to make it easier to program the computers she worked on at Birkbeck College.
Grace Hopper worked as one of the first programmers of the Harvard Mark I. She later created a 500 page manual for the computer. Hopper is often falsely credited with coining the terms "bug" and "debugging," when she found a moth in the Mark II, causing a malfunction; however, the term was in fact already in use when she found the moth. Hopper developed the first compiler and brought her idea from working on the Mark computers to working on UNIVAC in the 1950s. Hopper also developed the programming language FLOW-MATIC to program the UNIVAC. Frances E. Holberton, also working at UNIVAC, developed a code, C-10, which let programmers use keyboard inputs and created the Sort-Merge Generator in 1951. Adele Mildred Koss and Hopper also created the precursor to a report generator.
Who Creates Software?
The definition of software implies that someone must sit at a computer somewhere and write the computer code for it. It’s true; there are independent coding experts, teams of engineers, and large corporations all creating software and vying for your attention. Adobe makes Adobe Reader and Adobe Photoshop; Microsoft makes the Microsoft Office Suite; McAfee makes antivirus software; Mozilla makes Firefox; Apple makes iOS. Third parties make apps for Windows, iOS, Android, and more. There are millions of people writing software all over the world right now.
Categories of Software
There are two categories of software
- 1) System Software: A collection of programs that are designed to operate, control, and extend the processing capabilities of the computer itself, is known as system software. The computer manufacturers prepare System Software. It includes the programs that are written in low-level languages that interact with the hardware at a very basic level.
- System Software is a general-purpose software and it works as an interface between application programs (end users) and the computer hardware.
- System Software manages the system resources and provides a path for running the application software.
- For Instance, Operating System and Language Translators are a system software. An Operating System (OS) is Software that acts as an interface between end-user and the hardware of the computer. It provides a specific graphical user interface (GUI) to control the computer.
These are some of the most features of system software as follows,
- It is close to the system
- It is faster and smaller in size
- Difficult to design and also difficult to understand
- Less interactive and difficult to manipulate
- It is written in machine language
- 2) Application Software: Application software is a special purpose software which is used by the user to perform a particular task.
- Application software is designed to meet a particular requirement of a particular environment. All software applications written by the user are Application software.
- This software we can install onto our Operating System. It includes a single program, just like Microsoft's notepad for writing and editing a simple text. under the various Operating Systems, these Applications software are written to run on OS.
- If an application contains a collection of programs these are referred to as a software package. It works together to accomplish a task, such as a spreadsheet package.
- Other examples such as Payroll Software, Student Record Software, Inventory, Income Tax Software, Railways Reservation Software, Microsoft Office Suite Software, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, etc.
These are some of the features of application software as follows,
- It is close to the user
- Easy to design and more interactive
- It is generally written in high-level language
- It requires more storage space as it is bigger in size
- Difference between System Software and Application Software
- System Software is designed to manage the resources of the system like memory management, process management, protection, and security, etc. and also gives the path for application software to run. On the other hand, Application Software is designed to accomplish the requirements of the user for performing particular tasks.
- The System Software is written in a low-level language like assembly language or machine language. However, a high-level language is used to write Application Software. High-level languages such as Java, C++, .net, VB, etc.
- The System Software starts running as the system is powered on and run till the system is powered off. The Application Software starts when the user starts it and stops when the user stops it.
- A system can only run with the System Software while the system always runs without the Application Software as they are only meant for a user.
- The System Software are Operating system, compiler, assembler, debugger, driver, etc while the examples of Application Software are VLC player, etc, Photoshop, etc.
- The System Software is general-purpose software while Application Software is counted in specific purpose software.
There is wide range of available software developed for a specific purpose, the number of programs increases exponentially year after year, we can identify and classify different concepts as:
- Location where is installed:
- Network Software - these are programs and applications that are hosted on Internet or in a server and provide customer service through a network connection, its main characteristic is no need to install, configure and maintain it in the terminal itself, programs such as Office 365, Dropbox or Google Docs are examples among others is used.
- Local Software - also known as desktop software are those that need to be installed and stored on the computer where you run, unlike network software, the suite Office by Microsoft, the graphic design program Photoshop or Windows operating system are examples of this type software.
- Degree of freedom of use:
- Free Software - represent the set of programs in which users have full freedom to copy, share and change it, for it generally has access to the source code of the program itself. The Linux operating system, the image editor Gimp or OpenOffice suite are examples of such programs.
- Owner or proprietary software - represent the set of programs that users have limitations for editing, sharing or copying without the express permission of the owner of the software such as Windows operating system, the image editor Photoshop or Microsoft Office suite.
- Functionality type:
- Systems software - also known as operating systems such software manages and administers the hardware of the electronic device and the execution of other programs. Windows, iOS, Linux or Solaris are examples among others.
- Programming software - represent the set of programs that allow us to develop, create and modify other programs, using this type of software we write the set of instruction in a given language which is known as program code, examples like Apple Xcode, Microsoft Visual Studio or Android of Google.
- Application software - are other programs that are used for a specific purpose, it's kind of software is the most comprehensive that we find in the market, in turn can classify software:
- Office - are all programs that facilitate the office tasks such as spreadsheets, text editors, graphic design, invoice management, POS, etc.
- Business - are all those who are focused on their application in the business area, programs like SAP that manages and administers the entire enterprise, Solidworks enabling the design and calculation of structures and complex machines or Scada developed to operate industrial robots.
- Communication - represent the set of programs to establish and facilitate communication and information between people, web browsers, emails managers, social web applications like twitter or Facebook and Facetime, Whatsapp or Skype are examples of this type of software.
- Security - represent the set of antivirus that detect and eliminate programs that can alter the functioning of our electronic device. Norton, Panda or Karspersky are examples among others.
- Malicious - contrary to previous such programs alter and manipulate information and operation of the computer without the consent of the user.
- Entertainment - are all entertainment programs like video games, music and video players, digital book readers, etc.
- Education - Aimed to teach and learn about a specific or general subject, can cite as examples the Encarta digital encyclopedia or Matlab mathematical program among others.
Client Server Architecture
Software Development Life Cycle (SDLC)
Software Architecture Analysis Method (SAAM)
Software-Defined WAN (SD-WAN)
Software Configuration Management (SCM)
Software Development Effort Estimation
Software Non-functional Assessment Process (SNAP)
Software Project Management