What is software
Software consists of computer programs that instruct the execution of a computer.[1] Software also includes design documents and specifications.
The history of software is closely tied to the development of digital computers in the mid-20th century. Early programs were written in the machine language specific to the hardware. The introduction of high-level programming languages in 1958 allowed for more human-readable instructions, making software development easier and more portable across different computer architectures. Software in a programming language is run through a compiler or interpreter to execute on the architecture’s hardware. Over time, software has become complex, owing to developments in networking, operating systems, and databases.
Software can generally be categorized into two main types:
- operating systems, which manage hardware resources and provide services for applications
- application software, which performs specific tasks for users
The rise of cloud computing has introduced the new software delivery model Software as a Service (SaaS). In SaaS, applications are hosted by a provider and accessed over the Internet.
The process of developing software involves several stages. The stages include software design, programming, testing, release, and maintenance. Software quality assurance and security are critical aspects of software development, as bugs and security vulnerabilities can lead to system failures and security breaches. Additionally, legal issues such as software licenses and intellectual property rights play a significant role in the distribution of software products.
History:
The first use of the word software is credited to mathematician John Wilder Tukey in 1958.[3] The first programmable computers, which appeared at the end of the 1940s,[4] were programmed in machine language. Machine language is difficult to debug and not portable across different computers.[5] Initially, hardware resources were more expensive than human resources.[6] As programs became complex, programmer productivity became the bottleneck. The introduction of high-level programming languages in 1958 hid the details of the hardware and expressed the underlying algorithms into the code .[7][8] Early languages include Fortran, Lisp, and COBOL
Types:
There are two main types of software:
- Operating systems are “the layer of software that manages a computer’s resources for its users and their applications“.[9] There are three main purposes that an operating system fulfills:[10]
- Allocating resources between different applications, deciding when they will receive central processing unit (CPU) time or space in memory.[10]
- Providing an interface that abstracts the details of accessing hardware details (like physical memory) to make things easier for programmers.[10][11]
- Offering common services, such as an interface for accessing network and disk devices. This enables an application to be run on different hardware without needing to be rewritten.[12]
- Application software runs on top of the operating system and uses the computer’s resources to perform a task.[13] There are many different types of application software because the range of tasks that can be performed with modern computers is so large.[14] Applications account for most software[15] and require the environment provided by an operating system, and often other applications, in order to function.[16]
Software can also be categorized by how it is deployed. Traditional applications are purchased with a perpetual license for a specific version of the software, downloaded, and run on hardware belonging to the purchaser.[17] The rise of the Internet and cloud computing enabled a new model, software as a service (SaaS),[18] in which the provider hosts the software (usually built on top of rented infrastructure or platforms)[19] and provides the use of the software to customers, often in exchange for a subscription fee.[17] By 2023, SaaS products—which are usually delivered via a web application—had become the primary method that companies deliver applications