EntityFramework 4.3.0 Released

Recientemente salio a la luz la versión release de Entity Framework 4.3.0 y en la que ya podemos disfrutar de muchas características que seguramente estarán disponibles en la versión 5.0 que viene en camino.

Entre las principales características que podemos encontrar en versión están:

  • New Code First Migrations Feature: esta es una de las principales características de la nueva versión de EF y nos permite ir “migrando” nuestra base de datos creada con Code First a media que el modelo va cambiando. Esto quiere decir que, entre otras cosas, podemos recuperar una instancia determinada de la base de datos entre las distintas versiones (migraciones) que hayamos generado. En un próximo post vamos a ver como trabajar con esta nueva característica.
  • Removal of EdmMetadata table: como ya hemos visto, con Code First podemos crear la base de datos simplemente ejecutando la app. A la creación se le suman todas las ventajas del esquema de generación que forma parte de Migrations.
  • Data Annotations on non-public properties: por defecto Code First no incluye las propiedades protected, private o internal.  Si utilizábamos estos modificadores por medio de otras API, los Data Anottations en dichas propiedades eran ignoradas. En esta nueva versión se ha modificado esta situación por lo que las Data Anottations en esos casos serán procesadas.
  • More configuration file settings: ahora es posible definir muchas más caracteristicas sobre Code First en nuestro archivo de configuración. Todos los detalles aquí.

Instalación desde Nuget:

Instalando EF desde la consola de Nuget

Instalando EF desde la consola de Nuget

Más info sobré la instalación: http://nuget.org/packages/entityframework

Algunos enlaces interesantes sobre el tema:

UML con Visual Studio 2010

Quienes trabajamos en alguna de las ramas de la ingeniería hemos encontrado en las representaciones gráficas un elemento valioso de comunicación y documentación. En nuestro día a día utilizamos modelos gráficos para muchas de nuestras tareas, por ejemplo cuando tenemos que diseñar las tablas de nuestras bases de datos o al momento de armar un diagrama de clases que sera parte de la lógica del sistema. Continuamente “dibujamos” modelos, ya sea escritos en papel o con herramientas informáticas.

Ahora bien, hagamos un poco de historia sobre el modelado gráfico dentro del ciclo del desarrollo de software. A mediados de los 80’s, la elaboración de los modelos se convertía en una tarea cada vez  mas compleja. En parte debido a que los sistemas crecían en su  arquitectura  y que la tecnología continuamente brindaba nuevas posibilidades y capacidades de comunicación, almacenamiento y procesamiento entre otras.

Sumado a todo esto, la  falta de un estándar en la forma de elaborar estos modelos complicaba aún mas las cosas. Imaginemos a aquellas personas ajenas a la elaboración del modelo que debían interpretar, por ejemplo, los diagramas de transición de estados de un proceso crítico de la empresa. Antes tenían que conocer el significado de cada elemento que formaba parte del modelo, y recién después comenzar a analizar la lógica del negocio. Esta claro que si cada uno hacia los cosas a su manera, en algún punto se iban a encontrar con una perdida de esfuerzos importante, por ejemplo, cuando se debían presentar estos modelos a un cliente o cuando un grupo externo de desarrolladores se sumaban al proyecto.

Unified Modeling Language

Unified Modeling Language

Surgió entonces la necesidad de que apareciera un lenguaje que permitiera “trabajar” a todos de la misma forma y bajo las mismas reglas. Este nuevo lenguaje tendría que proporcionar los elementos necesarios a utilizar en las distintas estapas del desarrollo del software (es decir, que no solo estuviese pensado para una etapa en particular del ciclo, sino que abarcara todas las fases).

Con todos estos objetivos en mente apareció el lenguaje UML (Unified Modeling Lenguaje). El mismo se empezó a gestar a mediados de 1994 cuando James Rambaugh se unió a la empresa Rational de Grady Booch. El primer paso en la creación de este nuevo lenguaje fue unificar dos métodos que cada uno había desarrollado: el método Booch (de Grady Booch) y OMT (de James Rambaugh). A fines de 1995 se uniría a Rational el investigador Ivar Jacobson quien aportaría muchas de sus ideas y a partir de ahí surgirían los primeros borradores de UML.

Los Tres amigos: Grady Booch, Jim Rumbaugh and Ivar Jacobson

Los Tres amigos: Grady Booch, Jim Rumbaugh and Ivar Jacobson

Además del aporte de los llamados “Tres amigos” se tomó lo mejor de otros reconocidos autores, como por ejemplo Meyer, Harol y Embley (de aquí la de-nominación de Unificado) y en 1997 se convertiría en un estandar del OMG (Object Management Group).

La unificación agrupa otros enfoques

La unificación agrupa otros enfoques

A principios de 2002 se aprobaría la versión 2.0 de UML y actualmente se encuentra la versión 2.4 fase beta (lanzada en marzo de 2011).

Pero, qué es realmente UML? Es un lenguaje de modelado visual y como todo lenguaje tiene una sintaxis y una semántica bien definida (reglas sobre como debemos elaborar e interpretar los modelos que generamos). Recordemos que un modelo es una simplificación de la realidad y el objetivo del modelado de un sistema es capturar sus partes ecesenciales (realizando una abstracción del dominio del “problema” y plasmandolo de forma gráfica).

UML además nos permite trabajar con diferentes diagramas en diferentes etapas del desarrollo de un sistema. Por ejemplo en la etapa de análisis podríamos utilizar un Diagrama de Caso de Usos, en la de diseño un Diagrama de Clases y en la etapa de implementación el Diagrama de Despliegue.

En este post vamos nos vamos a enfocar en el Diagrama de Clases y las herramientas que nos provee Visual Studio 2010 para trabajar con UML (esta por demás decir que VS nos permite trabajar con distintos diagramas como veremos en un momento). Cabe destacar, que lamentablemente la única versión de Visual Studio 2010 que nos permite trabajar con las mismas es la Ultimate (Professional y anteriores solo nos permiten visualizar los diagramas). Más info sobre esta herramienta en la página oficial.

Ok, arranquemos!… En primer lugar, seleccionamos agregar nuevo proyecto, desde el menú Archivo o desde el acceso directo que nos brinda la aplicación en la sección de bienvenida. Una de las nuevas plantillas de proyectos que tenemos en esta versión de VS 2010 con respecto a la otras es la de poder crear Proyectos de modelado.

Proyecto de Modelado

Proyecto de Modelado

Agregando este proyecto tendremos la posibilidad de crear cualquiera de los diagramas que se ven en la siguiente imagen:

Agregando un nuevo diagrama

Agregando un nuevo diagrama

Específicamente, en este post vamos a explicar como trabajar con un Diagrama de Clases UML pero sería bueno conocer los diversos diagramas que nos brinda Microsoft Visual Studio 2010 Ultimate en caso de que los necesitemos algún día.

Una vez que creamos el diagrama de clases en la pestaña de herramientas vemos los diferentes elementos de los cuales podemos utilizar para llevar a cabo el modelo que necesitamos (Class, Interface, Enumaration, Comment, Association, Aggregation, Inheritance, entre otros).

Herramientas del diagrama

Herramientas del diagrama

Para quienes no conocen o no trabajaron con UML las clases se representan de la siguiente manera:

UML - Representación de una clase

UML - Representación de una clase

Por atributos entendemos a las características del elemento en cuestión que debemos incluír en el modelo. Por ejemplo, el nombre y el número de documento podrían ser atributos dentro de una entidad Persona.

Las operaciones serían aquellas acciones o aquel comportamiento propio del elemento (o clase) que permiten que se relacione con su entorno. Siguiendo el ejemplo, la acción comer podría ser una operación de Persona.

Por último, las responsabilidades son aclaraciones que nosotros mismos podemos incluir dentro del modelo para no olvidar particularidades propias de los elementos a modelar.

Para agregar una clase, disponemos dentro del toolbox  del elemento Class . En este elemento podemos describir atributos y operaciones, de acuerdo a lo que hayamos percibido en nuestra interpretación del sistema a modelar. En VS la representación gráfica se corresponde a lo expresado en UML: nombre de la clase alineado en la parte superior y dos recuadros por debajo, uno para indicar los Atributos y otro para indicar las Operaciones (podemos incluir las responsabilidades con el objeto Comment).

Para insertar un nuevo Atributo, debemos hacer click derecho sobre el elemento del tipo Class agregado y luego en Agregar->Attribute. Mas adelante, explicaremos como editar los atributos mediante la interfaz de VS de una manera rápida. Insertar una Operación es un proceso similiar, a diferencia de que debemos hacer clic en la opción Agregar->Operation. Las opciones que podemos modificar en la misma son las que se muestan en la siguiente imagen:

Propiedades de un atributo

Propiedades de un atributo

En cuestión de segundos podemos agregar una Operación y configurar su firma, los parámetros que recibe y la visibilidad (+ Public, Private, # Internal o ~ Package), entre otras opciones.

También podemos indicar como se relacionan nuestras clases entre si, haciendo uso de los elementos:

Association: relación entre una clase origen y otra clase destino. No es una relación fuerte ya que la vida de un objeto no depende del otro.

Relación de Asociación

Relación de Asociación

Aggregation: la clase origen hace referencia a objetos de la clase destino. El tiempo de vida de un objeto no depende del que lo contiene.

Relación de Agregación

Relación de Agregación

Composition: la clase de origen hace tiene objetos de la clase destino. A diferencia de la Aggregation, en este caso el tiempo de vida del elemento contenedor condiciona al tiempo de vida del elemento contenido.

Relación de Composición

Relación de Composición

Dependency: una clase depende de otra.

Relación de Dependencia

Relación de Dependencia

Inheritance: una clase “hereda” de otra, es decir, recibe su comportamiento, atributos y responsabilidades. En UML veremos que esto se denomina con el nombre de Generalización, pero en el ambiente de la programación esto es mas conocido como herencia.

Relación de Generalización

Relación de Generalización

Para agregar cualquiera de estos elementos debemos seleccionarlo desde el cuadro de herramientas. Primero hacemos click sobre la clase origen, y luego sobre la clase destino para indicar la relación. En la siguiente imagen podemos ver un ejemplo rápido de un diagrama de clases creado utilizando estas herramientas:

Diagrama de Clases

Diagrama de Clases

Cada elemento que incluimos en nuestro modelo tiene una gran cantidad de propiedades que podemos editar para hacer nuestro diagrama tan complejo como queramos. Por ejemplo, veamos las propiedades que nos permite editar sobre la clase Tarjeta:

Propiedades de Clase

Propiedades de Clase

Hemos visto las herramientas que nos provee Visual Studio 2010 que nos permite utilizar UML de una manera sencilla y eficiente.

Espero que les sea de utilidad!

Gracias a @mferrero por colaborar en el articulo!