¿Es necesario el Diseño del Software?
El diseño del software es una fase fundamental de cualquier desarrollo. Invertir tiempo en esta fase te ahorrará muchos más problemas de los que imaginas.
A lo largo de mi vida profesional he escuchado muchas veces comentarios negativos, generalmente de personas que no desarrollan software, referentes a “el tiempo de desarrollo siempre es superior al previsto”, “una vez teníamos hecha la aplicación, tuvimos que tirarla y empezar de nuevo”, “tenemos un programa que cada vez que lo modificamos una cosa, deja de funcionar otra”.
El código espagueti, los desarrollos que no cumplen con los requerimientos, el tiempo de desarrollo que se alarga indefinidamente y otros casos similares, son síntomas de no haber realizado una buena fase de diseño.
¿A alguien se le ocurría levantar un edificio de pisos sin contar con un arquitecto que levantara los planos?
¿Te comprarías un piso construido así?
¿Te parece absurda e irracional la situación? Entonces, ¿Por qué se admite en la construcción del software?
Tanto a los programadores como a los directivos les encanta lanzarse a la codificación del proyecto. En tu mano está el controlar y evitar que se salten esta fase y que entiendan que es fundamental para el éxito del proyecto.
¿En qué consiste?
Al igual que el arquitecto levanta los planos del edificio, tu deberás levantar los planos de tu software, o lo que es lo mismo, modelar tu software.
Este proceso consiste en describir cualquier aspecto del sistema de software, como la estructura, el comportamiento, los requisitos, etc., que pueden representarse en forma textual, matemática o visual.
El diseño del software requiere la descripción de múltiples modelos ya que no es suficiente describir el sistema con una sola perspectiva, por lo que generalmente deberás hacer múltiples modelos como el modelo de casos de uso, modelo de diseño, modelo de componentes, modelo de secuencias, etc.
¿Qué es UML?
Para realizar el diseño del software dispones del lenguaje UML (Unified Modeling Language). Se trata de un lenguaje de modelado visual estándar destinado al modelado de negocios y al análisis, diseño e implementación de sistemas de software, que nació en el año 1997.
UML es un lenguaje de uso común para analistas de negocios, arquitectos de software y desarrolladores, que lo utilizan para describir, especificar, diseñar y documentar procesos de negocios, así como la estructura y el comportamiento de sistemas de software.
La aplicación del lenguaje UML es independiente del dominio de aplicación (banca, finanzas, industria, internet, aeroespacial, atención médica, etc.) y de la plataforma de desarrollo (.NET, J2EE, etc.), siempre y cuando te centres en la implementación de objetos y componentes.
Debes tener presente que UML es un lenguaje de modelado estándar, no un proceso de desarrollo de software. Te proporciona orientación sobre el orden de las actividades del equipo, especifica qué artefactos deben desarrollarse, dirige las tareas de los desarrolladores individuales y el equipo en su conjunto, y ofrece criterios para monitorear y medir los productos y actividades de un proyecto.
Aunque hay muchos recursos disponibles sobre UML (cursos, libros, y demás), yo te recomiendo que visites la web https://www.uml-diagrams.org/, donde podrás hacer un repaso rápido y práctico del lenguaje y los diferentes diagramas existentes. He de reconocer que no es muy “friendly” pero es bastante útil.
¿He de aprender UML para diseñar mi software?
Obviamente, es recomendable pero en absoluto necesario. De hecho, en SoftInd Tool Box dispones de varias guías y plantillas que guiarán en el diseño del software sin necesidad de aprender UML. Aprenderás a definir equipos, componentes de software, actores, requisitos, reglas de negocio y casos de uso, utilizando Word y lenguaje plano.
¿Conoces SoftInd Tool Box?
Es un repositorio de guías y plantillas diseñadas para empresas de software industrial que cubren el ciclo de vida de cualquier proyecto y que te ayudan en la gestión de tu empresa.
Estas guías y plantillas se convertirán en tu caja de herramientas imprescindible, para AHORRAR tiempo y dinero en la gestión de tus proyectos de software industrial.
¿Cómo hago los diagramas?
Existen múltiples aplicaciones en el mercado para la realización de los diagramas UML, pero muy pocas son asequibles para una PYME, a nivel económico.
Yo personalmente utilizo StarUML. Aunque se trata de una aplicación de pago, dispones de la posibilidad de descargarla para evaluarla por tiempo ilimitado. Está disponible para Windows MacOS y Linux.
¿Tengo que crear todos los diagramas que me ofrece UML?
La respuesta es no, necesariamente.
Para no perderte en esta fase, mi recomendación es que elijas aquellos diagramas que realmente necesita tu proyecto. Por ejemplo, si estás desarrollando una aplicación de usuario necesitarás el modelo de casos de uso. Sin embargo, si es la primera vez que implementas una comunicación con un determinado protocolo o dispositivo, probablemente necesitarás construir el diagrama de secuencia.
Para alcanzar el cumplimiento de los requisitos no funcionales descritos en las especificaciones técnicas como la modularidad, escalabilidad y mantenibilidad, empieza por dividir el problema en subproblemas, es decir, los procesos en subprocesos.
Una vez identificados los procesos en su mínima expresión, toma cada uno de ellos y desgránalos en modelo, controlador y vista. La arquitectura MVC (Modelo-Vista-Controlador) te permite separar los datos de una aplicación (modelo), la lógica de control (controlador) y la interfaz de usuario (vista) en componentes distintos.
Esta arquitectura de software te ayudará a construir tus propias librerías, ya que se basa en la reutilización de código y la separación de conceptos, facilitando así el desarrollo de aplicaciones y su posterior mantenimiento.
También te facilitará la asignación de personas a tareas en base a su experiencia y conocimiento, asignando el modelo y controlador al programador de backend y la vista al programador de frontend.
Siguiente Paso
Todo lo descrito hasta ahora será más que suficiente para realizar el diseño del software e iniciar el desarrollo del backend, pero para el frontend necesitarás un paso más: el diseño de la interfaz gráfica y la experiencia de usuario, conocido como UI/UX.