viernes, 12 de febrero de 2010

UML

Con el paso de los años el desarrollo de software se ha hecho día con día mas complicado ya que los usuarios demandan mayor complejidad. Ya que los usuarios desean mas y mas rendimiento en sus programas. Ellos ven los avances tecnológicos y no se conforman con lo que tenemos actualmente, por eso los desarrollos cada día se hacen más complejos. Con los nuevos desarrollos tecnológicos los usuarios pueden trabajar alrededor del mundo sin la necesidad de estar físicamente en la oficina. Pero no solo los empleados se encuentran remotamente si no que también las empresas ahora tienen clientes a nivel mundial y ellos piden calidad con la interacción que hacen con las distintas aplicaciones.

Los nuevos requerimientos de los usuarios y del mercado hacen que los sistemas estén creciendo en complejidad y que los usuarios pidan más calidad por esto también se están buscando mejor formas de hacer mejores diseños y estimaciones.

Muchas de nuestras experiencias nos han demostrado que técnicas empíricas de diseño de sistemas ni siempre son las mejores prácticas para un buen desarrollo de proyectos, ya que estos no siempre cumplen con las expectativas del cliente. Estos al final no cumplen con el tiempo, costo o calidad que el cliente esperaba. Haciendo que la credibilidad del personal involucrado en el desarrollo se vea muy mal. A raíz de esto se busca nuevas formas de medir y calcular los tiempos de los componentes que están asociados al software.

Entonces con la búsqueda de soluciones a los problemas presentados a lo largo de muchos años dieron como fruto uno de muchos sistemas para el modelado de sistemas, el UML. Este sistema de modelado nos permite generar gráficamente un lenguaje que pueda ser interpretado por usuario, administrados de proyectos, analistas, desarrolladores y demás involucrados en esta tarea. Esto con el fin de tener un mejor panorama de lo que se quiere llegar hacer, de lo que el usuario desea y como los desarrolladores van a realizar esta tarea.

La utilización de UML nos da algunas ventajas a la hora de definir los procesos que vamos a crear en el nuevo sistema. Al ser un paso antes del inicio del desarrollo del sistema nos proporciona un amplio panorama de lo que deseamos desarrollar antes de iniciarlo. Lo que hace que tanto los usuarios finales y todos los demás involucrados tengan una forma de comunicación muy sencilla pero a la vez formal sobre el proyecto que se va a realizar. La comunicación clara entre todas las partes involucradas en el proceso de desarrollo nos permite tener una idea muy claro de las diferentes procesos que se están negociando.

Todo la documentación generada por los diagramas que se realizan en las distintas etapas hacen que los procesos que se van a desarrollar queden escritos de forma ordenada, formal y detallada. Esta documentación nos permiten analizar y entender mucho mejor todos los procesos que debemos realizar. Permitiendo que los programadores tengan un claro entendimiento de las especificaciones dadas por las personas que solicitaron el trabajo.

La calidad del producto se incrementa al poder percibir hasta los mas mínimos detalles muy claros por tanto los desarrolladores tienen menos posibilidades de cometer error en la etapa de fabricación del producto, es decir, que con forme los requerimientos están mejor explicados y documentados hace que sean más simple de interpretar. Con esto estamos perdiendo la parte de dejar en la interpretación de las personas que están creando los procesos a nivel de código. Entonces podemos decir que como resultado de un análisis más profundo, ordenado y muy claro. Ellos sabrán de que se trata con mayor claridad los procesos que se van a realizar.

La toma de decisiones será más simple y eficiente ya que los procesos se estarán interpretando mejor desde sus inicios. Ya que el lenguaje utilizado en el desarrollo de los procesos será entendido muy bien por todos las personas del proyecto. Por otra parte este nos da mecanismos para poder sobrellevar mejor los cambios de los sistemas que se pueden presentar en la vida del mismo ya que al tener todos los procesos por desarrollar muy bien documentados y detallados podríamos ver con mayor claridad cuales módulos podrían ser afectados por los cambios a realizar.

Las especificaciones del sistema se pueden detallar tanto lo deseemos o necesitemos para poder ampliar el nivel de entendimiento de todas las personas participantes. Con esto podemos desarrollar hasta los procesos más complejos por medio de los diagramas de UML.

UML entonces nos permite crear o diseñar los procesos del negocio. Además, nos ayuda a modelar las reglas del negocio y su arquitectura. Todo esto se hace de una manera grafica esto nos permite especificar los requerimientos del sistema a niveles requeridos. Podemos tener todo modelado con un mismo lenguaje de modelado.

Entre algunas ventajas de UML es que nos permite realizar o modelar estructuras muy complejas con unos pocos componentes y a la vez comunicar entre estructuras. Lo cual nos ahora tiempo y una enorme cantidad de páginas. Ya que al no poder realizar este diseño en forma grafica tendríamos que gastar un gran número de páginas para poder explicar esto en prosa. Por otro lado los requerimientos en prosa no siempre es la mejor manera para presentarlo a los encargados de desarrollarlos.

El sistema se pude modular y nos permite identificar claramente los actores o usuarios de cada uno. Definiendo claramente los roles de los usuario dentro de cada uno de los procesos de la empresa, ayudando a tener una visión amplia de quienes deberían realizar algunas tareas y quienes no deberían realizar ciertas tareas.

Con mi propia experiencia en empresas de desarrollo de software he notado que algunas de las empresas de desarrollo de software no tienen algún conocimiento sobre el modelado de sistemas. Por lo tanto estas no tienen un proceso de modelado de sistemas por lo que podemos encontrar una serie de problemas para construir el producto final. Esto también afectara los cambios o realizar soporte a los distintos módulos o productos. Por ejemplo a la hora de entrar a alguna empresa que no cuenta con documentación de los sistemas la curva de aprendizaje es muy amplia. Muchas de las empresas que no cuentan o usan procesos para el modelaje de sistemas no poseen con una visión totalmente clara de los requerimientos de los procesos que los clientes solicitan. Provocando descontentos con la entrega del producto.

Cuando se está desarrollando un sistema en el cual los requerimientos no están bien definidos y claros para el equipo de trabajo ocasionara que los costos aumentan, calidad cae o tiempo se atrasa. Pero no solo esto es un problema en las etapas de entendimiento de los requerimientos, sino también cuando se quiere hacer cambios en tiempo de desarrollo. Además para cambios futuros se vuelve difícil porque no se conocen los detalles a fondo de los procesos al no estar claramente documentados. Al no estar todos los procesos muy bien documentados esto podría ocasionar errores, por el hecho de no conocer el entorno completo de lo que se esta cambiando.

En muchas ocasiones los analistas de sistemas dan aprobación a los clientes de algún nuevo proceso que ellos quieren implementar sin saber las repercusiones que estos podrían traer a los módulos ya corriendo en producción. Esto podría generar impactos negativos en todo el proyecto y atrasarían los tiempos de entrega. Si todo esto estuvieran muy bien detallados los cambios se harían de una manera más seguro y con mayor conocimiento de los posibles impactos a los procesos en producción.

Los sistemas que se están desarrollando sin documentación clara, pero lo más importante que pueda ser entendida por todos los participantes del desarrollo hacen que el proceso de desarrollo de sistemas sea más cara. Ya que en muchas de las ocasiones cuando el usuario da los requerimientos son interpretados por los desarrollados de alguna manera en la que en realidad ellos querían, es decir, que muchas a veces se tiene que rediseñar la herramienta o los requerimientos cuando está muy cerca el cierre del proyecto. En muchos casos lo que sucede es la aparición de muchos errores en las fases finales del sistema porque simplemente los desarrolladores crearon procesos a un criterio de interpretación.

Entonces viendo UML en términos muy generales esta herramienta nos puede ayudar de muchas maneras a la hora de desarrollar sistemas. Podemos mejorar tiempos de respuesta, comunicación con los usuarios, requerimientos bien detallas y etc. Mejorando también los cambios que se realicen en el momento de desarrollo o inclusive los futuros cambios de los procesos. Además, el cambio de personal no será tan difícil asimilar con los procesos muy bien detallas y claros en un lenguaje fácil de entender por todos.

Por otro lado, nos ahorra paginas y paginas de documentación, explicación y detalles que se pueden visualizar mucho mejor con los diagramas de UML. Esto también nos da la posibilidad de modelar los requerimientos con diversos diagramas. Y cada uno de estos pude ser detallado tanto como sea necesario.

Etiquetas: