miércoles, 9 de marzo de 2016

UML

¿EN QUÉ CONSISTE?

En todas las disciplinas de la Ingeniería se hace evidente la importancia de los modelos ya que describen el aspecto y la conducta de "algo". Ese "algo" puede existir, estar en un estado de desarrollo o estar, todavía, en un estado de planeación. Es en este momento cuando los diseñadores del modelo deben investigar los requerimientos del producto terminado y dichos requerimientos pueden incluir áreas tales como funcionalidad, performance y confiabilidad. Además, a menudo, el modelo es dividido en un número de vistas, cada una de las cuales describe un aspecto específico del producto o sistema en construcción.

El modelado sirve no solamente para los grandes sistemas, aun en aplicaciones de pequeño tamaño se obtienen beneficios de modelado, sin embargo es un hecho que entre más grande y más complejo es el sistema, más importante es el papel de que juega el modelado por una simple razón: "El hombre hace modelos de sistemas complejos porque no puede entenderlos en su totalidad".

UML es una técnica para la especificación sistemas en todas sus fases. Nació en 1994 cubriendo los aspectos principales de todos los métodos de diseño antecesores y, precisamente, los padres de UML son Grady Booch, autor del método Booch; James Rumbaugh, autor del método OMT e Ivar Jacobson, autor de los métodos OOSE y Objectory. La versión 1.0 de UML fue liberada en Enero de 1997 y ha sido utilizado con éxito en sistemas construidos para toda clase de industrias alrededor del mundo: hospitales, bancos, comunicaciones, aeronáutica, finanzas, etc.

Los principales beneficios de UML son:

  • Mejores tiempos totales de desarrollo (de 50 % o más).
  • Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos.
  • Establecer conceptos y artefactos ejecutables.
  • Encaminar el desarrollo del escalamiento en sistemas complejos de misión crítica.
  • Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas.
  • Mejor soporte a la planeación y al control de proyectos.
  • Alta reutilización y minimización de costos.
  • Vista Use-Case: Una vista que muestra la funcionalidad del sistema como la perciben los actores externos.
  • Vista Lógica: Muestra cómo se diseña la funcionalidad dentro del sistema, en términos de la estructura estática y la conducta dinámica del sistema.
  • Vista de Componentes: Muestra la organización de los componentes de código.
  • Vista Concurrente: Muestra la concurrencia en el sistema, direccionando los problemas con la comunicación y sincronización que están presentes en un sistema concurrente.
  • Vista de Distribución: muestra la distribución del sistema en la arquitectura física con computadoras y dispositivos llamados nodos.
UML, ¿Método o Lenguaje de Modelado?

UML es un lenguaje para hacer modelos y es independiente de los métodos de análisis y diseño. Existen diferencias importantes entre un método y un lenguaje de modelado. Un método es una manera explícita de estructurar el pensamiento y las acciones de cada individuo. Además, el método le dice al usuario qué hacer, cómo hacerlo, cuándo hacerlo y por qué hacerlo; mientras que el lenguaje de modelado carece de estas instrucciones. 

Los métodos contienen modelos y esos modelos son utilizados para describir algo y comunicar los resultados del uso del método.

Un modelo es expresado en un lenguaje de modelado. Un lenguaje de modelado consiste de vistas, diagramas, elementos de modelo ¾ los símbolos utilizados en los modelos ¾ y un conjunto de mecanismos generales o reglas que indican cómo utilizar los elementos. Las reglas son sintácticas, semánticas y pragmáticas.


Vistas: Las vistas muestran diferentes aspectos del sistema modelado. Una vista no es una gráfica, pero sí una abstracción que consiste en un número de diagramas y todos esos diagramas juntos muestran una "fotografía" completa del sistema. Las vistas también ligan el lenguaje de modelado a los métodos o procesos elegidos para el desarrollo.

Diagramas: Los diagramas son las gráficas que describen el contenido de una vista. UML tiene nueve tipos de diagramas que son utilizados en combinación para proveer todas las vistas de un sistema: diagramas de caso de uso, de clases, de objetos, de estados, de secuencia, de colaboración, de actividad, de componentes y de distribución.

Símbolos o Elementos de modelo: Los conceptos utilizados en los diagramas son los elementos de modelo que representan conceptos comunes orientados a objetos, tales como clases, objetos y mensajes, y las relaciones entre estos conceptos incluyendo la asociación, dependencia y generalización. Un elemento de modelo es utilizado en varios diagramas diferentes, pero siempre tiene el mismo significado y simbología.

Reglas o Mecanismos generales: Proveen comentarios extras, información o semántica acerca del elemento de modelo; además proveen mecanismos de extensión para adaptar o extender UML a un método o proceso específico, organización o usuario.


FASES DEL DESARROLLO DE UN SISTEMA

Las fases del desarrollo de sistemas que soporta UML son: Análisis de requerimientosAnálisisDiseñoProgramación y Pruebas.

Análisis de Requerimientos

UML tiene casos de uso (use-cases) para capturar los requerimientos del cliente. A través del modelado de casos de uso, los actores externos que tienen interés en el sistema son modelados con la funcionalidad que ellos requieren del sistema (los casos de uso). Los actores y los casos de uso son modelados con relaciones y tienen asociaciones entre ellos o éstas son divididas en jerarquías. Los actores y casos de uso son descritos en un diagrama use-case. Cada use-case es descrito en texto y especifica los requerimientos del cliente: lo que él (o ella) espera del sistema sin considerar la funcionalidad que se implementará. Un análisis de requerimientos puede ser realizado también para procesos de negocios, no solamente para sistemas de software.

Análisis

La fase de análisis abarca las abstracciones primarias (clases y objetos) y mecanismos que están presentes en el dominio del problema. Las clases que se modelan son identificadas, con sus relaciones y descritas en un diagrama de clases. Las colaboraciones entre las clases para ejecutar los casos de uso también se consideran en esta fase a través de los modelos dinámicos en UML. Es importante notar que sólo se consideran clases que están en el dominio del problema (conceptos del mundo real) y todavía no se consideran clases que definen detalles y soluciones en el sistema de software, tales como clases para interfaces de usuario, bases de datos, comunicaciones, concurrencia, etc.

Diseño

En la fase de diseño, el resultado del análisis es expandido a una solución técnica. Se agregan nuevas clases que proveen de la infraestructura técnica: interfaces de usuario, manejo de bases de datos para almacenar objetos en una base de datos, comunicaciones con otros sistemas, etc. Las clases de dominio del problema del análisis son agregadas en esta fase. El diseño resulta en especificaciones detalladas para la fase de programación.

Programación

En esta fase las clases del diseño son convertidas a código en un lenguaje de programación orientado a objetos. Cuando se crean los modelos de análisis y diseño en UML, lo más aconsejable es trasladar mentalmente esos modelos a código.

Pruebas

Normalmente, un sistema es tratado en pruebas de unidades, pruebas de integración, pruebas de sistema, pruebas de aceptación, etc. Las pruebas de unidades se realizan a clases individuales o a un grupo de clases y son típicamente ejecutadas por el programador. Las pruebas de integración integran componentes y clases en orden para verificar que se ejecutan como se especificó. Las pruebas de sistema ven al sistema como una "caja negra" y validan que el sistema tenga la funcionalidad final que le usuario final espera. Las pruebas de aceptación conducidas por el cliente verifican que el sistema satisface los requerimientos y son similares a las pruebas de sistema.

EJEMPLO




TÉCNICA JAPONESA

KAIZEN


KAI significa ‘cambio’; ZEN significa ‘bueno’.

El significado de la palabra Kaizen es mejoramiento continuo y esta filosofía se compone de varios pasos que nos permiten analizar variables críticas del proceso de producción y buscar su mejora en forma diaria con la ayuda de equipos multidisciplinarios.

Esta filosofía lo que pretende es tener una mejor calidad y reducción de costos de producción con simples modificaciones diarias.

Al hacer Kaizen los trabajadores van ir mejorando los estándares de la empresa y al hacerlo podrán llegar a tener estándares de muy alto nivel y alcanzar los objetivos de la empresa. Es por esto que es importante que los estándares nuevos creados por mejoras o modificaciones sean analizados y contemplen siempre la seguridad, calidad y productividad de la empresa.

ORIGEN

A partir de la consolidación de la economía japonesa, muchos han sido los interrogantes que se han planteado respecto a los modelos y prácticas utilizadas en el resurgir después de la devastación causada por la Segunda Guerra Mundial. La necesidad de edificar desde el principio las bases financieras y productivas de Japón, implicó una integración entre altos, medios y bajos perfiles, es decir, todos con igual compromiso de afrontar los nuevos retos, desafíos que se presentaban día tras día.


Kaizen surgió entonces como una filosofía sinérgica que integraba la capacidad de respuesta de todos los perfiles, para así afrontar los desafíos que se planteaban cotidianamente, además, al ser necesario no solo restablecer el tejido económico, sino social, este se convirtió en un estilo de vida, lo cual generó un cambio cultural que repercutió en el desempeño productivo de los japoneses, razón por la cual autores como Masaaki Imai, consideran al Kaizen como la clave de la ventaja competitiva japonesa.


METODOLOGÍA DEL KAIZEN
Plan (Planear): en esta fase el equipo po ne su meta, analiza el problema y define el plan de acción
Do (Hacer): Una vez que tienen el plan de acción este se ejecuta y se registra.
Check (Verificar): Luego de cierto tiempo se analiza el resultado obtenido.
Act (Actuar): Una vez que se tienen los resultados se decide si se requiere alguna modificación para mejorar.

CONDICIONES PARA IMPLEMENTARLO
  • Alto compromiso de la dirección de la empresa (Creación de escenarios de participación)
  • Alta receptividad y perspectiva respecto a nuevos puntos de vista y aportes
  • Alta disposición de implementar cambios
  • Actitud receptiva hacia errores identificados durante el proceso
  • Alta valoración del recurso humano
  • Disposición de elaboración de estándares (garantía para no depreciar las mejoras).

El Kaizen utiliza el Circulo de Deming como herramienta para la mejora continua. Este círculo de Deming también se le llama PDCA por sus siglas en inglés.





Los fundamentos importantes en la realización de filosofía de Kaizen es compromiso y disciplina a todo nivel de la organización.

La disciplina y constancia son lo que hace que kaizen se diferencia de otras metodologías y por lo que la hace ser filosofía. El grupo de personas que realizan Kaizen luego de arreglar un problema siguen mejorando y no paran ni se quedan esperando otro problema.

El kaizen sirve para detectar y solucionar los problemas en todas las áreas de nuestra organización y tiene como prioridad revisar y optimizar los todos los procesos que se realizan. Una empresa con la filosofía Kaizen tiene como primer ventaja competitiva el siempre estar en cambio para mejorar y su personal motivado realizando las actividades de kaizen.

La experiencia de implementación de la filosofía Kaizen en occidente nos permite concluir que las principales restricciones para su introducción son de carácter cultural, tanto en el caso de las convicciones personales de los trabajadores, como en la estructura organizacional de las compañías de occidente. Una compañía que quiera desarrollar una metodología Kaizen deberá cumplir con las siguientes condiciones: