La importancia del Análisis y del Diseño

La informática es un campo muy dinámico, lo que nos obliga a estar en constante “reciclaje” de conocimientos. Cambian las tecnologías, lo que significa: cambio en los lenguajes de programación, cambio en la forma de utilizar las bibliotecas de funciones, cambio en los componentes del sistema operativo en el que se ejecutará, etc.

Por otra parte, los programas no tienen sentido por sí mismos (nadie programa por programar), sino que están enmarcados en un cierto entorno. Los contables necesitan programas de contabilidad, los químicos necesitan programas de cálculo numérico. Los músicos necesitan programas de composición y notación musical. En otras palabras, es preciso tener un conocimiento razonable del dominio en el que se integrará nuestro programa (*).

Además, un mismo problema puede ser enfocado desde distintas perspectivas. Podemos utilizar una aproximación estructurada, o quizá podría ser interesante aprovecharnos de las benevolencias de la orientación a objetos, por poner un par de ejemplos. Si las características del problema lo requieren, cabría la posibilidad de utilizar un sistema basado en conocimiento.

Si a eso le añadimos que, muchas veces, los objetivos del proyecto no están del todo claros, que el proyecto se utilizará en un entorno cambiante, o que el usuario final (o el cliente) no sabe qué es lo que realmente quiere, estaremos todos de acuerdo en que la implementación del producto final será un caos.

Una de las ventajas que tiene el ser informático, es que tenemos un alto conocimiento sobre las tecnologías de nuestro campo. Sin embargo, esa misma ventaja puede convertirse en un inconveniente, puesto que nuestro ímpetu se centra en la aplicación de esas tecnologías (el qué se hará), descuidando por completo la planificación que conlleva cualquier proyecto (el cómo se llevará a cabo).

¿Nunca os habéis fijado en que, cuando menos hayamos pensado en el diseño de un programa, más tiempo tardaremos en obtener la versión definitiva? ¡Y la relación no es lineal! Lo que quiere decir que, si le hubiésemos dedicado un tiempo razonable al análisis y al diseño, la duración del proyecto se hubiese reducido de forma considerable (a parte de obtener, probablemente, un producto de mayor calidad).

La explicación es bien sencilla: un error en el diseño de la aplicación, tiene un coste MUY ELEVADO en la fase de codificación, puesto que en la mayoría de los casos es necesario desechar (o retocar) buena parte del código para corregir el error. Sin embargo, un error en la fase de análisis o en la fase de diseño tiene un coste considerablemente menor, además de ahorrarnos todo el tiempo posterior que hubiese sido necesario para subsanar todos los efectos colaterales que acarrearía el haber corregido ese error en la fase de codificación.

¿Moraleja? No empezar la fase de codificación hasta que la mayoría de decisiones de diseño estén tomadas. Aunque parezca increíble, la fase de codificación TIENE que ser mecánica y sistemática, por lo que su duración debería ser la menor posible.

Y yo lo llevaré al extremo. Dedicaré la mayor parte del tiempo al análisis y al diseño. Por ejemplo, de los seis meses que disponemos, sin ser demasiado exagerados, dedicaré entre tres y cuatro meses al análisis y al diseño.

El objetivo será tener, al cabo de esos tres o cuatro meses, todo lo necesario para empezar la codificación y la implementación. ¿Qué sucederá? Se admiten apuestas :-)

(*) Quizá podríamos exceptuar el caso en el que tanto el análisis como el diseño nos vengan ya dados, y en el que sólo tendríamos que codificar. De todas formas, seguiría siendo aconsejable tener un conocimiento razonable sobre el dominio en cuestión.

About these ads

2 comentarios

Archivado bajo Organización, Fuentes y Recursos, Seguimiento del Proyecto

2 Respuestas a “La importancia del Análisis y del Diseño

  1. miguser

    El análisis y el diseño son muy importantes, pero te confundes con los tiempos. Lo que lleva más tiempo son las pruebas. Si estás 4 meses de análisis y diseño y 1 de codificación vas a tener poco tiempo para corregir errores, que los habrá por mucho que te hayas esmerado en el diseño.

    Por otra parte, estás hablando de sólo una iteración, todo el programa a la vez. No se hasta donde alcanzará tu programa, pero puede ser reconmendable dividirlo en subproblemas y realizar varias iteraciones con sus distintas fases.
    Cuanto menos acoplamiento haya entre etapas (iteraciones) de desarrollo menos acoplamiento habrá en el código final y se reducirán errores.

    Un saludo

  2. ENGEL

    Yo se que el análisis es una parte más importante que la codificación ya que es en esta donde se define alcance del proyecto, y las actividades que nos llevaran a la creación del producto. No es solo papeleo y depende de cada punto de vista, pero lo que yo sé es que si hay un mal análisis te va como en feria con el cliente, porque el simplemente te dice esto debe ser de esta manera y tu no lo estás haciendo así, y pues a cambiarlo.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s