Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proceso
“El objetivo del diseño es producir un modelo o
representación de una entidad que se va a construir
posteriormente” (Pressman, 2002)
1. Diseño de Datos
2. Diseño Arquitectónico
3. Diseño de Interfaces
4. Diseño de componentes
En la etapa de diseño es donde se toman las decisiones que afectarán finalmente al
éxito de la implementación del programa, y también, a la facilidad de mantenimiento
que tendrá el software. Por tanto el diseño es un paso fundamental de la fase de
desarrollo. El diseño es la única forma mediante la que podemos traducir con precisión
los requisitos del cliente en un producto o sistema acabado. El diseño de software es
la base de todas las partes posteriores del desarrollo y de la fase de prueba, como
muestra en el siguiente gráfico.
Sin diseño, nos arriesgamos a construir un sistema inestable, un sistema que falle
cuando se realicen pequeños cambios, un sistema que sea difícil de probar, un
sistema cuya calidad no pueda ser evaluada hasta más adelante, cuando quede poco
tiempo y ya sea haya gastado mucho dinero.
El diseño del sistema es un proceso mediante el que se traducen los requisitos en una
representación del software, que se acerca mucho al código fuente. Desde el punto de
vista de la gestión del proyecto, el diseño del software se realiza en dos etapas: el
diseño preliminar y el diseño detallado.
Además del diseño de datos, del diseño arquitectónico y del desarrollo procedimental,
muchas aplicaciones modernas requieren un diseño de la interfaz.
Diseño y calidad del software
A lo largo del proceso de diseño, la calidad del diseño se evalúa mediante una serie
de revisiones técnicas formales (RTF) que son una actividad de garantía del
software cuyos objetivos son:
Cada RTF se lleva a cabo mediante una reunión y sólo tendrá éxito si está bien
planificada, controlada y atendida. A continuación, se listan una serie de criterios para
determinar la calidad del software.
Reglas predefinidas
Determinación de los pasos del ciclo de vida
Verificaciones en cada etapa
Planificación y control
Comunicación efectiva entre desarrolladores y usuarios.
De fácil comprensión
Soporte de herramientas automatizadas.
Qué permita definir mediciones que indiquen mejoras
Qué permita modificaciones
Qué soporte reusabilidad del software
Metodologías para desarrollo de software
Un proceso de software detallado y completo suele denominarse “Metodología”. Las
metodologías se basan en una combinación de los modelos de proceso genéricos
(cascada, evolutivo, incremental, etc.). Adicionalmente una metodología debería
definir con precisión los artefactos, roles y actividades involucrados, junto con prácticas
y técnicas recomendadas, guías de adaptación de la metodología al proyecto, guías
para uso de herramientas de apoyo, etc. Habitualmente se utiliza el término “método”
para referirse a técnicas, notaciones y guías asociadas, que son aplicables a una (o
algunas) actividades del proceso de desarrollo, por ejemplo, suele hablarse de
métodos de análisis y/o diseño.
La comparación y/o clasificación de metodologías no es una tarea sencilla debido a la
diversidad de propuestas y diferencias en el grado de detalle, información disponible
y alcance de cada una de ellas. A grandes rasgos, si tomamos como criterio las
notaciones utilizadas para especificar artefactos producidos en actividades de análisis
y diseño, podemos clasificar las metodologías en dos grupos: Metodologías
Estructuradas y Metodologías Orientadas a Objetos. Por otra parte, considerando su
filosofía de desarrollo, aquellas metodologías con mayor énfasis en la planificación y
control del proyecto, en especificación precisa de requisitos y modelado, reciben el
apelativo de Metodologías Tradicionales. Otras metodologías, denominadas
Metodologías Ágiles, están más orientadas a la generación de código con ciclos muy
cortos de desarrollo, se dirigen a equipos de desarrollo pequeños, hacen especial
hincapié en aspectos humanos asociados al trabajo en equipo e involucran
activamente al cliente en el proceso. A continuación se revisan brevemente cada una
de estas categorías de metodologías.
Metodologías estructuradas
Los métodos estructurados comenzaron a desarrollarse a fines de los 70’s con la
Programación Estructurada, luego a mediados de los 70’s aparecieron técnicas para
el Diseño (por ejemplo: el diagrama de Estructura) primero y posteriormente para el
Análisis (por ejemplo: Diagramas de Flujo de Datos). Estas metodologías son
particularmente apropiadas en proyectos que utilizan para la implementación
lenguajes de 3ra y 4ta generación.
Metodologías ágiles
Un proceso es ágil cuando el desarrollo de software es incremental (entregas
pequeñas de software, con ciclos rápidos), cooperativo (cliente y desarrolladores
trabajan juntos constantemente con una cercana comunicación), sencillo (el método
en sí mismo es fácil de aprender y modificar, bien documentado), y adaptable (permite
realizar cambios de último momento) [11].
Entre las metodologías ágiles identificadas en [11]:
XP - Extreme Programming .
Scrum
Familia de Metodologías Crystal.
Feature Driven Development
Proceso Unificado Rational, una configuración ágil
Dynamic Systems Development Method.
El enfoque sistémico
Análisis del medio ambiente
Definición exacta de los límites del sistema
La consideración de la flexibilidad necesaria en el nuevo sistema para asimilar
la dinámica del Objeto de dirección y del propio sistema de información
El hombre como elemento fundamental
La inclusión de los medios de control necesarios para garantizar el equilibrio del
sistema
El trabajo del diseñador es creativo en gran parte, pues son diseñados para objetivos
específicos y sin reglas rígidas, sin embargo es posible establecer una estructura
que contenga ciertas normas aplicables a los recursos, organización, técnicas,
métodos y procesos durante los cuales el trabajo de sistematización puede hacerse
más eficiente, debiendo ser flexible para no impedir la creatividad del sistematizador.
1) Definición.
Aunque los pasos concretos dependen del modelo de ciclo de vida utilizado
(cascada, espiral, evolutivo e incremental), en general se realizarán cuatro tareas
específicas:
Durante esta etapa se lleva a cabo el análisis de riesgos, se definen los recursos
necesarios para desarrollar el software y se establecen las estimaciones de tiempo y
costes. El propósito de esta etapa de planificación es proporcionar una indicación
preliminar de la viabilidad del proyecto de acuerdo con el coste y con la agenda que
se hayan establecido. Posteriormente, la gestión del proyecto durante el desarrollo del
mismo realiza y revisa el plan de proyecto de software.
2) Desarrollo.
Aunque, al igual que antes, los pasos concretos dependen del modelo de ciclo de
vida utilizado, en general se realizarán cuatro tareas específicas:
Diseño.
Codificación.
Pruebas.
Una vez que tenemos implementado el software es preciso probarlo, para detectar
errores de codificación, de diseño o de especificación. Las pruebas son necesarias
para encontrar el mayor número posible de errores antes de entregar el programa al
cliente.
Garantía de calidad.
Una vez terminada la fase de pruebas, el software está casi preparado para ser
entregado al cliente.
3) Mantenimiento.
Es una representación abstracta del sistema, que plantea una solución que será
implementada luego.
Se preocupa de la "forma" del sistema en todos sus aspectos, definiendo con
todo el detalle cómo se iría a obtener esa forma planteada. Para esto es
necesario desarrollar ciertas actividades como:
ABSTRACCIÓN: Generalizar un problema con el fín de asignar
prioridades a su solución y establecer una jerarquía.
OPERACIONALIDAD: Convertir la estructura generada en algo realizable
y funcional.
VERIFICACIÓN: Comprobar que se cumple con lo especificado en el
análisis.
Es una etapa limitada por el ambiente tecnológico de hardware y software
existente en la organización.
Busca que la construcción del sistema se vuelva más rutinaria y elemental.
La estructura a diseñar debe ser modular, donde cada módulo exhiba
características funcionales independientes.
Un buen diseño debe ser :
COMPLETO : Debe abarcar todos los requerimientos planteados
anteriormente.
CONSISTENTE : Se deben definir bien las interfaces con otros sistemas.
CLARO : Que sea fácil de traducir a un lenguaje de programación.
MANTENIBLE : Que evalúe la posibilidad de modificaciones futuras.
PRACTICO : Que pueda ser realizable fácilmente, con las herramientas
tecnológicas existentes en la organización.
EVALUABLE : Que permita revisarse y mejorarse.
Participación requerida.
Es una etapa muy técnica que requiere gran participación del personal de sistemas y
del usuario, en lo que respecta a evaluaciones de prototipos y de diseño de pantallas
(ventanas) del nuevo sistema.
Analistas. Elaboran las especificaciones del diseño, con base en el análisis elaborado
anteriormente. El papel que desempeña en ésta etapa el analista de sistemas, es el
de diseñador. La habilidades de un buen diseñador difieren algo de las del analista.
Veamos: Se debe enfocar a la tecnología, sin olvidar los procesos definidos en el
análisis, mientras el analista hace lo contrario. Se enfrenta con la tarea de traducir los
requerimientos del negocio a la tecnología disponible en la organización.
Los siguientes son los pasos a seguir para lograr un desarrollo coherente y serio en
el diseño de un sistema de información. Cada una de estas tareas debe estar
claramente documentada, en el manual de desarrollo del sistema.
Descomposición funcional de módulos.
Diseño conceptual
El diseño conceptual se hace independiente al sistema gestor de base de datos
(DBMS) que utilice el usuario para la implementación de esta.
Ver video: https://www.youtube.com/watch?v=THyQ-hhuOx4
Para modelar Conceptualmente es posible utilizar varios Modelos de Datos Un modelo
práctico para ilustrar el diseño conceptual es el modelo entidad relación.
https://www.youtube.com/watch?v=dniZcgxyWhw
UNIDAD V
En contraposición, aquellos que son los receptores del o de los productos del proceso
deben asentar claramente sus requerimientos y dar a conocer cuando no están
recibiendo lo esperado.
Es también muy importante que el diagrama de flujo sobre el que se haga el análisis
de cualquier proceso se encuentre al día, ya que si no es así puede desvirtuar la
identificación de problemas reales. Cada proceso es un sistema y debe ser tratado de
tal manera con todas las partes con las que conecta. Si se cambia una de las partes
del subsistema siempre se verá afectado el cómo actúa el sistema en su totalidad.
¿Cómo se elabora?
Valide el diagrama de flujo y las medidas de desempeño del mismo con los
propietarios o los que llevan a cabo el proceso y con los usuarios del mismo.
Antes de que un equipo pueda mejorar algún proceso, necesitan entenderlo.
Las personas que pueden evaluarlo son las que participan en el proceso o
reciben algún producto, servicio o información de él.
Se puede llevar a cabo un proceso de chequeo bajo los siguientes
considerandos: Se debe confirmar la precisión del proceso conforme se
desarrolla el diagrama de flujo, así como el tiempo estimado/ real de cada paso,
tal como se lleva a cabo actualmente.
Enliste todos los pasos del proceso como se están realizando. Mantenga tan
simple como sea posible su descripción.
Se debe identificar y registrar el valor, tiempo invertido y costo de cada paso en
el proceso.
Utilice símbolos para mostrar el flujo de las acciones y decisiones involucradas
en el proceso de principio a fin. La simbología básica es la siguiente:
Ejemplos de Diagramas de procesos.
DISEÑO DE LAS INTERFACES DE ENTRADA DE DATOS
Se define aquí, con todo el grado de detalle, cómo serán los documentos de entrada
requeridos por el sistema, las diferentes pantallas de diálogo, las salidas generadas,
todas las consultas y reportes emitidos, los formatos de salida y las diferentes
interfases con otros sistemas.
Es una tarea que se ocupa mucho de la forma, dado el carácter gráfico de la tecnología
usada. Se deben tener estándares claros de diseño, para evitar que cada analista
realice a su amaño estas definiciones. Si no se tiene estándares, es conveniente hacer
un alto en este punto y definirlos claramente, para evitar ambigüedades en la
presentación y diseño del sistema.
Es conveniente seguir los lineamientos que ofrece la tecnología Windows, ya que
éstos son estándares a nivel mundial.
Diseño de ventanas.
Las ventanas son la forma básica de comunicación con el usuario y la unidad de
programación a tener en cuenta en la construcción. Se deben diseñar, teniendo en
cuenta los estándares antes mencionados y el tipo de ventana (entrada de datos,
consultas, de menú, etc.). Se debe tener en cuenta:
Control del Usuario: Un buen diseño debe estar direccionado a soportar el hecho de
que el usuario es quien tiene el control en la GUI. El usuario tiene la libertad para
moverse de ventana a ventana y hacer cualquier cosa que desee. La tarea del
diseñador es restringir a lugares donde no puede ir el usuario, más que a los lugares
donde puede acceder.
Una buena aplicación GUI debe tener facilidad para el uso del mouse o para el teclado,
indistintamente. Por ello se deben incluir aspectos como el orden de tabulación y teclas
aceleradoras (hot key) para que cualquier acción que se realce con el mouse, se pueda
realizar también con el teclado.
Se pueden usar para tal propósito iconos y barras de herramientas que aclaren la
ubicación de los diferentes objetos existentes.
Consistencia: El sistema deberá ser consistente con el mundo en que los usuarios
viven y trabajan diariamente. Para ello se debe usar el vocabulario que manejan los
usuarios y tratar de estandarizarlo a lo largo de todo el sistema, para que la GUI sea
entendible por ellos.
Ventana Desplegable.
Conocida con el nombre de Pop Up.
Aparece por encima de la ventana que la llama.
Se abre desde una ventana existente, llamada Ventana Madre.
No puede ser traslapada por su madre.
Puede existir después de que se cierra la ventana madre.
Ventana Hija.
Es muy similar a una ventana desplegable, pero más restrictiva.
Se abre a partir de una ventana madre.
No puede ser traslapada por la ventana madre.
No puede ser arrastrada fuera del marco de la ventana madre.
No puede existir después de cerrar la ventana madre.
Ventana de Respuesta.
Es la más restrictiva de todas las ventanas.
No se libera sino hasta que se cierra.
No es minimizable ni redimensionable.
Se usa para forzar al usuario a través de una ruta particular.
Se diferencian de los informes, por ser impresos y tener un límite de columnas para su
presentación. Se deben diseñar teniendo en cuenta el contenido de los flujos de datos
de salida definidos en el diccionario de datos. Se debe tener en cuenta:
En el encabezado de los reportes :
Presentar el nombre de la empresa.
Mostrar el nombre del sistema de Información.
Mostrar el Título del reporte.
La fecha de elaboración del reporte.
Paginar el reporte.
Presentar los nombres completos de los campos a listar.
Para reportes con totales, mostrar totales generales al finalizar el reporte.
Distribuir la información en una forma clara, ordenada y armónica.
Se debe construir un modelo sencillo que muestre cómo será la operación del sistema,
con el fin de probar con el usuario la dinámica, funcionalidad y características de
implementación. Está aceptado generalmente que un prototipo es un modelo a escala
de lo real, pero no tan funcional para que equivalga al producto final. Es la simulación
de cómo quedará funcionando el sistema, para garantizar que se ajustará a las
necesidades del usuario.
Una buena idea para construir prototipos es la elaboración de los mismos en papel,
para dar una mayor agilidad a la tarea, dado que ella es recursiva, pues se pretende
mostrar y corregir, hasta obtener un producto totalmente aceptado por los usuarios.
Se debe tener en cuenta:
Los
diferentes módulos del sistema.
Algunas características propias del usuario:
Usuarios dedicados (Exigen poca documentación y capacitación).
Usuarios casual (Desean un sistema amistoso y detallado).
Grado de escolaridad.
Funciones que desarrolla en la organización.
Nivel de jerarquía.
No mostrar características que no se puedan luego implementar.
No se debe comenzar a construir el sistema, con la creación temprana de
prototipos.
Modelo del usuario: El usuario tiene su visión personal del sistema, y espera que
éste se comporte de una cierta forma. Se puede conocer el modelo del usuario
estudiándolo, ya sea realizando tests de usabilidad, entrevistas, o a través de una
realimentación. Una interfaz debe facilitar el proceso de crear un modelo mental
efectivo.
Para ello son de gran utilidad las metáforas, que asocian un dominio nuevo a uno ya
conocido por el usuario. Un ejemplo típico es la metáfora del escritorio, común a la
mayoría de las interfaces gráficas actuales.
Antes de abordar el proceso de diseño de interfaz del usuario se deben tratar algunas
consideraciones en el diseño que tienen que ser tomados en cuenta por los
diseñadores de interfaces de usuarios.
Interacción del usuario: Una interfaz coherente debe integrar la interacción del
usuario y la presentación de la información. Shneiderman (1998) clasifica la interacción
en 5 estilos primarios:
María Alvarado
Sulimar Pastran
Los asistentes usados para instalar software son un ejemplo común de una interfaz de
pregunta y respuesta. El usuario responde a las preguntas acerca del proceso de
instalación, tal como dónde instalar el software o características. Otro ejemplo común
es el uso del Asistente de Office usado en los productos de Microsoft. Cuando el
usuario necesita ayuda, el Asistente de Office hace preguntas y reacciona a las
respuestas con preguntas adicionales diseñadas para limitar el alcance del problema.
Los usuarios que no están familiarizados con aplicaciones particulares o no están
informados sobre un tema podrían encontrar interfaces de pregunta y respuesta más
cómodas, ganando rápidamente confianza a través de su éxito.
Menús
Una interfaz de menús adquiere apropiadamente su nombre de la lista de platillos
que se pueden seleccionar en un restaurante. De forma similar, una interfaz de menú
proporciona al usuario una lista en pantalla de las selecciones disponibles. En
respuesta al menú, un usuario está limitado a las opciones desplegadas. El usuario no
necesita conocer el sistema pero tiene que saber qué tarea se debe realizar. Por
ejemplo, con un menú típico de procesamiento de texto, los usuarios pueden escoger
opciones para editar, copiar o imprimir. Sin embargo, para utilizar el mejor menú los
usuarios deben saber qué tarea desean desempeñar.
Los menús no dependen del hardware. Las variaciones abundan. Los menús se
establecen para usar el teclado, lápiz óptico o el ratón. Las selecciones se pueden
identificar con un número, carta o palabra clave. La consistencia es importante en el
diseño de una interfaz de menú.
Los menús también se pueden ocultar hasta que el usuario quiera usarlos. La figura
muestra cómo se usa un menú desplegable. Los menús se pueden anidar dentro de
otro para llevar a un usuario a las opciones de un programa. Los menús anidados
permiten a la pantalla aparecer menos desordenada, la cual es consistente con el
adecuado diseño.
También permiten a usuarios evitar ver opciones de menú en las que no están
interesados.
Los menús anidados también pueden mover rápidamente a los usuarios a través del
programa.
Los menús de GUI se usan para controlar el software de PC y tienen los
siguientes lineamientos:
1. Siempre se despliega la barra de menú principal.
2. El menú principal usa palabras simples para los artículos del menú. Las
opciones de menú principales siempre despliegan menús desplegables secundarios.
3. El menú principal debe tener opciones secundarias agrupadas en grupos
similares de características.
4. Los menús desplegables que se presentan cuando se hace clic en un artículo
de menú principal con frecuencia consisten en más de una palabra.
5. Estas opciones secundarias desempeñan acciones o despliegan artículos de
menú adicionales.
6. Los artículos de menú en gris no están disponibles para la actividad actual. Un
menú de objeto, también llamado menú desplegable independiente, se despliega
cuando el usuario hace clic en un objeto de la GUI con el botón derecho del ratón.
Estos menús contienen artículos específicos para la actividad actual y la mayoría es
funciones duplicadas de artículos de menú principales.
http://243.sip.ucm.es/is/intro.html
http://www.centersoft.co.cu/Desasoft.htm
http://members.tripod.cl/RuthGarrido/ingsof/cap2-
4.html
http://www.reduaeh.mx/presenta/univirtual/notas_
2.htm http://definicion.de/diseno/#ixzz2yPbzN3UK
http://www.alegsa.com.ar/Dic/sistema.php
http://www.dgplades.salud.gob.mx/descargas/dhg/DIAGRAMA_PROCESOS.pdf
ANEXO 1
CASO PRÁCTICO
RESTAURANTE
El gerente puede realizar consultas para obtener una lista ordenada por mesas en la
que se indica el resumen de ventas en dicha mesa y los camareros asignados
(apellidos y nombre) en un determinado periodo de tiempo.
• Facturación: Las facturas son emitidas directamente por los camareros desde sus
Tablet PCs utilizando una impresora común conectada “sin cables”. Las facturas se
emiten cuando los clientes piden la cuenta. El precio de los productos incluye el IVA,
que tiene que ser desglosado en la factura.
• Aprovisionamiento: El jefe de cocina, que es uno de los cocineros, gestiona los
aprovisionamientos de alimentos, elaborando los pedidos y recibiendo la mercancía.
El restaurante trabaja con diversos proveedores cuya información es proporcionada
por la gerencia. Esta información consiste en los datos de contacto del proveedor, los
alimentos que suministra y su precio.
Como resultado el sistema elabora los pedidos concretos que se van a efectuar a cada
proveedor. Los proveedores siempre adjuntan la factura, que indica las cantidades de
alimentos que se han comprado.
Todos los dispositivos están conectados en red local mediante tecnología inalámbrica.
ANEXO 2 REQUERIMIENTOS DEL SOFTWARE
Medibles
Comprobables
Sin contradicciones
Sin ambigüedades
Ejemplo de requerimientos.
Los requerimientos Funcionales: contemplan todo lo que el usuario desea que realice
el sistema, ejemplo; emisión de comprobante, impresión de facturas, etc. “Que debe
hacer un sistema”
Modelo en Cascada.
El modelo cascada (waterfall), propuesto por Royce en 1970, fue derivado de modelos
de actividades de ingeniería con el fin de establecer algo de orden en el desarrollo de
grandes productos de software. Consiste en diferentes etapas, las cuales son
procesadas en una manera lineal. Comparado con otros modelos de desarrollo de
software es más rígido y mejor administrable. El modelo cascada es un modelo muy
importante y ha sido la base de muchos otros modelos, sin embargo, para muchos
proyectos modernos, ha quedado un poco desactualizado.
Estas son las etapas principales. También existen sub-etapas, dentro de cada etapa,
pero éstas difieren mucho de un proyecto a otro. También es posible que ciertos
proyectos de software requieran la incorporación de una etapa extra o la separación
de una etapa en otras dos. Sin embargo, todas estas variaciones al modelo cascada
poseen el mismo concepto básico: la idea de que una etapa provee salidas que serán
usadas como las entradas de la siguiente etapa (un flujo lineal entre las etapas). Por
lo tanto, el progreso del proceso de desarrollo de un producto de software, usando el
modelo cascada, es simple de conocer y controlar.
Existen actividades que son llevadas a cabo en cada una de las etapas del desarrollo
del software. Éstas son documentación, verificación y administración. La
documentación es intrínseca al modelo cascada puesto que la mayoría de las salidas
que arrojan las etapas son documentos.
Diseño
Global
Desarrol GRUPO
lo USUARIO
/
Refinamie
nto
Sistema
El cliente debe ser Terminado
paciente.
Una versión funcional del sistema no estará
disponible hasta tarde en la duración del desarrollo. Cualquier error o
malentendido, si no es detectado hasta que el programa funcionando es
revisado, puede ser desastroso.
Cada uno de estos problemas es real. Sin embargo, el modelo clásico del ciclo de vida
del software tiene un lugar bien definido e importante en los trabajos de ingeniería del
software. Provee un patrón dentro del cual encajan métodos para el análisis, diseño,
codificación y mantenimiento.
Aplicación
Modelo Prototipo.
Dos de las críticas que se hacían al modelo de ciclo de vida en cascada eran que es
difícil tener claros todos los requisitos del sistema al inicio del proyecto, y que no se
dispone de una versión operativa del programa hasta las fases finales del desarrollo,
lo que dificulta la detección de errores y deja también para el final el descubrimiento
de los requisitos inadvertidos en las fases de análisis. Para paliar estas deficiencias
se ha propuesto un modelo de ciclo de vida basado en la construcción de prototipos.
En primer lugar, hay que ver si el sistema que tenemos que desarrollar es un buen
candidato a utilizar el paradigma de ciclo de vida de construcción de prototipos o al
modelo en espiral. En general, cualquier aplicación que presente mucha interacción
con el usuario, o que necesite algoritmos que puedan construirse de manera evolutiva,
yendo de lo más general a lo más específico es una buena candidata. No obstante,
hay que tener en cuenta la complejidad: si la aplicación necesita que se desarrolle una
gran cantidad de código para poder tener un prototipo que enseñar al usuario, las
ventajas de la construcción de prototipos se verán superadas por el esfuerzo de
desarrollar un prototipo que al final habrá que desechar o modificar mucho. También
hay que tener en cuenta la disposición del cliente para probar un prototipo y sugerir
modificaciones de los requisitos. Puede ser que el cliente ‘no tenga tiempo para andar
jugando’ o ‘no vea las ventajas de este método de desarrollo’.
También es conveniente construir prototipos para probar la eficiencia de los algoritmos
que se van a implementar, o para comprobar el rendimiento de un determinado
componente del sistema en condiciones similares a las que existirán durante la
utilización del sistema. Es bastante frecuente que el producto de ingeniería
desarrollado presente un buen rendimiento durante la fase de pruebas realizada por
los ingenieros antes de entregarlo al cliente pero que sea muy ineficiente, o incluso
inviable, a la hora de almacenar o procesar el volumen real de información que debe
manejar el cliente. En estos casos, la construcción de un prototipo de parte del
sistema y la realización de pruebas de rendimiento, sirven para decidir, antes de
empezar la fase de diseño, cuál es el modelo más adecuado de entre la gama
disponible para el soporte hardware o cómo deben hacerse los accesos para obtener
buenas respuestas en tiempo cuando la aplicación esté ya en funcionamiento.
En otros casos, el prototipo servirá para modelar y poder mostrar al cliente cómo va a
realizarse la E/S de datos en la aplicación, de forma que éste pueda hacerse una idea
de cómo va a ser el sistema final, pudiendo entonces detectar deficiencias o errores
en la especificación aunque el modelo no sea más que una cáscara vacía.
Según esto un prototipo puede tener alguna de las tres formas siguientes:
En cualquier caso, el objetivo es siempre que la codificación sea rápida, aunque sea
en detrimento de la calidad del software generado.
Una vez listo el prototipo, hay que presentarlo al cliente para que lo pruebe y sugiera
modificaciones. En este punto el cliente puede ver una implementación de los
requisitos que ha definido inicialmente y sugerir las modificaciones necesarias en las
especificaciones para que satisfagan mejor sus necesidades.
A partir de estos comentarios del cliente y los cambios que se muestren necesarios en
los requisitos, se procederá a construir un nuevo prototipo y así sucesivamente hasta
que los requisitos queden totalmente formalizados, y se pueda entonces empezar con
el desarrollo del producto final.
Por tanto, el prototipado es una técnica que sirve fundamentalmente para la fase de
análisis de requisitos, pero lleva consigo la obtención de una serie de subproductos
que son útiles a lo largo del desarrollo del proyecto:
Gran parte del trabajo realizado durante la fase de diseño rápido (especialmente
la definición de pantallas e informes) puede ser utilizada durante el diseño del
producto final. Además, tras realizar varias vueltas en el ciclo de construcción
de prototipos, el diseño del mismo se parece cada vez más al que tendrá el
producto final.
Durante la fase de construcción de prototipos será necesario codificar algunos
componentes del software que también podrán ser reutilizados en la
codificación del producto final, aunque deban de ser optimizados en cuanto a
corrección o velocidad de procesamiento.
No obstante, hay que tener en cuenta que el prototipo no es el sistema final, puesto
que normalmente apenas es utilizable. Será demasiado lento, demasiado grande,
inadecuado para el volumen de datos necesario, contendrá errores (debido al diseño
rápido), será demasiado general (sin considerar casos particulares, que debe tener en
cuenta el sistema final) o estará codificado en un lenguaje o para una máquina
inadecuadas, o a partir de componentes software previamente existentes. No hay que
preocuparse de haber desperdiciado tiempo o esfuerzos construyendo prototipos que
luego habrán de ser desechados, si con ello hemos conseguido tener más clara la
especificación del proyecto, puesto que el tiempo perdido lo ahorraremos en las fases
siguientes, que podrán realizarse con menos esfuerzo y en las que se cometerán
menos errores que nos obliguen a volver atrás en el ciclo de vida.
Hay que tener en cuenta que un análisis de requisitos incorrecto o incompleto, cuyos
errores y deficiencias se detecten a la hora de las pruebas o tras entregar el software
al cliente, nos obligará a repetir de nuevo las fases de análisis, diseño y codificación,
que habíamos realizado cuidadosamente, pensando que estábamos desarrollando el
producto final. Al tener que repetir estas fases, sí que estaremos desechando una gran
cantidad de trabajo, normalmente muy superior al esfuerzo de construir un prototipo
basándose en un diseño rápido, en la reutilización de trozos de software preexistentes
y en herramientas de generación de código para informes y manejo de ventanas.
Puede existir una mala interpretación que pueden hacer los usuarios del prototipo, al
cual pueden confundir con el sistema terminado
Desarrollo Incremental
Mills sugirió el enfoque incremental de desarrollo como una forma de reducir la
repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma
de decisiones en los requisitos hasta adquirir experiencia con el sistema. Es una
combinación del Modelo de Cascada y Modelo Evolutivo.
Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para
retrasar las decisiones hasta tener experiencia en el sistema.
Modelo en Espiral.
El modelo está representado por una espiral dividida en cuatro cuadrantes, cada
una de las cuales representa una de las actividades arriba mencionadas.
Puntos fuertes
Aplicación
Proyectos
complejos, dinámicos,
innovadores,
ambiciosos, llevados a
cabo por equipos
internos (no
necesariamente de
software).
¿Cuál es el modelo de proceso más adecuado?
Cada proyecto de software requiere de una forma de particular de abordar el problema.
Las propuestas comerciales y académicas actuales promueven procesos iterativos,
donde en cada iteración puede utilizarse uno u otro modelo de proceso, considerando
un conjunto de criterios (Por ejemplo: grado de definición de requisitos, tamaño del
proyecto, riesgos identificados, entre otros).
En la Tabla se expone un cuadro comparativo de acuerdo con algunos criterios básicos
para la selección de un modelo de proceso, la medida utilizada indica el nivel de
efectividad del modelo de proceso de acuerdo al criterio (Por ejemplo: El modelo
Cascada responde con un nivel de efectividad Bajo cuando los Requisitos y
arquitectura no están predefinidos):
Funciona Permite
Modelo de con Produce Gestión de correcci Visión del
proceso software riesgos progreso
requisitos y ones
altamente por el
arquitectura sobre la
fiable Cliente y el
no marcha
Jefe del
predefinidos
proyecto
En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por
el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente
indicado para proyectos en entornos complejos, donde se necesita obtener resultados
pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la
competitividad, la flexibilidad y la productividad son fundamentales.
Factibilidad operacional:
Se refiere al hecho de que si trabajará o no el sistema si este se llega a desarrollar,
preguntas claves aquí son:
Factibilidad Técnica:
Un sistema puede ser factible desde el punto de vista técnico y operacional, pero sino
es factible económicamente para la organización no puede ser implantado. Las
cuestiones económicas y financieras formuladas por los analistas deben incluir