Análisis de un programa
Un software siempre se crea para dar solución a un problema. Ahora bien, no todos los problemas planteados por los humanos se pueden informatizar. Para determinar si esto es posible, lo primero que hay que hacer es analizar el problema en cuestión. Esto implica determinar cuáles son las exigencias del problema y estudiar si se puede resolver poniendo en práctica las técnicas y conocimientos científicos que se pueden usar en la Ingeniería del Software. En el caso de que sí se considere viable, se debe realizar un análisis muy exhaustivo del problema, fruto del cual se obtendrá una documentación, en donde se especificará, claramente, cuales son los requisitos que el programa deberá tener, entendidos estos como características que el programa poseerá. A dicho documento se le llama Especificación de Requisitos Software (ERS) y en él quedará escrito qué tiene que hacer el programa que se va a desarrollar, tanto en lo que se refiere al comportamiento interno (gestión de los datos) como al externo (interacción con el usuario y con otras aplicaciones).
Especificación de Requisitos Software (ERS)
La ERS es un contrato entre la empresa desarrolladora y la empresa cliente. Ambas partes deben comunicarse muy estrechamente para establecer los requisitos de la aplicación. Una buena ERS ayudará a la empresa cliente a describir qué es lo que quiere, y también servirá a los desarrolladores para comprender qué es, exactamente, lo que le están pidiendo. De la ERS depende el resultado final del producto software. Por tanto, es muy importante que en ella se describa lo más detalladamente posible "todo" lo que se espera que haga dicho software. Hay que saberlo todo, incluso se tiene que saber por qué no se sabe lo que no se sabe. Para ello, el desarrollador debe preguntarle al cliente preguntas tales como:
- ¿Qué debe hacer el programa? Esta es la pregunta más importante, de ella surgirán todas las demás. El cliente debe explicar al desarrollador para qué necesita un software, qué tareas quiere que desempeñe, en qué ámbito, etc.
- ¿Qué datos de entrada y de salida intervienen en el proceso? Todos los programas manipulan datos. Por tanto, esta es la segunda pregunta más importante, de la cual también se derivan otras como: ¿hay que validar o filtrar los datos de entrada?, ¿de cuánta información se trata?, ¿siempre es la misma?, ¿se deben almacenar los datos de salida en algún soporte informático?, etc.
- ¿En qué máquina y sistema operativo se va a ejecutar? Cuando se desarrolla una aplicación de gran tamaño, hay que prestar especial atención a los recursos necesarios para su buen funcionamiento. En relación a este aspecto, algunas otras preguntas son: ¿se va a ejecutar en una red?, ¿la velocidad del proceso es un aspecto crítico?, etc.
- ¿Quién será el usuario de la aplicación? No es lo mismo desarrollar una aplicación para ser usada por personas que poseen conocimientos avanzados de informática (por ejemplo, un administrador de red) que por otras que sólo tienen conocimientos a nivel usuario (por ejemplo, un administrativo). Este aspecto influirá, especialmente, en cómo debe ser la interfaz de la aplicación, y cuáles son los términos en que se elaborará el manual de usuario. El manual de usuario de cualquier programa suele ser un libro que acompaña al software. Dicho manual se puede ir confeccionando a lo largo de todo el ciclo de vida y en él se explica al usuario los pasos que debe seguir para instalar la aplicación, configurarla, utilizarla, etc. A veces, las aplicaciones informáticas también ofrecen una ayuda en línea, que, igualmente, forma parte de dicha documentación.
- Además, hay que saber otras cosas, tales como: ¿cuál va a ser el tratamiento de posibles errores en la ejecución del programa?, ¿cómo se va a garantizar la seguridad de los datos?, ¿cuál será la vida útil de la aplicación?, ¿podrá sufrir modificaciones en el futuro?, etc.
Cuando se pretende desarrollar una aplicación muy grande, su ERS puede ser muy extensa, de varias decenas o cientos de páginas. Por el contrario, la ERS del problema del siguiente ejemplo, se puede escribir en unas pocas líneas, debido a que el programa a desarrollar es muy pequeño; pero, a la vez, es muy ilustrativo.
EJEMPLO Supóngase que alguien que no tiene apenas conocimientos de informática le pide a un amigo, "programador informático", que le haga un programa que sirva para realizar la suma de dos números enteros cualesquiera. La conversación entre ambos protagonistas podría ser la siguiente:
—¿Qué programa necesitas?
—Necesito un programa para hacer sumas.
—¿Qué tipo de sumas?
—De dos números enteros.
—¿Los vas a introducir por teclado?
—Sí.
—¿El resultado se mostrará por pantalla?
—Sí.
—¿En qué ordenador lo vas a ejecutar?
—En el mío.
—¿Qué características tiene?
—16 gigas de RAM, 500 gigas de disco duro...
—Estupendo ¿y sistema operativo?
—Windows 10.
—Bueno, creo que ya lo tengo todo.
De la conversación entre los dos amigos se puede obtener una ERS en donde hay que especificar que el programa debe realizar las siguientes tareas:
- En primer lugar, el programa debe pedir por teclado dos números (datos enteros).
- A continuación, calculará la suma de los dos números introducidos por el usuario.
- Finalmente, tiene que mostrar por pantalla el resultado obtenido (dato entero).
En pantalla se mostrará, por ejemplo:
Así, se ha descrito qué es lo que se espera que haga el programa Sumar, es decir, se ha explicado su funcionalidad.
Por otra parte, en la ERS también habría que especificar quién va a ser el usuario del programa y en qué ordenador y sistema operativo se va a ejecutar. En esta ocasión, el usuario no requiere conocimientos avanzados de informática, ya que, ni si quiera será necesario elaborar un manual de uso del software. En cuanto al sistema operativo y prestaciones de la máquina, al tratarse de un programa tan simple, en principio servirá cualquier computadora del mercado actual.
Cuando una aplicación trabaja con un gran volumen de información, lo normal es que en la ERS también se incluya una descripción detallada de los datos que se van a manipular. En este caso, basta con decir que en el proceso van a intervenir solamente tres datos: dos números enteros de entrada y uno de salida.