Post Actualizado en marzo 11, 2020
¿Qué es el Diseño de Software?
Cuando se habla de la Ingeniería del Software, podemos encontrar una gran cantidad de procesos inmiscuidos dentro de ella. De hecho anteriormente aquí en OKhosting, ya hemos visto detenidamente cuales son todos y cada uno de los procesos del ciclo del desarrollo de software. Sin embargo en esta ocasión no generalizaremos, hablaremos específicamente de uno […]
Cuando se habla de la Ingeniería del Software, podemos encontrar una gran cantidad de procesos inmiscuidos dentro de ella. De hecho anteriormente aquí en OKhosting, ya hemos visto detenidamente cuales son todos y cada uno de los procesos del ciclo del desarrollo de software. Sin embargo en esta ocasión no generalizaremos, hablaremos específicamente de uno realmente fundamental en el área de la ingeniería del Software y se trata del Diseño de Software.
Si lo recuerdas, el diseño del software es una de las partes que componen las fases del ciclo de vida del software, lo podemos encontrar con el nombre de diseño en algunas metodologías, pero también lo podemos encontrar combinado con otros procesos en algunas fases de metodologías de la ingeniería. De cualquier forma, esté o no esté con su nombre establecido, el diseño de software es algo que se debe realizar y ahora mismo vamos a ver un poco más acerca de que es el diseño y porque cuando la ingeniería del software está trabajando, es necesario implementarlo.
¿Qué es el Diseño de Software?
El diseño de software, es una de las etapas que deben componer el ciclo de vida del software, casi de una forma obligatoria, aunque algunas metodologías no le den la importancia que requiere.
Básicamente, después de haber analizado a mano y papel los requisitos que se tienen para nuestro sistema a desarrollar, es entonces cuando entra en juego el diseño de software. Su objetivo será armar el cascarón bajo el cuál se estará implementando el código o realizando la programación. Pues no puedes empezar a programar en el aire sin saber hacia donde va tu software.
Para definir el diseño de software con una sola palabra, posiblemente Calidad sea la indicada. Pues si realmente deseas tener un software que supere básicamente cualquier error y que esté hecho a la perfección como el cliente le pide, el diseño de software es fundamental. Pues en el, estaremos analizando cada una de las especificaciones solicitadas por el cliente, además estaremos seccionando el software, viendo sus funciones, como se mostrará en pantalla y muchas cosas más que conlleva el diseño de software, por si pensabas que era una etapa sencilla y que no tendría complejidad alguna.
Aspectos Clave en el Diseño de Software
Como te mencionaba hace un instante, el diseño del Software participa totalmente en lo que corresponde a la calidad del sistema a desarrollar y no solo para el uso del cliente como tal, si no, en caso de que otro tipo de desarrollador se intente añadir al proyecto. Pues si el diseño está bien realizado, la adaptación será sencilla, pero si no existe calidad en los procesos de diseño de software, adaptarse puede generar muchos dolores de cabeza. Vamos a ver algunos de los aspectos a considerar dentro de la materia del diseño de software.
Concurrencia
La concurrencia se da precisamente en el área de la programación. Y es que si bien el desarrollo se realiza después del diseño, existen metodologías donde el orden no se efectúa de esta manera y pueden combinarse. Lo que si, es que en el diseño se determinan muchas cosas que pueden afectar la concurrencia del software, como la forma en que se acomodan los procesos, la relación que existe entre los hilos o las tareas, la sincronización y algunos aspectos más que se relacionan con la programación. Aspectos que en cuestiones de desarrollo puede incrementar o disminuir la calidad del software.
Eventos
Actualmente, el desarrollo de software no trabaja solo como hace muchos años. Hoy en día tenemos llamados al servidor, llamados a la base de datos en caso de usarse y cosas de este tipo, las cuales pueden definir el flujo de datos con el cuál trabajará el sistema. El punto es que parte del diseño de software, es determinar la cantidad de llamadas que se deben realizar, tratando de no abusar para no saturar un servidor. En este aspecto hay que tener cuidados para tener una muy buena organización de datos y precisamente controlar su flujo en ejecución.
Distribución y Rendimiento
El diseño de software, también interviene en lo que es el rendimiento del sistema y el como se va a distribuir el software en el hardware. Por eso cuando tienes un software nuevo o vas a instalar una aplicación, esta te especifica algunos detalles, como el espacio necesario en disco, la memoria RAM que utilizará preferentemente y algunos puntos más, los cuáles tiene que ver con la forma en que se comunican los componentes y sobretodo en como están distribuidos para dar un mejor rendimiento.
Tolerancia a Fallos
Posiblemente una de las claves fundamentales del diseño de software, es que un buen análisis, seguido por un buen diseño posteriormente analizado de nuevo, hará que nuestro sistema tenga una gran tolerancia a fallos.
Y es que una de las partes fundamentales es ser proactivo, que quiere decir. Que básicamente desde antes de entrar al desarrollo o la implementación, ya sabemos cuales son los posibles errores que pueden surgir y sobretodo, ya sabremos como actuar ante ellos.
Básicamente, es necesario detectar cuales son los riesgos potenciales a los cuales nos enfrentamos y se calcula la probabilidad de que este surja dentro del proceso de la ingeniería, para posteriormente ordenarlo de acuerdo a la importancia o preocupación que puede generar en caso de aparecer. Por último se tendrá que establecer un plan para controlar el riesgo, ya sea evitándolo o tratando de encontrar una solución al problema.
Herramientas de Diseño de Software
Si bien, herramientas específicas para el diseño de software por si mismo, no las hay, pero si tenemos algunas que mediante el análisis nos llevan a lo que es el diseño de un sistema. Y es que para la fase de diseño de software, incluso con un diagrama de flujo estaríamos diseñando partes fundamentales de lo que queremos tener como software final. Así que vamos a ver, algunas de las herramientas más utilizadas para hacer un análisis y un diseño previo a la implementación del software, en lo que corresponde al ciclo de vida del mismo.
Diagrama de Flujo de Datos
Si leíste el artículo hasta este punto, entonces recordarás que te mencioné, el hecho de que el diseño de software es determinante para la calidad del mismo. Pues no solamente determinarás las funciones y el como estará diseñado a la vista el software, si no que también como se manejará el flujo de los datos en cuanto a la conexión interna del programa y externa con el servidor.
Precisamente para esto, existen los diagramas de flujo, de hecho con un diagrama de flujo bien diseñado, se puede empezar a realizar lo que es la implementación o el desarrollo del programa. Recuerda considerar todos los aspectos antes de avanzar, aunque como te digo, dependiendo de la metodología que utilices, puede haber vuelta atrás sin problemas.
Esquemas Gráficos
Si el diagrama de flujos no te es suficiente para determinar la calidad de tu software, posiblemente lo que necesite sea un esquema gráfico. Este esquema, muestra sectores más profundos de los que podemos encontrar en un diagrama de flujo, pues en cuanto a los módulos, se va incluso hasta las funciones y sub-funciones que se realizan o ejecutan en cada capa. Obviamente al igual que el diagrama de flujo, podrás ver a detalle el flujo del sistema.
Modelo de Entidad-Relación
Posiblemente sin tener tanta presencia en lo que corresponde al diseño de software, pero debemos mencionar los Diagramas de Entidad – Relación. Principalmente para lo que corresponde a determinar correctamente la estructura interna del software. Pues en el modelo de entidad – relación, tendrás que agregar a cada entidad sus respectivo atributos, para posteriormente relacionarlos entre si con algunas funciones.
En realidad te permitirá además detectar posibles errores previos en lo que es la implementación. Sabrás que funciones se repiten, que atributos son redundantes y básicamente con una buena optimización, podrás hacer que tu software sea más ligero y no tenga atributos innecesarios en entidades donde no corresponde.
Conclusiones
El diseño del Software, es una de las partes fundamentales dentro del ciclo del desarrollo de software. Pues es el momento en el cuál muchos factores quedarán determinados, como la calidad, el rendimiento o incluso el buen funcionamiento. Considera el diseño de software como la fase previa al desarrollo, no es como muchos lo pintan, que lo colocan al final, pues con el diseño de software, no solamente determinas las funciones de cada elemento en tu programa, si no que además analizas los posibles riesgos y las probabilidades de que ocurran, con sus respectivas soluciones posibles.
Así que cuando estés a punto de diseñar un nuevo sistema, presta atención a esta parte tan relevante, la cuál podría ser vital para que tu software funcione correctamente. Por eso al final te mencioné alguna de las herramientas que se pueden llegar a utilizar. Estas te ayudarán a tener una mejor vista de lo que ocurre en tu programa y hay muchas más, yo solamente te mencioné 3, pero la realidad es que puedes utilizar las herramientas que más se acomoden a tus necesidades, siempre considerando los puntos que analizamos al principio del artículo.
Ahora si, ya para finalizar, te pregunto ¿Que tanta importancia le das al diseño de software en las fases de desarrollo? y ¿Cuáles son las mejores herramientas que conoces para llevar a cabo el diseño de software?.