miércoles, 28 de noviembre de 2012

Tips – Concatenar cadenas con String.Format

Últimamente he notado muchas cosas que en realidad no me agradan, he tenido que realizar algunas revisiones de código y he notado unas cuantas malas prácticas, una de ellas es la que expongo a continuación:
   1: TxtBoxUser.Text = login + " / " + firstName + " " + lastName;
Si bien funciona, no es precisamente lo más elegante, en estos casos es mejor usar otra forma de concatenar esta información, como por ejemplo el uso del método Format de la clase String.


   1: TxtBoxUser.Text = String.Format("{0} / {1} {2}", login , firstName, lastName);
Esto da una apariencia más elegante al código, y luce más profesional. Es importante tener en cuenta que si bien el código fuente no esta visible al público es muy importante realizar un trabajo de calidad, ya que al fin de cuentas somos profesionales, y entre mas alto el nivel, nuestro código debe ser más elegante y limpio.
Nunca se sabe cuando nos van a realizar una revisión al código, y es mejor sobresalir por la calidad de este y no por la mediocridad del mismo, al fin de cuentas esta es nuestra carta de presentación.

lunes, 22 de octubre de 2012

Microsoft Enterprise Library – Data Access Application Block I

Esta es la primera entrega de la serie de post que tratara el tema de Enterprise Library, en este caso cubriremos lo relacionado a la capa de datos.

En este primer post nos atañe preparar los requisitos previos para nuestra aplicación, que en este caso hacen referencia a la creación de la base de datos que vamos a utilizar en esta serie de post, así como los demás componentes que vamos a necesitar.

Manos a la obra

En este caso vamos a trabajar inicialmente con una base de datos en SQLServer, mas adelante usaremos una base de datos en Oracle. Para nuestro ejercicio, vamos a usar la base de datos Northwind, la cual puede ser descargada desde la página de la comunidad.

Por otra parte vamos a necesitar la última versión de Enterprise Library que a este momento es la 5, la cual podemos obtener en la página oficial.

Una vez descargado el script, debemos inicia sesión en la base de datos con privilegios de administrador con el fin de crear nuestra base de datos, una vez allí, abrimos el script y lo ejecutamos.

image

Aquellos que como en mi caso usan SqlServer 2012, van a encontrarse con el siguiente error:

Error1

Esto es debido a que en la versión SQLServer 2012 no esta soportado el uso de sp_dboption, según se puede ver en la página oficial, se debe optar por el uso de ALTER DATABASE.

Entonces, debemos remplazar las líneas:

exec sp_dboption 'Northwind','trunc. log on chkpt.','true'

exec sp_dboption 'Northwind','select into/bulkcopy','true'

por las siguientes:

ALTER DATABASE Northwind SET AUTO_SHRINK ON

ALTER DATABASE Northwind SET RECOVERY SIMPLE

Una vez se realiza el cambio y se ejecuta el script ya tenemos la base de datos creada, solo resta crear un usuario para trabajar con nuestra base de datos.

CreateDatabaseOk

DatabaseTree

Como vemos ya contamos con una base de datos apta para nuestras pruebas. Con esto, mas la instalación de Enterprise Library 5, ya tenemos las bases para realizar los ejemplos propuestos en esta serie de post.

lunes, 8 de octubre de 2012

Microsoft Enterprise Library 5

Microsoft Enterprise Library es una biblioteca compuesta por un conjunto de componentes de software reutilizables, que se encargan de las tareas mas comunes en lo que a temas transversales concierne.

Estos bloques de aplicación son una especie de guía que nos indica la forma mas adecuada de realizar dichas tareas, estos bloques están acompañados por respectivos ejemplos de uso, y pueden ser fácilmente ampliados para utilizarlos en proyectos complejos de nivel empresarial o en proyectos de línea de negocio.

Dicho de una forma más simple, son componentes que han sido desarrollados basándose en los mejores patrones y en las mejores prácticas de desarrollo de software, y que ofrecen las soluciones más adecuadas para situaciones tan comunes como un log, o un componente de acceso a datos.

Esta pensado con el fin de hacer las cosas mas fáciles a las personas envueltas en labores de desarrollo ya que estos componentes ya encapsulan dentro de si todas las funcionalidades necesarias, lo que se traduce en un ahorro significativo de tiempo y esfuerzo, permite la reutilización de componentes y al mismo tiempo garantiza un buen nivel de estandarización en los desarrollos.

Actualmente Enterprise Library en su versión 5 cuenta con los siguientes bloques de aplicación.

  • Caching Application Block. Esta pensado para brindar funcionalidades de manejo de cache.
  • Cryptography Application Block. Brinda funcionalidades de criptografía, tal como algoritmo de Hash, etc.
  • Data Access Application Block. Contiene funcionalidades pensadas para facilitar el acceso a bases de datos.
  • Exception Handling Application Block. Brinda funcionalidades para el manejo avanzado de excepciones a través de toda la aplicación.
  • Logging Application Block. Tiene como finalidad aportar funcionalidades que faciliten el manejo avanzado de Logs en las aplicaciones.
  • Policy Injection Application Block. Este bloque de aplicación se puede utilizar para implementar políticas de interceptación para agilizar la implementación de características comunes, tales como la explotación forestal, caching, manejo de excepciones, y validación, a través de un sistema.
  • Security Application Block. Permite implementar las tareas correspondientes a la seguridad transversal de las aplicaciones.
  • Unity Application Block. Es un contenedor de inyección de dependencias ligero y extensible con soporte para constructor, propiedades, e inyección.
  • Validation Application Block. Contiene funcionalidades que permite implementar reglas de validación de negocio para los objetos de negocio, las cuales pueden ser usadas a través de las diferentes capas de la aplicación.

Como pueden ver, es una biblioteca muy completa e interesante, y aporta gran cantidad de funcionalidades que nos van a permitir llevar nuestros desarrollos a otro nivel.

Con esta premisa en mente, se da inicio a una serie de post en los cuales se trataran los diferentes bloques en mas detalle, de la mano de un pequeño proyecto, en el cual se espera hacer uso de estos con el fin de demostrar como podemos aprovechar esta maravillosa herramienta.

Para aquellos que deseen profundizar mas en el tema les recomiendo visitar la pagina de Patterns & Practices de Microsoft.

miércoles, 26 de septiembre de 2012

Arquitectura Empresarial II

Continuando con el tema de Arquitectura Empresarial (AE), vamos a entrar a definir cada una de las arquitecturas que componen la AE. Para ello retomaremos nuestro modelo, en el podemos ver con claridad la composición de la AE.

AE1

1. Arquitectura de Negocio

La arquitectura de negocio comprende los aspectos relacionados con la estrategia del negocio, representa los procesos de negocio y la forma como estos interactúan par satisfacer las necesidades del negocio.

2. Arquitectura de Información

La arquitectura de información por su parte comprende la definición de un marco de referencia que soporte el modelo de la empresa definido en la arquitectura de negocio, visto desde la perspectiva de la información y la forma como esta se procesa, así también, define los tipos y fuentes de datos necesarios para dar soporte a las actividades de la empresa.

3. Arquitectura de Aplicaciones

La arquitectura de aplicaciones, define qué clase de aplicaciones son relevantes para la empresa y lo que estas aplicaciones necesitan para gestionar los datos y presentar la información.

Estas no se definen como sistemas informáticos, sino como elementos que manejan los objetos de la arquitectura de datos y apoyan las funciones de negocio en la arquitectura de negocio. Las aplicaciones se definen sin referencia a las tecnologías actuales, es decir en base a las funcionalidades que estas prestan, de esta forma se consideran en un cierto plazo estables mientras que ponerlas en ejecución cambiará según la tecnología disponible.

4. Arquitectura de Tecnología

Los requerimientos definidos en la arquitectura de sistemas o en la arquitectura de aplicación quedan concretados en la arquitectura tecnológica. En ella se determina la tecnología a utilizar, tal como selección de bases de datos, lenguaje de programación, interfaz de usuario entre otros, y la forma cómo estas deben ser utilizadas.

De esta forma ya hemos cubierto las descripciones de cada una de las vistas que componen la arquitectura empresarial.

martes, 25 de septiembre de 2012

Control de versiones con Team Foundation Server Express 2012

 

VS2012

La gestión del control de cambios es un tema que normalmente preocupa a todo equipo de desarrollo, en la actualidad existen diferentes aplicaciones para ejercer dicho control, unas mas completas que otras, algunas de ellas de pago, otras libres.

En el caso de aquellos que desarrollamos con herramientas de Microsoft, estamos más que acostumbrados al uso de Team Foundation Server para este fin, pero esta herramienta esta pensada para grandes desarrollos, donde se cuenta con un equipo de trabajo de tamaño considerable, y dado su precio no es fácil para un desarrollador novel acceder a él, por lo que para proyectos pequeños terminaban decantándose por otras opciones como puede ser GIT.

La buena noticia es que ya tenemos a disposición una versión Express de Team Foundation, llamada Team Foudation Server Express, la cual nos va a permitir llevar el control de código de nuestros proyectos personales o pequeños proyectos para los cuales no contamos con los recursos necesarios para implementar un entorno mas complejo.

El primer punto a favor es que hace uso de Sql Server Express como repositorio, lo que es genial para el presupuesto.

Una de las cosas más destacables de esta versión es que permite ser utilizada con las versión Express de Visual Studio, lo que nos permite montar un entorno 100% free con productos Microsoft, aunque esta limitado a 5 usuarios.

En esencia cuenta con las mismas características de un TFS en instalación básica, y puede correr en los siguientes sistemas operativos:

  • Windows 7 (x86 and x64)
  • Windows 8 (x86 and x64)
  • Windows Server 2008 R2 (x64)
  • Windows Server 8 Beta (x64)

Y cuenta con las siguientes limitaciones:

  • No cuenta con integración con SharePoint y no incluye reporting.
  • Está limitado a 5 usuarios.
  • Solo soporta SQL Server Express
  • La única arquitectura de deployment soportada es la de Servidor único, es decir no soporta deployment en varios servidores.
  • No tiene TFS Proxy.
  • Incluye el Dashboard de Agile, pero las herramientas de planning no están habilitan.

No hay licenciamiento con esta edición del producto por lo que puede ser utilizado por un equipo pequeño de manera gratuita teniendo en cuantas las limitaciones comentadas anteriormente.

Esta disponible para su descarga en la página de TFS de Microsoft.

sábado, 11 de agosto de 2012

Comunicación Efectiva

educacion-formas-ensenar_1_1032258

Esta es una de las habilidades que los ingenieros de sistemas mas necesitan desarrollar, como bien sabemos, no es precisamente una de las áreas en que se tiene mas fortaleza, y no esta en el listado de materias de estudio en las universidades, pero es una fortaleza indispensable, máxime cuando se ha alcanzado cierto nivel en el que se requiere una constante interacción con usuarios o en mi caso como Arquitecto de Software, que es necesario comunicar de forma efectiva temas que suelen revestir un alto nivel de complejidad a un publico con perfiles muy variados.

La comunicación efectiva consiste en darse a entender correctamente, ya sea formalmente o combinado con gestos corporales adecuados. La idea es que el receptor del mensaje comprenda el significado y la intención de lo que se está comunicando.

Debido a que en toda forma de comunicación se pierde algo del significado al transmitir el mensaje, la comunicación efectiva busca eliminar o minimizar esta perdida.

Desde esta perspectiva, debemos empezar por definir que información queremos transmitir, así en nuestro caso en general se trata de información técnica, la cual se representa a través de modelos, haciendo uso de los diferentes estándares existentes para este fin.

QueSeComunica

De esta forma nuestro papel es comunicar a los interesados la información contenida en estos modelos, pero no solo eso, es importante estar en capacidad de transmitir más cosas que solo información, es necesario que la audiencia logre sentir confianza en nosotros, y que vean la calidad de nuestro trabajo, se busca causar un impacto positivo en sus sentimientos, emociones, juicios y motivaciones.

Esta capacidad de transmitir ese algo más es la que permite potenciar la comunicación de la información, de igual forma que inhibe cuando no se hace de forma adecuada.

Para planear una buena presentación, es necesario que nos planteemos las siguientes preguntas:

1. A que publico va orientada la presentación y que esperan de ella?

Es decir cuales son los stakeholders a los que nos vamos a dirigir, cuales son los perfiles de estos, cuales son los roles que juegan dentro del proyecto o la empresa y cuales son las expectativas que estos tienen del proyecto.

Esto es de vital importancia pues nos permite definir con claridad la información que debemos manejar y los modelos que vamos a usar en nuestras presentaciones.

2. Que características tiene el modelo?

Es importante hacer una adecuada selección de los modelos o de la información a presentar, a menudo las personas a quienes nos dirigimos suelen tener perfiles muy diversos y no siempre tienen conocimientos sobre lenguajes de modelado, así que es importante usar modelos que sean lo mas básico posibles pero que permitan transmitir de forma adecuada la información.

3. Cuanto tiempo dura la presentación?

El tiempo es un factor importante, debido a que los asistentes tienen diferentes roles, es lógico que tengan expectativas diferentes, por este motivo la presentación suele estar dividida en partes orientadas a cada rol, y por ello es importante manejar el tiempo e indicar al inicio cuanto toma cada parte con el fin de que el asistente este informado de cuanto tiempo debe esperar antes de que se trate el tema que le atañe, esto genera una sensación de confort en el asistente.

4. Cuales son los medio disponibles?

Definir los recursos disponibles para nuestra presentación es importante pues nos permite tener mayor control, conocer el lugar donde se llevara a cabo la reunión nos permitirá sentirnos mas seguros, ya que podremos definir previamente el área donde nos vamos a desenvolver, de la misma forma es interesante saber si contamos con proyector y de ser posible hacer una previsulización de la misma para detectar oportunidades de mejora.

También es bueno contar con un tablero y los recursos necesarios para apoyar nuestra presentación.

Un aspecto muy recomendable es contar con un apuntador, o media pointer, ya que brinda unas facilidades increíbles de manejo que de otra forma seria imposible de alcanzar.

5. Quien va a hacer la presentación?

En muchas ocasiones quien lleva cabo los modelos no es la persona que va a realizar la presentación, e incluso en algunas ocasiones quien presenta no es quien elabora el material de la presentación, así que es importante que la persona que va a realizar la exposición tenga las habilidades de comunicación necesarias, pero que además tenga un conocimiento adecuado del negocio, pues como bien saben cada modelo de negocio tiene su lenguaje propio, y es de vital importancia que el orador maneje este a la perfección, ya que las fallas en estos aspectos generan una perdida de credibilidad que puede echar abajo todo el trabajo realizado, y posiblemente echar a perder la oportunidad de negocio con ese cliente.

6. Como hacer el Feedback?

Este es un asunto importante, ya que por este medio se recopila información de los efectos que causa su mensaje en el Receptor. Esta información es muy útil y permite al Emisor conocer si su mensaje ha sido correctamente entendido y la repercusión que el mismo está teniendo en el Interlocutor. De esta forma puede adaptarse de una manera más efectiva a las necesidades del sujeto.

Una vez definidos los puntos anteriores, es necesario definir algunas estrategias básicas, las cuales van orientadas en su mayoría al material de apoyo usado por el expositor.

Como primera medida es necesario definir adecuadamente el mensaje, la idea que se quiere transmitir con la presentación.

Se debe definir la estructura global de la presentación, la agenda, tiempo, medios, etc. En este aspecto es importante resaltar el incluir la agenda en nuestra presentación, indicando los tiempo que toma tocar cada tema es muy importante, además que se debe dar una introducción global de cada tema para poner en contexto a los asistentes, de manera que estos se ubiquen en el tema de su interés y tengan idea del tiempo que deben esperar para que se toque el tema que les atañe. Este es un gesto bien recibido por los espectadores, ya que les transmite la tranquilidad de saber como manejar su tiempo.

Otro punto importante es la maquetación de la presentación, es decir el manejo de la distribución en la presentación, el uso de los colores y formas, y las animaciones, que deben usarse con prudencia para no incomodar al público.

El último punto a tener en cuenta es el lenguaje grafico, el cual debe cumplir al menos con las siguientes características:

· Consistencia: debe ser uniforme, se deben representar conceptos similares con formalismos similares, es decir si un proceso se representa usando un rectángulo con las equinas redondeadas, entonces los subproceso deben usar una representación similar a la del proceso pero adicionando alguna característica que le diferencia.

· Fácil de entender: debe ser intuitivo y tener un adecuado uso de la abstracción, se debe buscar que la persona pueda reconstruir el modelo en su cabeza con gran facilidad a partir del modelo visualizado.

· Estética: debe resultar agradable a la vista.

· Compatibilidad: se debe buscar una cercanía de la representación a los estándares reconocidos para expresar los mismos conceptos.

Si se tienen en cuenta esos tips al momento de realizar las presentaciones, de seguro que los resultados serán muy favorables.

Seria recomendable en todo caso tomar algún curso de Comunicación, e incluso técnica vocal, que de seguro va a permitirles mejorar mucho las habilidades comunicativas.

jueves, 2 de agosto de 2012

Personalizar el plug-in de Búsqueda de Google en Firefox 14.0.1

Muchos habrán notado que con la nueva actualización de Firefox a la versión 14.0.1, se ha implementado la búsqueda en Google usando el protocolo HTTPS, genial en cierta forma, pero si cuentan con restricciones en la red como me sucede a mi, resulta en realidad un poco molesto, ya que solo vamos a obtener un mensaje de error.

En vista de esta situación, me puse a la búsqueda de una solución a dicha limitación, después de unos cuantos minutos pensando las cosas, recordé que estos plug-ins consisten en archivos Xml con la información del proveedor de búsqueda, así que me dispuse a verificar la situación.

Efectivamente, en mi caso se encuentran ubicadas en la ruta:

C:\Program Files (x86)\Mozilla Firefox\searchplugins

Una vez ubicados en dicha carpeta, se pueden observar los plug-ins disponibles.

SearchPlugin1

El primer paso consiste en sacar una copia del plug-in de Google, por si acaso. En mi caso he creado una copia llamada google.xml_ssl. Ahora procedemos a verificar el contenido del XML en un editor de texto.

SearchPlugin2

SearchPlugin3

Al revisarlo se pueden ver las Url que debemos modificar.

SearchPlugin4

Como ven es solo remplazar https por http, guardar los cambios y reiniciar Firefox.