miércoles, 21 de septiembre de 2016

Todo el mundo que haya tenido que escribir alguna vez un programa de tamaño medio (o incluso pequeño) estará de acuerdo en que la producción de software es algo, cuando menos, complicado. Pero para decidir de una forma rigurosa si podemos calificarlo como "complejo", recurriremos a la definición de Sáez Vacas (ver capítulo "Marcos Conceptuales"). Tras la revisión de esta definición, podemos concluir que el software se ajusta a ella al menos en los siguientes aspectos:


a. "Dificultad de comprensión". Por lo pronto podemos decir sin temor a equivocarnos que el software es normalmente algo difícil de entender. Cuando nos encontramos ante un listado, sólo tras un cuidadoso examen podemos deducir qué es lo que hace el programa correspondiente. Y aún así, esta deducción suele ser aproximada. Lo que verdaderamente sucede en la ejecución sólo podemos saberlo con certeza después, precisamente, de esta ejecución. Si el lector ha tenido que descifrar alguna vez un código escrito por otro programador, o incluso uno suyo, pero desarrollado hace algún tiempo, comprenderá sin duda de qué estamos hablando. La evolución de los lenguajes de programación, por ejemplo, está fuertemente marcada por el intento de conseguir listados más legibles. Por ejemplo Ada, el lenguaje promovido por el Departamento de Defensa de los Estados Unidos, ha sido diseñado buscando de forma especial el facilitar la comprensión del código. La idea es que un programador diferente del original pueda entender un listado con relativa facilidad, y no le sea difícil hacerse una idea exacta de cómo se comportará el programa correspondiente al ejecutarse. Así suele decirse que Ada es un lenguaje mucho más fácil de leer que de escribir.


b. "Requiere una gran cantidad de información y tiempo, y el esfuerzo coordinado de personas y maquinaria". En efecto, cualquier proyecto informático de mediana entidad requiere de un equipo de profesionales (analistas, programadores, etc.) que se ocupe de definirlo, desarrollarlo, probarlo, mantenerlo e incluso quizás, modificarlo, durante toda su vida útil. La gestión del software es un problema hasta la fecha no resuelto en su totalidad, aunque se han propuesto varias técnicas para afrontarlo. Por otra parte, las herramientas CASE (ingeniería software asistida por ordenador) se están desarrollando a gran velocidad, y no por capricho. Para manejar toda la información generada en el proceso de producción de un programa, se hace necesario el contar con estas herramientas. Si no, el problema llega a ser, sencillamente, inabordable. Para hacernos una idea de lo que supone el tiempo en el proceso de desarrollo, basta recordar los repetidos retrasos que a menudo ha sufrido la aparición de populares programas para pc. Son muy conocidos, por ejemplo, los casos del dBase IV y de la nueva versión del Lotus 123. Y es que el tiempo de desarrollo no sólo suele ser largo, sino que también es muy difícil de predecir.


c. "Efectos positivos y negativos simultáneos". Prácticamente todo el software que se utiliza tiene errores, unos más evidentes y otros menos, unos más peligrosos y otros más G M T.I. Medidas de la complejidad del software 3 Complejidad y Tecnologías de la Información (Tecnologías de la información) benignos, unos conocidos y otros desconocidos (hasta que aparecen, claro, causando normalmente algún perjuicio). Así pues, los programas de que se dispone hacen normalmente lo que se espera de ellos, excepto en el caso de que se encuentren con un error de programación. Los errores no son más que comportamientos no deseados del programa bajo ciertas condiciones que, por alguna razón, pasaron desapercibidas en las etapas de diseño y codificación. Y cuando estas condiciones aparecen, los efectos pueden ser desastrosos. Por ejemplo, a finales de 1.988 alguien utilizó defectos en algunos programas de comunicaciones y de correo electrónico ampliamente extendidos para construir un programa que se "reprodujo", sin permiso (y durante cierto tiempo, sin conocimiento) de los usuarios, por gran parte de la red DARPA, en Estados Unidos. Así los programas de comunicaciones que, en principio, producen efectos positivos, produjeron también el efecto negativo de disminuir la seguridad del sistema.


d. "Comportamiento impredecible". Normalmente, lo más que podemos asegurar de un programa es que ha sido probado bajo muchas condiciones, y que durante esas pruebas no ha presentado comportamientos "extraños". Pero nada más. De hecho, la del software es la única ingeniería que vende sus productos sin garantía, en el sentido de que es común la venta "tal cual", sin garantizar un determinado comportamiento del sistema informático. Los estudios sobre fiabilidad y verificación constituyen un campo donde la investigación es muy activa, aunque hasta el momento no ha deparado resultados espectaculares (véase el capítulo sobre el desarrollo del software).

No hay comentarios:

Publicar un comentario