Problemas "actuales" de la Ingeniería de Software

Problemas "actuales" de la Ingeniería de Software

Ingeniería de Software

Planteamiento

En alguna ocasión me encontraba dialogando con otros compañeros sobre por qué el desarrollar Software tiene complicaciones, ¿a quién se le deberían de atribuir los problemas durante el desarrollo de Software?, ¿es justo atribuir las complicaciones al equipo de desarrollo? o, acaso ¿es el Software el que genera las complicaciones?

Pressman (2010) considera que "la existencia de un proceso del software no es garantía de que el software se entregue a tiempo" (pág. 31). Entonces, ¿aceptamos que no tendremos algún tipo de control sobre el proceso de desarrollo de Software?

¿Qué hace al Software, Software?

Recuerdo cuando estaba a mitad de mi carrera universitaria, emprendí algunos cursos sobre "Introducción a la Programación" para estudiantes de nuevo ingreso. Esas caras... estaba totalmente seguro que tenían las mismas dudas que yo al inicio, ¿qué es el Software?, ¿qué hace el Software? Para entonces intenté encontrar alguna manera de explicar estas incógnitas con algo razonablemente aceptable; tal vez, prescindiendo de precisión. Tiempo después; conversando con mi hermano que es Ingeniero en Software, me señaló algunos puntos importantes sobre el Software, en palabras de Pressman (2010) "el software es elemento de un sistema lógico y no de uno físico" (pág. 4).

Debemos comenzar destacando que desarrollar o construir Software no es igual a desarrollar o construir un producto físico en el sentido tradicional, no hay una manufactura en el proceso de desarrollo de Software. En ambos casos las personas son las responsables del proceso, pero no se consideran los mismos factores que en un proceso de manufactura. En un producto físico, existen factores ambientales que por sí solos intervienen en el desgaste de este tipo de productos, como lo son: el calor, suciedad, vibración, entre otros. Pero, en el Software no intervienen estos factores, en cambio, el "deterioro" del Software es debido a la introducción de cambios en él, no por los cambios en sí, debido a los errores que puedan provocarse al realizar estos cambios. (Pressman, 2010).

Hardware y Software como factores de cambio

No recuerdo el mes en el que no hubiera ninguna noticia sobre nuevo Hardware, nuevo Software... Mi percepción consiste en que cada mes sale algo nuevo al mercado, ya sea teléfonos, procesadores, motor gráfico, aplicaciones o actualizaciones a cada uno de estos.

Además, nuestro querido código "legacy". Afortunadamente; o desafortunadamente, he tenido la oportunidad de involucrarme en solo un proyecto "legacy". Este consistía en almacenar datos de clientes de la empresa para poder consultarlos y considerarlos para la toma de decisiones respecto a la gestión de la relación con los clientes. Recuerdo perfectamente mi mayor incomodidad con ese proyecto. Se necesitaba realizar la consulta de cada uno de los empleados, probé la aplicación web que consultaba esos datos, nada complicado, un simple "select" con 5 propiedades de la tabla que almacenaba los datos de los clientes, pero, me encuentro con la sorpresa de que la consulta ¡se demoraba 2 minutos en mostrarme 1,000 clientes! No podía creerlo, ¿por qué no tenía paginación?, ¿por qué tanto tiempo? Revisé a detalle las operaciones de la aplicación y me encuentro con que se almacenaban las fotografías de perfil de los clientes en "base 64" en un campo de la misma tabla y también el "thumbnail". Profundizo el problema, la aplicación convertía una imagen en una cadena larga de caracteres para poder almacenarla en la base de datos y cuando se consultaba, se tenía que consultar esa cadena larga de caracteres y convertirla en imagen. Claro que no es el mayor procesamiento que se haga en computación, pero, no imagino a los empleados esperando 2 minutos para que cargue la información de sus 1,000 clientes para poder tomar decisiones.

Ahora bien, cuando se desarrolla o mantiene un Software no es tan fácil como considerar simplemente qué tecnología nos agrada más o cuál sería la más fácil de implementar. Se debe considerar diversos factores, por mencionar algunas cuestiones: ¿a cuáles dispositivos estará destinado nuestro Software?, ¿tenemos que manejar cierto grado de compatibilidad con proyectos legacy?, ¿qué hardware influirá en nuestro Software?, ¿qué paquetes o librerías usaremos y hasta cuando tendrán soporte?, ¿usaremos servicios de terceros y qué estabilidad tienen?, entre otras.

Cabe mencionar que no siempre estará una situación amenazante de la cual debamos preocuparnos, Pressman (2010) refiere que "si el software heredado satisface las necesidades de sus usuarios y corre de manera confiable, entonces no falla ni necesita repararse" (pág. 8).

Realidades del Software

¿Por qué hablamos de Software?, ¿Qué importancia tiene para cada uno nosotros? Bueno, debemos comprender algunas realidades. Es difícil no encontrar Software en alguna actividad de nuestras vidas, intentamos solucionar problemas a través del Software, debemos asegurarnos de comprender el problema. Los requerimientos del Software y Hardware son cada vez más complejos, antes una persona podía desarrollar una aplicación de Software, ahora se necesita a un equipo. (Pressman, 2010)

Pressman (2010) menciona que "debe hacerse ingeniería con el software en todas sus formas y a través de todos sus dominios de aplicación" (pág. 11). Además, Pressman (2010) también refiere que la meta de la ingeniería de Software moderna es "desarrollar metodologías que se basen en el concepto de evolución; es decir, el concepto de que los sistemas de software cambian continuamente, que los nuevos sistemas de software se desarrollan a partir de los antiguos y […] que todo debe operar entre sí y cooperar con cada uno de los demás" (pág. 9)

Comentarios

Tener algún problema en el proceso de desarrollo de Software dependerá de cada proyecto en específico, de los factores que intervienen para su desarrollo y de la capacidad del equipo que esté involucrado. Debemos considerar a la Ingeniería de Software como una "herramienta" para poder lograr Software de calidad y proyectos exitosos.

Ahora bien, ¿tú qué opinas? deja tus comentarios y; si es posible, las referencias.

Referencias

  • Pressman, R. (2010). Ingeniería del software. Un enfoque práctico McGraw Hill Education

Did you find this article valuable?

Support Arturo Villalvazo by becoming a sponsor. Any amount is appreciated!