Ads 468x60px

Featured Posts

lunes, 28 de mayo de 2012

ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE


Fundamentos de la calidad en el software
Los computadores están siendo usados en una amplia y creciente variedad de áreas de aplicación y su operación correcta es a menudo crítica para el éxito de los negocios y la seguridad humana.
Hoy en día programas altamente complejos controlan aspectos fundamentales de nuestras vidas, desde cuestiones mínimas como el funcionamiento de nuestro teléfono móvil hasta situaciones esenciales, como las constantes vitales de un enfermo. Desarrollar o seleccionar productos de software de alta calidad es por lo tanto un asunto de primera importancia. La calidad en el desarrollo y el mantenimiento del software se ha convertido hoy en día en uno de los principales objetivos estratégicos de las organizaciones, debido a que cada vez más, los procesos principales de las organizaciones – y su supervivencia - dependen de los sistemas informáticos para su buen funcionamiento
Parece claro que todas las aplicaciones que pueden tener el software deben ser productos de alta calidad: fáciles de usar, confiables y seguros, tan rápidos como necesite el cliente, baratos en relación con sus prestaciones, flexibles y fáciles de mantener y modificar. En cierto sentido no debe hacerse distinción entre construir un programa y fabricar cualquier otro bien de consumo Sin embargo la realidad nos muestra cómo estamos acostumbrados a buscar el certificado de calidad cuando adquirimos, por ejemplo, una lavadora, pero por otro lado, aceptamos que muchas aplicaciones que usamos no cumplan con mínimos requisitos de calidad exigibles a cualquier otra mercancía
La similitud no sólo alcanza a las características del producto, sino que cada vez más afecta a su proceso de producción; así pues se habla acerca del concepto de fábrica del software Además, en la industria, normas internacionales hablan acerca de que la especificación de gran amplitud y la evaluación de los productos de software son un factor clave para asegurar la calidad adecuada del software (ISO/IEC 9126-1:2001).
Otro de los conceptos que se maneja es el de Ingeniería del Software que incluye una serie de principios, metodologías, técnicas y herramientas para el desarrollo de software. El objetivo primordial de la ingeniería de software es producir un sistema, aplicación o producto de software de alta calidad.
Para lograr este objetivo, los ingenieros del software deben aplicar métodos efectivos junto con herramientas modernas dentro del contexto de un proceso maduro de desarrollo de software. Existen estudios y estadísticas que representan con claridad la problemática del desarrollo de software
            “Sólo el 51% de los proyectos de software tienen éxito”
            Standish Group, CHAOS Report, 2004
          Existe una mejora al revisar los datos de años anteriores, pues se han implantado prácticas de calidad de software, tales como la aplicación de programas de mejora de procesos
          La orientación adecuada consiste en partir de una metodología de desarrollo suficientemente contrastada y admitida, personalizada para la propia organización pero sin pérdida de la generalidad de la misma (lo que consiguen muchas personalizaciones es la pérdida de la eficiencia de la metodología).


Definición de calidad
Por lo anterior, se hace necesario de principio, definir qué es Calidad
Una definición es la siguiente:
         “Es la totalidad de las características de una entidad que dan soporte a su capacidad de satisfacer necesidades manifiestas e implícitas”.
ISO 8402:1994:
          La entidad relevante en nuestro caso es un producto de software.
          “Concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se espera de todo software desarrollado profesionalmente”.[Pressman98].

La definición anterior sirve además para hacer hincapié en tres aspectos:
         Los requisitos (requerimientos) de software se deben cumplir, en caso contrario, indican claramente la falta de calidad.
         Los estándares definen un conjunto de criterios de desarrollo que deben seguirse de manera explícita.
         Las características implícitas de calidad, a menudo no mencionadas, también deben ser cumplidas.
Un proceso de desarrollo de software determina quién debe hacer qué, cuándo y cómo.
Un proceso de software define la forma en que se organiza el trabajo de un equipo de desarrollo y otros grupos de apoyo.
Según la norma IEEE 1601 la calidad de un producto de software se define como el grado en que posee una combinación adecuada de determinadas características como son el rendimiento, la fiabilidad o la seguridad.
Como se puede observar, se puede considerar esta definición un tanto vaga debido a la subjetividad inherente en el término
Son las actividades que se realizan siguiendo métodos y técnicas para desarrollar un producto de software.
El proceso de desarrollo recibe como entrada requisitos nuevos o modificados y genera un sistema nuevo o modificado.

Evolución de  las propuestas de calidad
MacCall y otros en 1977, y Cavano y MacCall en 1978, fueron de los primeros que ofrecieron propuestas en este sentido. Según los autores, la calidad puede llegar a cuantificarse tan sólo mediante el análisis de un conjunto de factores .Estos factores se agrupan de acuerdo con las características operativas del software, su capacidad para aceptar cambios y su adaptabilidad a nuevos entornos
Los factores que considera esta propuesta están organizados según 3 grupos:
          Factores de Revisión
          Factores de Transición
          Factores de Operación
          Los Factores de Revisión incluyen:
          Flexibilidad
          Mantenibilidad
          Contestación
          Los Factores de Transición incluyen:
          Portabilidad
          Reusabilidad
          Interoperabilidad

          Los factores de Operación incluyen:
         Eficiencia
         Integridad
         Usabilidad
         Fiabilidad
         Corrección


Dado que en la mayoría de los casos es casi imposible realizar medidas directas de los mismos también definieron un conjunto de atributos de calidad que cuantificados subjetivamente entre 0 y 10 permiten valorar la calidad de un producto como una medida ponderada de esos valores.
Otros autores como Boehm y otros (1978), Grady y Caswell (1987) y la ISO (1991) siguieron los pasos de MacCall y Cavano y profundizaron en el conocimiento de los factores más comunes que influyen en la calidad del software.El resultado más significativo de esta primera generación de marcos de calidad fue la creación de un conjunto de catálogos jerárquicos de factores de calidad, así como una primera aproximación sistemática al proceso de evaluación de la misma, aún cuando tuviese una fuerte componente subjetiva. Por desgracia, ninguna de estas propuestas deslindaba claramente el concepto de atributo de calidad (medidas) y requisito de calidad (restricciones sobre estas medidas), por lo que en muchas ocasiones resultaban confusos.
Más adelante, Gilb (1998), Keller y otros (1995) y Olsina (1999), profundizaron en el problema y llegaron a la conclusión de que no es posible determinar un conjunto de atributos universalmente válido, por lo que sus marcos estaban basados en la creación de catálogos ad hoc que en algunas ocasiones se obtenían como concreciones de normas internacionales. Además, se empezó a separar claramente entre ofertas y demandas de calidad, aunque el concepto de atributo, por desgracia, aún se confundía con el de requisito. Una limitación común a todos los marcos de segunda generación es la falta de lenguajes formales para expresar la calidad.
Estos marcos proponen plantillas, técnicas o métodos para trabajar con ella, pero nunca un lenguaje dotado de una semántica rigurosamente definida que permita construir herramientas útiles a su alrededor.Frølud y Koistinen, Franch (en 1998) y Burgués y Franch (2000), entre otros, son los abanderados de una tercera generación de marcos de calidad en los que el objetivo ha sido proporcionar estos lenguajes
Existen también hoy en día propuestas para una posible cuarta generación orientada principalmente a la calidad en aplicaciones en servicios web utilizados en portales y comercio electrónico, tales como la de Ruiz-Cortés (2000) y Corchuelo y otros (2002).