De premios y reconocimientos

Hace un par de días me llamó Juan Diego (AKA. @TatuajeFalso) a contarme que el sitio de German Vargas Lleras (www.vargaslleras.com) había sido nominado como el mejor sitio de política en Colombia en el año 2009. Ese sitio, su estrategia de comunicaciones, su integración con redes sociales y el monitoreo de sus resultados es uno de los clientes (http://bit.ly/zMbPB) que ha venido desarrollando 3Metasla compañía de estrategia digital que fundamos en enero de 2009 con Luz Angela, Jaime Andres y Martha y que en marzo de 2009 inicio operaciones en Colombia bajo la coordinación de Gustavo, quien también es socio del Branch Colombia.

Aprovechando el momento eufórico me he puesto a reflexionar sobre el significado de esto y he llegado a un par de conclusiones que quiero compartir con los ocasionales lectores de este blog

En 2006 un sitio que desarrolle de principio a fin (www.proexport.com.co) obtuvo este reconocimiento en la categoría de gobierno electrónico, en 2007 los sitios del ministerio de la protección social (www.minprotecccionsocial.gov.co) y el sitio del fondo de promoción turística (que después se convirtió en colombia.travel) fueron finalistas en las categorías de gobierno en línea y promoción de la imagen de Colombia y ahora en 2009 esta nominación al sitio del senador Lleras. Lo primero que tengo que pensar es que tienen en común estos proyectos? cual es el hilo conductor de uno y otro? la respuesta inmediata y obvia es el talento increíble de las personas que trabajaron en estos sitios, en estos proyectos, equipos súper talentosos que cuidaron cada detalle, más que un reconocimiento a una empresa o a una persona estos premios y menciones reconocen el talento maravilloso de las personas con las que he trabajado en diferentes compañías en los últimos años y a quienes quiero agradecer toda su dedicación y esfuerzo de muchas, muchas horas para hacer cosas que se salen del mapa, cosas que están mas allá de lo que la gente espera y que superan cualquier expectativa, gente cuyo talento es tan especial que logran destacarse una y otra vez.

Cuando comenzamos a planear y construir 3Metas decidimos establecer unos parámetros de calidad, innovación y servicio que nos pusieran en otra categoría y eventualmente ser reconocidos por eso, nos trazamos unos planes que incluían una nominación como esta, lo hemos logrado en menos tiempo del que cualquiera de nosotros hubiera soñado y es algo realmente impactante, creo que este equipo está haciendo las cosas demasiado bien, son extremadamente talentosos y yo agradezco cada día tener la oportunidad de compartir con ellos y de dirigir algunas tareas mientras que otras siempre me sorprenden por el rumbo innovador, profesional y súper interesante que toman bajo la ejecución de nuestro equipo.

Dirigir a los talentosos (aquellos con el potencial de crear cantidades de valor desproporcionadas respecto a los recursos que las organizaciones les proveen), personas más inteligentes que uno es siempre un reto, como dice Rob Goffee and Gareth Jones en su libro: “la gente inteligente produce resultados asombrosos, las organizaciones los necesitan, ellos son la diferencia competitiva”. Yo espero poder estar haciendo algo bien al formar equipos que siempre se muestran ganadores y que aprenden todo el tiempo, que se divierten y que, en la mayoría de los casos, son felices.

Aparte de los equipos increíbles que han logrado estos reconocimientos para las empresas y clientes que hemos tenido en los últimos años, también hay que mencionar y agradecer a todos aquellos que nos dan coraje, fuerza, apoyo, motivación y sobre todo ánimo para embarcarse en proyectos y empresas que parecen imposibles, en tareas que se ven difíciles y lejanas, en metas mas allá de todo razonamiento. A todos los que desde la junta directiva, la familia, los amigos, la competencia o los clientes nos dan su amistad, un consejo, señala un camino o nos hace ver de formas diferentes: Gracias, estos resultados no serian posible sin su apoyo.

Juan Pelaez
CTO
3Metas Corp.

Windows 7 y Dispositivos Moviles

Algo rápido, en @3Metas hemos trabajado mucho los últimos meses en el desarrollo de aplicaciones para dispositivos móviles que corren Windows Mobile. Recientemente actualizamos nuestras maquinas de desarrollo a Windows 7 y hemos encontrado un problema cuando se consumen servicios de WCF.

Como sabrán para consumir un servicio WCF desde un dispositivo móvil usando el compact framework hay que crear una clase proxy utilizando la utilidad NetCFSvcUtil.exe que hace parte del conjunto power toys del compact framework 3.5 de .net.

El problema es que cuando se utiliza esta utilidad en Windows 7 siempre se produce un error como este:

Attempting to download metadata from ‘http://localhost/DinnerNow/service/DeliveryService.svc’ using WS-Metadata Exchange or DISCO.
Error: An error occurred in the tool.

Error: Error in the application.

Hay una incompatibilidad entre el tool de generación de la clase proxy y Windows 7, afortunadamente ya fue resuelto y puede obtenerse una actualización del tool desde este enlace.

O se puede generar el archivo proxy en Vista o XP y pasarlo al proyecto en Windows 7 :-).

Referencias.

http://blogs.msdn.com/habibh/archive/2009/06/26/netcfsvcutil-exe-and-windows-7.aspx

http://news.softpedia.com/news/Updated-NetCFSvcUtil-exe-for-Windows-7-and-Vista-SP2-118787.shtml

Juan Peláez
CTO
3Metas Corp.

Keywords: Dispositivos móviles, Windows Mobile, WCF, Compact Framework, 3Metas, Desarrollo de Aplicaciones, Soluciones para Dispositivos Móviles, Mobile Devices, Aplicaciones Móviles, Desarrollo de Software, Arquitectura de Aplicaciones Moviles.

Publicidad: Necesita desarrollar aplicaciones para Dispositivos Moviles con Windows Mobile?, quiere usar SOA en dispositivos Moviles?, contactenos a [email protected].

Redes Sociales y los retos de su uso para las entidades gubernamentales.

El pasado 26 de Agosto de 2009 gracias a una invitación del Programa Gobierno en Línea del Ministerio de Comunicaciones de la Republica de Colombia, tuvimos la oportunidad de participar en el Panel de Redes Sociales y su aplicación en Entidades del Estado como parte del seminario Marketing Gubernamental y Redes Sociales.

Un evento muy interesante donde diferentes funcionarios de las entidades del Estado colombiano recibieron y compartieron información de temas como la construcción de marcas, usabilidad, casos de éxito y redes sociales.

La participación de 3Metas se enfocó en cómo debían prepararse las entidades del estado para comenzar su participación en las redes sociales, cuáles eran los 5 primeros retos para afrontar.

Esta es la presentación que se utilizó en este evento:

Es un tema que continua abierto y del que nos gustaría saber sus comentarios, déjenos sus opiniones para poder transmitirlas a los responsables del programa GEL.

También puede seguirnos en Twitter @3Metas o al programa de Gobierno en Línea en @vive_gel.

Juan Carlos Peláez

CTO

Keywords: Redes Sociales, 3Metas, Gobierno en Línea, Entidades del Estado, Colombia, Juan Pelaez, YouTube, Flickr, Facebook, Twitter, Desarrollo de Aplicaciones, Estrategia Digital, Entidades Públicas, Sector Gobierno.

De TFS, Control de Versiones, Branching y Otras

En 3Metas usamos Visual Studio Team Fundation Server (VSTFS2008) como sistema de gestión de proyecto y control de versiones (*), sin embargo al momento de crear las soluciones cometí un error por no revisar con cuidado la guía de Branching de Patterns And Practices de Microsoftlo que me llevo a quedar con los proyectos y la documentación andando pero con un esquema incorrecto de control de código fuente.

La solución borrar (destruir) los repositorios de Código Fuente (previo backup por supuesto) y reorganizar el sistema.

Para destruir un repositorio de código Fuente, se utiliza el comando tf destroy,(Btw: se encuentra en la ruta Program FilesMicrosoft Visual Studio 9.0Common7IDE>) desde la consola de comandos, una confirmación de borrado aparecerá y luego se listaran los archivos y carpetas que se eliminaron.

Después de Borrado puede usarse VS2008 con el Team Explorer para volver a la interfaz de gestión de los sistemas de control de código fuente y allí crear de nuevo el repositorio y configurarlo correctamente. Es importante anotar que hay que volver a asignar los permisos a los usuarios que aunque siguen teniendo permisos en el TFS en el Proyecto al que están asignados ahora no tienen permisos en el repositorio de control de versiones. Estos permisos se asignan en la pestana de seguridad de las propiedades del repositorio

clip_image002

(el borrado no es lo mismo, el borrado solo marca el repositorio pero sigue existiendo en el sistema se puede ver aquí: Tools > Options > Source Control > Visual Studio Team Foundation Server and check Show deleted items in the Source Control Explorer que los archivos no se borraron)

(Esto también es diferente a la eliminación del proyecto porque yo no quería perder el portal, documentos, work ítems, etc que ya se habían alimentado al sistema)

Juan Pelaez

CTO

3Metas Corp.

KeyWords: TFS2008, Visual Studio Team Foundation Server 2008, Buenas Prácticas de Desarrollo de Software, Branching, Control de Versiones, Juan Pelaez, 3Metas, Consultores, Expertos Tecnología Microsoft, Estrategia Digital, Nuevos Medios, Desarrollo de Soluciones Interactivas, Twitter, Facebook, Integración de Redes Sociales.

Team Fundation Server (TFS) es una de esas herramientas “must to have” para una compañía de tecnología como la nuestra, las características de control de versiones, gestión del proyecto, personalización de la metodología de desarrollo, etc, etc, la hacen imprescindible en el modelo que estamos construyendo de una empresa en la que cada persona puede trabajar desde donde quiera.

Aunque no utilice VSTFS2008 una compañía que desarrolle software en algún momento siempre debe tener un sistema de control de versiones, uno basado en Internet agrega gran flexibilidad, otro sistema que hemos usado con buenos resultados es Subversion.

Publicado en www.juanpelaez.com

Publicidad: Necesita integrar sus estrategias de comunicaciones tradiciones con nuevos medios? está buscando aprovechar las oportunidades de mercadeo BTL usando Facebook, Twitter, Flicker, YouTube? Contactenos a [email protected], tenemos la experiencia y las capacidades para que su proyecto sea exitoso.

 

3Metas en SenaSoft 2009

Gracias a la amable invitación del Sena regional Cauca (Colombia) tuve la oportunidad de asistir a SenaSoft 2009, donde compartí un poco de la experiencia que hemos tenido en los últimos años construyendo empresas de tecnología, especialmente software, en vez de hablar de tecnologías especificas o de 3Metas estuvimos conversando un poco sobre lo que hemos aprendido, lo que haríamos mejor si empezáramos de nuevo (y bueno ahora estamos empezando de nuevo, así que espero que lo estemos aplicando :-)).

Aquí adjunto la presentación que use durante el evento.

Referencias: Uno de los slides se basa en una idea que vi en una presentación de Santiago Bilinkis sobre las 3 cosas que detienen a los emprendedores.

Espero que sea útil,

Juan Carlos Peláez

Arquitecto de Software.

Publicado en www.juanpelaez.com

Keywords: 3Metas, emprendimiento, Juan Pelaez, Popayan, Colombia, SenaSoft 2009

Publicidad: Quiere integrar redes sociales en su sitio de internet, en su estrategia corporativa, en la construcción de su marca pero no sabe por dónde empezar? contáctenos en www.3metas.com, podemos ayudarle a construir su estrategia digital.

Splendid CRM Version 2.1 Source Code

The guys from SplendidCRM Company release a new version (3.0), as always they include community edition free of charge and other enterprise versions, the new version includes lot of new features like a workflow engine integrate with the crm core. Full list of features here. By the way do not upgrade from community version 2 some features will be removed or disabled.

However it seems like old version. 2.1 is not available any more. Some friends on the Net have been requesting the old code. I just zipped and loaded in my skydrive here

http://cid-1a646e447a191ea8.skydrive.live.com/self.aspx/Public/SplendidCRM21.zip

Hope it Helps,

Juan Pelaez.
Software Architect

Keywords: 3Metas Corp, Juan Pelaez, Colombia, CRM, Splendid CRM, Digital Strategy, Digital Companies.

Ejecutando Windows 7 en MacBookPro

Hace algún tiempo compré una computadora MacBookPro, y le instale un sistema de triple partición, la experiencia era buena pero había días en que (me imagino que como la mayoría), decía “DIOS Vista, muévete”, especialmente programando, haciendo render, navegando en Internet y esas cosas. En fin…

Ayer saque tiempo y le instalé a la maquina Windows 7. La experiencia de instalación estuvo bien, hice un upgrade del sistema Windows Vista así que la cosa tomó más de los 30 minutos que promocionan.

La calificación de la maquina fue la misma de vista: 4.8

Todos mis archivos y configuración de programas parecen estar bien, curiosamente ahora tengo más espacio libre que cuando inicie la instalación.

El sistema de update del OS se fue a actualizar, está cargando versiones nuevas de los drivers de la red inalámbrica y la tarjeta de video.

Para conseguir la llave de licencia fue al sitio de Microsoft, seleccione un instalador en versión e idioma, inicie el proceso de registro, pero no descargue el software solo llegue a la ventana en la que me dan el numero de licencia, lo copie en la ventana de activación y listo. (por cierto que hice todo el proceso sin este número, de esta forma la maquina será útil por 30 días)

Una cosa interesante fue que el instalador mostró una lista de los programas que tendrían problemas para ejecutarse después de la instalación pero también indicaba que si se reinstalaban funcionarían bien, los más notorios:

Microsoft Network Monitor y SQL Server 2005, aunque yo uso SQL2008 (WTF?), así que no tengo como comprobar si hay algún problema con SQL Server 2005 y mi upgrade de Windows 7, SQL Server 2008 express funciona perfectamente después de la instalación. (Revisando el visor de eventos si parece que tengo problemas con reporting services y la creación de contadores de desempeño.).

Sin embargo al ejecutar el Network Monitor después de la instalación encuentro que hay una nueva versión así que eso resuelve los problemas, a pesar de los errores en el event viewer Reporting Services también está funcionando bien, habrá que investigar más.

Después de la instalación el Input Remaper que usaba para controlar los ventiladores no funciona más, sin embargo aparentemente ahora la maquina se calienta menos. Todo lo demás va bien, la maquina realmente se siente más rápida, la barra de tareas es buenísima para cambiar de aplicaciones, el sistemita de control de los iconos al lado del reloj es de lujo.

La versión de pruebas que instale es Ultimate así que ahora podre probar el reconocimiento de voz en español finalmente a ver si eso si funciona o no.

El nuevo Paint, Calculadora y NotePad son curiosos.

Seguire probando..

Juan Peláez.

Arquitecto de Software.

3Metas Corp.

Publicado en www.juanpelaez.com, Si está leyendo esto en otra dirección no se pierda el contenido del sitio original.

Keywords: Windows 7, MacBookPro, Instalacion, Leopard, Linux, Windows Vista, Windows 7, 3Metas Corp, Juan Peláez, Colombia, Fort Lauderdale, Florida, USA, Digital Strategy Company, New Media Company, Social Media Company.

Publicidad: Quiere adoptar las últimas tecnologías Microsoft pero no sabe por dónde comenzar, nuestro grupo de expertos pueden ayudarlo a explotar lo mejor y más novedoso de esta plataforma en beneficio de su negocio. Escribanos [email protected]

Definiciones – Atributos de Calidad para Aplicaciones Distribuidas y de Alta Disponibilidad.

Extractado de La Guía de Arquitectura Versión 2.0a del grupo de Patterns and Practices de Microsoft.

Disponibilidad define la proporción del tiempo que el sistema es funcional y trabaja. Puede ser medido como un porcentaje del tiempo total en que el sistema estuvo caído en un periodo predefinido. La disponibilidad puede verse afectada por errores del sistema, problemas de infraestructura, ataques o carga del sistema.

Integridad Conceptual define la consistencia y coherencia del diseño total. Esto incluye la forma en que los componentes o módulos han sido diseñados, así como factores como el estilo de codificación y la nomenclatura de las variables.

Flexibilidad es la habilidad del sistema para adaptarse a ambientes y situaciones variables y para soportar cambios en políticas de negocios y reglas de negocio. Un sistema flexible es uno que es fácil de reconfigurar o que se adapta en respuesta a los diferentes requerimientos de usuarios y del sistema.

Interoperabilidad es la habilidad de que diversos componentes de un sistema diferentes sistemas funcionen correctamente al intercambiar información, comúnmente por medio de servicios. Un sistema interoperable hace fácil intercambiar y usar información interna y externamente.

Capacidad de mantenimiento es la habilidad de un sistema para permitir cambios en sus componentes, servicios, características e interfaces en la medida en que dichos cambios son requeridos cuando se adiciona o cambia la funcionalidad, se corrigen errores o se suplen nuevos requerimientos de negocios.

Capacidad de Administración define que tan fácil es gestionar la aplicación, usualmente a través de una instrumentación suficiente y adecuada que se expone en un sistema de monitoreo para efectos mejoramiento del rendimiento e identificación de errores.

Rendimiento es un indicador de la capacidad de respuesta del sistema para ejecutar una acción dentro de un intervalo de tiempo dado. Puede ser medida en términos de latencia o de respuesta. Latencia es el tiempo que tarda en responder a un evento, respuesta en es el numero de eventos que tiene lugar en una cantidad dada de tiempo.

Confiabilidad es la habilidad de un sistema para mantener operacional en el tiempo. La confiabilidad se mide como la probabilidad de que un sistema no falle en ejecutar la función para la que fue construido dentro de un periodo especifico de tiempo.

Capacidad de Re-Uso define la capacidad de un componente y un subsistema para ser usado por otras aplicaciones en otros escenarios. La capacidad de re-uso minimiza la duplicación de componentes así como el tiempo de implementación.

Escalabilidad es la habilidad de un sistema para funcionar bien cuando se presentan cambios en la demanda o en la carga del mismo. Típicamente el sistema será capaz de extenderse a un número mayor o más poderoso de servidores al incrementarse la demanda o la carga.

Seguridad define la forma en que el sistema es protegido de perder o suministrar información y la posibilidad de éxito de un ataque. Un sistema seguro trata de proteger sus actives y previene la modificación de información de fuentes no autorizadas.

Capacidad de Soporte define que tan fácil es para los operadores, desarrolladores, y usuarios entender y usar la aplicación así como que tan fácil es resolver los errores que se presentan cuando la aplicación falla.

Capacidad de Pruebas es una medida de que tan fácil es crear un criterio de pruebas para el sistema y sus componentes y como ejecutar estos test en un orden que permita determinar si el criterio se cumplió. Una buena capacidad de pruebas hace más común que las falas en el sistema puedan ser aisladas de una forma rápida y efectiva.

Usabilidad define que tan bien la aplicación cumple con los requerimientos de los usuarios y los consumidores al ser intuitiva, fácil de localizar y globalizar, y capaz de proveer acceso correcto para usuarios con discapacidad así como una experiencia general Buena para el usuario.

Juan Carlos Pelaez
Arquitecto de Sofware.

Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios.

Publicado en : www.juanpelaez.com

Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? 3Metas Corp tiene un grupo de especialistas que pueden apoyar sus procesos de diseño, construcción e implementación de soluciones. Contáctenos al correo electrónico [email protected]

Arquitectura Orientada a Servicios (SOA)

Extractado de La Guía de Arquitectura Versión 2.0a del grupo de Patterns and Practices de Microsoft. Para los que nos gusta en la lengua de cervantes:

La arquitectura orientada a servicios permite que la funcionalidad de la aplicación se exponga y consuma como un conjunto de servicios. Los servicios usan una forma estándar de interacción que les permiten ser invocados, publicados y descubiertos. Los servicios SOA están enfocados en proveer un esquema (schema) y una interacción basada en mensajes con una aplicación. Los servicios SOA proveen interfaces con alcance de aplicación en vez de interfaces del nivel de componente u objeto. En otras palabras un servicio SOA no debe ser tratado como un servicio proveído por un componente.

El estilo SOA tiene las siguientes características que lo identifican:

• La interacción con los servicios es desacoplada.

• Puede involucrar procesos de negocios que se convierten en servicios interoperables.

• Clientes y otros servicios pueden accede a servicios locales que se ejecutan en el mismo nivel.

• Clientes y otros servicios acceden a servicios remotos sobre una red que los conecta.

• Estos servicios pueden usar un rango de protocolos y formatos de datos para comunicar información.

Principios Fundamentales.

Los principios fundamentales de la arquitectura estilo SOA son:

• Los servicios son autónomos. Cada servicio SOA es mantenido, desarrollado, instalado y versionado de forma independiente.

• Los servicios son distribuibles. Los servicios SOA pueden ser localizados en cualquier parte sobre la red, local o remotamente en tanto que la red soporte los protocolos de comunicación requeridos.

• Los servicios son desacoplados. Cada servicio SOA es independiente de los otros y puede ser reemplazado o actualizado sin romper con las aplicaciones que lo consumen en tanto que la interface siga siendo compatible.

• Los servicios comparten esquemas y contratos no clases. Los servicios SOA comparten contraltos y esquemas cuando se comunican, no clases internas.

• La compatibilidad está basada en políticas. Política en este caso significa la definición de características como transporte, protocolo y seguridad.

Beneficios

Los mayores beneficios del estilo de arquitectura SOA son:

Alineación con el Dominio. El re-uso de servicios comunes con interfaces estándar incrementa las oportunidades de negocios y reduce costos.

Abstracción. Los servicios son autónomos y se accede a ellos a través de un contrato formal lo que provee desacople y abstracción.

Capacidad de Descubrimiento. Los servicios pueden exponer descripciones que permiten a otras aplicaciones y servicios localizarlos y determinar de forma automática la interfaz.

Ejemplos

Ejemplos comunes de aplicaciones orientadas a servicios incluyen:

• Sistemas que comparten información médica.(Harvard Medical School)

• Sistemas de reservas (Starwood Hotels and Resorts)

• Sistemas de WorkFlow. (State Children’s Health Insurance Program)

Juan Carlos Pelaez
Arquitecto de Sofware.

Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios.

Publicado en : www.juanpelaez.com

Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? 3Metas Corp tiene un grupo de especialistas que pueden apoyar sus procesos de diseño, construcción e implementación de soluciones. Contáctenos al correo electrónico [email protected]

Arquitectura basada en capas.

Extractado de La Guía de Arquitectura Versión 2.0a del grupo de Patterns and Practices de Microsoft. Para los que nos gusta en la lengua de cervantes:

La arquitectura basada en capas se enfoca en la distribución de roles y responsabilidades de forma jerárquica proveyendo una forma muy efectiva de separación de responsabilidades. El rol indica el modo y tipo de interacción con otras capas, y la responsabilidad indica la funcionalidad que está siendo desarrollada.

Por ejemplo, una aplicación web típica está compuesta por una capa de presentación (funcionalidad relacionada con la interfaz de usuario), una capa de negocios (procesamiento de reglas de negocios) y una capa de datos (funcionalidad relacionada con el acceso a datos).

El estilo de arquitectura basado en capas se identifica por las siguientes características:

• Describe la descomposición de servicios de forma que la mayoría de la interacción ocurre solamente entre capas vecinas.

• Las capas de una aplicación pueden residir en la misma maquina física (misma capa) o puede estar distribuido sobre diferentes computadores (n-capas).

• Los componentes de cada capa se comunican con otros componentes en otras capas a través de interfaces muy bien definidas.

• Este modelo ha sido descrito como una “pirámide invertida de re-uso” donde cada capa agrega responsabilidad y abstracción a la capa directamente sobre ella.

Principios fundamentales

Los principios comunes que se aplican cuando se diseña para usar este estilo de arquitectura incluyen:

Abstracción. La arquitectura basada en capas abstrae la vista del modelo como un todo mientras que provee suficiente detalle para entender las relaciones entre capas.

Encapsulamiento. El diseño no hace asunciones acerca de tipos de datos, métodos, propiedades o implementación.

Funcionalidad claramente definida. El diseño claramente define la separación entre la funcionalidad de cada capa. Capas superiores como la capa de presentación envía comandos a las capas inferiores como la capa de negocios y la capa de datos y los datos fluyen hacia y desde las capas en cualquier sentido.

Alta cohesion. Cada capa contiene funcionalidad directamente relacionas con la tarea de dicha capa.

Reutilizable. Las capas inferiores no tienen ninguna dependencia con las capas superiores, permitiéndoles ser reutilizables en otros escenarios.

Desacople. La comunicacion entre las capas está basada en la abstracción lo que provee un desacople entre las capas.

Beneficios

Los principales beneficios del estilo de arquitectura basado en capas son:

Abstracción. Las capas permiten cambios que se realicen en un nivel abstracto. Usted puede incrementar o disminuir el nivel de abstracción usado en cada capa de la “pila” jerárquica.

Aislamiento. El estilo de arquitectura de capas permite asilar los cambios en tecnologías a ciertas capas para reducir el impacto en el sistema total.

Rendimiento. Distribuir las capas entre múltiples sistemas (físicos) puede incrementar la escalabilidad, la tolerancia a fallos y el rendimiento.

Mejoras en Pruebas. La capacidad de realizar pruebas se beneficia de tener una interfaces bien definidas para cada capa así como de la habilidad para cambiar a diferentes implementaciones de las interfaces de cada capa.

Independencia. El estilo de arquitectura basado en capas el requerimiento de considerar el hardware y los problemas de instalación así como las dependencias de interfaces externas.

Ejemplos

Algunos tipos comunes de aplicaciones por capas incluyen:

• Aplicaciones de línea de negocios (LOB), como contabilidad, y sistemas de gestión de clientes.

• Aplicaciones web Corporativas y sitios Web

• Aplicaciones corporativas de escritorio o clientes inteligentes con servidores centralizados de aplicación con lógica de negocios.

Los siguientes son algunas variaciones del estilo de arquitectura basado en capas:

Capas estrictas (Strict layering). Cada capa solo puede invocar a la capa directamente debajo de a ella.

Saltos de Capas (Layer skipping). Las capas pueden invocar otras capas más profundas que las que están directamente debajo de ellas. Esto puede incrementar el rendimiento pero impacta la portabilidad.

Capa de Caja Negra (Black-box layering). Los limites de las capas y sus dependencias esta definidas de forma estricta usando interfaces, lo que soporta extensiones en run-time, intercepción y mejora la capacidad de realiza pruebas.

Capa de Caja Blanca (White-box layering). Clases que colaboran entre los límites de las capas y están altamente acopladas.

Arquitectura de N-Capas / 3-Capas

Este estilo de despliegue arquitectónico describe la separación de la funcionalidad en segmentos separados de forma muy parecida al estilo de capas, pero en el cual cada segmento está localizado en un computador físicamente separado. Este estilo ha evolucionado desde la aproximación basada en componentes generalmente usando métodos específicos de comunicación asociados a una plataforma en vez de la aproximación basada en mensajes.

clip_image002

Principios Fundamentales.

Los siguientes son los principios fundamentales del estilo de arquitectura basado en N-capas/3-capas:

• Es un estilo para definir el despliegue de las capas en una instalación.

• La arquitectura de N-capas está caracterizada por la descomposición functional de la aplicación, los componentes de servicio y su instalación distribuida. Mejorando la escalabilidad, disponibilidad, administración, y utilización de recursos.

• Cada capa es completamente independiente de las otras capas, excepto aquella que esta inmediatamente debajo de ella. La capa n solo necesita saber cómo manejar una solicitud de la capa n+1, como hacer la solicitud a la capa n-1 (si existe) y cómo manejar el resultado de la petición.

• La arquitectura de N-capas tiene al menos tres capas separadas o partes, cada una de ellas con su responsabilidad y está localizada en diferentes servidores.

• Una capa es desplegada en un nivel específico si más de un servicio o aplicación está expuesto por esa capa.

Beneficios.

Los principales beneficios del estilo de arquitectura de N-capas/3-capas son:

Mejoras en las posibilidades de mantenimiento. Debido a que cada capa es independiente de la otra los cambios o actualizaciones pueden ser realizados sin afectar la aplicación como un todo.

Escalabilidad. Como las capas están basadas en diferentes maquinas, el escalamiento de la aplicación hacia afuera es razonablemente sencillo.

Flexibilidad. Como cada capa puede ser manejada y escalada de forma independiente, la flexibilidad se incrementa.

Disponibilidad. Las aplicaciones pueden aprovechar la arquitectura modular de los sistemas habilitados usado componentes que escalan fácilmente lo que incrementa la disponibilidad.

Ejemplos.

Algunos ejemplos del estilo de arquitectura de N-capas/3-capas son:

• Una aplicación Web Financiera donde la seguridad es importante y la capa de negocios necesita estar instalada detrás de un Firewall, lo que obliga la instalación de la capa de presentación en una capa separada del perímetro.

• Una aplicación de cliente rico conectada, donde la capa de presentación esta en las maquinas cliente y las capas de negocios y datos están instaladas en el servidor.

Juan Carlos Pelaez
Arquitecto de Sofware.

Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas, Juan Carlos Pelaez, Colombia, Desarrollo de Software, Soluciones, Silverlight, Sharepoint, WCF, WPF, Desarrollo de Aplicaciones Web, Desarrollo de Aplicaciones para Intranet, Web 2.0, Nuevos Medios.

Publicado en : www.juanpelaez.com

Publicidad: Necesita Arquitectos en soluciones basadas en plataforma Microsoft? 3Metas Corp tiene un grupo de especialistas que pueden apoyar sus procesos de diseño, construcción e implementación de soluciones. Contáctenos al correo electrónico [email protected]