He estado tomando algunos cursos de diseño de software en los últimos semestres, y aunque veo el beneficio en gran parte del formalismo, siento que no me dice nada sobre el programa en sí:
- No puede saber cómo va a funcionar el programa a partir de la especificación de Caso de uso, a pesar de que analiza lo que puede hacer el programa.
- No se puede decir nada sobre la experiencia del usuario en el documento de requisitos, a pesar de que puede incluir requisitos de calidad.
- Los diagramas de secuencia son una buena descripción de cómo funciona el software como pila de llamadas, pero son muy limitados y ofrecen una visión muy parcial del sistema en general.
- Los diagramas de clases son excelentes para describir cómo se construye el sistema, pero son completamente inútiles para ayudarlo a descubrir qué debe ser el software.
¿En qué parte de todo este formalismo está el resultado final: cómo se ve, opera y qué experiencia brinda el programa? ¿No tiene más sentido diseñar a partir de eso? ¿No es mejor descubrir cómo debería funcionar el programa a través de un prototipo y esforzarse por implementarlo de verdad?
Sé que probablemente estoy sufriendo de que teóricos me enseñen ingeniería, pero necesito preguntar, ¿hacen esto en la industria? ¿Cómo se da cuenta la gente de lo que es realmente el programa, y no con qué debe conformarse? ¿Las personas prototipan mucho o utilizan principalmente herramientas formales como UML y todavía no me acostumbro a usarlas?
fuente
Respuestas:
Si estamos creando una aplicación GUI, casi SIEMPRE creamos un prototipo o POC (prueba de concepto). Estableceremos cuál será el vocabulario visual de la aplicación. Por lo general, involucramos a nuestros clientes a través del POC y nos aseguramos de que comprendan cuál es el propósito y en qué deberían centrarse. Nunca me arrepiento de haber producido un prototipo. Solo asegúrese de no intentar convertir el código del prototipo en el código de producción, inicie el código de producción desde cero en función de lo que aprendió del prototipo.
Dicho todo esto, casi nunca realizamos prototipos de aplicaciones del lado del servidor (servicios, middleware, etc.). Realmente no veo el retorno de la inversión para eso (a menos que esté utilizando alguna tecnología nueva y necesite probar diferentes conceptos).
fuente
En el mundo de los negocios, importa mucho
Yo también solía pensar eso, hasta que llegas al mundo de los negocios. Entonces ya no es lo suficientemente simple como para simplemente tomar requisitos y avanzar y construir.
En el negocio, los diagramas de "flujo" de los usuarios y los prototipos de baja fidelidad realmente tienen sentido.
El funcionamiento del "programa" es probablemente la parte fácil. En las aplicaciones LOB (Line Of Business), la mayoría es CRUD. El desafío radica en la lógica y las reglas del negocio . Aquí es donde los diagramas de flujo de usuario y los flujos de proceso de negocio se vuelven extremadamente importantes para comprender y planificar de manera efectiva.
fuente
¿Qué quiere decir con cómo "opera" el programa? Parece que está buscando detalles de implementación exactos en algo diferente a la implementación final específica, lo cual no tiene sentido. Se supone que los elementos de nivel superior guían la implementación, no la determinan.
Desde mi experiencia, la creación de prototipos es algo poco común. Sin embargo, me lo enseñaron junto con las especificaciones, requisitos, arquitectura, etc., y puede ser muy útil.
En cuanto a "lo que el software debe ser", ESOS son los requisitos. Parece que te falta todo el punto.
Las interfaces a menudo se bosquejan de antemano, y los casos de uso se pueden utilizar para el "flujo" de la interfaz. La experiencia del usuario no falta en absoluto. Si siente que falta algún elemento, haga algo más que sus profesores no hayan mencionado. El diseño no consiste en un conjunto claro de reglas transmitidas desde el cielo.
fuente
Mi observación personal es que los prototipos reciben mucha atención, pero con demasiada frecuencia el prototipo, una vez que muestra signos de vida, simplemente se renombra como 'Beta' o, lo que es peor, v1.0.
fuente
Hay dos tipos de creación de prototipos: tres, en realidad:
construimos prototipos para refinar el diseño y reducir los riesgos antes de comenzar la codificación "real" (Ingeniería)
construimos el proyecto como una serie de prototipos refinados (Agile)
construimos un prototipo y lo enviamos tan pronto como funcione (Cowboy)
fuente
Lo que estás buscando se llama especificación; puedes leer una descripción de eso aquí en uno de los artículos de Joel
http://www.joelonsoftware.com/articles/fog0000000035.html
fuente
Un prototipo también puede considerarse "iteración 0" de lo que necesita hacer. Cumple varias cosas:
En general, el prototipo debería ser muy útil para construir el producto final, a menos que haya descubierto que es necesario un enfoque completamente diferente.
fuente