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

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

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

Arquitectura basada en Componentes

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

Arquitectura de Software 101

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

Pruebas de compatibilidad de aplicaciones con Windows Vista (e IE8)

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

 

CDN and Cloud Computing …juntos.

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.


Update: Mosso Publica informacion comparativa de rendimiento y disponibilidad vs Amazon aqui 


 


Juan Pelaez


Arquitecto de Software.


Publicado en : www.juanpelaez.com


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: ,,,

Evento – Gestión de Pruebas con VS2008.

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.

JQuery Day 01

He empezado un nuevo proyecto para Microsoft Colombia y la Secretaria de Salud que es a la vez una prueba de concepto de una migración de una aplicación de VS2003 a VS2008 como la reconstrucción de la aplicación (refactoring) hacia un modelo orientado a Software + Servicios.

Uno de los entregables del proyecto es un Web Site, así que pareció una buena oportunidad para comenzar a explorar JQuery, que lo había visto por ahí con los anuncios de soporte en VS2008 y demás pero nunca lo había tocado.

Lo primero es hacerlo funcionar, eso lo explico mejor Scott Guttrie en un post, entonces yo cree un Web Application, luego una carpeta scripts, y en ella copie el archivo jquery-1.2.6.js y el archivo jquery-1.2.6-vsdoc.js, estos dos me permiten tener JQuery e IntelliSense en Visual Studio, se pueden descargar de Aquí.

Luego incluí el archivo de JQuery y el archivo de la documentación en el default.aspx así:

<script src="scripts/jquery-1.2.6.js" type="text/javascript"></script>

<script src="scripts/jquery-1.2.6-vsdoc.js" type="text/javascript"></script>

Si no se incluye el archivo de la documentacion JQuery funciona, pero no tengo intellisense.

Ahora, cómo funciona esto:

Recorriendo el DOM

var help = $("#help"); //obtiene el elemento que se llama help, es como usar document.getElementById solo que funciona en cualquier browser.

var p = $("p"); //obtiene todos los elementos de tipo <p>

var username = $("input[name=’username’]"); //obtiene un elemento de tipo input llamado username

Todas las funciones anteriores retornan un arreglo (array), de hecho, la función $(), conocida como función JQuery siempre retorna un array de 0 elementos, 1 elemento o el número de elementos que encuentre (y es en realidad una abreviación de JQuery(“p”) ).

Es una práctica recomendada nombrar las variables con el signo pesos, así que el último ejemplo debería ser algo como esto:

var $username = $("input[name=’username’]");

Al ser $username un array tiene un conjunto de métodos que se pueden usar para obtener su longitud, elementos, etc (var form = $form.get(0); var form = $form. length)

Manipulando el DOM

Una vez que tengo identificados los objetos puedo empezar a hacer algo con ellos, algunos consejos:

No es necesario crear todas las clases que se van a usar en la hoja de estilo, solamente se necesitan para que JQuery las identifique

Un elemento puede tener varias clases aplicadas asi: <table class=”VisualTable PopulationTable”>…</table>, de esta forma puedo separar las clases que modifican los diseñadores de las que yo utilizo en JQuery para manipular los objetos.

Eventos

Uno de los elementos importantes de JQuery son los eventos, estos responden generalmente a acciones de los usuarios, pero uno que siempre es útil es el evento ready del document. Algo como esto:

$(document).ready(function{ myCodigo});

Que quiere decir que se debe ejecutar el código {MyCodigo} cuando la pagina este lista. Algo interesante es la forma como se declarara la función a ejecutar, muy similar a un método anónimo y también con una notación de JSON. Sin embargo si por alguna razón a uno no le gusta esta forma de funciones en línea puede usar esta notación: %(document).ready(onLoaded); donde onLoaded es un método definido previamente en el script. (esto también puede ser útil cuando se combinan diversos scripts y se quiere invocar desde un evento una parte de otro script).

Muchos eventos reciben funciones como parámetros, incluso una función en cada parámetro, por ejemplo:

$("#partList .row").hover

(

function()

{

$(this).addClass("rowOver");

},

function()

{

$(this).removeClass("rowOver");

}

)

Recibe dos funciones, una para cuando se entra al hover y otra para cuando se sale. Aquí puede ser interesante notar el $(this) que significa un “apuntador” al elemento que está ejecutando el evento, algo parecido al $(document).

 

Juan Pelaez.

Arquitecto de Software.

 

Keywords: JQuery, Web Applications,

Technorati Tags: ,

Primer año en Geeks.ms

Hace casi un año, Rodrigo Corral me envió un mail invitándome a participar en la comunidad Geeks.ms. (todavía hoy me pregunto cómo me encontró). 

Casualmente me encontraba con Miguel Jiménez en Sao Paulo recibiendo un entrenamiento en Silverlight y tecnologías de presentación, él conocía a muchos de los que publican por aca y me animo aun más a participar en geeks.ms.

En este año he escrito 28 posts (no debo ser el que más publica), he creado poca polémica (excepto por el número de proyectos que he hecho en la vida :-)) y recibido más de 30 comentarios, de todo tipo, sin embargo lo más valioso ha sido que he aprendido un montón en la preparación de cada post,  Ocasionalmente alguien me escribe agradeciendo algo que ha encontrado y que le ha ahorrado un par de horas o dolores de cabeza, lo que me llena de satisfacción.

No quería dejar pasar este aniversario del inicio del  blog sin agradecer a Rodrigo, a la Comunidad, pero sobre todo a todos los que nos leen. Espero haber realizado algún aporte y seguir haciéndolo por un buen rato. , tener la posibilidad de publicar en esta comunidad, una de las más grandes y de alto nivel en habla hispana, ha sido toda una realización personal y profesional.

Cordial Saludo

Juan Pelaez

Arquitecto de Software.

 

Keywords: Geeks.ms, Juan Pelaez

Technorati Tags: ,