charla atributos de calidad con .net

28
Carlos Paez [email protected] Atributos de Calidad con .Net

Upload: carlos-paez

Post on 14-Jul-2015

858 views

Category:

Technology


3 download

TRANSCRIPT

Carlos [email protected]

Atributos de Calidad con .Net

Agenda

ContextoNociones generalesAtributos y su tratamiento con .NetMétodos de evaluaciónConclusionesLinks relacionados

Contexto

Si los sistemas fallan pueden causar diferentes consecuencias (perdidas tiempo, dinero)No es suficiente con satisfacer los requerimientos funcionalesExiste un contexto tecnológico que debe analizarse

Contexto

Para implementar mejoras en la calidad primero debe ser medida y analizada.

En ese contexto aparecen los Quality Attributes para medir y analizar la calidad.

Nociones generales

Atributos de calidad: elementos que caracterizan la calidad desde diferentes puntos de vista

Adquieren relevancia cuando se ponen en el contexto adecuado

Atributos de Calidad

Atributos de Calidad

AccessibilityAvailabilityExtensibilityInteroperabilityMaintainabilityModifiabilityOperabilityPortability

ReliabilityRobustnessScalabilitySecurityStabilitySupportabilityTestabilityUsability

Disponibilidad

Es la característica de un sistema que mide el grado de operación continua durante un período determinado tiempo, dado un patrón de operación y requerimientos mínimos de uso.

Disponibilidad

Infraestructura IIS - Network Load BalancingReplicación de datos – MirroringPolítica de Back-upsFailover Clustering

Capacidad de switchear de forma autómatica a otro servidor redundanteImplementada con Windows Server y SQL Server 2008 Failover Clustering

Disaster recovery

Escalabilidad

Es una característica deseada de un sistema, la cual indica la habilidad de manejar el crecimiento del volumen de trabajo de una manera adecuada.

Se destacan dos grandes manerasEscalar verticalmente: agregando mas recursos en un único nodo del sistemaEscalar horizontalmente: agregando mas nodos al sistema

Escalabilidad

IIS ClusteringNetwork Load Balancing (Server farm)

CachingNHibernate.Caches (Add-In)Windows Server AppFabric (ex Velocity)

Diseño y optimización de Capa de datosDesnormalización (Reporting)ORM -> Mapeos (Lazy Load)Queries (SQL / HQL)

Optimización en capa de presentaciónModularización (html + js + css)AJAX (bien utilizado)JSON (en lugar de xml)Optimización de imágenes

Transaccionabilidad

Es la característica de un sistema que garantiza que los procesos se manejan como operaciones individuales e indivisibles, llamadas transacciones. Cada transacción debe finalizar exitosamente o fallar como una unidad completa, no puede quedar en un estado intermedio.

Transaccionabilidad

System.TransactionsPosibilidad de hacer transacciones entre varias Bases de datosDesde .Net Framework 2.0Clase TransactionScope()A bajo nivel trabaja con COM+

NHibernate TransactionsManejo de transacciones propioSoporta System.Transactions

Instrumentación (Robustez)

Se refiere a la habilidad de monitorear y medir el nivel de performance, para diagnosticar errores y escribir información de traceo.

Cuando una aplicación contiene código de instrumentación, puede ser administrada usando diferentes herramientas.

Instrumentación (Robustez)

Framework de LoggingLog4Net

Framework de InstrumentaciónMicrosoft Enterprise Instrumentation Framework (EIF)

ASP.NET Performance countersEscritura en EventLog de Windows

Interoperabilidad

Es una propiedad relacionada a la habilidad de un sistema de intercambiar datos vía un conjunto predeterminado de formatos y de usar protocolos comunes para su comunicaciónPuede implementarse con el uso de Web Services, los cuales manejan protocolos estándarCuidar el diseño desde el inicio

Pensar los servicios de forma atómicaEs posible con protocolos interoperables elegir un mal diseño y hacer NO interoperable un sistema

Usabilidad

Denota la facilidad con la que las personas pueden utilizar una herramienta con el fin de llegar a su objetivo. Se refiere a la claridad con la que se efectúa la interacción de las personas con una interfaz de un sistema.

Patrones UXLibrerías para facilitar la interacción

AJAX (JQuery, ASP.NET Ajax Library)Silverlight

Seguridad

Autenticación y autorizaciónIdentity y Principals (Customización)Certificados SSLSeguridad de contenido estáticoSoporte de encriptación .Net Framework

Web ServicesWS-SecurityWS-Criptography

Testabilidad

Es la característica de un sistema, que indica su capacidad de ser sometida a pruebas.

Generalmente se la asocia con el testing automatizado.

Testabilidad

Arquitectura en capasASP.NET MVC

Inyección de dependenciasSpring.NetCastle Framework

MockingRhino MocksMoq

NUnit FrameworkVisual Studio Team Foundation System

Mantenibilidad

Utilización de estándaresCode analysisFXCopStyleCop

Código documentadoNDoc

Políticas de BranchingKISS

Métodos de evaluación

Quality Attributes Workshop (QAW)

Architecture Tradeoff Analysis Method (ATAM)

Software Architecture Analysis Method (SAAM)

Active Reviews for Intermediate Designs (ARID)

Quality Attributes Workshop

El objetivo de QAW es identificar escenarios desde el punto de vista de los diversos participantes, identificar riesgos (p. ej. baja performance, denegación de servicio) y posibles estrategias de mitigación (p. ej. replicación, prototipado, etc)

Quality Attributes Workshop - Pasos

1. Presentación e introducción al QAW 2. Presentación de Negocios/Misión3. Presentación del Plan Arquitectónico4. Identificación de los Drivers Arquitectónicos5. Brainstorming de Escenarios6. Consolidación de Escenarios7. Priorización de Escenarios8. Refinamiento de Escenarios

Conclusión

Tomar decisiones desde el inicioEncontrar balance entre los diferentes atributosMantener la sencillezTrabajo iterativoTestear durante todo el ciclo de vida del proyecto

Pruebas de cargaRendimientoConcurrencia

Integrar continuamente

Links relacionados

Assessing quality in software architectureshttp://www.ibm.com/developerworks/library/ar-qualassess.html

Software Architecture Quality Attributeshttp://bradapp.blogspot.com/2008/02/software-architecture-quality.html

Windows Server AppFabrichttp://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx

Network Load Balancinghttp://technet.microsoft.com/en-us/library/cc758834%28WS.10%29.aspx

SQL Server 2008 Failover Clustering http://msdn.microsoft.com/en-us/library/ms189134.aspx

¿Preguntas?

Muchas gracias!

Carlos Paez [email protected]