¡Hey, tester! ¿Qué es el software realmente?


Recuerdo como si hubiera sido ayer, era un miércoles de septiembre, a las 9:30 de la mañana, hace muchos años y me encontraba en sexto curso de primaria. Mi profesor de informática, un caballero relativamente joven, entusiasta y que le gustaba enseñar, lanzó contra todo el curso una pregunta sencilla, pero que ayudó a despertar mi curiosidad y la de otros niños presentes.

- "¿Qué es el software?"- dijo el profesor con la voz inquisitiva que le caracterizaba.


Todos nos callamos y nos miramos unos a otros. Ante nuestro silencio, el profesor lentamente se volteó a la pizarra, y escribió:


"Es la parte lógica del computador, lo que no se ve, lo que no es tangible, pero que permite que haya un sistema funcionando".

En ese momento, me sentí muy impactado por el concepto, pues era la primera vez que escuchaba algo parecido. Ya había utilizado software anteriormente, pero aquella definición era mi primera exposición teórica a lo que era el software. Creo que mi respuesta fue "¡wow, que interesante, quiero saber más!". Probablemente uno de esos momentos que marcaron el camino profesional que decidí tomar.


Si me hubieran requerido un diagrama conceptual de software en ese entonces, probablemente hubiera creado esto:




Hace unos días me preguntaba si esa definición se habría quedado con más de una persona y hasta qué punto dicha definición había calado en la mente de muchos profesionales de la tecnología. Por otro lado, también me preguntaba si aquellos apasionados que siguen el mundo del "Software testing" saben lo que significa el vocablo "software", en esa palabra compuesta. Porque si la definición más amplia que tenemos es algo parecida a esa de sexto grado, tal vez no estamos entendiendo todas las implicaciones...


Para indagar en relación al significado de una palabra la opción más lógica sería ir a un diccionario y pues...¡hagamos eso! Según la Real Academia de la Lengua Española (RAE):


Software: Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora.

Esta definición es claramente más completa que la que me dio mi profesor hace más de 15 años, ya que agrega elementos hasta ahora no tratados en este artículo, tales como "programas" y "reglas informáticas".


Hasta aquí la foto conceptual es parecida a esto:



Como la definición de software involucra en sí misma la palabra "programa", es justo asumir que:

Un programa y un software no es lo mismo.

De lo contrario, pudiéramos decir que se ha caído en una falacia de definición.


La definición de la RAE es más acabada y suena mejor que la super simplificación redactada para un grupo de niños, pero, ¿Es la más acertada para un profesional de tecnología? ¿Es la adecuada para un ingeniero de calidad de software?


Antes de responder esas preguntas, continuemos el agujero de conejo lingüístico e investiguemos a qué se refiere la RAE cuando menciona la palabra "programa".


Programa: Conjunto unitario de instrucciones que permite a una computadora realizar funciones diversas, como el tratamiento de textos, el diseño de gráficos,(...), etc.

Las diferencias entre software y programa, basados solamente en el diccionario, son tan sutiles que, para personas no dedicadas al área de la tecnología, parecería muy confuso. De hecho, aun para personas del área se prestaría a mala interpretación por ser tan parecidas.


Esto lleva a que nos preguntemos que si las diferencias entre las palabras "programa" y "software" son casi nulas (meramente un tema de reglas) ¿Por qué usamos el término Software Quality Assurance (SQA) y no Program Quality Assurance (PQA), para referirnos a la disciplina que vela por el incremento de la madurez de sistemas informáticos?


Algo anda mal aqui...

gif












Para resolver este aparente enigma teórico, solo debemos de verificar la fuente de conocimiento que hemos utilizado hasta el momento para establecer las premisas planteadas. Nuestra fuente principal de todo el argumento ha sido el diccionario, específicamente el de la RAE. El diccionario es una herramienta creada para facilitar el conocimiento a personas de todo tipo, especialmente, para los que no son especialistas en áreas particulares del conocimiento. Para hacer esto, a veces son necesarias simplificaciones y/o comparaciones que dejan un trecho tan gris que se hace difícil diferenciar una cosa de la otra cuando se procura profundizar sobre el verdadero sentido de los términos a discutir.


En otras palabras, el diccionario es un buen apoyo para conocimiento general sobre ramas científicas, pero no el único a ser consultado si se quiere una investigación más profunda y conocimientos basados en criterios de la disciplina que se investiga, en este caso, ingeniería de software.


Si vamos a otra fuente de información igualmente válida y técnicamente más robusta, podemos encontrar a The Institute of Electrical and Electronics Engineers (IEEE), que es la organización profesional técnica más grande del mundo, dedicada al avance de la tecnología en beneficio de la humanidad.


Desde esta perspectiva el IEEE describe al software de la manera siguiente:


IEEE: "Software es la suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo".

En mi criterio personal, esta es la definición de software más completa que he encontrado hasta el momento. Tiene la robustez técnica necesaria, un espectro mucho más amplio de elementos que le compone y es fácilmente diferenciable de lo que es un programa.


Un mapa conceptual de software, basado en esta nueva definición, se ve así:


A diferencia de otras definiciones, esta incluye: "Documentación, Procedimientos y Datos"; elementos que son neurálgicos en un verdadero proyecto de software y que constituyen puntos de toma de decisión, a partir de los cuales, se puede determinar si el software funciona correctamente o en última instancia, si se ha construido el software correcto para el cliente.


Al observar este mapa conceptual, salta a la vista que una completa validación y verificación del software, incluye varios puntos de trabajo que van más allá de la simple verificación del comportamiento de programas informáticos. Hay otros factores igualmente importantes, y que de no considerarse en el proceso de SQA, no podríamos calificar el trabajo realizado, como un trabajo efectivo.


Se nos denomina software testers, ingenieros de calidad de software, analistas de calidad de software, probadores de software y no de programas, precisamente por el compendio de elementos que estamos destinados a trabajar.


Como ingenieros de calidad de software, es de suma importancia saber a ciencia cierta, qué es un "software", ya que una pobre definición de este, puede llevarnos a conclusiones erradas y catastróficas en un proyecto. Es necesario que tengamos un alto nivel de manejo en relación al espectro de trabajo que nos toca realizar; y como consecuencia de esto, aportar valor en el proceso de maduración de cada proyecto de software que estemos ejecutando.


Después de todo, ¿Cómo podríamos "asegurar" la calidad de algo que no conocemos?


85 visualizaciones