martes, 9 de diciembre de 2008

Lenguaje de Modelado Unificado

La ingeniería del software nace como una disciplina para aplicar los principios técnicas y herramientas para el desarrollo del software, surgió porque todos los desarrolladores en la década de los años 1980, realizaban el software de forma artesanal, es decir utilizando métodos y técnicas adhoc donde la experiencia, basada en el ensayo-error, era el camino a seguir. Este enfoque produjo grandes y exitosos productos de programación pero conforme los proyectos se volvieron más complejos debido al avance del hardware y software y la penetración cada vez mayor de la informática en todos los ámbitos de la sociedad, llevó a que se produjera software sin calidad, se incumplieran los presupuestos y se incrementara dramáticamente los costos de mantenimiento.

La solución propuesta fue aplicar métodos y principios utilizados y probados en el desarrollo de productos software para conseguir de forma inequívoca productos que corran eficientemente y se ejecuten sobre máquinas reales. En la década de los años 1970 surgieron una gran variedad de metodologistas y metodologías entre ellos se destacan Yourdon y Demarco cuyas investigaciones se basaban en los principios de la programación estructurada. En los años 1980 y 1990 el paradigma estructurado evolucionó hacia el paradigma orientado a objetos, en el período de 1989 y 1994 se creó la llamada guerra de métodos dentro de la comunidad orientada a objetos existiendo un incremento de menos de diez a más de cincuenta metodologías, es así que los desarrolladores de software quedaron muy confundidos sin saber cual era la metodología más adecuada para elaborar sus proyectos.

El “lenguaje de modelado unificado” es un lenguaje que permite modelar, construir y documentar los elementos que forman un sistema software orientado a objetos. Se ha convertido en el estándar de facto de la industria, debido a que fue concebido por los autores de los tres métodos más utilizados de la orientación a objetos: Grady Booch, Ivar Jacobson y Jim Rumbaugh. Estos autores fueron contratados por la empresa Rational Software Co. para crear una notación unificada en la que basar la construcción de sus herramientas de ayuda a la ingeniería del software. En el proceso de creación del lenguaje de modelado unificado han participado, no obstante, otras empresas de gran peso en la industria como Microsoft, Hewlett-Packard, Oracle e IBM, así como grupos de analistas y desarrolladores. Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a que incorpora las principales ventajas de cada uno de los métodos particulares en los que se basa: Booch, OMT y OOSE. El lenguaje de modelado unificado ha puesto fin a la llamada “guerra de métodos” que se ha mantenido a lo largo de los años 1990, en las que los principales métodos sacaban nuevas versiones que incorporaban las técnicas de los demás. Con el lenguaje de modelado unificado se fusiona la notación de estas técnicas para formar una herramienta compartida entre todos los ingenieros del software que trabajan en el desarrollo orientado a objetos.

El objetivo principal cuando se empezó a gestar el lenguaje de modelado unificado era posibilitar el intercambio de modelos entre las distintas herramientas para ayuda a la ingeniería del software orientada a objetos del mercado. Para ello era necesario definir una notación y semántica común. Se debe tomar en cuenta que el estándar UML no define un proceso de desarrollo específico, tan solo se trata de una notación. Una buena parte de los ingenieros del software se inclinan por utilizar el proceso propuesto por Craig Larman el año 1999 que se ajusta a un ciclo de vida evolutivo e incremental dirigido por casos de uso.

Es importante resaltar que el lenguaje de modelado unificado es un “modelo” para especificar y no para describir métodos o procesos. Se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodología de desarrollo de software, tal como el Proceso Unificado Racional, pero no especifica en sí mismo qué metodología o proceso utilizar de manera exclusiva. El lenguaje de modelado unificado no puede compararse con la programación estructurada, pues este lenguaje no es un lenguaje de programación, solo diagrama la realidad de un requerimiento. Mientras que, la programación estructurada, es un elemento útil para el diseño de procedimientos o programas como lo es la orientación a objetos, sin embargo, la orientación a objetos viene siendo un complemento perfecto del lenguaje de modelado.

El lenguaje de modelado unificado cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas. En la versión 2.0 del lenguaje de modelado unificado hay 13 tipos diferentes de diagramas. Para comprenderlos de manera concreta, a veces es útil categorizar jerárquicamente, en este entendido los diagramas del lenguaje de modelado unificado se dividen en tres grandes grupos: (1) Los diagramas de estructura, que enfatizan en los elementos que deben existir en el sistema modelado. Estos a su vez comprenden los siguientes diagramas: diagrama de clases, diagrama de componentes, diagrama de objetos, diagrama de estructura compuesta, diagrama de despliegue y diagrama de paquetes. (2) Los diagramas de comportamiento, enfatizan en lo que debe suceder en el sistema modelado, estos comprenden los siguientes diagramas: diagrama de actividades, diagrama de casos de uso y diagrama de estados. (3) Los diagramas de interacción, son un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado. Estos diagramas comprenden los siguientes diagramas: diagrama de secuencia, diagrama de colaboración, diagrama de tiempos y diagrama de vista de interacción.

Algunos de los programas más populares para el modelado en el lenguaje de modelado unificado, utilizando software libre, son: (1) ArgoUML. Herramienta de modelado escrito en Java. (2) BOUML. Es una herramienta de lenguaje de modelado unificado y genera código en lenguaje C++, Java e IDL. Disponible para Windows, Unix/Linux y Mac OS. (3) Fujaba. No solo sirve para modelar sino que puede generar código Java automáticamente. También es capaz de hacer ingeniería inversa y crear los diagramas a partir de código Java. (4) Dia. Puede ser usado para modelar varios tipos de diagramas del lenguaje de modelado unificado. (5) gModeler. Herramienta para modelado del lenguaje de modelado unificado basada en Flash, utilizable desde el navegador, que permite generar código Action Script 2.0 Compatible (6) MonoUML. Herramienta de ayuda a la ingeniería del software para la plataforma mono. (7) Papyrus. Herramienta gráfica basada en Eclipse para el modelado con el lenguaje de modelado unificado, es de código abierto y se ofrece bajo licencia EPL. (8) StarUML. Herramienta de modelado para Windows desarrollada en Delphi. Bastante estable y utilizable. (9) TCM. Herramienta para crear diversos tipos de diagramas incluidos el lenguaje de modelado unificado. (10) Umbrello. Herramienta para modelar el lenguaje de modelado unificado para el entorno KDE. (11) UMLet. Herramienta para el modelado rápido del lenguaje de modelado unificado, también escrita en Java.

En su visión general, el lenguaje de modelado unificado, se utiliza para (1) Visualizar. Para muchos programadores, la distancia entre pensar en el diseño de un requerimiento y transformarlo en código es casi cero. Según estos programadores lo que utilizan es “lo piensas, lo codificas”. De hecho, algunas cosas pequeñas se modelan mejor directamente en código, El texto es un medio maravilloso para escribir expresiones y algoritmos de forma concisa y directa. En tales casos, el programador todavía esta haciendo algo de modelado, si bien lo hace en una forma complemente mental. Incluso puede bosquejar algunas ideas sobre una pizarra blanca o sobre una servilleta. Sin embargo, esto plantea bastantes problemas, especialmente cuando los problemas ya no son de juguete. (2) Especificar. En este contexto, especificar significa construir modelos precisos, no ambiguos y completos. En particular, el lenguaje de modelado unificado cubre la especificación de todas las decisiones de análisis, diseño e implementación que deben realizarse al desarrollar y desplegar un sistema con gran cantidad de software. (3) Construir. El lenguaje de modelado unificado no es un lenguaje de programación visual, pero sus modelos pueden conectarse de forma directa a una gran variedad de lenguajes de programación. Las cosas que se expresan mejor gráficamente también se representan gráficamente en el lenguaje de modelado unificado, mientras que las cosas que se expresan mejor textualmente se plasman con un lenguaje de programación. (4) Documentar. Una organización de software que trabaje bien produce toda clase de artefactos, incluida su documentación, además de código ejecutable.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Agosto 25 de 2008

Mecatrónica


En la edad media la división del trabajo propició el ambiente para la primera revolución industrial que desarrolló a la sociedad y en especial a los países que crearon máquinas para el aumento de la cantidad y calidad de los productos de consumo masivo. A mediados de los años 1940, la introducción del transistor semiconductor inicia la denominada “segunda revolución industrial”, la miniaturización de los componentes electrónicos acoplados en circuitos integrados, dio origen a la computadora digital, un producto que cambió la mentalidad en la industria y en la sociedad. En esa época, los países que emplearon, pero especialmente aquellos que produjeron las tecnologías, se pusieron a la vanguardia de la sociedad. Dentro de ese contexto, surge la mecatrónica como un concepto nuevo en torno a las tecnologías, que se encarga de integrar los productos específicos de esas dos revoluciones: la integración de las máquinas a las computadoras digitales, para crear un nuevo ambiente o paradigma en el tercer milenio.

La mecatrónica surge de la combinación sinérgica de distintas ramas de la ingeniería, entre las que destacan: la mecánica de precisión, la electrónica, la informática y los sistemas de control. Su principal propósito es el análisis y diseño de productos y de procesos de manufactura automatizados. El término “mecatrónica” fue introducido por primera vez el año 1969 por el ingeniero Tetsuro Mori, trabajador de la empresa japonesa Yaskawa. En un principio se definió como la integración de la mecánica y la electrónica en una máquina o producto, pero luego se consolidó como una especialidad de la ingeniería e incorporó otros elementos como los sistemas de computación, los desarrollos de la microelectrónica, la inteligencia artificial, la teoría de control y otros relacionados con la informática, estabilidad y alcanzabilidad. Teniendo como objetivo la optimización de los elementos industriales a través de la optimización de cada uno de sus subprocesos con nuevas herramientas sinérgicas.

La definición de mecatrónica propuesta por J.A. Rietdijk menciona lo siguiente: “mecatrónica es la combinación sinérgica de la ingeniería mecánica de precisión, de la electrónica, del control automático y de los sistemas para el diseño de productos y procesos para una producción con mayor plusvalía y calidad”. La mecatrónica tiene como antecedentes inmediatos a la investigación en el área de la cibernética realizada en 1936 por Alan Turing y en 1948 por Norbert Wiener, las máquinas de control numérico, desarrolladas inicialmente en 1946 por Devol, los manipuladores, ya sean teleoperados, en 1951 por Goertz, o robotizados, en 1954 por Devol, y los autómatas programables, desarrollados por Bedford Associates en 1968. En 1969 la empresa japonesa Yaskawa Electric, acuña el término mecatrónica, recibiendo en 1971 el derecho de marca. En 1982 Yaskawa permite el libre uso del término.

Una manera interesante y sencilla de definir la mecatrónica es: “Diseño y construcción de sistemas mecánicos inteligentes”. Un sistema mecatrónico se compone principalmente de mecanismos, actuadores, control inteligente y sensores. Tradicionalmente la mecánica se ha ocupado solo de los mecanismos y los actuadores, y opcionalmente puede incorporar control. La mecatrónica integra obligatoriamente el control en lazo cerrado y por lo tanto también a los sensores. Un sistema mecatrónico es aquel sistema digital que recoge señales, las procesa y emite una respuesta por medio de actuadores, generando movimientos o acciones sobre el sistema en el que se va a actuar: Los sistemas mecánicos están integrados con sensores, microprocesadores y controladores. Los robots, las máquinas controladas digitalmente, los vehículos guiados automáticamente, y otros similares se deben considerar como sistemas mecatrónicos.

En la etapa de industrialización el trabajo manual disperso, o trabajo artesanal, es agrupado en la fábrica y gradualmente sustituido por el trabajo mecánico realizado mediante dispositivos y mecanismos que configuran las maquinas. El uso de energía hidráulica para el movimiento de los mecanismos fue el primer paso hacia la mecanización; posteriormente se empleó la energía térmica. Actualmente la mecanización de las operaciones de manufactura significa el empleo de mecanismos movidos con energía hidráulica, neumática, térmica, eléctrica o una combinación de estas. La etapa de mecanización significa el empleo intensivo y extensivo de estas formas de energía para el movimiento de los mecanismos. La etapa de automatización industrial programable, reprogramable y flexible, adviene con la creación de la electrónica y el control digital de las operaciones de manufactura y mecanismos, es decir, con la mecatrónica.

La integración de las maquinas de control numérico computarizado con los robots industriales, mediante una computadora digital, para su programación y control, da origen a los sistemas flexibles de manufactura y sistemas flexibles de montaje, que son la expresión moderna de los sistemas de manufactura tradicionales. La manufactura integrada por computadora es la estrategia de desarrollo de estas tecnologías avanzadas de manufactura, basadas en la automatización electrónica. Todo este desarrollo ha sido posible gracias a la integración de sistemas mecánicos, electrónicos y computarizados para la automatización industrial.

Los factores primarios para la generación de valor agregado que dominan hoy en día el mercado globalizado son la innovación, la automatización, la sofistificación y la gerencia estratégica, todos ellos dependen de sistemas de software inteligente. Los japoneses han liderado por más de veinte años los productos y sistemas robotizados y mecatrónicos, pero no el software inteligente. El año 1989 un grupo de investigadores de Tokio que visitaba varias industrias y agencias federales de los Estados Unidos, en reconocimiento de esta situación, propuso unir a los investigadores de las dos naciones en una nueva área integrada interdisciplinaria en el campo de la manufactura llamada sistemas de manufactura inteligente. Los sistemas de manufactura inteligente pueden ser considerados como la integración de la mecatrónica inteligente y la manufactura integrada por computadora, que combina disciplinas tales como la ingeniería industrial, la ingeniería eléctrica, la ingeniería mecánica, la ciencia de las computadoras, la inteligencia artificial y los sistemas expertos, las cuales combinadas con sensores inteligentes, motores y circuitos digitales, permiten el avance en precisión y control de sistemas de manufactura de tiempo real.

En cuanto a aplicaciones, los rubros mas importantes son robótica, sistemas de transporte, sistemas de manufactura, máquinas de control numérico, nanomáquinas y biomecatrónica. La robótica es la parte de la técnica de diseño y construcción de autómatas flexibles y reprogramables, capaces de realizar diversas funciones. Es el nivel de automatización más flexible y en mucho indica las tendencias futuras del resto de la mecatrónica. Las líneas de investigación más desarrolladas son: síntesis de manipuladores y herramientas, manipuladores de cadena cinemática cerradas, robots autónomos, robots cooperativos, control y teleoperación asincrónicas, estimación del ambiente, comportamiento inteligente, interfaces hápticas, navegación y locomoción. La aplicación de la mecatrónica en el transporte se desarrolla en el diseño de mecanismos activos, el control de vibraciones, estabilización de mecanismos y la navegación autónoma. En la manufactura, la mecatrónica se ha servido de los modelos de sistemas a eventos discretos, y los ha aplicado para el diseño óptimo de líneas de producción así como la optimización de procesos ya existente. También ha ayudado a automatizar las líneas de producción y generar el concepto de manufactura flexible.

Antecedentes de la mecatrónica son las máquinas de control numérico. En este tema los desarrollos más recientes son: análisis, detección y control de vibraciones, y temperatura, en las herramientas de corte, diagnóstico de las herramientas de corte y prototipaje rápido, electroerosionado y síntesis por láser. Las nanomáquinas son un área que se han beneficiado de los desarrollos de la mecatrónica. Un ejemplo muy evidente es el desarrollo del disco duro. Las líneas de investigación más manejadas son: micromanejo, microactuadores y micromaquinado. La biomecatrónica es la aplicación de la mecatrónica para resolver problemas de sistemas biológicos, en particular el desarrollo de nuevos tipos de prótesis, simuladores quirúrgicos, control de posición de instrumental médico, sillas de ruedas y teleoperación quirúrgica.

Guillermo Choque Aspiazu
http://www.eldiario.net
Agosto 18 de 2008