door Melissa García 16 jaren geleden
870
Meer zoals dit
door pamela opazo
door Fransisco Amaya
door JAIDER ADOLFO FLOREZ SOLANO (:-)
door UNIVERSIDAD SERGIO ARBOLEDA
CAPITULO # 8
Modelado y Simulado de Procesos de Negocio
del Libro: Business Process Modeling, Simulation, and Design.
En muchos procesos de negocio, papeles y personas provenientes de diferentes fuentes son temporal o permanentemente almacenados en lotes. Los elementos almacenados van juntos a través de un proceso.
El almacenamiento por lotes permite juntar varios elementos de varias fuentes como uno solo para propósitos de simulación. Esto se puede realizar utilizando el bloque "Operation". También utilizando el bloque "Batch" del submenú "Batching" de la librería "Discrete Event". El bloque "Batch" acumula elementos de cada fuente a un nivel específico y luego libera un elemento único que representa al lote; para esto el elemento del conector "a" y "b" deben estar disponibles.
El almacenamiento por lotes es utilizado para dos tareas diferentes: equipar ("kitting") y atar ("binding"). Equipar ocurre cuando un número específico de elementos son puestos juntos físicamente y luego liberados como un único elemento. Atar elementos se refleja en situaciones en que es necesario asociar un elemento temporalmente con otro o muchos otros para que fluyan juntos a través de una porción del proceso.
La mayoría de procesos de negocio necesitan recursos para desarrollar actividades. Los recursos son entidades que proveen servicio a los elementos que entran a un modelo de simulación.
En Extend, los recursos pueden ser modelados explícitamente utilizando bloques de recursos (Ej. Bloque "Labor Pool") o implícitamente con bloques de atividad (Ej. Bloque "Operation"). Los bloques de actividad pueden representar el recurso y la actividad que está desarrollando. El modelado explícito de recursos provee la flexibilidad de atar recursos para varias actividades.
La librería "Discrete Event" de Extend provee la alternativa de modelar recursos con 3 bloques: "Resource Pool", "Queue Resource Pool" y "Release Resource Pool". El modelado de recursos con estos bloques tiene algunas ventajas sobre los mencionados anteriormente.
Muchas compañías utilizan Costo Basado en Actividad (ABC, "Activity-Based Costing") como los cimientos para el rediseño de procesos de negocio.
El concepto de costo basado en actividad es que cada empresa consiste de recursos, actividades y objetos de costo. Las actividades son definidas por descomposición de cada proceso de negocio en tareas individuales. Después el costo de todos los recursos consumidos por cada actividad, y el costo de todas las actividades consumidas por cada producto o costo objeto son rastreados.
El costo basado en actividad es un método para identificar y rastrear el costo operacional asociado directamente con los trabajos de procesamiento. Típicamente, esta aproximación se enfoca en algunas unidades de salida como completar una orden o servicio en un intento por determinar su costo total lo más precisamente posible. El costo total es basado en costos fijos y variables de las entradas necesarias para producir una salida específica.
El costo basado en actividad es utilizado para identificar, cuantificar, y analizar los varios conductores de costo (como trabajadores, materiales, elevada administración, y reprocesamiento) y determinar cuales son los candidatos para reducción.
Los bloques que generan elementos (Ej. Bloque "Import") o recursos (Ej. Bloque "Labor Pool") y los bloques que procesan elementos (Ej. Bloque "Operation and Transaction") tienen una pestaña llamada "Cost" que sirve para especificar los datos del costo.
El tiempo del ciclo es el tiempo requerido por un elemento para ir desde el inicio del proceso hasta el final. También puede ser el tiempo que toma a un elemento ir de una parte del proceso a otra.
El bloque "Timer" en el submenú "Information" de la librería "Discrete Event" es utilizado para calcular el ciclo del tiempo de elementos individuales. Este bloque es colocado en el punto donde la toma del tiempo debería empezar.
Los elementos entran al bloque a través del conector "input". El conector "output" debería enviar los elementos hacia el resto de acitividades en el modelo. El sensor de entrada es conectado a la salida del bloque que es el punto final del proceso o segmento del proceso por el cual el tiempo del ciclo está siendo calculado.
Algunas formas para documentar y mejorar un model es añadir texto (Herramienta "Text"), usar conexiones nombradas (con cajas de texto "text box"), agregar controles ("Slider", "Meter" y "Switch"), y visualizando los resultados ("Histogram", "Plotter Discrete Event" y la herramienta "Clone Layer").
Modelar el tiempo de procesamiento de las actividades es clave para la simulación de procesos de negocio. En Extend, los bloques "Operation" y "Transaction" son utilizados para modelar actividades. La diferencia principal entre estos bloques es que el bloque "Operation" puede procesar únicamente un elemento a la vez, y el bloque "Transaction" puede procesar muchos elementos a la vez (con un límite máximo).
Las actividades modeladas en estos bloques involucran un tiempo de procesamiento o retraso que representa la cantidad de tiempo que le toma desarrollar una tarea específica.
El bloque "Decision" también involucra un tiempo de procesamiento que es utilizado para modelar el tiempo para tomar una decisión.
El tiempo de procesamiento puede ser estático o variar dinámicamente dependiendo de las condiciones del modelo. El tiempo puede ser aleatoreo, programado basado en un tiempo del día, o afectado por cualquier combinación de estos factores.
La forma más sencilla de determinar el tiempo de procesamiento es elegir un valor en e diálogo del bloque correspondiente. Esto es útil cuando el tiempo de procesamiento es determinístico y constante.
En caso contrario, el conector "D" de los bloques "Activity" o "Decision" es utilizado para cambiar dinámicamente el tiempo de procesamiento, a través de un bloque "Input Data".
Cuando se modela procesos de negocio, es común encontrar situaciones donde los trabajos provienen de diferentes fuentes o siguen diferentes caminos.
Para recibir elementos de varias fuentes es necesario utilizar el bloque "Merge", que permite juntar elementos de varios bloques en uno solo manteniendo su identidad única.
El bloque "Merge" del submenú "Routing" de la librería "BPR" puede unir elementos de 3 fuentes separadas.
Algunos procesos de negocio son diseñados de tal forma que 2 o más actividades son desarrolladas en paralelo.
Para modelar caminos paralelos con Extend, utilice el bloque "Operation,Reverse" del submenú "Batcing" de la librería BPR. Este bloque separa un elemento entrante en múltiples copias y las libera una a la vez.
Para cada conector de salidas el número de copias (máximo 3) a ser creado puede ser especificado. Después que las actividades en cada camino paralelo son completadas, el bloque "Operations" del submenú "Activities" de la librería "BPR" puede ser utilizado para reunir los elementos en uno solo (máximo 3).
Los procesos de negocio demandan enrutamiento de trabajo para procesamiento, revisión, aprovación y muchas otras.
Los modelos de simulación deben ser capaces de enrutar los trabajos basándose en un valor de probabilidad, decisiones lógicas y tácticas, o características del trabajo.
El enrutamiento probabilístico ocurre cuando un trabajo fluye por un camino con un porcentaje de tiempo específico. Para simular esta situación es útil utilizar el bloque "Import" para generar los trabajos, y agregarle el bloque "Decision" para enrutar cada trabajo probabilísticamente.
El bloque "Decision" deberá tener conectado un bloque "Input Random Number" para determinar la probabilidad que un trabajo tome cada camino que se encuentre después del bloque "Decision".
El bloque "Stack" en el submenú "Queues" de la librería "BPR" provee diferentes tipos de colas o líneas de espera:
Una cola que recibe varios elementos a la vez, debe buscar el elemento de mayor prioridad para liberarlo.
El bloque "Stack" puede ser ajustado para operar por prioridad al seleccionar la opción "Priority" del menú pop-up de la opción "Type of Stack".
Otro fenómeno importante en las colas es el abandono (incumplimiento). Este ocurre cuando un elemento que está listo en la cola se va antes de ser liberado por el procesamiento. Por ejemplo, alguien que cuelga antes de ser atendido por haber sido puesto en espera.
El tiempo de abandono puede ser ajustado dinámicamente utilizando el conector "R" del bloque "Stack" simplemente marcando la casilla "R".
Un proceso se considera obstaculizado cuando tiene una llegada y una cola muy grande, entonces el elemento abandona inmediatamente dicho proceso.
El bloque "Decision" del submenú "Routing" de la librería "BPR" puede ser utilizado para para modelar la obstaculización.
Las colas son utilizadas para evitar bloqueos.
Un bloqueo ocurre cuando un elemento finaliza su procesamiento pero no puede salir del bloque porque la siguiente actividad no está lista para recibirlo.
El bloqueo puede ocurrir en procesos en serie donde las actividades son precedidas por colas.
Las prioridades son utilizadas para especificar la importancia de un elemento. Al comparar 2 valores de prioridad, Extend asigna mayor prioridad a los valores menores (incluyendo los valores negativos).
Las prioridades pueden ser establecidas de diferentes formas dentro de un modelo en Extend. Si el bloque "Import" es utilizado para generar las llegadas, es sencillo establecer la prioridad de los elementos en la pestaña "Attributes". Además, el bloque "Set Priority" de la librería "Discrete Event" asigna prioridades a los elementos que pasan a través de él.
Las prioridades son útiles cuando el procesamiento de trabajos no tiene que seguir una disciplina de "primero en llegar primero en salir".
El bloque "Stack" en el submenú "Queues" de la librería "BPR" permite determinar el orden en que los elementos serán liberados. El valor por defecto es "first-in-first-out". Al elegir "Priority" del menú pop-up de la pestaña "Queue" permite elegir los valores por prioridad.
Los elementos serán ordenados por valores de prioridad en el bloque "Stack" únicamente si éstos deben esperara allí con otros elementos.
Los atributos tienen un rol muy importante en la simulación de procesos de negocio. Un atributo es una cualidad de un elemento que permanece en él a través de todo el modelo.
Cada atributo consiste de un nombre y de un valor. El nombre identifica algunas características del elemento y un número especifica el valor de atributos. Es posible definir múltiples atributos para cualquier elemento que fluye a través de un modelo de simulación.
La manera más sencilla de definir atributos es usando el bloque "Import" (también puede hacerse con los bloques "Operation", "Repository", "LaborPool" y "Program"). La librería "Discrete Event" tiene el bloque "Set Attribute" para asignar atributos.
Los atributos son comúnmente usados para especificar la cantidad de tiempo de procesamiento requerida, las instrucciones de ruteo, o los tipos de elementos.
La simulación de un proceso de negocios típicamente comienza con un trabajo entrando al proceso.
Las llegadas son generalmente aleatoreas, porque la mayoría de situaciones no cumplen un horario y resulta difícil predecir la llegada del próximo trabajo. Los analistas pueden asignar un patrón (una función de distribución de probabilidad) para el tiempo entre una llegada y la siguiente.
El método más común para generar llegadas aleatoreas en Extend es la utilización del bloque "Import" del submenú "Generators" de la librería BPR o el bloque "Generator" de la librería "Discrete Event".
El parámetro "Distribution" indica el tipo de distribución de probabilidad en que se generarán las llegadas. La selección de la distribución de probabilidad depende del proceso de negocio en estudio y de la salida del análisis estadístico de los datos de entrada.
Si la tasa de llegadas cambia durante un proceso, es útil utilizar el bloque "Input Data" del submenú "Inputs/Outputs" de la librería "Generic". Este bloque permite definir diferentes tasa de llegada para diferentes períodos de tiempo.
Para generar un número de llegadas en un tiempo específico se puede utilizar el bloque "Program" del submenú "Generator" de la librería "Discrete Event", pues permite definir un valor de llegadas para un tiempo específico.
Los valores proveen información de los elementos y el estado de los procesos simulados.
Los valores pueden ser utilizados para generar datos de salida. Por ejemplo, el tiempo de espera en una cola o tiempo actual de procesamiento de una actividad. Estos valores son llamados valores de salida.
Los valores de salida incluyen estadísticas, tal como la longitud promedio de una cola y la utilización promedio de un recurso.
También hay valores de estado, los cuales indican el estado de un proceso. Por ejemplo, el número de clientes esperando en fila en un momento dado, indica el estado del sistema.
La mayoría de bloques en Extend incluyen conectores que pueden ser utilizados para rastrear las salidas o valores de estado.
Dentro de un modelo de simulación en Extend, un elemento es un elemento de un proceso que está siendo:
Los elementos son entidades individuales y pueden tener propiedades únicas que son determinadas por sus atributos y prioridades.
Un elemento sólo puede estar en un lugar en determinado tiempo dentro de un modelo de simulación.
Los elementos fluyen en un proceso y cambian de estado cuando ocurre un evento.
Por ejemplo, un servidor puede cambiar de disponible a ocupado con la llegada de los clientes.
La validación del modelo se refiere a determinar si el modelo representa el proceso real con precisión.
Un modelo válido es una representación razonablemente precisa de los procesos reales que cumplen el propósito del modelo.
Durante la validación, el analista debe asegurarse que las comparaciones con un proceso real son hechas utilizando las mismas métricas.
También es necesario determinar si el modelo tiene sentido.
Los resultados de la simulación pueden ser comparados con datos históricos para validar un modelo.
La verificación del modelo es el proceso de depurar un modelo para asegurar que cada porción opera como lo esperado.
Otras
Otras técnicas de verificación incluyen contar los elementos del modelo y agregar animaciones.
Reducir a un caso Simple
Otra forma es reducir el modelo a un caso simple en el que el resultado se pueda predecir.
Esta simplificación puede ser lograda como sigue:
Construcción Incremental
Una forma de verificar que el modelo es correcto, es usar una técnica de construcción incremental.
Esto significa que el modelo es contruido por etapas y que se realiza una corrida al terminar cada etapa, para verificar que se comporte como se espera.
La selección del tiempo de finalización y el número de corridas se debe hacer en la pestaña "Discrete Event" del diálogo "Simulation Setup".
Dicha selección depende de varios factores:
La herramienta Extend permite construir modelos con unidades genéricas de tiempo.
Seleccione la opción "Run"/"Simulation Setup", en la pestaña "Time Units", cambie la unidad de tiempo global. Esto provocará un cambio en todos los parámetros de tiempo en todos los bloques del modelo.
Es posible configurar una unidad de tiempo distinta a la unidad global para bloques específicos; Extend realiza las conversiones necesarias en tiempo de corrida.