Programación y Estrategias de Negocios RSS 2.0
# Tuesday, May 26, 2009


Share

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 sales@3metas.com

Tuesday, May 26, 2009 1:54:00 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Arquitectura
# Tuesday, April 14, 2009


Share

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:

ARQUITECTURA BASADA EN COMPONENTES.

Una arquitectura basada en componentes describe una aproximación de ingeniería de software al diseño y desarrollo de un sistema. Esta arquitectura se enfoca en la descomposición del diseño en componentes funcionales o lógicos que expongan interfaces de comunicación bien definidas. Esto provee un nivel de abstracción mayor que los principios de orientación por objetos y no se enfoca en asuntos específicos de los objetos como los protocolos de comunicación y la forma como se comparte el estado.

El estilo de arquitectura basado en componentes tiene las siguientes características:

• Es un estilo de diseño para aplicaciones compuestas de componentes individuales.

• Pone énfasis en la descomposición del sistema en componentes lógicos o funcionales que tienen interfaces bien definidas.

• Define una aproximación de diseño que usa componentes discretos, los que se comunican a través de interfaces que contienen métodos, eventos y propiedades.

Principios Fundamentales

Un componente es un objeto de software específicamente diseñado para cumplir con cierto propósito. Los principios fundamentales cuando se diseña un componente es que estos deben ser:

Reusable. Los componentes son usualmente diseñados para ser utilizados en escenarios diferentes por diferentes aplicaciones, sin embargo, algunos componentes pueden ser diseñados para tareas específicas.

Sin contexto especifico. Los componentes son diseñados para operar en diferentes ambientes y contextos. Información específica como el estado de los datos deben ser pasadas al componente en vez de incluirlos o permitir al componente acceder a ellos.

Extensible. Un componente puede ser extendido desde un componente existente para crear un nuevo comportamiento.

Encapsulado. Los componentes exponen interfaces que permiten al programa usar su funcionalidad. Sin revelar detalles internos, detalles del proceso o estado.

Independiente. Los Componentes están diseñados para tener una dependencia mínima de otros componentes. Por lo tanto los componentes pueden ser instalados en el ambiente adecuado sin afectar otros componentes o sistemas.

Beneficios

Los siguientes son los principales beneficios del estilo de arquitectura basado en componentes:

Facilidad de Instalación. Cuando una nueva versión esté disponible, usted podrá reemplazar la versión existente sin impacto en otros componentes o el sistema como un todo.

Costos reducidos. El uso de componentes de terceros permite distribuir el costo del desarrollo y del mantenimiento.

Facilidad de desarrollo. Los componentes implementan un interface bien definida para proveer la funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema.

Reusable. El uso de componentes reutilizables significa que ellos pueden ser usados para distribuir el desarrollo y el mantenimiento entre múltiples aplicaciones y sistemas.

Mitigación de complejidad técnica. Los componentes mitigan la complejidad por medio del uso de contenedores de componentes y sus servicios. Ejemplos de servicios de componentes incluyen activación de componentes, gestión de la vida de los componentes, gestión de colas de mensajes para métodos del componente y transacciones.

Ejemplos

Tipos comunes de componentes usados en aplicaciones incluyen:

• Componentes de interfaz de usuario, como grillas, botones, etc., generalmente conocidos como “controles”.

• Componentes de ayuda que exponen un conjunto específico de funciones usados por otros componentes.

• Componentes que se no se usan con mucha frecuencia o son intensivos en recursos y deben ser actividades usando una aproximación de solo en el momento justo (Just in Time (JIT)). Estos son comunes en escenarios de componentes distribuidos o en componentes remotos.

• Componentes encolados, aquellos cuyos métodos pueden ser ejecutados de forma asíncrona usando colas de mensajes del tipo almacenamiento, entrega.

 

 

Juan Carlos Pelaez
Arquitecto de Sofware.

 

Keywords: 3Metas, Juan Pelaez, Arquitectura, Emprendimiento, Desarrollo de Software, Aplicaciones Distribuidas.

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 sales at 3metas.com

Tuesday, April 14, 2009 10:21:00 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Arquitectura
# Sunday, April 12, 2009


Share

 

Leyendo sobre como construir compañías del futuro hoy me encuentro esta frase:  

 

“En una compañía iluminada, que piensa en el futuro, los gerentes entienden la conexión entre aprendizaje, innovación y alta productividad y la convierten en una compañía donde los empleados son motivados a usar parte de su tiempo aprendiendo y experimentando con nuevas tecnologías. “
Joe McKendrick, FASTForward

 

Si usted está en el área de tecnología, gestión de proyectos, gerencia, salud, o cualquier otro sector que se me venga a la cabeza ahora debería trabajar en una compañía así y si no existe en su industria debería crearla.

 

Yo tengo la fortuna de trabajar en 3Metas.
(No existía algo así en mi industria así que la creamos desde cero).

 

Nota: Este solo es el primero de una serie de pequeños comentarios sobre mi visión de cómo deberían ser las empresas especialmente las de servicios y tecnología, muchos de ellos parten de mi propia experiencia construyendo compañías en los últimos diez años y muchos otros vienen de lo que otros han hecho en sus propias empresas.

 

Juan Pelaez

Arquitecto de Software

 

Keywords: Juan Pelaez, Emprendimiento, Innovación, 3Metas, Gestión de empresas de Software.

Publicado en: www.juanpelaez.com

Sunday, April 12, 2009 1:02:23 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Emprendimiento | Gestion de Empresas de Software
# Saturday, April 11, 2009


Share

Me gusta mucho el conjunto de guías de arquitectura de soluciones .Net del grupo de Patterns and Practices de Microsoft. El documento principal es La Guia de Arquitectura Version 2.0a, una de las principales razones por las que me gusta esta guía es por la definición de cómo encajan los diferentes elementos o tipos de arquitecturas juntas en un esquema que es sencillo pero muy elegante y que se resume en este gráfico:

Elementos Arquitectura

Al segmentar las aplicaciones por tipos (más o menos obvio no?), y separar los conceptos como estilos de arquitectura, atributos de calidad, tendencias etc., se obtiene una forma más sencilla de explicar porque se hace una aplicación de una forma y no de otra, lo que en general podemos decir que es la arquitectura. Una de las secciones más interesante tiene que ver con los estilos de arquitectura (sobre el que profundizare más adelante) ya que establece las diferencias entre elementos que son un poco confusos al seleccionar que tipo de aplicación se quiere construir y nos permite explicar de una manera clara al cliente por que se tomaron estas decisiones de diseño.

Si usted alguna vez se ha preguntado como una arquitectura SOA se integra con una arquitectura por componentes y con el paradigma de Orientación por Objetos este es definitivamente un documento que debería leer.

Juan Peláez

Arquitecto de Software

Publicado en: www.juanpelaez.com

Keywords: Juan Pelaez, Arquitectura de Software, 3Metas, Patterns and Practices, Microsoft, .Net.

Publicidad: Necesita ayuda en la arquitectura de su aplicación .Net?, no está seguro si su desarrollo cumplirá con los requerimientos de escalabilidad, seguridad, requerimientos de negocios o expectativas de los usuarios?, Quiere validar si sus desarrolladores o contratistas siguen las mejores prácticas para el desarrollo de aplicaciones? Los servicios de consultoría en Arquitectura de Soluciones de 3Metas seguramente serán un de las mejores alternativas. Contáctenos al correo electrónico contacto@3Metas.com

Saturday, April 11, 2009 4:18:42 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Arquitectura | Software as a Service
# Wednesday, April 08, 2009


Share

Un Post rápido…vengo trabajando con el equipo de DP de Microsoft Colombia en Laboratorios de Compatibilidad para aplicaciones que funcionen con Internet Explorer 8, Windows Vista y Windows 7.  En los próximos días en la página de InnovateOn relacionada con estos temas, podrán encontrar información detallada al respecto. Por ahora un recurso muy importante que quiero compartir son estos enlaces que corresponden a maquinas virtuales con XP, Windows Vista, Internet Explorer 6,7 y 8.

http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&displaylang=en

 

Juan Pelaez.

Arquitecto de Software.

 

Keywords: Juan Pelaez, 3Metas, Windows Vista, Compatibilidad de Aplicaciones, Maquinas Virtuales, Maquina Virtual Vista, Maquina Virtual XP, Maquina Virtual IE8, Microsoft Colombia, D&P Colombia.

 

Publicado en www.juanpelaez.com

 

Wednesday, April 08, 2009 5:20:47 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Developer Evangelist | Pruebas | Windows Vista
# Tuesday, December 09, 2008


Share

CDN (Content Distribution Network) es un sistema de distribución de archivos basado en ubicaciones geográficas muy útil cuando se construyen sistemas de alta disponibilidad. Ya hice un post del tema hace algunos días aquí.

 

Y también hace poco escribí sobre el sistema de hosting que uso que es basado en Cloud Computing, aquí.

 

Hace poco estos dos servicios se han integrado para ofrecer un mejor paquete y ahora es posible por muy poco dinero y solo con una tarjeta de crédito tener en cuestión de horas un sistema de hosting por demanda integrado con la red de distribución de contenido. Todo parece muy sencillo: creo una carpeta en el sistema del sitio y subo mis archivos, marco la carpeta como publica y listo, ahora esos archivos se distribuyen usando una CDN de las más usadas en el mundo. Cuando no lo quiero mas entonces solo quito la marca de folder publico y listo, ya no se actualiza el archivo en el cache de la CDN.

 

Supongamos que creamos un sitio de distribución de videos del tipo YouTube o de música como sonidolocal.com, eso son miles de canciones o archivos de gran tamaño, un monton de dinero para gastar en ancho de banda, almacenamiento, etc, con estos sistemas lo que hago es pagar por uso, dejar que ellos corran con los costos de infraestructura y demás y puedo crecer el servicio a la medida que mi sitio crezca.

 

Amazon ofrece un servicio parecido llamado S3 que parece funcionar muy bien, pero en el cual hay que pagar por el almacenamiento y aparte por el uso de la CDN, asi que el servicio de Mosso en ese aspecto parece mejor.

 

Cuando empecé mi primera compañía en internet en el año 2000, el primer gasto era de 550 dólares mensuales por un servidor dedicado en DellHost, una cifra absurda para una empresa que había facturado 0 dólares el día 1, pero necesario para poder poner algo en la red. Estos nuevos sistemas de costos y de pago por uso hacen que todo cambie, no solo para las nuevas compañías, también para nuestros clientes.

 

Juan Pelaez

Arquitecto de Software.

 

Keywords: Mosso, CDN, Juan Pelaez, Juan Carlos Pelaez, Software como Servicio, SaaS, Infraestructura como Servicio, Hosting as a Service, Hosting como Servicio, Redes de Distribucion de Contenido.

 

Technorati Tags: ,,,
Tuesday, December 09, 2008 2:22:25 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Arquitectura | Gestion de Empresas de Software | Software as a Service
# Friday, December 05, 2008


Share

Hoy tuve un día tremendo (espectacular), en gran parte por un par de buenos amigos que me arreglaron el día, la semana y de pronto el mes.

Aprovechando las técnicas de popfly para construir MashUps, quise hacer un pequeño homenaje a mis amigos rotando por aquí sus fotos del perfil de Facebook.

 

 

 

 

Los que no están en Facebook, pero son amigos también los recuerdo y les agradezco todas las cosas que han hecho por mí, por Claudia y por Felipe todos estos años.

Juan.

Friday, December 05, 2008 6:19:08 PM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
Amigos
# Monday, December 01, 2008


Share

Por invitación de Luis Linares de Microsoft Colombia el pasado 30 de Noviembre de 2008 presente una sesión sobre gestión de pruebas usando VSTS 2008, durante la presentación realizamos diferentes modelos de pruebas automatizadas, especialmente pruebas unitarias con cobertura de código, pruebas de funcionalidad web y pruebas de carga.

Junto con Miguel Mendoza de Synergy desarrollamos algunos escenarios un poco más profundos, como hacer pruebas de funcionalidad y carga de un portal de Sharepoint usando VS2008 for Testers. Pruebas automatizadas basadas en información de bases de datos contra aplicaciones desarrolladas en PHP y /o corriendo en otras plataformas y generación de datos de pruebas usando DataGenerator de VS2008 for DataBase Professionals.

 

Gracias a todos los participantes por sus preguntas y comentarios, a Miguel Mendoza por su apoyo en las demostraciones y en la preparación de la sesión y a Luis por invitarnos, espero que el evento haya sido productivo para todos.

 

Descargar Presentación: Gestión de Pruebas con VS 2008 for Tester y Team Foundation Server (TFS).

 

Juan Pelaez

Arquitecto de Software.

Publicado en : www.juanpelaez.com/blog

 

Creditos: para la construcción de la PPT he usado información e imágenes de otras presentaciones de expertos en TFS y VS2008, en especial de las siguientes personas:

Juan Carlos Viñas

TFS Competence Administrator

Jorge Ramo López

EPM Manager

Raona http://www.raona.com

Rodrigo Corral

MVP Team System

Plain Concepts

http://www.plainconcepts.com

Blog: http://geeks.ms/blogs/rcorral

Bruno Capuano

MVP

http://www.avanade.es

Blog: http://elbruno.com

 

 

Keywords: VS2008, Visual Studio for Tester Editions, Gestión de Pruebas, Pruebas de Software, Automatización de Pruebas, SharePoint, Pruebas Unitarias, Cobertura de Código, Pruebas de Funcionalidad Web, Pruebas de Carga, Pruebas de Stress.

Monday, December 01, 2008 10:33:21 AM (SA Pacific Standard Time, UTC-05:00) 

Bookmark and Share

#    Comments [0] - Trackback
.net | Amigos | Gestion de Empresas de Software | Speaker Microsoft | VS2008
Le gusta este sitio?
Contácteme
mail: jpelaez at juanpelaez.com
Actualizaciones en Twitter
FeedBurner
Maps
Locations of visitors to this page
Blogroll
[Feed] Eugenio Pace
Arquitecto del grupo Software as a Service en Microsoft
[Feed] Juan Diego Velazco
El mejor diseñador gráfico conocido y un gran tipo
[Feed] Scott Hanselman
Sponsors
Estadísticas
Total Posts: 94
This Year: 4
This Month: 0
This Week: 0
Comments: 42
Archivo
<May 2009>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Acerca de...

Aviso Legal
Las opiniones expresadas en este sitio representan el punto de vista de Juan Peláez sobre diferentes temas y no representan la posición de 3Metas Corp, Microsoft, Studiocom.com.Inc. o de cualquier otra compañía que haya contratado los servicios de consultoría de Juan Peláez

© Copyright 2010
Juan Carlos Peláez
Sign In

Technorati Profile
All Content © 2010, Juan Carlos Peláez
El tema 'Business' para DasBlog fue creado por Christoph De Baene (delarou) y modificado para español por Juan Peláez
Powered by FeedBurner