Do you know how many and what are the categories or types of software on the market? This post explains the top ratings!
1. Generic classification
There are different ways of classifying different types of software . A generic and well-accepted form is as follows:
- Basic (or basic) software: intended for the operation and programming of the computer. E.g. operating systems.
- Application software: programs that have some specific function and allow end users to perform tasks. In short, all non-operating systems. Ex: editors (text, 3D objects, images, video, audio, etc.), games, applications, DBMS, simulators, IDE, etc.
This classification can be found, for example, in reference [1].
Base software is also called system software by some authors .
2. More detailed classification
However, for those who develop software, it is quite opportune to work with more software classifications. For example, it is possible to further detail a business proposal by saying that the software to be developed will be an application, embedded software or client-server software. Each of the types of software can have some common characteristics, as we will see later in this post. In this sense, the application software category is usually divided into several others.
A simpler first unfolding occurs in reference [2], for example. In it, the author considers three distinct categories:
- Base software : same as the previous classification.
- Application Software : Software that enables end-users to perform tasks.
- Client-server software: software developed for network or internet. These are applications made up of two sides: the client and the server.
Despite being an interesting classification, this division considers types of software as a possible synonym for software architecture. In my opinion, these days, this classification has become confusing, as most software today has some functionality to communicate with a server. For example, an offline singleplayer game is application software, but an online singleplayer, which requires login before playing, is client-server software? This classification allows questions like this one.
2.1. Programming languages
An important observation needs to be made regarding the type of base software, or system. The main examples are, in fact, operating systems (OS). But they are not the only ones. Both authors of references [1] and [2] cite programming languages as another type of base software. But how so? Programming language is software. That’s why I didn’t put this information earlier, because I believe it is confusing.
It is necessary to clarify that there are low and high level languages. Low-level ones are closer to code that a machine understands (composed of numbers 0 and 1), while high-level ones are closer to the developer. To learn more about it, read this post .
The latter are sophisticated as they can perform multiple instructions as a single command, focused on being developer friendly. They are used with an IDE (integrated development environment), which is equivalent to a development tool. A program that generates programs. In this sense, an IDE is application software. It depends on an operating system to install and run.
Low-level ones can be used to command equipment without necessarily being an operating system. Imagine the first versions of Unix, made by Dennis Ritchie with the C language. This type of programming was not yet an operating system, but it was already software that partially operated the hardware. This example is therefore a base software. Other examples are drivers and compilers. Not the IDE, just the compiler. It is in this sense that the authors consider a programming language as a base software.
2.2. Scheme
Following this line of thought, it is possible to organize a graph in a tree format according to the image below. Here, software is first divided into system software or application software. So, system software is divided into OS, support systems and development systems. Supporting systems are, for example, file management utilities, such as those that do physical and logical formatting on a medium. On the other hand, application software is classified as general or specific purpose.
3. Complete classification
Finally, we arrived at a very complete classification, despite not representing a consensus in the literature.
- System Software : A collection of programs written to provide services to other programs.
- Application software : stand-alone programs (which run on the internet or other networked resources) that solve a specific business problem.
- Engineering (scientific) software: programs focused on large numerical processing, such as astronomy, molecular biology and other areas with this characteristic.
- Embedded Software : Programs contained within a product or system and used to control the equipment and provide functionality to the end user.
- Product line software : designed to provide specific capabilities to be used by different customers. For example, Microsoft Office provides tools from a product line that are massively used by different areas of the market.
- Web Applications : Network-focused programs covering a large number of applications accessed through a browser from computers and mobile devices.
- Artificial intelligence software : Programs that use non-numerical algorithms to solve complex problems that can be solved by conventional computing techniques.
In fact, the classification is quite complete, but it has some inconsistencies in my opinion. Many of them due to the evolution of functionalities and software platforms or a more focused view on the author’s development experience.
3.1. What has changed in 20 years
An interesting detail of this last classification and reference is that its third edition, from 1995, was the textbook adopted in my graduation course (Computer Science), which I took from 2000 to 2003 at UEM . Counting from the date of publication of this edition to the current version (eighth, 2014), we have practically 2 decades. The pictures below show the covers of the two books. In this way, the book has remained well updated and has become a consolidated reference in the area.
Of course, once I had the opportunity to reread the Eighth Edition recently, I compared the types of software the author classified in 1995 with the types of software in 2014. Not much has changed. Both have 7 categories. In 95, the first classification was called basic software. In 2014, it became system software, but only the nomenclature changed. Consideration remained the same. The embedded software, the scientific and artificial intelligence software, remained intact. The current type, product line software , in 1995 was called personal computer software . Finally, the two most significant name and consideration changes were application software., which was previously called commercial software, but these, described in 1995, had more of a management system character, such as ERPs; and real-time software in 1995, which was replaced by web applications in 2014.