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