martes, 7 de junio de 2011

PROTOTIPOS



En ingeniería de software el modelo de prototipos pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar mucho dinero pues a partir de que éste sea aprobado nosotros podemos iniciar el verdadero desarrollo del software.

El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

Para la creación de estos prototipos es necesario de contar con personas que tengan un alto nivel de creatividad, es decir, personas que puedan presentar un problema en la mente con claridad (ya sea imaginándolo, visualizándolo, suponiéndolo, meditando, contemplando, etc.) y luego originar o inventar una idea, concepto, noción o esquema según líneas nuevas o no convencionales.es una actividad que supone estudio y reflexión más que acción.
En este proceso se distinguen las siguientes etapas: plan y diseño rápido, construcción del prototipo, desarrollo, entrega y retroalimentación, y, finalmente, su comunicación al cliente.
Podemos distinguir distintos tipos de prototipos según las características de éste:

1.        Baja Fidelidad vs. Alta Fidelidad.
·      Baja Fidelidad: conjunto de dibujos (por ejemplo, una presentación de escenarios) que constituye una maqueta estática, no computarizada y no operativa de una interfaz de usuario para un sistema en planificación.
·      Alta Fidelidad: conjunto de pantallas que proporcionan un modelo dinámico, computarizado y operativo de un sistema en planificación.

2.        Exploratorio vs. Experimental vs. Operacional.
·      Exploratorio: prototipo no reutilizable utilizado para clarificar las metas del proyecto, identificar requerimientos, examinar alternativas de diseño o investigar un sistema extenso y complejo.
·      Experimental: prototipo utilizado para la validación de especificaciones de sistema. 
·      Operacional: prototipo iterativo que es progresivamente refinado hasta que se convierte en el sistema final.

3.        Horizontal vs. Vertical vs Diagonal.
·      Horizontal: prototipo que modela muchas características de un sistema pero con poco detalle. Dicho detalle alcanzará una profundidad determinada, va a resultar especialmente útil en las etapas tempranas de diseño y tiene como objetivo el test del modo de interacción global, al contemplar funciones comunes que el usuario va a utilizar frecuentemente.
·      Vertical: prototipo que modela pocas características de un sistema pero con mucho detalle. Va a resultar especialmente útil en etapas más avanzadas del diseño y tiene como objetivo el test de detalles del diseño.
·      Diagonal: prototipo horizontal hasta un cierto nivel, a partir del cual se puede considerar vertical.

4.        Global vs. Local.
·      Global: prototipo del sistema completo. Prototipo horizontal expandido que modela una gran cantidad de características y cubre un amplio rango de funcionalidades. Va a resultar muy útil a lo largo de todo el proceso de diseño.
·      Local: prototipo de un único componente o característica del sistema de usabilidad crítica. Va a resultar de utilidad en algunas etapas específicas del proceso de diseño.

A la hora de diseñar el prototipo hay que tener en cuenta las siguientes dimensiones del mismo:
A.    Prototipo Guiado: prototipo lo suficientemente operativo como para lleva a cabo una revisión o paseo cognitivo
B.     Prototipo de Animación: prototipo lo suficientemente operativo como para ser ejecutado por partes en modo de presentación en un ordenador
C.     Prototipo del Mago de Oz: prototipo que permite ser ejecutado en modo de presentación y la participación de un tercer sujeto que, oculto a la vista del usuario que interactúa, gestiona la evolución de la presentación en función de las entradas que el usuario proporciona al sistema
D.    Prototipo Interactivo: operativo en sentido estricto, se ejecuta y responde a las entradas que le proporciona el usuario participante en tiempo real
E.     Prototipo Funcional: operativo en sentido estricto, se ejecuta, responde a las entradas que le proporciona el usuario participante en tiempo real y efectúa alguna de las operaciones que se le solicitan

Por otro lado, la forma de saber que nuestro prototipo es único y no reutilizable, es cuando éste cumple con las siguientes características:

Ø  Ejecutabilidad: trabaja lo suficientemente bien con la entrada activa que le procura el usuario para permitir un test de usabilidad
Ø  Maduración: puede evolucionar, con el suficiente refinamiento, hasta el producto final
Ø  Representación: tiene el aspecto y las características de actuación del sistema en planificación
Ø  Perspectiva: como mínimo simula un 20% de las funciones que los usuarios utilizarán el 80% del tiempo.

La construcción de prototipos se puede utilizar como un modelo del proceso independiente, se emplea más comúnmente como una técnica susceptible de implementarse dentro del contexto de cualquiera de los modelos del proceso expuestos. Sin importar la forma en que éste se aplique, el paradigma de construcción de prototipos ayuda al desarrollador de software y al cliente a entender de mejor manera cuál será el resultado de la construcción cuando los requisitos estén satisfechos. De esta manera, este ciclo de vida en particular, involucra al cliente más profundamente para adquirir el producto.
Las ventajas que estos tienen es que son muy útiles cuando el cliente conoce los objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida. Además, ofrece un mejor enfoque cuando el responsable del desarrollo del software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debería tomar la interacción humano-máquina.
Por otro lado podemos resaltar como inconveniente de estos el que el usuario tiende a crearse unas expectativas cuando ve el prototipo de cara al sistema final. A causa de la intención de crear un prototipo de forma rápida, se suelen desatender aspectos importantes, tales como la calidad y el mantenimiento a largo plazo, lo que obliga en la mayor parte de los casos a reconstruirlo una vez que el prototipo ha cumplido su función. Es frecuente que el usuario se muestre reacio a ello y pida que sobre ese prototipo se construya el sistema final, lo que lo convertiría en un prototipo evolutivo, pero partiendo de un estado poco recomendado.
Además, como otro inconveniente, en aras de desarrollar rápidamente el prototipo, el desarrollador suele tomar algunas decisiones de implementación poco convenientes (por ejemplo, elegir un lenguaje de programación incorrecto porque proporcione un desarrollo más rápido). Con el paso del tiempo, el desarrollador puede olvidarse de la razón que le llevó a tomar tales decisiones, con lo que se corre el riesgo de que dichas elecciones pasen a formar parte del sistema final.
En conclusión, a pesar de que tal vez surjan problemas, la construcción de prototipos puede ser un paradigma efectivo para la ingeniería del software. La clave es definir las reglas del juego desde el principio; es decir, el cliente y el desarrollador se deben poner de acuerdo en que el prototipo se construya y sirva como un mecanismo para la definición de requisitos, pero que finalmente éste se descarte, al menos en parte, y que después se desarrolle el software real con un enfoque hacia la calidad.


1 comentario: