El prototipado de software consiste en la creación de prototipos de aplicaciones de software, es decir, versiones incompletas del programa que se está desarrollando. Es una actividad propia del desarrollo de software y comparable al prototipado de otros campos, como la ingeniería mecánica o la fabricación .
Un prototipo normalmente simula solo algunos aspectos del producto final y puede ser muy diferente de este.
La creación de prototipos ofrece varias ventajas: el diseñador e implementador del software puede obtener valiosos comentarios de los usuarios al inicio del proyecto. El cliente y el contratista pueden comparar si el software desarrollado se ajusta a la especificación del software , según la cual se construyó el programa. También permite al ingeniero de software evaluar la precisión de las estimaciones iniciales del proyecto y determinar si se pueden cumplir con éxito los plazos y los hitos propuestos. El grado de exhaustividad y las técnicas utilizadas en la creación de prototipos han estado en desarrollo y debate desde su propuesta a principios de la década de 1970. [ 1 ]
Descripción general
El propósito de un prototipo es permitir que los usuarios del software evalúen las propuestas de los desarrolladores para el diseño del producto final mediante pruebas reales, en lugar de tener que interpretar y evaluar el diseño basándose en descripciones. El prototipado de software proporciona una comprensión de las funciones del software y de las posibles amenazas o problemas. [ 2 ] Los usuarios finales también pueden utilizar el prototipado para describir y demostrar requisitos que no se han considerado, lo cual puede ser un factor clave en la relación comercial entre los desarrolladores y sus clientes. [ 3 ] El diseño de interacción, en particular, hace un uso intensivo del prototipado con ese objetivo.
Este proceso contrasta con el ciclo de desarrollo monolítico de las décadas de 1960 y 1970, que consistía en construir primero el programa completo y luego resolver las inconsistencias entre el diseño y la implementación. Esto conllevaba mayores costos de software y estimaciones de tiempo y costos deficientes. El enfoque monolítico se ha denominado la técnica de "matar al dragón (del software)", ya que presupone que el diseñador y desarrollador de software es un único héroe que debe derrotar al dragón por sí solo. El prototipado también puede evitar el elevado costo y la dificultad de tener que modificar un producto de software ya terminado.
La práctica de la creación de prototipos es uno de los puntos que Frederick P. Brooks destaca en su libro de 1975, The Mythical Man-Month , y en su artículo del décimo aniversario, " No Silver Bullet " (No hay una solución mágica).
Un ejemplo temprano de prototipado de software a gran escala fue la implementación del traductor Ada/ED de la Universidad de Nueva York para el lenguaje de programación Ada . [ 4 ] Se implementó en SETL con la intención de producir un modelo semántico ejecutable para el lenguaje Ada, haciendo hincapié en la claridad del diseño y la interfaz de usuario por encima de la velocidad y la eficiencia. El sistema Ada/ED de la Universidad de Nueva York fue la primera implementación validada de Ada, certificada el 11 de abril de 1983. [ 5 ]
Describir
El proceso de creación de prototipos comprende los siguientes pasos:
- Identificar los requisitos básicos
- Determine los requisitos básicos, incluyendo la información de entrada y salida deseada. Los detalles, como la seguridad, generalmente pueden ignorarse.
- Desarrollar el prototipo inicial
- Se desarrolla un prototipo inicial que incluye únicamente interfaces de usuario. (Véase Prototipo horizontal , más abajo).
- Revisar
- Los clientes, incluidos los usuarios finales, examinan el prototipo y proporcionan comentarios sobre posibles adiciones o cambios.
- Revisar y mejorar el prototipo
- Utilizando la retroalimentación, se pueden mejorar tanto las especificaciones como el prototipo. Puede ser necesario negociar el alcance del contrato/producto. Si se introducen cambios, es posible que se deba repetir los pasos 3 y 4.
Dimensiones
Nielsen resume las diversas dimensiones de los prototipos en su libro Ingeniería de la usabilidad :
Prototipo horizontal
Un término común para un prototipo de interfaz de usuario es el prototipo horizontal . Este proporciona una visión general de todo un sistema o subsistema, centrándose en la interacción del usuario más que en la funcionalidad de bajo nivel del sistema, como el acceso a la base de datos. Los prototipos horizontales son útiles para:
- Confirmación de los requisitos de la interfaz de usuario y del alcance del sistema,
- Versión de demostración del sistema para obtener la aprobación de la empresa.
- Elaborar estimaciones preliminares del tiempo, el coste y el esfuerzo necesarios para el desarrollo.
Prototipo vertical
Un prototipo vertical es una elaboración completa y mejorada de un único subsistema o función. Es útil para obtener requisitos detallados para una función determinada, con los siguientes beneficios:
- Diseño de base de datos de refinamiento ,
- Obtener información sobre volúmenes de datos y necesidades de interfaz del sistema, para dimensionar la red y realizar ingeniería de rendimiento,
- Aclare los requisitos complejos profundizando en la funcionalidad real del sistema.
Tipos
La creación de prototipos de software tiene muchas variantes. Sin embargo, todos los métodos se basan de alguna manera en dos formas principales de creación de prototipos: la creación de prototipos desechables y la creación de prototipos evolutivos.
Prototipado desechable
También conocido como prototipado cerrado. El prototipado desechable o rápido se refiere a la creación de un modelo que finalmente se descartará en lugar de formar parte del software final. Tras la recopilación preliminar de requisitos, se construye un modelo funcional sencillo del sistema para mostrar visualmente a los usuarios cómo se verían sus requisitos una vez implementados en el sistema final. También es una forma de prototipado rápido.
- El prototipado rápido implica la creación de un modelo funcional de diversas partes del sistema en una etapa muy temprana, tras una investigación relativamente breve. El método utilizado para su construcción suele ser bastante informal, siendo el factor más importante la rapidez con la que se proporciona el modelo. Este modelo se convierte entonces en el punto de partida desde el cual los usuarios pueden reevaluar sus expectativas y clarificar sus requisitos. Una vez alcanzado este objetivo, el prototipo se descarta y el sistema se desarrolla formalmente en función de los requisitos identificados. [ 6 ]
La razón más obvia para usar prototipos desechables es su rapidez. Si los usuarios reciben retroalimentación inmediata sobre sus requisitos, pueden refinarlos al inicio del desarrollo del software. Realizar cambios en las primeras etapas del ciclo de vida del desarrollo es extremadamente rentable, ya que no hay nada que rehacer. Si un proyecto se modifica después de haber avanzado considerablemente, pequeños cambios podrían requerir un gran esfuerzo para su implementación, dado que los sistemas de software tienen muchas dependencias. La velocidad es crucial en la implementación de un prototipo desechable, ya que con un presupuesto limitado de tiempo y dinero, es difícil invertir en un prototipo que se desechará.
Otra ventaja del prototipado desechable es su capacidad para crear interfaces que los usuarios pueden probar. La interfaz de usuario es lo que el usuario percibe del sistema, y al verla frente a él, le resulta mucho más fácil comprender cómo funcionará.
- …se afirma que el prototipado rápido revolucionario es una forma más eficaz de abordar los problemas relacionados con los requisitos del usuario y, por lo tanto, una mejora significativa en la productividad general del software. Los requisitos pueden identificarse, simularse y probarse de forma mucho más rápida y económica cuando se ignoran los problemas de evolucionabilidad, mantenibilidad y estructura del software. Esto, a su vez, conduce a la especificación precisa de los requisitos y a la posterior construcción de un sistema válido y utilizable desde la perspectiva del usuario, a través de los modelos convencionales de desarrollo de software. [ 7 ]
Los prototipos se pueden clasificar según la fidelidad con la que se asemejan al producto real en términos de apariencia, interacción y sincronización. Un método para crear un prototipo desechable de baja fidelidad es el prototipado en papel . El prototipo se implementa con papel y lápiz, imitando así la función del producto real, pero sin su apariencia. Otro método para crear fácilmente prototipos desechables de alta fidelidad es usar un creador de interfaces gráficas de usuario (GUI) y crear un prototipo interactivo (click dummy) , que se asemeja al sistema de objetivos, pero no ofrece ninguna funcionalidad.
El uso de storyboards , animatics o dibujos no es exactamente lo mismo que la creación de prototipos desechables, pero sin duda pertenece a la misma categoría. Se trata de implementaciones no funcionales, pero que muestran el aspecto que tendrá el sistema.
Resumen: En este enfoque, el prototipo se construye con la idea de que será descartado y el sistema final se construirá desde cero. Los pasos de este enfoque son:
- Redactar los requisitos preliminares
- Diseña el prototipo
- El usuario experimenta/utiliza el prototipo, especifica nuevos requisitos.
- Repita si es necesario
- Redactar los requisitos finales
Prototipado evolutivo
El prototipado evolutivo (también conocido como prototipado en placa de pruebas ) es muy diferente del prototipado desechable . El objetivo principal del prototipado evolutivo es construir un prototipo robusto de forma estructurada y perfeccionarlo constantemente. Esto se debe a que el prototipo evolutivo, una vez construido, constituye el núcleo del nuevo sistema, y las mejoras y los requisitos adicionales se irán incorporando posteriormente.
Al desarrollar un sistema mediante prototipado evolutivo, el sistema se refina y reconstruye continuamente.
- "...el prototipado evolutivo reconoce que no entendemos todos los requisitos y construye solo aquellos que se comprenden bien." [ 8 ]
Esta técnica permite al equipo de desarrollo añadir funcionalidades o realizar cambios que no se podían prever durante la fase de requisitos y diseño.
- Para que un sistema sea útil, debe evolucionar mediante su uso en el entorno operativo previsto. Un producto nunca está "terminado"; siempre está madurando a medida que cambia el entorno de uso… a menudo intentamos definir un sistema utilizando nuestro marco de referencia más familiar: nuestra situación actual. Hacemos suposiciones sobre la forma en que se llevará a cabo el negocio y la base tecnológica sobre la que se implementará. Se pone en marcha un plan para desarrollar la capacidad y, tarde o temprano, se entrega algo parecido al sistema previsto. [ 9 ]
Los prototipos evolutivos tienen una ventaja sobre los prototipos desechables, ya que son sistemas funcionales. Si bien es posible que no incluyan todas las características previstas por los usuarios, pueden utilizarse de forma provisional hasta la entrega del sistema final.
- "No es inusual que en un entorno de creación de prototipos el usuario ponga en práctica un prototipo inicial mientras espera una versión más desarrollada... El usuario puede decidir que un sistema 'defectuoso' es mejor que ningún sistema." [ 6 ]
En el prototipado evolutivo, los desarrolladores pueden centrarse en desarrollar las partes del sistema que comprenden, en lugar de trabajar en el desarrollo de un sistema completo.
- Para minimizar el riesgo, el desarrollador no implementa funcionalidades que no se comprenden bien. El sistema parcial se envía a las instalaciones del cliente. A medida que los usuarios trabajan con el sistema, detectan oportunidades para nuevas funcionalidades y las solicitan a los desarrolladores. Estos, junto con las suyas, toman en cuenta estas solicitudes de mejora y utilizan buenas prácticas de gestión de la configuración para modificar la especificación de requisitos del software, actualizar el diseño, recodificar y volver a probar. [ 10 ]
Prototipado incremental
El producto final se construye mediante prototipos independientes. Al final, estos prototipos se integran en un diseño general. Gracias al prototipado incremental, se reduce el tiempo de espera entre el usuario y el desarrollador del software.
Prototipado extremo
El prototipado extremo, como proceso de desarrollo, se utiliza especialmente para el desarrollo de aplicaciones web. Básicamente, divide el desarrollo web en tres fases, cada una basada en la anterior. La primera fase consiste en un prototipo estático compuesto principalmente por páginas HTML. En la segunda fase, las pantallas se programan y se vuelven completamente funcionales mediante una capa de servicios simulada. En la tercera fase, se implementan los servicios.
- "El proceso se denomina Prototipado Extremo para llamar la atención sobre la segunda fase del proceso, donde se desarrolla una interfaz de usuario completamente funcional con muy poca consideración por los servicios más allá de su contrato." [ 11 ]
Ventajas
El uso de prototipos en el desarrollo de software tiene muchas ventajas, algunas tangibles y otras abstractas. [ 12 ]
Reducción de tiempo y costes : El prototipado puede mejorar la calidad de los requisitos y especificaciones proporcionados a los desarrolladores. Dado que los cambios cuestan exponencialmente más de implementar cuanto más tarde se detectan en el desarrollo, la determinación temprana de lo que el usuario realmente quiere puede dar como resultado un software más rápido y menos costoso. [ 7 ]
Mayor participación del usuario : La creación de prototipos requiere la participación del usuario y le permite ver e interactuar con un prototipo, lo que le permite brindar comentarios y especificaciones más completos y precisos. [ 6 ] La presencia del prototipo siendo examinado por el usuario evita muchos malentendidos y problemas de comunicación que ocurren cuando cada parte cree que la otra entiende lo que dijo. Dado que los usuarios conocen el dominio del problema mejor que cualquier miembro del equipo de desarrollo, una mayor interacción puede resultar en un producto final con mayor calidad tangible e intangible. Es más probable que el producto final satisfaga el deseo del usuario en cuanto a apariencia, sensación y rendimiento.
Desventajas
El uso, o quizás el mal uso, de la creación de prototipos también puede tener desventajas.
Análisis insuficiente : Centrarse en un prototipo limitado puede distraer a los desarrolladores e impedirles analizar adecuadamente el proyecto completo. Esto puede llevar a pasar por alto mejores soluciones, a elaborar especificaciones incompletas o a convertir prototipos limitados en proyectos finales mal diseñados y difíciles de mantener . Además, dado que un prototipo tiene una funcionalidad limitada, puede que no sea escalable si se utiliza como base para el producto final, algo que podría pasar desapercibido si los desarrolladores se centran demasiado en construir el prototipo como modelo.
Confusión entre el prototipo y el sistema final : Los usuarios pueden llegar a pensar que un prototipo, destinado a ser descartado, es en realidad un sistema final que solo necesita ser terminado o perfeccionado. (Por ejemplo, a menudo desconocen el esfuerzo necesario para añadir funciones de verificación de errores y seguridad que un prototipo podría no tener). Esto puede llevarlos a esperar que el prototipo reproduzca con precisión el rendimiento del sistema final, cuando esta no es la intención de los desarrolladores. Los usuarios también pueden encariñarse con funciones que se incluyeron en un prototipo para su consideración y que luego se eliminaron de la especificación del sistema final. Si los usuarios pueden exigir que todas las funciones propuestas se incluyan en el sistema final, esto puede generar conflictos.
Malinterpretación de los objetivos del usuario por parte del desarrollador : Los desarrolladores pueden asumir que los usuarios comparten sus objetivos (por ejemplo, entregar la funcionalidad principal a tiempo y dentro del presupuesto), sin comprender los aspectos comerciales más amplios. Por ejemplo, los representantes de usuarios que asisten a eventos de software empresarial (por ejemplo, PeopleSoft ) pueden haber visto demostraciones de "auditoría de transacciones" (donde los cambios se registran y se muestran en una vista de cuadrícula de diferencias) sin que se les haya informado que esta función requiere programación adicional y, a menudo, más hardware para gestionar accesos adicionales a la base de datos. Los usuarios podrían creer que pueden exigir auditoría en cada campo, mientras que los desarrolladores podrían pensar que esto es una ampliación de funcionalidades porque han hecho suposiciones sobre el alcance de los requisitos del usuario. Si el desarrollador se ha comprometido a entregar el producto antes de que se revisaran los requisitos del usuario, se encuentra en una situación difícil, especialmente si la gerencia de usuarios obtiene alguna ventaja de su incumplimiento de los requisitos.
Apego del desarrollador al prototipo: Los desarrolladores también pueden apegarse a los prototipos en cuya creación han invertido mucho esfuerzo; esto puede generar problemas, como intentar convertir un prototipo limitado en un sistema final cuando este carece de una arquitectura subyacente adecuada. (Esto podría sugerir que se debería utilizar el prototipado desechable, en lugar del prototipado evolutivo).
Tiempo de desarrollo excesivo del prototipo : Una característica clave del prototipado es su rapidez. Si los desarrolladores pierden de vista este hecho, podrían intentar desarrollar un prototipo demasiado complejo. Al descartar el prototipo, los requisitos precisos que proporciona podrían no generar un aumento de productividad suficiente para compensar el tiempo invertido en su desarrollo. Los usuarios pueden enfrascarse en debates sobre los detalles del prototipo, lo que ralentiza al equipo de desarrollo y retrasa el producto final.
Costo de implementar el prototipado : los costos iniciales para formar un equipo de desarrollo enfocado en el prototipado pueden ser elevados. Muchas empresas ya cuentan con metodologías de desarrollo establecidas, y modificarlas puede implicar capacitación, reequipamiento o ambas cosas. Muchas empresas tienden a comenzar a prototipar sin la debida capacitación de sus empleados.
- Un problema común al adoptar la tecnología de prototipado son las altas expectativas de productividad con un esfuerzo insuficiente en la curva de aprendizaje. Además de la capacitación en el uso de la técnica de prototipado, existe una necesidad, a menudo pasada por alto, de desarrollar una estructura subyacente específica para la empresa y el proyecto que respalde la tecnología. Cuando se omite esta estructura subyacente, la productividad suele disminuir. [ 13 ]
Aplicabilidad
Se ha argumentado que la creación de prototipos, de una forma u otra, debería utilizarse siempre. Sin embargo, resulta más beneficiosa en sistemas que tendrán mucha interacción con los usuarios.
- Se ha comprobado que la creación de prototipos es muy eficaz en el análisis y diseño de sistemas en línea , especialmente para el procesamiento de transacciones , donde el uso de diálogos en pantalla es mucho más frecuente. Cuanto mayor sea la interacción entre el ordenador y el usuario, mayor será el beneficio que se puede obtener al construir un sistema rápido y permitir que el usuario experimente con él. [ 6 ]
Los sistemas con poca interacción del usuario, como el procesamiento por lotes o los sistemas que realizan principalmente cálculos, se benefician poco del prototipado. A veces, la codificación necesaria para realizar las funciones del sistema puede ser demasiado compleja y las posibles ventajas que podría aportar el prototipado son demasiado pequeñas. [ 6 ]
El prototipado es especialmente útil para diseñar buenas interfaces humano-computadora . "Uno de los usos más productivos del prototipado rápido hasta la fecha ha sido como herramienta para la ingeniería iterativa de requisitos de usuario y el diseño de interfaces humano-computadora." [ 7 ]
Método de desarrollo de sistemas dinámicos
El Método de Desarrollo de Sistemas Dinámicos (DSDM) [ 14 ] es un marco para la entrega de soluciones empresariales que se basa en gran medida en la creación de prototipos como técnica fundamental, y cuenta con la certificación ISO 9001. Amplía la mayoría de las definiciones conocidas de prototipo. Según DSDM, el prototipo puede ser un diagrama, un proceso empresarial o incluso un sistema puesto en producción. Los prototipos DSDM están diseñados para ser incrementales, evolucionando desde formas simples hacia otras más completas.
Los prototipos DSDM pueden ser desechables o evolutivos . Los prototipos evolutivos pueden evolucionar horizontalmente (primero en amplitud y luego en profundidad) o verticalmente (cada sección se construye en detalle con iteraciones adicionales que detallan las secciones subsiguientes). Los prototipos evolutivos pueden llegar a convertirse en sistemas finales.
Las cuatro categorías de prototipos recomendadas por DSDM son:
- Prototipos empresariales : se utilizan para diseñar y demostrar los procesos empresariales que se van a automatizar.
- Prototipos de usabilidad : se utilizan para definir, refinar y demostrar la usabilidad, la accesibilidad, el aspecto y la sensación del diseño de la interfaz de usuario.
- Prototipos de rendimiento y capacidad : se utilizan para definir, demostrar y predecir cómo se comportarán los sistemas bajo cargas máximas, así como para demostrar y evaluar otros aspectos no funcionales del sistema (tasas de transacción, volumen de almacenamiento de datos, tiempo de respuesta, etc.).
- Prototipos de capacidad/técnica : se utilizan para desarrollar, demostrar y evaluar un enfoque o concepto de diseño.
El ciclo de vida DSDM de un prototipo es el siguiente:
- Identificar prototipo
- Acordar un plan
- Crea el prototipo
- Revisa el prototipo
Prototipado operativo
Alan Davis propuso el prototipado operacional como una forma de integrar el prototipado desechable y el prototipado evolutivo con el desarrollo de sistemas convencional. «Ofrece lo mejor de ambos mundos, el del desarrollo rápido y sencillo y el del desarrollo convencional, de una manera sensata. Los diseñadores desarrollan solo las características bien comprendidas al construir la base evolutiva, mientras que utilizan el prototipado desechable para experimentar con las características menos comprendidas». [ 8 ]
Davis opina que intentar "adaptar la calidad a un prototipo rápido" no es el método adecuado para combinar ambos enfoques. Su idea consiste en emplear una metodología de prototipado evolutivo y prototipar rápidamente las características del sistema tras cada evolución.
La metodología específica sigue estos pasos: [ 8 ]
- Se construye un prototipo evolutivo y se convierte en una base utilizando estrategias de desarrollo convencionales, especificando e implementando únicamente los requisitos que se comprenden bien.
- Se envían copias del diseño base a varios clientes junto con un creador de prototipos capacitado.
- En cada sitio, el creador del prototipo observa al usuario frente al sistema.
- Siempre que el usuario encuentra un problema o piensa en una nueva función o requisito, el creador del prototipo lo registra. Esto libera al usuario de tener que registrar el problema y le permite seguir trabajando.
- Una vez finalizada la sesión del usuario, el creador del prototipo construye un prototipo desechable sobre el sistema base.
- El usuario ahora utiliza el nuevo sistema y lo evalúa. Si los cambios no son efectivos, el creador del prototipo los elimina.
- Si al usuario le gustan los cambios, el creador del prototipo redacta solicitudes de mejora de funciones y las remite al equipo de desarrollo.
- El equipo de desarrollo, con las solicitudes de cambio de todos los sitios en mano, produce un nuevo prototipo evolutivo utilizando métodos convencionales.
Obviamente, un aspecto clave de este método es contar con prototipadores bien capacitados que puedan visitar las instalaciones de los usuarios. La metodología de prototipado operativo ofrece muchas ventajas en sistemas complejos con pocos requisitos definidos de antemano.
Desarrollo de sistemas evolutivos
El desarrollo de sistemas evolutivos es una clase de metodologías que intentan implementar formalmente el prototipado evolutivo. Un tipo particular, llamado Systemscraft, es descrito por John Crinnion en su libro Evolutionary Systems Development .
Systemscraft fue diseñado como una metodología "prototipo" que debía modificarse y adaptarse al entorno específico en el que se implementara.
- Systemscraft no fue diseñado como un enfoque rígido de "manual de instrucciones" para el proceso de desarrollo. Ahora se reconoce generalmente que una buena metodología debe ser lo suficientemente flexible como para adaptarse a todo tipo de entornos y situaciones... [ 6 ]
La metodología Systemscraft, similar al prototipado evolutivo, se basa en crear un sistema funcional a partir de los requisitos iniciales y desarrollarlo mediante una serie de revisiones. Systemscraft hace especial hincapié en el uso del análisis tradicional a lo largo de todo el desarrollo del sistema.
desarrollo rápido evolutivo
El Desarrollo Rápido Evolutivo (ERD) [ 15 ] fue desarrollado por el Software Productivity Consortium, un agente de desarrollo e integración de tecnología para la Oficina de Tecnología de la Información de la Agencia de Proyectos de Investigación Avanzada de Defensa (DARPA).
- Fundamental para el diseño entidad-relación (DER) es el concepto de componer sistemas de software basados en la reutilización de componentes, el uso de plantillas de software y una plantilla arquitectónica. La arquitectura evolutiva, que representa una clase de soluciones, resalta la evolución continua de las capacidades del sistema en respuesta rápida a las necesidades cambiantes de los usuarios y la tecnología. El proceso se centra en el uso de pequeños equipos de profesionales que integran disciplinas de ingeniería de software y sistemas, trabajando en múltiples proyectos, a menudo en paralelo y de corta duración, con interacción frecuente con el cliente.
- La clave del éxito de los proyectos basados en ERD reside en el análisis exploratorio paralelo y el desarrollo de características, infraestructuras y componentes, junto con la adopción de tecnologías de vanguardia que permiten una rápida reacción a los cambios en las tecnologías, el mercado o los requisitos del cliente. [ 9 ]
Para obtener la opinión de los clientes/usuarios, se realizan reuniones frecuentes, tanto programadas como improvisadas, con las partes interesadas. Se llevan a cabo demostraciones de las capacidades del sistema para recabar comentarios antes de tomar decisiones definitivas sobre el diseño y la implementación. Se publican actualizaciones frecuentes (por ejemplo, versiones beta ) para que el sistema pueda comprender mejor cómo satisfacer las necesidades de los usuarios y clientes. Esto garantiza que el sistema evolucione para satisfacer las necesidades actuales de los usuarios.
El marco de diseño del sistema se basa en el uso de estándares publicados o de facto existentes. El sistema está organizado para permitir la evolución de un conjunto de capacidades que incluye consideraciones de rendimiento, capacidad y funcionalidad. La arquitectura se define en términos de interfaces abstractas que encapsulan los servicios y su implementación (por ejemplo, aplicaciones COTS). La arquitectura sirve como plantilla para guiar el desarrollo de más de una instancia del sistema. Permite el uso de múltiples componentes de aplicación para implementar los servicios. Asimismo, se identifica y establece un conjunto básico de funcionalidades que probablemente no cambien.
El proceso ERD está estructurado para utilizar la funcionalidad demostrada en lugar de documentos en papel como medio para que las partes interesadas comuniquen sus necesidades y expectativas. Un elemento central para lograr una entrega rápida es el uso del método de " plazas de tiempo ". Las placas de tiempo son períodos fijos en los que se deben realizar tareas específicas (por ejemplo, desarrollar un conjunto de funcionalidades). En lugar de permitir que el tiempo se extienda para satisfacer un conjunto vago de objetivos, el tiempo es fijo (tanto en semanas calendario como en horas-persona) y se define un conjunto de objetivos que se pueden alcanzar de manera realista dentro de estas limitaciones. Para evitar que el desarrollo se convierta en un " paseo aleatorio ", se definen planes a largo plazo que guían las iteraciones. Estos planes proporcionan una visión del sistema general y establecen límites (por ejemplo, restricciones) para el proyecto. Cada iteración dentro del proceso se lleva a cabo en el contexto de estos planes a largo plazo.
Una vez establecida la arquitectura, el software se integra y prueba diariamente. Esto permite al equipo evaluar el progreso de forma objetiva e identificar rápidamente posibles problemas. Dado que se integran pequeñas partes del sistema a la vez, el diagnóstico y la corrección de los defectos son rápidos. Se pueden realizar demostraciones para usuarios con poca antelación, ya que el sistema suele estar listo para su uso en todo momento.
Herramientas
El uso eficiente del prototipado requiere que una organización cuente con las herramientas adecuadas y un personal capacitado para usarlas. Las herramientas utilizadas en el prototipado pueden variar desde herramientas individuales, como lenguajes de programación de cuarta generación utilizados para el prototipado rápido, hasta herramientas CASE integradas complejas. Los lenguajes de programación visual de cuarta generación como Visual Basic y ColdFusion se utilizan con frecuencia debido a que son económicos, conocidos y relativamente fáciles y rápidos de usar. Las herramientas CASE, que apoyan el análisis de requisitos, como Requirements Engineering Environment (ver más abajo), suelen ser desarrolladas o seleccionadas por las fuerzas armadas o grandes organizaciones. También se están desarrollando herramientas orientadas a objetos como LYMB del Centro de Investigación y Desarrollo de GE . Los usuarios pueden prototipar elementos de una aplicación ellos mismos en una hoja de cálculo .
A medida que las aplicaciones web ganan popularidad, también lo hacen las herramientas para prototiparlas. Frameworks como Bootstrap , Foundation y AngularJS proporcionan las herramientas necesarias para estructurar rápidamente una prueba de concepto . Estos frameworks suelen constar de un conjunto de controles, interacciones y directrices de diseño que permiten a los desarrolladores prototipar aplicaciones web con rapidez.
Generadores de pantallas, herramientas de diseño y fábricas de software
Los programas generadores de pantallas también son de uso común y permiten a los creadores de prototipos mostrar a los usuarios sistemas que aún no funcionan, pero que ilustran el posible aspecto de las pantallas. El desarrollo de interfaces hombre-máquina puede ser, en ocasiones, la parte crucial del proceso de desarrollo, ya que para los usuarios la interfaz es, en esencia, el sistema.
Las fábricas de software pueden generar código combinando componentes modulares listos para usar. Esto las hace ideales para la creación de prototipos de aplicaciones, ya que este enfoque permite entregar rápidamente programas con el comportamiento deseado, con una mínima cantidad de codificación manual.
Software de definición de aplicaciones o simulación
Una nueva clase de software, denominada software de definición o simulación de aplicaciones, permite a los usuarios crear rápidamente simulaciones ligeras y animadas de otro programa informático sin necesidad de escribir código . Este software permite tanto a usuarios técnicos como no técnicos experimentar, probar, colaborar y validar el programa simulado, y proporciona informes como anotaciones , capturas de pantalla y esquemas . Como técnica de especificación de soluciones, la simulación de aplicaciones se sitúa entre los prototipos (o wireframes ) basados en texto o dibujos, de bajo riesgo pero limitados (a veces denominados prototipado en papel ), y los prototipos basados en código , que consumen mucho tiempo y conllevan un alto riesgo. Esto permite a los profesionales del software validar los requisitos y las decisiones de diseño en una fase temprana, antes de que comience el desarrollo. De este modo, se pueden reducir drásticamente los riesgos y los costes asociados a las implementaciones de software. [ 16 ]
Para simular aplicaciones, también se puede utilizar software que simule programas informáticos reales para la formación , demostración y atención al cliente basadas en ordenador , como por ejemplo software de grabación de pantalla, ya que estas áreas están estrechamente relacionadas.
Entorno de ingeniería de requisitos
"El Entorno de Ingeniería de Requisitos (REE), en desarrollo en el Laboratorio de Roma desde 1985, proporciona un conjunto de herramientas integradas para representar, construir y ejecutar rápidamente modelos de aspectos críticos de sistemas complejos." [ 17 ]
El Entorno de Ingeniería de Requisitos es utilizado actualmente por la Fuerza Aérea de los Estados Unidos para desarrollar sistemas. Es:
- Un conjunto integrado de herramientas que permite a los analistas de sistemas crear rápidamente prototipos funcionales, de interfaz de usuario y de rendimiento de los componentes del sistema. Estas actividades de modelado se realizan para comprender mejor los sistemas complejos y reducir el impacto que las especificaciones de requisitos inexactas tienen en los costos y la planificación durante el proceso de desarrollo del sistema. Los modelos se pueden construir fácilmente y con distintos niveles de abstracción o granularidad, según los aspectos de comportamiento específicos del modelo que se esté analizando. [ 17 ]
REE se compone de tres partes. La primera, llamada proto, es una herramienta CASE diseñada específicamente para el prototipado rápido. La segunda parte se denomina Sistema de Prototipado Rápido de Interfaz (RIP), que es un conjunto de herramientas que facilitan la creación de interfaces de usuario. La tercera parte de REE es una interfaz gráfica para RIP y proto, diseñada para ser fácil de usar.
Rome Laboratory, el desarrollador de REE, pretendía que este sistema sirviera de apoyo a su metodología interna de recopilación de requisitos. Su método consta de tres partes principales:
- Obtención de información de diversas fuentes (usuarios, interfaces con otros sistemas), especificación y verificación de la coherencia.
- Análisis que demuestra que las necesidades de los diversos usuarios, consideradas en conjunto, no entran en conflicto y son técnica y económicamente viables.
- Validación de que los requisitos así derivados reflejan con precisión las necesidades del usuario. [ 17 ]
En 1996, Rome Labs contrató a Software Productivity Solutions (SPS) para mejorar aún más REE y crear "un REE de calidad comercial que admita la especificación de requisitos, la simulación, la creación de prototipos de interfaz de usuario, el mapeo de requisitos a arquitecturas de hardware y la generación de código..." [ 18 ] Este sistema se denomina Estación de trabajo de ingeniería de requisitos avanzada o AREW.
Entornos no relacionales
La definición no relacional de datos (por ejemplo, mediante Caché o modelos asociativos) puede contribuir a que la creación de prototipos por parte del usuario final sea más productiva, al retrasar o evitar la necesidad de normalizar los datos en cada iteración de una simulación. Esto puede generar una mayor claridad en los requisitos del negocio, aunque no garantiza específicamente que dichos requisitos sean técnica y económicamente viables en el sistema de producción de destino.
PSDL
PSDL es un lenguaje de descripción de prototipos para describir software en tiempo real. [ 19 ] El conjunto de herramientas asociado es CAPS (Computer Aided Prototyping System). [ 20 ] La creación de prototipos de sistemas de software con requisitos estrictos de tiempo real es un desafío porque las restricciones de tiempo introducen dependencias de implementación y hardware. PSDL aborda estos problemas mediante la introducción de abstracciones de control que incluyen restricciones de tiempo declarativas. CAPS utiliza esta información para generar automáticamente código y cronogramas en tiempo real asociados, monitorear las restricciones de tiempo durante la ejecución del prototipo y simular la ejecución en tiempo real proporcional con respecto a un conjunto de modelos de hardware parametrizados. También proporciona supuestos predeterminados que permiten la ejecución de descripciones de prototipos incompletas, integra la construcción de prototipos con un repositorio de reutilización de software para realizar rápidamente implementaciones eficientes y brinda soporte para la rápida evolución de requisitos y diseños. [ 21 ]
Referencias
- ↑ Todd Grimm: La condición humana: una justificación para el prototipado rápido. Time Compression Technologies, vol. 3, n.º 3. Accelerated Technologies, Inc. Mayo de 1998. Página 1.
- ↑ "Prototipado de software - INGSOFTWARE" . ingsoftware.com . Consultado el 27 de junio de 2018 .
- ↑ Smith MF Software Prototyping: Adoption, Practice and Management . McGraw-Hill, Londres (1991).
- ↑ Dewar, Robert BK; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (noviembre de 1980). "El traductor e intérprete de Ada de la NYU". Actas del simposio ACM-SIGPLAN sobre el lenguaje de programación Ada - SIGPLAN '80 . Vol. 15. págs. 194–201 . doi : 10.1145/948632.948659 . ISBN 0-89791-030-3. S2CID 10586359 .
- ↑ SofTech Inc. (11 de abril de 1983). "Informe resumido de validación del compilador Ada: NYU Ada/ED, versión 19.7 V-001" . Archivado del original el 12 de marzo de 2012. Consultado el 16 de diciembre de 2010 .
- 1 2 3 4 5 6 John Crinnion: Desarrollo de sistemas evolutivos, una guía práctica para el uso de prototipos dentro de una metodología de sistemas estructurados. Plenum Press, Nueva York, 1991. Página 18.
- 1 2 3 S. P. Overmyer: Prototipado rápido revolucionario frente a evolutivo: equilibrio entre la productividad del software y las consideraciones de diseño de la interacción persona-ordenador. Centro de Excelencia en Mando, Control, Comunicaciones e Inteligencia (C3I), Universidad George Mason, 4400 University Drive, Fairfax, Virginia.
- 1 2 3 Alan M. Davis: Prototipado Operacional: Un Nuevo Enfoque de Desarrollo. IEEE Software, septiembre de 1992. Página 71.
- 1 2 Consorcio de Productividad de Software: Desarrollo Rápido Evolutivo. Documento SPC SPC-97057-CMC, versión 01.00.04, junio de 1997. Herndon, Virginia. Página 6.
- ↑ Davis. Páginas 72-73. Citando: E. Bersoff y A. Davis, Impactos de los modelos de ciclo de vida de la gestión de configuración de software. Comm. ACM, agosto de 1991, págs. 104-118.
- ↑ Komatineni, Satya. "Reconfigurando la entrega de proyectos de TI mediante el prototipado extremo" . Archivado del original el 6 de diciembre de 2016.
- ↑ Adaptado de C. Melissa McClendon, Larry Regot, Gerri Akers.
- ↑ Joseph E. Urban: Prototipado de software e ingeniería de requisitos. Rome Laboratory, Rome, NY.
- ↑ Consorcio del Método de Desarrollo de Sistemas Dinámicos. https://web.archive.org/web/20060209072841/http://na.dsdm.org/
- ↑ Adaptado de Software Productivity Consortium. PPS 10–13.
- ↑ Cómo el software de simulación puede optimizar el desarrollo de aplicaciones. Enlace obsoleto archivado el 22/07/2012 en archive.today.
- 1 2 3 Dr. Ramon Acosta, Carla Burns, William Rzepka y James Sidoran. Aplicación de técnicas de prototipado rápido en el entorno de ingeniería de requisitos. IEEE, 1994.
- ↑ Software Productivity Solutions, Incorporated. Estación de trabajo avanzada para ingeniería de requisitos (AREW). 1996.
- ↑ Luqi; Berzins, Yeh (octubre de 1988). "Un lenguaje de prototipado para software en tiempo real" (PDF) . IEEE Transactions on Software Engineering . 14 (10): 1409– 1423. doi : 10.1109/32.6186 . hdl : 10945/39162 . S2CID 35348234 .
- ↑ Luqi; Ketabchi (marzo de 1988). "Un sistema de prototipado asistido por ordenador". IEEE Software . 5 (2): 66– 72. doi : 10.1109/52.2013 . hdl : 10945/43616 . S2CID 15541544 .
- ↑ Luqi (mayo de 1989). "Evolución del software mediante prototipado rápido" . IEEE Computer . 22 (5): 13– 25. doi : 10.1109/2.27953 . hdl : 10945/43610 . S2CID 1809234 .
- Desarrollo de software