Simio facilita y agiliza enormemente el modelado al proporcionar un nuevo paradigma basado en objetos que cambia radicalmente la forma de construir y utilizar objetos. El objetivo de este artículo es describir en qué se diferencia el marco de modelado orientado a objetos de Simio de otras herramientas de modelado orientado a objetos.
La idea general del modelado orientado a objetos no es nueva; de hecho, la primera herramienta de modelado orientado a objetos -Simula- se introdujo hace más de 50 años y proporcionó las ideas centrales que se utilizan hoy en día en las herramientas de modelado orientado a objetos. Hoy en día existen en el mercado varias herramientas de modelado orientado a objetos. Al utilizar estas herramientas, el usuario selecciona objetos de una biblioteca y los coloca en un modelo. El consenso general de muchos usuarios de estas herramientas es que funcionan bien en modelos sencillos, pero para aplicaciones complejas son difíciles de utilizar porque, o bien carecen de flexibilidad (los usuarios no pueden añadir o modificar objetos), o bien consiguen la flexibilidad exigiendo al usuario que escriba código complejo en un lenguaje de programación como C++ o Java. Cualquiera de las dos opciones supone un obstáculo para el usuario a la hora de modelar rápidamente sistemas complejos. Esta ha sido una limitación clave para la aceptación generalizada de las herramientas de modelado orientado a objetos.
Simio se diferencia de otras herramientas de modelado orientado a objetos en que los objetos de Simio se basan en procesos y no en código. Un objeto Simio se define mediante la creación de un conjunto de flujos de procesos gráficos que describen el comportamiento del objeto. Un proceso es un diagrama de flujo que describe una secuencia de actividades y decisiones tomadas por el objeto. Un proceso puede extenderse en el tiempo y estar restringido por recursos limitados. Un ejemplo sencillo de un proceso que resulta familiar a muchos usuarios de herramientas de modelado orientado a procesos es: INCAUTACIÓN-RETRASO-LIBERACIÓN. En este proceso, el objeto espera para apoderarse de un recurso, se retrasa un tiempo de actividad y, a continuación, libera el recurso. Nótese que esta actividad se extiende en el tiempo y que el tiempo de ejecución del proceso depende tanto de la disponibilidad del recurso como del tiempo de retardo especificado.
En otras herramientas, los objetos están basados en código y se implementan en un lenguaje de programación. Si la herramienta admite objetos definidos por el usuario, éste debe implementar cualquier objeto nuevo en el mismo lenguaje de programación. El usuario debe dominar los conceptos básicos de la orientación a objetos (por ejemplo, encapsulación, herencia, polimorfismo, etc.), así como el lenguaje de programación requerido. En consecuencia, la creación de un nuevo objeto requiere un programador experto en un lenguaje de programación específico. Los objetos basados en procesos de Simio presentan una serie de ventajas importantes con respecto a los objetos basados en código de otras herramientas. La primera y más obvia es que los objetos son mucho más fáciles de crear, ya que no requieren conocimientos de programación en un lenguaje específico. Además, como la lógica de un objeto Simio se define mediante flujos de procesos gráficos y es visible para el usuario, son más fáciles de entender y modificar. Sin embargo, lo más importante es que el comportamiento de los objetos en Simio se define utilizando construcciones de modelado de procesos de alto nivel que abarcan todo el tiempo. Esto simplifica enormemente la tarea de construir objetos.
En la mayoría de las herramientas de modelado orientado a objetos, el usuario puede embellecer los objetos suministrados con lógica personalizada para una aplicación específica. Por ejemplo, podría ser necesario contar el número de veces que un cliente completa el servicio en un servidor específico y luego utilizar este recuento de alguna manera dentro de la lógica del modelo. Este tipo de lógica añadida por el usuario es muy importante para poder modelar de forma flexible una amplia gama de sistemas. Las herramientas suelen ofrecer la posibilidad de añadir este tipo de lógica en puntos predefinidos de los objetos que se proporcionan en su biblioteca estándar.
Los objetos basados en procesos de Simio también presentan algunas ventajas únicas e importantes con respecto a los objetos basados en código a la hora de añadir lógica personalizada a los objetos existentes. Un objeto basado en código tendrá "ganchos" lógicos para realizar llamadas a una función suministrada por el usuario que se ejecuta en puntos seleccionados del objeto. El usuario debe codificar esta función en el lenguaje de programación especificado (por ejemplo, C++ o Java). En algunos casos se proporciona una herramienta de scripting simplificada como alternativa para hacer cosas sencillas como asignaciones sin codificar, aunque la flexibilidad y potencia de las herramientas de scripting son muy limitadas. En cualquier caso, la lógica insertada debe ejecutarse completamente en ese punto específico del tiempo simulado. La lógica no puede retrasarse durante un tiempo determinado, esperar a que un recurso esté disponible o se reubique, esperar a que un depósito alcance un nivel de llenado específico o realizar otros tipos de lógica compleja que se extienda a lo largo del tiempo simulado. En cambio, los objetos basados en procesos de Simio ofrecen una función denominada procesos "adicionales" que se ejecutan en puntos lógicos específicos del objeto. Son los equivalentes a las llamadas a funciones de los objetos basados en código, pero mucho más potentes, ya que disponen de toda la potencia de los procesos de Simio y pueden abarcar el tiempo que sea necesario. Por ejemplo, existe un proceso adicional para el objeto Servidor en Simio que se ejecuta cada vez que el Servidor falla. Este proceso podría ser creado por el usuario para incluir lógica para esperar a que se apodere del reparador, y también esperar a que el reparador llegue al Servidor antes de devolver el control de nuevo al objeto. Se trata de una capacidad extremadamente potente.
En resumen, los objetos basados en procesos de Simio ofrecen una serie de ventajas importantes con respecto a los objetos basados en código más tradicionales de otras herramientas de modelado orientado a objetos. Estas ventajas incluyen tanto la facilidad de uso, al eliminar el requisito de ser un programador experto, como la flexibilidad de modelado, al permitir definir y embellecer los objetos mediante procesos que abarcan el tiempo, a diferencia de las funciones codificadas que deben ejecutarse sin un avance temporal simulado. En resumen, los objetos basados en procesos de Simio son a la vez más sencillos y más potentes que los objetos basados en código de otras herramientas de modelado.
Descargar versión PDF
