Introduction
In recent decades, with the rise of technologies, the term digital transformation has gained prominence. Digital transformation can be defined as the migration of companies and societies to a stage where technologies become the backbone of their products and services, leading to the development of new ways of operating and new business models. Also called the Fourth Industrial Revolution (FAO, CEPAL 2020). Some of the technologies that stand out as the main enablers of Digital Transformation are Cloud computing, Big data, Artificial Intelligence, Internet of Things (IoT) and collaborative robotics (Fernández, 2020).
Technology progresses at an accelerated pace and every day it is more difficult for norms, models and standards to be updated to take into account the particularities of each one of them. It is no longer enough to establish processes and standards with which all developments must comply; it is necessary to take into account the differences between the different technologies. “There are many different types of software systems, from simple embedded systems to complex global information systems. It makes no sense to look for universal notations, methods or techniques for software engineering, since different types of software require different approaches. Developing an organizational information system is completely different from a controller for a scientific instrument. None of these systems have much in common with a graphics-intensive computer game. Although all of these applications require software engineering, they do not all require the same software engineering techniques.”(Sommerville, 2016) (Sommerville, 2019)
In this regard, the avalanche of software implemented to provide solutions to specific problems of society has increased competition among software development companies and the quality of the final products consumed by users is becoming increasingly important. Current trends consider quality as a strategic factor. Romero et al. state: "(...) it is no longer an inspection activity but a preventive one: planning, designing, setting objectives, educating and implementing a process of continuous improvement, strategic quality management makes quality a source of competitive advantages that requires the collective effort of all areas and members of the organization" (Romero, 2010) (Marin, Trujillo and Buedo, 2019) (Jiménez, 2020).
Following Sommerville's approach, and the need for software development companies and organizations to incorporate emerging technologies to improve productivity and the economy as a whole, it is necessary to create new business and production management models, in order to facilitate user-centered innovation and the collaboration of organizational digital ecosystems. In response to this order of thoughts and needs, Cuba is immersed in a process of digital transformation, which involves changes in the structure and culture of people and institutions, in order to facilitate the work of staff, through a continuous, disruptive, strategic and cultural change process based on the intensive use of information and communications technology (ICT), systematization and data analysis (Vidal Ledo et al., 2022).
The president of the Computer Science Union of Cuba, Ailyn Febles Estrada, explained that the scope and speed associated with new digital technologies, have led us to define digital transformation with new paradigms, as a moment above informatization. "It is not a fashion; it is something that is here to stay. It is not a simple change; it is revolutionary in many ways". This is a very complex and demanding evolutionary process, it is not something of a day or two and requires the participation of everyone (Puig, 2021).
If the above is taken to the context of software quality, it is no longer enough to ensure the process and the product and to control the quality by the most known international norms, models and standards, if they do not take into account the specificities of software products. The present work intends to make a proposal of software classification associated to its application domain, with the objective of proposing checklists for product evaluation in future researches.
Métodos o Metodología Computacional
The following methods were used for the development of this research, and a brief explanation of the purposes for which they were used is provided.
Theoretical methods:
Dialectical method for the critical study of previous works and for using these as a source of reference and comparison of the results.
The analytical - synthetic method was used for the study of the bibliography about the software categories proposed by various authors.
The deductive hypothetical for the identification of the problematic situation and solutions.
Empirical methods:
Interview to obtain information in order to argue the problematic situation and the validation of the results.
The survey to obtain the experiences of the organizations.
Participant observation to obtain the necessary information for the problem statement, as well as to compare the results obtained.
Statistical methods to evaluate the effect of the proposal.
In the consulted bibliography, several terms are used to group software: software types, software categories, software categorization, software typologies; the term software categories is adopted for this paper. The following are the software categories identified in the consulted research.
(Sommerville, 2016) proposes several categories according to the fit to the type of application:
Stand-alone applications: these are application systems that run on a local computer, such as a PC, and include all the necessary functionality and do not require connection to a network.
Transaction-based interactive applications: these are applications that run on a remote computer and are accessed by users from their own PCs or terminals. Interactive applications often incorporate a large data store that is accessed and updated with each transaction.
Embedded control systems: these are software control systems that control and manage hardware devices. Examples of embedded systems include the software in a mobile (cell) phone, the software that controls the anti-lock brakes in an automobile, etc.
Batch processing systems: These are enterprise systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs.
Entertainment systems: these are systems for mostly personal use, intended to entertain the user. Most of these systems are games of one kind or another.
Modeling and simulation systems: These are systems that scientists and engineers develop to model physical processes or situations, which include many separate interacting objects.
Data acquisition systems: These are systems that collect data from their environment using a set of sensors, and send this data for processing to other systems.
Systems of systems: are systems composed of a number of software systems.
(Del Giorgio and Mon, 2019) proposes a wide range of categories:
Collaborative Systems: they constitute a set of tools and applications that help people, in general geographically dispersed, to work as a team through means to carry out projects and tasks jointly, enabling communication.
Balanced Scorecard (BSC): they link the achievement of long-term strategic goals with the daily operations of an organization.
Business Intelligence (BI): they contain tools that facilitate the exploitation and use of the organization's data, grouping them statistically for the creation of the organization's knowledge. They provide foundation and support for decision making.
Big Data: Big Data is understood as a set of techniques aimed at making decisions in real time involving a large volume of data typically from various sources.
Production Control Systems - Scheduling and Planning (MRP): they form a software application for production planning and procurement of materials.
Control Systems: they provide the means to manage all the information related to both the product itself and the processes used throughout its complete life cycle.
Automation control systems: these are customized systems, capable of giving orders and interacting with a network of automatons and measuring equipment, with a graphic environment of the systems being supervised.
Computer Aided Manufacturing (CAM): these are computer systems that allow parts to be manufactured on Computer Numerical Control machines, calculating the tool paths to achieve the correct machining, etc.
Computer Aided Engineering (CAE): this is a step further in traditional CAD systems, since in addition to the design of the model, it also allows the integration of its properties, conditions to which it is subjected, materials, among others.
Geolocation - Advertising: these systems point to a discipline of great potential that provides information for making business decisions based on the spatial variable.
Software for embedded systems: it is a system generally based on a microprocessor, sensors and actuators, and designed to perform dedicated functions.
SCADA systems: a set of software and hardware used to communicate and control various field devices, as well as to remotely control the entire production process.
Energy control software: these are systems that basically allow to control electrical devices in a centralized and automated way, from any personal desktop computer.
Virtual Reality: this is a three-dimensional environment generated by computers that creates in the user the sensation of being immersed in it.
Augmented Reality: is the real-time visualization of virtual visual and/or auditory elements superimposed on a real-world environment.
(Pressman and Maxim, 2019) and (Palomo and Gil, 2020) proposes 7 categories:
System software: A set of programs written to service other programs. Some system programs (e.g. compilers, editors and file management utilities) process complex information structures.
Application software: stand-alone programs that solve a specific business need. Applications in this area process business or technical data in a way that facilitates business operations or technical or managerial decision-making.
Engineering and science software: a wide range of science programs ranging from astronomy to volcanology, from automobile analysis to orbital dynamics, from computer-aided design to consumer habits, and from genetic analysis to meteorology.
Embedded software: resides within a product or system and is used to implement and control features and functions for the end user and for the system itself.
Product line software: composed of reusable components and designed to provide specific capabilities for use by many different customers. May focus on a limited, esoteric market or attempt to target the mass consumer market.
Web/mobile applications: this category of web-centric software encompasses a wide range of applications, browser-based applications, cloud computing, service-based computing and software that resides on mobile devices.
Artificial intelligence software: uses heuristics to solve complex problems that are not amenable to regular computation or direct analysis.
On the other hand (Guido and Vidosa, 2020) proposes only 4 categories:
"Packaged" or standardized software: products that can be used by any user without requiring implementation or adaptation. In developments of this type, users must adjust to the requirements of the software that was designed for more or less generic management processes.
Embedded software: products that are integrated into different types of machinery and equipment (computers, cell phones, among others).
Tailor-made software: services aimed at solving specific problems for particular customers.
IT services: refer to testing, design, consulting services, implementation and customization (adaptation) of developments, software and hardware sales, personnel training, updating and maintenance of developments (Guido, 2020).
(Universidad Internacional de Valencia, 2023) and (Romero and Pilay, 2021) propose to group software only into three categories according to the function of the software:
System software: consists of software that serves to control and interact with the operating system, providing control over the hardware and supporting other programs.
Application Software: is software that helps us to perform a specific task. There are several categories of Application Software: Business Applications, Utility Applications, Personal Applications, Entertainment Applications.
Programming Software: A programming software is a tool used by professionals as a basis for the development of programs.
While (GeeksforGeeks, 2023) proposes, a larger number of software categories:
System software: required to manage computer resources and support the execution of application programs.
Network software and web applications: network software provides the necessary support for computers to interact with each other and with data storage facilities.
Embedded software: this type of software is embedded in hardware, typically in read-only memory (ROM), as part of a large system, and is used to support certain functionality in control conditions.
Reservation software: it is mainly used to store and retrieve information and perform transactions related to air travel, car rental, hotels or other activities.
Business software: this category of software is used to support business applications and is the most widely used category of software.
Entertainment software: There is a wide range of entertainment software, such as computer games, educational games, translation software, mapping software, etc.
Artificial Intelligence Software: Software such as expert systems, pattern recognition software, etc., fall into this category.
Scientific software: meets the needs of a scientific or engineering user to perform specific tasks. This type of software is written for specific applications using principles, techniques and formulas specific to that field.
Utility software: programs that fall into this category perform specific tasks and are differentiated from other software by their size, cost and complexity. Examples include antivirus software, voice recognition software, compression programs, etc.
Document management software: used to track, manage and store documents in order to reduce paperwork.
In the research consulted, the authors propose different categories of software. From the chronological analysis, it is identified that, initially, only two categories were considered: basic software and application software. Later, with the constant growth and evolution of software development, more specific classifications were proposed according to the type of application and function, defining up to 15 more detailed categories. In this way, the need to treat software differently, according to its characteristics, becomes evident, allowing more specific actions to be taken, improving from project management to product quality. Hence, identifying which are the most developed software categories and their characteristics, allows then to design and use processes, procedures, norms and standards that objectively evaluate the product and the process.
Most authors agree on the categorization of software on the basis of its application, being the most mentioned categories: Application Software, Base or System Software, Embedded Software, Artificial Intelligence Software. As support to the research, a diagnosis of the national scope is also carried out, applying an interview in the main software development companies of the country (DATYS, UCI, DESOFT, XETID, SOFTEL, MIPYMES) to identify which categories of software they develop. We exchanged with specialists with more than 5 years of experience in the institutions, who played different roles: Programmers, Project Managers, Analysts, Testers and Commercial Specialists. This analysis showed that the most developed category in the country is web/mobile applications, with a growing boom in mobile applications. A mobile app is defined as a software application designed primarily for use on small, portable, wireless computing devices, such as cell phones and tablets (Goel et al 2018; Weichbroth 2020); and they perform a myriad of functionalities and services available to users or customers who make recurrent or sporadic use of these devices (Molina et al. 2021). There are three types of mobile applications: native app, mobile web applications and hybrid or multiplatform applications (Puetate, Ibarra 2020).
Results and discussion
From the analysis of the software categories according to the consulted bibliography and taking into account the applied interview, it is adopted as the most complete classification proposal the one proposed by (Pressman and Maxim, 2019) and (Palomo and Gil, 2020) grouping in 7 categories: System software, Application software, Engineering and science software, Embedded software, Product line software, Web/mobile applications, Artificial intelligence software.
To validate the categorization proposal, a survey was applied to the main development companies in Cuba (DATYS, UCI, DESOFT, XETID, SOFTEL, MSMEs) to obtain the experts' criteria. The selection of the experts was made through curricular analysis. Twenty experts from different software development organizations with more than ten years of experience participated.
Expert selection process
Given the variety of institutions that develop software in the Cuban industry and its characteristics, it was necessary to take a sample of experts with extensive knowledge related to quality and quality management in software projects. An initial assessment of possible experts for the validation of the framework was made, considering practical experience as the main factor in this research. The initial criteria for expert selection are listed below:
Working experience in the software industry of 10 years.
Scientific production focused on the object to be evaluated.
Having played roles related to quality management.
Taking into account these criteria, a questionnaire for the curricular summary was carried out. As a result, 20 national experts were selected from institutions such as DESOFT, XETID, UCI and CUJAE.
After selecting the experts, taking into account their knowledge and origin, and in order to validate the proposal, the Delphi method was applied. The Delphi method allows structuring a communicative process of various experts organized in a panel group in order to shed light on a research problem. Its development has to guarantee anonymity, establish an iterative process through feedback and is oriented towards a statistical measure of group response. The Delphi method is based on two fundamental principles: collective intelligence and anonymous participation (López, 2018).
From the results it was possible to contrast that all the categories are evaluated as Very High or High, validating the contribution of the framework in the solution of the research problem. For all categories a mode1 of High or Very High was obtained. The experts did not cast votes on the scale of Low (2) or None (1). The following results are obtained from the votes cast by the experts:
Criteria | Percent | Mode |
---|---|---|
Relevance | 94.7 | 5 |
Pertinence | 94 | 5 |
Coherence | 88.3 | 5 |
Comprehension | 96.7 | 5 |
Accuracy | 64.7 | 4 |
Taking into account these results, it can be said that the experts agree on the proposed categories. Additionally, suggestions were received from the experts: To incorporate subcategories within the Application Software category in future research.
Conclusions
There are several categories of software according to their type of application, the characteristics of each software allow to place it in one of these categories.
The study of the consulted bibliography and the national analysis allowed to identify a proposal of category as a guide to continue the study.
The results of the research show that the most developed software category in the country is web/mobile applications, with a growing boom in mobile applications.