Computer software refers to programs that direct the activities of computer systems. These programs are written by programmers who use specific programming languages to generate instructions that the computer understands through the use of language translators. Thus, computer software consists of the detailed preprogrammed instructions that control and coordinate the computer hardware components in an information system (Laudon & Laudon, 2006). The term software includes application software, firmware, middleware, system software, software testing, and test are. Application software , like presentation software perform productive functions for users; Firmware, is software that is coded and resides into memory devices on the motherboards; Middleware is a software that links the presentation components and the processing components of a distributed system; System software, which includes the operating systems, provide an interface between the user and the computer hardware; System testing involves programs that ensure that software is tested inline with the programming domain; Testing, which is a term that encompasses all the various testing methods for software packages.
In light of this, computer software can be broadly categorized into three major groups: system software, application software, and programming software. The following paragraphs describe these classes of software and other domain-dependent software.
System software: software in this category enhances the functioning of computer hardware and the computer system. System software is independent of any general-purpose software package or any specific application area. Software in this category controls or in other instances supports the other software. They include operating systems, utility programs, performance monitoring software, and communication software (Greasley et al, 2006). Operating system is a master program that controls the functioning of the computer hardware. It is an interface linking the user and the hardware. The main functions of an operating system include coordinating input and output devices, controlling the use of the backing storage, integrating the user and computer communication, allocation and de-allocation of computer memory to different processes, and controlling the utilization of the processor resources (Stallings, 2004). Due to the advancement in technology and increasing user requirements, most modern operating systems use graphical user interfaces (GUIs) as opposed to command-driven interfaces used by conventional operating systems.
This implies that a GUI can be able to meet the user’s requirements by seamlessly managing multiple programs simultaneously. More so the emergence of the Internet and computer networks has led to the development of Internet operating systems; these systems enable users to access information from the World Wide Web due to the integration of the Internet standards and the operating systems. Most operating systems work with the Internet Protocol, although there are some which are commonly used on the Internet. Thus, the common operating systems include Windows, Linux, and OS X. Utility programs as part of the system software are service routines that make enhance users’ operations. They eliminate the need to write a program or spend a lot of time working through menus every time users need to perform certain functions. Utilities include disk defragmenters, disk checkers, backup, file managers, archive and disk partitioners (Long, 1994). As one of the system software, performance monitoring software is used to monitor, analyze, and report on the performance of the overall computer system and the computer system devices. Performance monitors provide information such as processor utilization and memory usage. Lastly, communication software, which is mainly used in mainframe environment is executed on the front-end processor, the down-line processor, and the host processor. This software controls the data traffic from remote locations. Functions performed by communications software include preparing data for transmission, polling remote terminals for input, establishing the connection between two terminals, and encoding and decoding data.
Firmware: these are computer devices, normally the chips that reside on the mainboard and having some instructions or rather programs written in them. Firmware is involved in the basic functioning of a device, in which without the software, a device may not function well. Examples of devices that contain firmware include hard disks, keyboards, and memory cards. More specifically, the chips that hold programs, which are classically termed as firmware include: ROM (Read-only memory), PROMs (programmable read-only memory), flash memory, and EPROMs (erasable programmable read-only memory). Firmware in ROMs can only be read but cannot be updated; this is because they are supplied by the manufacturer and thus platform-independent. Firmware in PROM or EPROM can be updated if need arises (Apple, 2009). Consequently, flash memory is the most used firmware. It is erasable and can also be used as a computer hard disk.
Application Software: this is software designed and written to perform specific personal, business, or scientific processing tasks, such as payroll processing, human resource management, or inventory management (Cole, 2009). These applications process data and generate information for the user. Application software is developed by programmers who base their work on the requirements of the individuals or organizations procuring the software. Furthermore, this category of software can be divided into general-purpose software and customized software. General-purpose software provides the framework for the great number of business, scientific, and personal applications. Spreadsheets, computer-aided design (CAD), word processing, desktop publishing, presentation graphics, and database software fall into this category. Most general-purpose software is sold as a package – in that, it includes software and user-oriented documentation (reference manuals, keyboard templates, demos, and so on). It is up to the user of the software to create the application. On the other hand, customized software is a program that is designed according to the need of the person purchasing it. As outlined earlier, payroll processing systems, inventory systems, and decision support systems for specific companies fall under this category (Greasley et al., 2006).
Programming software: the types of software that fall under this category enables programmers to code and compile programs using various programming languages more efficiently. Four types of programming languages are of great importance in the computer world: 1. Machine language – which uses a collection of binary codes implicit to specific processors. 2. Assembly language – which uses mnemonics to replace the binary codes. 3. High-level languages – these are machine-independent languages that combine algebraic expressions and English symbols. 4. Low-level language – which uses codes that the computer system can understand. Therefore, the various programming software includes: compilers, assemblers, interpreters, linkers, and text editors. Compilers, interpreters, and assemblers convert source code written in a text editor to a machine language. Assemblers convert a program coded in a low-level language into corresponding machine code. Interpreters and compilers convert a high-level language into a machine code. An interpreter transforms the high-level instruction into a machine program, line by line, as the program is executing; a compiler translates the whole code into machine code before running the program. A linker combines the object codes generated by the compilers into a single executable program file (Stallings, 2004).
References
Apple. (2009). What is Firmware? Web.
Cole, B. (2009). What is Computer Software?. Web.
Greasley, A., Bocij, P., Dave, C., & Hickie, S. (2006). Business Information Systems. 3rd Ed. Essex: Pearson Education Limited.
Long, L. (1994). Computers & Information Systems. 4th Ed. New Jersey: Prentice Hall.
Laudon, K. C., & Laudon, J. P. (2006). Management information Systems: Managing the Digital Firm. (9th Ed).Upper Saddle River, NJ: Pearson Prentice Hall.
Stallings, W. (2004). Operating Systems. (5th Ed.). Upper Saddle River, NJ: Prentice-Hall, Inc.