22/05/2013

¿Cómo medir la calidad en software?

¿Cómo medir la calidad en software?

El concepto de calidad encuentra muchas definiciones posibles. La más tradicional se refiere al «conjunto de cualidades de una persona o cosa». Sin embargo, las definiciones vinculadas a las actividades industriales hablan de la medida en que un producto o servicio satisface los requerimientos de una función dada. De todas formas, el concepto es subjetivo. Por ejemplo, un producto que cumple con las expectativas de un usuario puede haber sido elaborado sin conformidad con ciertas normas de fabricación. Por eso, la calidad siempre depende del punto de vista, pero, en general, involucra el cumplimiento de un conjunto de exigencias. Otros aspectos a tener cuenta pueden ser la adecuación al uso y la ausencia de deficiencias.

Entonces, ¿qué es la calidad de un producto software? Existen dos enfoques posibles:

  • Calidad funcional. Refleja en qué medida el software cumple con o se ajusta a un determinado diseño, basado en requerimientos funcionales. Éstos abarcan las actividades del software que involucran procesamiento de datos de entrada.
  • Calidad estructural. Refleja en qué medida el software cumple con los requerimientos no funcionales, como rendimiento, capacidad de mantenimiento o escalabilidad.

El estándar ISO/IEC 9126 presenta la calidad del software como un conjunto de seis características globales:

  • Funcionalidad. Las funciones del software son aquellas que buscan satisfacer las necesidades del usuario.
  • Confiabilidad. La capacidad del software de mantener su rendimiento bajo ciertas condiciones durante cierto período de tiempo.
  • Usabilidad. Basada en el esfuerzo necesario para utilizar el software por parte de un grupo de usuarios.
  • Eficiencia. Basada en la relación entre el nivel de rendimiento del software y el volumen de recursos utilizado, bajo ciertas condiciones.
  • Capacidad de mantenimiento. Basada en el esfuerzo necesario para realizar modificaciones específicas.
  • Portabilidad. Basada en la capacidad del software para ser transferido de un entorno a otro.

El cuidado de estos aspectos durante todo el ciclo de vida del software redundará en productos que no sólo satisfarán las exigencias del usuario, sino que además serán más fáciles de mantener y modificar una vez realizada la entrega al cliente.

0

angularjs aplicaciones mobile behavioral targeting Botones Call-to-action breadcrumbs breadcrumbs web búsqueda de personal búsqueda facetada Call-to-action buttons Client-side cliente-destacado cms a medida coding comercio electrónico content marketing conventions CSS3 PIE cuanto debe pesar un sitio data-driven web design Datos estructurados Defacement Denegación de servicio Desarrollar una aplicación web desventajas de PhoneGap diseñar newsletters diseño web diseño web argentina diseño web esqueuomórfico Diseño web responsive Diseño web responsivo diseño web santa fe diseño web Smart TV diseño web televisores DOM desde PHP enlaces rotos filtros de búsqueda flash flat web design fragmentos enriquecidos función de autocompletar futuro de la realidad aumentada html HTML5 html5shiv inbound marketing Initializr interfaces Web para televisores javascript jobs jQuery Mobile Mapbox maquetado html/css maquetador web maquetando con Initializr masonry layout menú de navegación menú desplegable Metodologías ágiles Modernizr MVC Navegación por teclado oferta laboral OpenStreetMap Paper js Paper js framework personas Phishing plan de QA Polyfills polymer portfolio-destacados portfolio-inicio Portfolios Destacados programacion de CMS Programadores WordPress página de contacto página de error 404 que es Backbone.js Realidad aumentada Resultados instantáneos server-side skeuomorphic design sliders y usabilidad soporte Internet Explorer Storytelling Underscores usabilidad usabilidad buscadores user-centered design ux velocidad de carga web Vendor prefixes ventajas jQuery Mobile Ventanas integradas versiones antiguas de Internet Explorer WAI-ARIA web components web imprimible Web Semántica WordPress para ecommerce