Alfred is a long-time teacher and computer enthusiast who works with and troubleshoots a wide range of computing devices.
The four types of computer software include systems, application, malicious and programming software. Computer software, together with hardware and humanware components make up a complete computer system ready for productivity and entertainment.
Computer software, together with hardware and humanware components make a complete computer system. Whereas hardware and humanware are tangible and human, software is data/information, system programs, user applications, instructions, libraries, codes documents and media files, that can only be experienced.
Software can be viewed as text and video; heard as sound; visually manipulated through input/output media, and executed with corresponding commands and gestures. Sample file extensions include, .exe or .dmg for executable and installation files, .doc or .odt for word processors, .jpg or .png for images, .zip for compressed files, .mp3 or .avi for audio/visual files etc.
Once installed on a client computer, software is retained in non-volatile memory commonly known as disk drive. When the computer is powered up, however, the operating system and all running applications, are temporarily loaded onto primary and volatile memory known as random access memory (RAM).
All running software kinds are retained in this memory for as long as they are in use but will not be available once the computer is powered down.
In embedded systems, software is retained in volatile memory at all times, where it provides persistent low-level hardware control.
The Four Types of Computer Software
1. System Software
This is a type of computer software which controls and coordinates the procedures and functions of computer hardware and applications. It allows harmonious computing coexistence by carrying out the man in the middle tasks which provide the platform onto which secondary software is installed and run.
System software can be categorized under the following:
- Operating system: to enable direct communication between hardware, system programs and other applications.
- Device driver: to enable device communication with the OS and other applications.
- Firmware: to enable low-level device control and identification.
- Translators: to translate high-level language code to low-level machine code.
- Utilities: to ensure optimum functionality of devices and applications.
2. Application Software
This is a type of computer software meant to accomplish productive and meaningful tasks for the user. Every single application is designed with the end user in mind as contrasted with system and programming languages software, which are concerned with computer management and development.
An application software is designed to run on computer desktops, mobile devices and web browsers.
There are two kinds of applications:
- General Purpose
While the overall intention of applications is to be productive, some, however, are laden with derivative motives. They are coded and spread within systems to produce undesired results.
Malware, short for malicious software, is a generic term used to refer to intrusive and cunning code and active content designed by criminals and black hat hackers to cripple functionality of a computer. The end result for the victim is usually data loss or hacker access to private information.
Client computers can also be converted into zombies when they are injected with active bots, for them to partake in wider mission of criminal activities. A remote criminal can use multiple zombie(s) to launch denial of service attack, send spam and download additional malware.
Out of the many, malware codes are intended to spy, fish for private information, hijack browsers, corrupt running applications and seek ransom for stolen data.
A malware script is delivered to a computer as a virus, trojan, rootkit, keylogger, worm, or through mail and websites as adware, spyware, ransomware and scareware. A computer can as well be compromised and used as a zombie to spread malicious codes to other victims around the world.
It will come as an executable .exe and .vbs code, or will attach itself to an executable file and will replicate from one computer to another through a network or Internet.
Users are vulnerable to attacks if they have not implemented good security utility, access targeted email and sites, or fail to update operating system and applications.
Installation of pirate, free and fake software can as well expose a client computer to malware.
An intelligent user also needs to stay alert and prepared when new attacks arrive.
WannaCry, CryptoLocker, ILOVEYOU, Stuxnet, Zeus, Thunderstrike and Petya, are just a few of famous malware examples in the past few years.
4. Programming Software
This is a set of tools used by programmers to create other software like Windows OS and Word processing. Also called languages, they are used to write source codes, debug errors, and maintain and create new software for computers. They are also used to write malicious scripts like viruses and trojans. Programming languages contain formal and comprehensive vocabulary and sets of rules that must be followed.
These types of software are either high or low level, and this is explained by the difference in their complexities. Some languages are also loosely considered mid-level.
Writing software in a low-level language is tough business since the coding must communicate with hardware architecture directly.
It suffices to say that hardware only understands machine code, a language that makes perfect sense to the processor. It is largely made up of 0s and 1s and can present a complex scenario for a developer when the two figures have to be shoveled around endlessly to make meaning. This language requires extensive knowledge of hardware architecture and configuration.
Assemblers and to an extent C, which is sometimes considered mid-level language, form the foundation of low-level language; with the latter being the preferred choice when creating system software, drivers and embedded firmware.
On the other hand, a high-level language is programmer friendly and easier to write since it abstracts the bulk of hardware details in its syntax. In the end, however, a high-level language code must be translated into machine language using low-level languages. A compiler, assembler, and Interpreter form the core of translator languages.
Using an assembler, for example, GOTO 10 will be translated to machine code 10 1000 0001 0000.
All high level languages have unique sets of keywords and syntax which they use to organize program instructions.
For example, REAL, BASIC and Visual Basic are the best languages for quick development, because they use point and click interface for faster development.
C++ and Java are object oriented programming languages, and best designed for more complex software assignments that need an entire team of developers.
BASIC provides entry level for software students since it is easy to learn.
Examples of languages and corresponding output of 'Hello World'
mov $4, %eax /* write system call */
mov $1, %ebx /* stdout */
mov $msg, %ecx
mov $msgend-msg, %edx
mov $1, %eax /* _exit system call */
mov $0, %ebx /* EXIT_SUCCESS */
msg: .ascii "Hello, World\n"
echo "Hello World!";
Popular software and languages used to write them
- Windows: C, Assembler
- UNIX/Linux: C, Assembler
- Device drivers: C
- Android: Java, C++
- OSx and IOS: C, Objective C, Swift, C++
- Embedded firmware: C, C++, Assembler
- IOS apps: Swift, Objective-C
- Windows apps: C#, C++
- Browsers: C++, Rust
© 2017 Alfred Amuno
john on October 15, 2020:
very helpful my guy
Pieter van Zijl from Barcelona Spain on October 07, 2020:
Good explanation of software types.
Denis Tapper from UK on April 09, 2020:
muhusun aminu on February 08, 2020:
Chad Crouch from South Africa on October 05, 2017: