Paul C Bentz
Executive Advisor
CAST Software
Estas cosas pasan …….
Computer Failure Delays United Flights Nationwide. June 17, 2011
Passengers were stranded at airports across the country Friday night after a failure in United Airlines’ computer
El Riesgo del SI
El Sistema de Información es la maquinaria de las empresas financieras y arranca elementos críticos de la cadena de valor de la empresa.
Las cadenas de valor modernas son cada día más difíciles de gestionar y crean grandes riesgos de negocio.
Las infraestructuras son fiables y el riesgo se sitúa en los aplicactivos.
Tres tipos de riesgos con el software aplicativo
Riesgo
Riesgo de Delivery –de Delivery riesgo que añade costes de TI o impide ingresos de negocio por retrasos o cancelación de proyectos.
Riesgo
Riesgo de de Perfomance (Business Case Risk) –Perfomance riesgo que afecta a la calidad del aplicativo entregado. Este está trabajando, pero no como debería. La consecuencia es por ejemplo, que el ROI no funciona.
Riesgo
Riesgo de de Oportunidad (Business Opportunity Risk) –Oportunidad
riesgo que hace que un aplicativo sea difícil de cambiar y/o mantener. La pérdida de reactividad supone pérdidas para el negocio.
Gestionar los riesgos del software
Manejar el RiesgoRiesgo de Delivery no sirve si el aplicativode Delivery
se comporta de forma imprevisible, falla o funciona fuera de lo esperado. Este riesgo se gestiona con procesos.
Riesgo
Riesgo de de PerfomancePerfomance y y RiesgoRiesgo de de OportunidadOportunidad
tienen que ver con el propio software (el producto -activo de la empresa) y necesitan una disciplina de gestión, herramientas y métodos adecuados.
Definir la calidad del software (1)
Functional Quality
Functional Quality – Mide lo que hace el software con
respecto a lo que se ha definido.
Non
Non--Functional Quality – Mide cómo de bien lo haceFunctional Quality
con respecto a lo previsto.
Structural Quality
Structural Quality – Mide cómo de bien lo seguirá
Definir la calidad del software (2)
Estas tres definiciones tienen que ver con el propio software (el producto) y no con el método con el cúal se ha definido y construido.
Las dos primeras se centran en el comportamiento visible del software, sin poder explicar ese comportamiento .
La calidad estructural (Structural Quality) mide cómo el producto se ha diseñado y codificado utilizando prácticas reconocidas en industria. Estas prácticas promocionan la seguridad, la fiabilidad y la mantenibilidad del software.
El reto de la calidad estructural del software
Los aplicativos modernos son capa, lenguaje y multi-plataforma. Su análisis tiene que ser global (holística), por lo que no se trata sólamente de revisar código.
Además de poder analizar muchas tecnologías y lenguajes, se debe de poder determinar las raíces de los problemas y reportar riesgos por tipos y niveles.
El reto fundamental de la calidad del software es que sea contextual. La calidad de un solo componente depende de su entorno local y global.
Analizar la calidad de un aplicativo moderno en el contexto de multiple conexiones con otros códigos, base de datos, middleware y APIs es muy complejo y solo puede realizarse de forma automatizada.
Teniendo en cuenta el sistema entero
Database
Capa de Gestión de datos
EJB – Hibernate - Ibatis
Databases Databases Files Files Web Services CICS Connector Aplicaciones empresariales
Herencia de las aplicaciones
Middleware Capa de Presentación Capa de Lógica de negocio Capa de Datos
CAST analiza seg
CAST analiza segúún este modelon este modelo
Aplicaciones Web / Cliente Servidor
ASP/JSP/VB/.NET
Lógica de aplicación
Java, C++, …
Frameworks Struts MVC, Spring
COBOL COBOL
CICS Monitor (Cobol) Tuxedo Monitor (C)
Batch Shell Scripts
Análisis de la calidad de software (ISO 9126 - 3) Transferencia Cambio Robustez Rendimiento Tamaño Nomenclatura Documentación Arquitectura Complejidad
Nomenclatura de los paquetes Nomenclatura de las clases Nomenclatura de la interfaz
Paquete de comentarios Clases de comentarios Métodos de comentarios Tamaño del paquete Tamaño de las clases (métodos) Tamaño de la interfaz Clase de complejidad (Inh. depth)
Clase de complejidad (Inh. width) Artefactos con llamadas recursivas Control de Flujos Mantenimiento Seguridad Prácticas de programación Archivo de conformidad Código muerto Acceso a los datos controlado Desestructurado Modularidad Encapsulación de la conformidad Código vacío Herencia Elementos de riesgo Elementos de coste A n a li z a m á s d e 8 0 0 e s p e c if ic a c io n e s d e a rq u it e c tu ra y l e n g u a je s d e c ó d ig o Factores de Salud Criterios
Subconjunto de métricas Calidad de la aplicación
Varios artefactos actualizando la misma tabla SQL Acoplamiento de distribución SQL de Compleja distribución
CISQ (Consortium for IT Software Quality)
Creado conjuntamente por SEI & OMG. CISQ objectivos clave :
Desarrollar un estandard computable para usar en la evaluación del software aplicativo por organizaciones IT.
Desarrollar un sistema de scoring utilizable en la negociación y la gestión de la venta,la adquisición y el mantenimiento de software aplicativo.
Miembros: Organizaciones con grandes departamentos IT, Integradores de Sistemas, Outsourcers, ISVs y vendedores de soluciones aplicativas.
Para resumir
El Riesgo de fallo del SI puede dañar seriamente la reputación y/o la rentabilidad de une empresa. Sin medir la calidad interna de los aplicativos, estos riegos pueden quedarse escondidos detrás de un reporting que no revela el peligro.
Una calidad aplicativa pobre puede crear problemas en el futuro que afectarán al negocio. En general estos problemas no se detectan durante la fase de pruebas.
Los aplicativos de negocio deben mejorar su calidad Bajo Alto Alto Calidad de Software Riesgo operacional Defense and Aerospace Software Business Applications Embedded Software 1980’s 1990’s 2000’s
Ejemplo de impacto sobre el riesgo operacional 0 4,000 8,000 12,000 16,000 20,000 R4 R5 R6 R7 0 100 200 300 400 500 600 700 800 900
New code level
Violations Added AT&T Code Defects C A S T V io la ti o n s A d d e d D e fe c ts A d d e d Releases
Integradores de Sistemas usan y recomiendan CAST
CSC AIC Services for Client value Creation
Como un agente de industrialización
Certificación de Calidad basada en la plataforma de CAST
Para el Desarrollo de Nuevo Negocio