Monday, October 10, 2011

Diagramas de Actividades

Según la Vigésima segunda edición del Diccionario de la Lengua Española , la Real Academia Española nos indica:
 actividad.
(Del lat. activĭtas, -ātis).
1. f. Facultad de obrar.
2. f. Diligencia, eficacia.
3. f. Prontitud en el obrar.
4. f. Conjunto de operaciones o tareas propias de una persona o entidad. U. m. en pl.
5. f. Fís. En una cantidad dada de una sustancia radiactiva, número de átomos que se desintegran por unidad de tiempo.

Nos quedaremos con la cuarta definición, descartando , más que nada por eficacia y no por dejar de ser interesantes, las demás versiones, incluída la referente a la desintegración nuclear, más propia de un tratado de Ciencias Físicas o una película de La Guerra fría que de un escrito sobre UML. Por tanto, sea para nosotros de importancia la definición, y teniendo en cuenta que las personas no dejan de ser entidades (¿acaso existe algo con nombre conocido que no lo sea?):

Actividad: Conjunto de operaciones o tareas propias de una entidad. 

Me adelanto a las dudas que se podrían darse posteriormente de no aclarar la diferencia de conceptos entre las palabras "actividad" y "tarea". Siguiendo el mismo procedimiento anterior llegamos a la definición:
 
Tarea: Trabajo que debe hacerse en tiempo limitado.

Incidamos en que una actividad es un conjunto de tareas. La diferencia límite la pondrá el sentido común y el hecho de que una tarea es un proceso de naturaleza atómica, permítanme la gracia, sin actividad radioactiva. En el caso de haber desglosado demasiado las actividades en tareas muy probablemente sean más idóneos diagramas de estados y secuencias.

 Elementos comunes en los diagramas de Actividad:

Pista de nado (Swimlanes): Las actividades son llevadas a cabo por varias entidades que colaboran entre sí. Un Diagrama de Actividad puede dividirse en varias particiones que recogen las actividades propias de cada una de las entidades. En la cabecera del rectángulo asociado a la pista de nado se coloca el nombre de la entidad.

Estados de Inicio y Fin: representados por redondeles negros (Inicio) o bien redondeles negros con un borde blanco (Fin) representan el puntos de partida y finalizaciones de los flujos de ejecución.

Actividades: Representadas por rectángulos de esquinas redondeadas con un nombre representativo colocado en su centro.

Puntos de toma de Decisión: Su símbolo es el rombo, dependiendo de la decisión tomada, normalmente representada mediante una restricción sobre la línea de flujo, se seguirá una u otra rama durante el flujo de ejecución.

Transiciones de Ejecución de Flujo en Paralelo (Fork) y Sincronizaciones (Join): Los diagramas de actividad permiten reflejar qué actividades pueden hacerse en paralelo. Una vez realizadas se sincronizan en el punto de unión.


El diagrama siguiente contiene ejemplos de cada uno de los elementos descritos, puebe a describir con sus propias palabras el comportamiento del sistema descrito en base a las actividades mostradas.




A continuación, otro ejemplo de diagrama de actividad, trate de determinar qué representa.



Monday, October 3, 2011

El Lenguaje de Modelado Unificado UML

A la hora de evaluar cualquier nueva herramienta para determinar su incorporación a los métodos de producción es conveniente aclarar cuestiones sobre su utilidad y, por supuesto, para qué no sirve, dónde resulta inútil, en otras palabras, aclarar cuestiones de alcance.

El Lenguaje Unificado de Modelado es útil en todas las áreas de un proyecto donde sea necesario especificar, visualizar, construir o documentar elementos o "artefactos".

Tal como se trató anteriormente, UML aporta planos y mapas sumamente convenientes en multitud de campos, tanto directamente relacionados con la Ingeniería del Software como no, teniendo éxito también en el área de Modelos de Negocio.

El Lenguaje Unificado de Modelado facilita el estudio de los sistemas



Los Diagramas del UML 2.0 Se clasifican en tres clases, Comportamiento, Interacción y Estructura: 
Diagramas de Comportamiento:
 Permiten exhibir comportamientos de un sistema.
    •  Diagrama de Actividad: Muestra los procesos de alto nivel de la organización. Incluye flujo de
      datos, o un modelo de la lógica compleja dentro del sistema.
    • Diagrama de Caso de Uso: Exhibe los casos de utilización, actores y sus interrelaciones.
    • Diagrama de Estado: Describe los estados que pueden tener un objeto o interacción, así como las transiciones entre dichos estados. 



Diagramas de Interacción:

Es un subconjunto de los diagramas de comportamiento. Enfatizan las interacciones entre los objetos.
  • Diagrama de Secuencia Modela la secuencia lógica, a través del tiempo, de los mensajes entre las instancias.  
  •  Diagrama de Comunicación/Colaboración:
    muestra las interrelaciones, y el flujo de
    mensajes entre los objetos. 
  • Diagrama de Interacción: (Vista General) Variante del diagrama de actividad que permite mostrar el flujo de control dentro de un
    sistema. 
  • Diagrama de Tiempos: Muestra el 
    cambio en el estado de un objeto
    en el tiempo, en respuesta a
    eventos externos.
Diagramas de Estructura:
Muestran los elementos de una especificación que sean independientes del  tiempo. Incluyen clase, estructura de componentes, componente, despliegue, objeto y diagramas de paquetes. 
  Diagrama de Clases: Exhibe una colección de elementos del modelo estático, tales como
  • clases y tipos, sus contenidos y sus relaciones.
  • Diagrama de Despliegue: Muestra la realización de la arquitectura del sistema. 
  •  Diagrama de Paquetes: Describe cómo los elementos del modelo se organizan en paquetes,
    así como las dependencias entre esos paquetes.
  •  Diagrama de componentes Muestra los componentes de una aplicación, sistema o empresa. 


Los Diagramas por Su Importancia:
 

Programación eXtrema y El Agilismo


En esencia la programación extrema consiste en un conjunto de técnicas que han demostrado tener éxito en muchos proyectos y por tanto muy recomendables en conjunto. El empuje actual de los seguidores del agilismo añade un factor importante, la alta motivación de los programadores, variable principal directamente relacionada con el rendimiento de los equipos. En la práctica, XP se divide en varios niveles:
  • A nivel de Desarrollo de Código:
    • Desarrollo Dirigido por Pruebas (TDD: Test Driven Design), el diseño emerge de forma natural cuando se anteponen las pruebas a la codificación.
    • Diseño Simple: Evitar el sobrediseño aumenta la calidad del software.
    • Programación con Copiloto: El código se lleva a cabo conjuntamente con un compañero con el que se comparte la tarea de codificación actuando como supervisor y con el que se intercambia el puesto en turnos cortos en intervalos menores a una hora. El compañero también rota entre los equipos de desarrolladores disponibles, es una técnica de maximización de la calidad del código en términos de legibilidad y simpleza.
    • Refactorización: Diversas técnicas de remodelización del código que mejoran su calidad sin alterar su función.   
  • A nivel de Integración:
    • La Integración Continua permite garantizar que los distintos módulos se puedan combinar generando un ejecutable común.  
    • Se programa en base a un vocabulario proveniente de una metáfora, la similitud entre el dominio a implementar y el dominio conocido por el equipo facilita las tareas.
    • Pertenencia Colectiva: todo el código está disponible para todo el equipo.
    • Camino Sostenible: El menor tamaño de las entregas intermedias, de menor tamaño, permiten que las estimaciones tracen una ruta sin demasiados altibajos.
    • Utilización de Estándares de Código: Se establece cómo, dónde y de qué manera se colocará el código escrito.


  • A nivel de Planificación del Proyecto:
    • El cliente comprueba las entregas mediante Pruebas de Cliente, diseñadas y documentadas.
    • La organización se organiza de forma horizontal como un equipo completo bien comunicado.
    • Se involucra a todo el equipo en las estimaciones y decisiones de planificación a modo de Juego de Planificación.
    • Las entregas se realizan contínuamente y son pequeñas.
La buena comunicación y la documentación eficiente se establecen como bases de la programación extrema, lógicamente UML tiene mucha cabida en este aspecto y es ampliamente utilizado en proyectos XP.