En el contexto de la ingeniería de software , la calidad del software se refiere a dos nociones relacionadas pero distintas: [ 1 ]
- La calidad funcional del software refleja qué tan bien cumple o se ajusta a un diseño dado, basado en requisitos o especificaciones funcionales . [ 2 ] Ese atributo también puede describirse como la idoneidad para el propósito de un software o cómo se compara con los competidores en el mercado como un producto valioso . [ 3 ] Es el grado en que se produjo el software correcto .
- La calidad estructural del software se refiere a cómo cumple con los requisitos no funcionales que respaldan la entrega de los requisitos funcionales, como la robustez o la mantenibilidad. Tiene mucho más que ver con el grado en que el software funciona según lo previsto .
Muchos aspectos de la calidad estructural solo pueden evaluarse estáticamente mediante el análisis de la estructura interna del software, su código fuente (véase Métricas de software ), [ 4 ] a nivel de unidad y a nivel de sistema (a veces denominado prueba de extremo a extremo [ 5 ] ), que es, en efecto, cómo su arquitectura se adhiere a los principios sólidos de arquitectura de software descritos en un documento sobre el tema del Object Management Group (OMG). [ 6 ]
Algunas cualidades estructurales, como la usabilidad , solo pueden evaluarse de forma dinámica (los usuarios u otras personas que actúan en su nombre interactúan con el software o, al menos, con algún prototipo o implementación parcial; incluso la interacción con una versión simulada hecha de cartón representa una prueba dinámica, ya que dicha versión puede considerarse un prototipo). Otros aspectos, como la fiabilidad, pueden involucrar no solo el software sino también el hardware subyacente; por lo tanto, pueden evaluarse tanto de forma estática como dinámica ( prueba de estrés ).
El uso de pruebas automatizadas y funciones de aptitud puede ayudar a mantener algunos de los atributos relacionados con la calidad. [ 7 ]
La calidad funcional se evalúa normalmente de forma dinámica, pero también es posible utilizar pruebas estáticas (como las revisiones de software ).
Históricamente, la estructura, clasificación y terminología de los atributos y métricas aplicables a la gestión de la calidad del software se han derivado o extraído de la norma ISO 9126 y la posterior norma ISO/IEC 25000. [ 8 ] Basándose en estos modelos (véase Modelos), el Consorcio para la Calidad del Software de TI (CISQ) ha definido cinco características estructurales deseables principales necesarias para que un software proporcione valor empresarial : [ 9 ] Fiabilidad, Eficiencia, Seguridad, Mantenibilidad y Tamaño (adecuado). [ 10 ] [ 11 ] [ 12 ]
La medición de la calidad del software cuantifica en qué medida un programa o sistema de software se clasifica en cada una de estas cinco dimensiones. Una medida agregada de la calidad del software puede calcularse mediante un esquema de puntuación cualitativo o cuantitativo, o una combinación de ambos, y luego un sistema de ponderación que refleje las prioridades. Esta visión de la calidad del software como un continuo lineal se complementa con el análisis de los "errores de programación críticos" que, en circunstancias específicas, pueden provocar fallos catastróficos o degradaciones del rendimiento que hacen que un sistema determinado sea inadecuado para su uso, independientemente de la clasificación basada en mediciones agregadas. Dichos errores de programación encontrados a nivel de sistema representan hasta el 90 por ciento de los problemas de producción, mientras que a nivel de unidad, aunque mucho más numerosos, los errores de programación representan menos del 10 por ciento de los problemas de producción (véase también la regla del noventa y noventa ). En consecuencia, la calidad del código sin el contexto de todo el sistema, como la describió W. Edwards Deming , tiene un valor limitado.
Para visualizar, explorar, analizar y comunicar las mediciones de calidad del software, los conceptos y técnicas de visualización de la información proporcionan medios visuales e interactivos útiles, en particular, cuando se deben relacionar varias mediciones de calidad del software entre sí o con componentes de un software o sistema. Por ejemplo, los mapas de software representan un enfoque especializado que "puede expresar y combinar información sobre el desarrollo de software, la calidad del software y la dinámica del sistema". [ 13 ]
La calidad del software también juega un papel en la fase de lanzamiento de un proyecto de software. Específicamente, la calidad y el establecimiento de los procesos de lanzamiento (incluidos los procesos de parches ), [ 14 ] [ 15 ] la gestión de la configuración [ 16 ] son partes importantes de un proceso general de ingeniería de software. [ 17 ] [ 18 ] [ 19 ]
Motivación
La calidad del software está motivada por al menos dos perspectivas principales:
- Gestión de riesgos : Los fallos de software han causado más que inconvenientes. Los errores de software pueden causar muertes humanas (véase, por ejemplo: Lista de errores de software ). Las causas han abarcado desde interfaces de usuario mal diseñadas hasta errores de programación directos , [ 20 ] [ 21 ] [ 22 ] véase, por ejemplo, el caso del Boeing 737 o los casos de aceleración no intencionada [ 23 ] [ 24 ] o los casos del Therac-25 . [ 25 ] Esto dio lugar a requisitos para el desarrollo de algunos tipos de software, en particular e históricamente para el software integrado en dispositivos médicos y otros dispositivos que regulan infraestructuras críticas: "[Los ingenieros que escriben software integrado] ven programas Java que se detienen durante un tercio de segundo para realizar la recolección de basura y actualizar la interfaz de usuario, y se imaginan aviones cayendo del cielo". [ 26 ] En los Estados Unidos, dentro de la Administración Federal de Aviación (FAA), el Servicio de Certificación de Aeronaves de la FAA proporciona programas de software, políticas, orientación y capacitación, centrándose en el software y el hardware electrónico complejo que tiene un efecto en el producto a bordo (un "producto" es una aeronave, un motor o una hélice). [ 27 ] Las normas de certificación tales como DO-178C , ISO 26262 , IEC 62304 , etc. proporcionan orientación.
- Gestión de costes : Como en cualquier otro campo de la ingeniería, un producto o servicio de software regido por una buena calidad de software cuesta menos de mantener, es más fácil de entender y puede cambiar de forma más rentable en respuesta a necesidades empresariales urgentes. [ 28 ] Los datos del sector demuestran que la mala calidad estructural de las aplicaciones en las aplicaciones empresariales centrales (como la planificación de recursos empresariales (ERP), la gestión de relaciones con el cliente (CRM) o los grandes sistemas de procesamiento de transacciones en los servicios financieros) da lugar a sobrecostes, retrasos y crea desperdicios en forma de retrabajo (véase Muda (término japonés) ). [ 29 ] [ 30 ] [ 31 ] Además, la mala calidad estructural está fuertemente correlacionada con interrupciones empresariales de alto impacto debido a datos corruptos, caídas de aplicaciones, fallos de seguridad y problemas de rendimiento. [ 32 ]
- Los informes de CISQ sobre el costo de las estimaciones de mala calidad tienen un impacto de:
- El informe de IBM sobre el costo de una violación de datos de 2020 estima que los costos globales promedio de una violación de datos son: [ 35 ]
- 3,86 millones de dólares
Definiciones
ISO
La calidad del software es la "capacidad de un producto de software para cumplir con los requisitos". [ 36 ] [ 37 ] mientras que para otros puede ser sinónimo de creación de valor para el cliente [ 38 ] [ 39 ] o incluso nivel de defectos. [ 40 ] Las mediciones de la calidad del software se pueden dividir en tres partes: calidad del proceso, calidad del producto que incluye propiedades internas y externas y, por último, calidad en uso, que es el efecto del software. [ 41 ]
ASQ
ASQ utiliza la siguiente definición: La calidad del software describe los atributos deseables de los productos de software. Existen dos enfoques principales: la gestión de defectos y los atributos de calidad. [ 42 ]
NIST
La garantía de software (SA) abarca tanto la propiedad como el proceso para lograrla: [ 43 ]
- Confianza justificada en que el software está libre de vulnerabilidades, ya sean diseñadas intencionalmente en el software o insertadas accidentalmente en cualquier momento durante su ciclo de vida, y que el software funciona de la manera prevista.
- El conjunto planificado y sistemático de actividades que garantizan que los procesos y productos del ciclo de vida del software se ajusten a los requisitos, estándares y procedimientos.
PMI
La Guía PMBOK del Project Management Institute, en su sección "Extensión de Software", define no la "calidad del software" en sí misma, sino el Aseguramiento de la Calidad del Software (ACS) como "un proceso continuo que audita otros procesos de software para garantizar que se sigan (incluye, por ejemplo, un plan de gestión de la calidad del software)". Por otro lado, el Control de Calidad del Software (CCS) significa "cuidar la aplicación de métodos, herramientas y técnicas para garantizar que los productos de trabajo cumplan con los requisitos de calidad de un software en desarrollo o modificación". [ 44 ]
Otros aspectos generales e históricos
La primera definición de calidad registrada en la historia proviene de Shewhart a principios del siglo XX: «Hay dos aspectos comunes de la calidad: uno de ellos tiene que ver con la consideración de la calidad de una cosa como una realidad objetiva independiente de la existencia del hombre. El otro tiene que ver con lo que pensamos, sentimos o percibimos como resultado de la realidad objetiva. En otras palabras, existe un lado subjetivo de la calidad». [ 45 ]
Kitchenham y Pfleeger, informando además sobre las enseñanzas de David Garvin, identifican cinco perspectivas diferentes sobre la calidad: [ 46 ] [ 47 ]
- La perspectiva trascendental aborda el aspecto metafísico de la calidad. Desde esta perspectiva, la calidad es «algo hacia lo que aspiramos como ideal, pero que quizás nunca logremos implementar por completo». [ 48 ] Es difícil definirla, pero se asemeja a lo que un juez federal comentó una vez sobre la obscenidad: «La reconozco cuando la veo». [ 49 ]
- La perspectiva del usuario se centra en la idoneidad del producto para un contexto de uso determinado. Mientras que la visión trascendental es etérea, la visión del usuario es más concreta, basada en las características del producto que satisfacen las necesidades del usuario. [ 48 ]
- La perspectiva de fabricación representa la calidad como conformidad con los requisitos. Este aspecto de la calidad se destaca en estándares como ISO 9001, que define la calidad como "el grado en que un conjunto de características inherentes cumple con los requisitos" (ISO/IEC 9001 [ 50 ] ).
- La perspectiva del producto implica que la calidad puede apreciarse midiendo las características inherentes del producto.
- La perspectiva final de la calidad se basa en el valor. [ 38 ] Esta perspectiva reconoce que las diferentes perspectivas de la calidad pueden tener diferente importancia o valor para las distintas partes interesadas.
El problema inherente a los intentos de definir la calidad de un producto, casi cualquier producto, fue planteado por el maestro Walter A. Shewhart. La dificultad para definir la calidad radica en traducir las necesidades futuras del usuario en características medibles, de modo que se pueda diseñar y fabricar un producto que brinde satisfacción a un precio que el usuario esté dispuesto a pagar. Esto no es fácil, y tan pronto como uno se siente relativamente exitoso en el empeño, descubre que las necesidades del consumidor han cambiado, han surgido competidores, etc. [ 51 ]
La calidad es una determinación del cliente, no del ingeniero, ni del departamento de marketing, ni de la dirección general. Se basa en la experiencia real del cliente con el producto o servicio, medida en función de sus requisitos —explícitos o implícitos, conscientes o meramente intuidos, técnicamente operativos o totalmente subjetivos— y siempre representa un objetivo cambiante en un mercado competitivo. [ 52 ]
La palabra calidad tiene múltiples significados. Dos de ellos predominan en su uso: 1. La calidad consiste en aquellas características del producto que satisfacen las necesidades de los clientes y, por lo tanto, les brindan satisfacción. 2. La calidad consiste en la ausencia de deficiencias. Sin embargo, en un manual como este, resulta conveniente estandarizar una definición breve de la palabra calidad como "idoneidad para el uso". [ 53 ]
Tom DeMarco propuso que "la calidad de un producto depende de cuánto contribuye a mejorar el mundo". DeMarco, Tom (1999). "La gestión puede hacer que la calidad sea (im)posible". Cutter IT Summit.{{cite web}}: Faltante o vacío |url=( ayuda ) Esto puede interpretarse como que la calidad funcional y la satisfacción del usuario son más importantes que la calidad estructural a la hora de determinar la calidad del software.
Otra definición, acuñada por Gerald Weinberg en Quality Software Management: Systems Thinking, es "La calidad es valor para alguna persona". [ 54 ] [ 55 ]
Otros significados y controversias
Uno de los desafíos al definir la calidad es que "todos sienten que la entienden" [ 56 ] y otras definiciones de calidad del software podrían basarse en extender las diversas descripciones del concepto de calidad utilizadas en los negocios.
La calidad del software también suele confundirse con el aseguramiento de la calidad o la gestión de la resolución de problemas [ 57 ] o el control de calidad [ 58 ] o DevOps . Si bien se superpone con estas áreas (véanse también las definiciones del PMI), es distintiva, ya que no se centra únicamente en las pruebas, sino también en los procesos, la gestión, las mejoras, las evaluaciones, etc. [ 58 ].
La calidad del software es difícil de medir de una manera que pueda aplicarse prácticamente a la toma de decisiones de los desarrolladores. Esta dificultad surge en parte porque muchos atributos de calidad, como la complejidad o la mantenibilidad, son multidimensionales y no pueden ser capturados completamente por una sola métrica. [ 59 ]
Medición
Aunque los conceptos presentados en esta sección son aplicables tanto a la calidad estructural como a la funcional del software, la medición de esta última se realiza esencialmente mediante pruebas de software . [ 60 ] Las pruebas no son suficientes: según un estudio, "los programadores individuales tienen una eficiencia inferior al 50 % a la hora de encontrar errores en su propio software. Y la mayoría de las formas de prueba solo tienen una eficiencia del 35 %. Esto dificulta la determinación de la calidad [del software]". [ 61 ]
Introducción

La medición de la calidad del software consiste en cuantificar hasta qué punto un sistema o software posee características deseables. Esto puede realizarse mediante métodos cualitativos, cuantitativos o una combinación de ambos. En ambos casos, para cada característica deseable, existe un conjunto de atributos medibles cuya presencia en un software o sistema tiende a estar correlacionada y asociada con dicha característica. Por ejemplo, un atributo asociado con la portabilidad es el número de instrucciones dependientes del destino en un programa. Más precisamente, utilizando el enfoque de Despliegue de la Función de Calidad , estos atributos medibles son los "cómos" que deben aplicarse para posibilitar los "qués" de la definición de Calidad del Software mencionada anteriormente.
La estructura, clasificación y terminología de los atributos y métricas aplicables a la gestión de la calidad del software se han derivado o extraído de la norma ISO 9126-3 y del modelo de calidad ISO/IEC 25000:2005. El enfoque principal se centra en la calidad estructural interna. Se han creado subcategorías para abordar áreas específicas, como la arquitectura de las aplicaciones empresariales y características técnicas como el acceso y la manipulación de datos o el concepto de transacciones.
El árbol de dependencia entre las características de calidad del software y sus atributos medibles se representa en el diagrama de la derecha, donde cada una de las 5 características que importan para el usuario (derecha) o propietario del sistema empresarial depende de atributos medibles (izquierda):
- Prácticas de arquitectura de aplicaciones
- Prácticas de codificación
- Complejidad de la aplicación
- Documentación
- Portabilidad
- Volumen técnico y funcional
Las correlaciones entre errores de programación y defectos de producción revelan que los errores básicos de código representan el 92 por ciento del total de errores en el código fuente. Estos numerosos problemas a nivel de código finalmente representan solo el 10 por ciento de los defectos en producción. Las malas prácticas de ingeniería de software a nivel de arquitectura representan solo el 8 por ciento del total de defectos, pero consumen más de la mitad del esfuerzo dedicado a corregir problemas y dan lugar al 90 por ciento de los graves problemas de fiabilidad, seguridad y eficiencia en producción. [ 62 ] [ 63 ]
Análisis basado en códigos
Muchas de las medidas de software existentes cuentan los elementos estructurales de la aplicación que resultan del análisis del código fuente para tales instrucciones individuales [ 64 ] tokens [ 65 ] estructuras de control ( Complejidad ) y objetos. [ 66 ]
La medición de la calidad del software consiste en cuantificar en qué medida un sistema o software cumple con estas dimensiones. El análisis puede realizarse mediante un enfoque cualitativo, cuantitativo o una combinación de ambos para proporcionar una visión global [utilizando, por ejemplo, promedios ponderados que reflejen la importancia relativa entre los factores medidos].
Esta visión de la calidad del software en un continuo lineal debe complementarse con la identificación de errores de programación críticos discretos . Estas vulnerabilidades pueden no provocar fallos en un caso de prueba, pero son el resultado de malas prácticas que, en determinadas circunstancias, pueden provocar interrupciones catastróficas, degradación del rendimiento, brechas de seguridad, datos corruptos y un sinfín de otros problemas [ 67 ] que hacen que un sistema determinado sea de facto inadecuado para su uso, independientemente de su calificación basada en mediciones agregadas. Un ejemplo conocido de vulnerabilidad es la Enumeración de Debilidades Comunes [ 68 ] , un repositorio de vulnerabilidades en el código fuente que exponen las aplicaciones a brechas de seguridad.
La medición de las características críticas de la aplicación implica medir los atributos estructurales de la arquitectura, la codificación y la documentación en línea de la aplicación, como se muestra en la imagen superior. Por lo tanto, cada característica se ve afectada por atributos en numerosos niveles de abstracción en la aplicación, y todos los cuales deben incluirse en el cálculo de la medida de la característica para que sea un predictor valioso de los resultados de calidad que afectan al negocio. El enfoque por capas para calcular las medidas de las características que se muestra en la figura superior fue propuesto por primera vez por Boehm y sus colegas en TRW (Boehm, 1978) [ 69 ] y es el enfoque adoptado en las normas ISO 9126 y 25000. Estos atributos pueden medirse a partir de los resultados analizados de un análisis estático del código fuente de la aplicación. Incluso las características dinámicas de las aplicaciones, como la fiabilidad y la eficiencia del rendimiento, tienen sus raíces causales en la estructura estática de la aplicación.
El análisis y la medición de la calidad estructural se realizan mediante el análisis del código fuente , la arquitectura , el marco de software y el esquema de la base de datos , en relación con los principios y estándares que, en conjunto, definen la arquitectura conceptual y lógica de un sistema. Esto se diferencia del análisis básico, local y a nivel de componentes que suelen realizar las herramientas de desarrollo , las cuales se centran principalmente en aspectos de implementación y son cruciales durante las actividades de depuración y prueba .
Fiabilidad
Las causas fundamentales de la baja fiabilidad radican en una combinación de incumplimiento de las buenas prácticas de arquitectura y codificación. Este incumplimiento puede detectarse midiendo los atributos de calidad estáticos de una aplicación. Evaluar los atributos estáticos que determinan la fiabilidad de una aplicación permite estimar el nivel de riesgo empresarial y la probabilidad de fallos y defectos que la aplicación pueda experimentar una vez puesta en funcionamiento.
Para evaluar la fiabilidad es necesario comprobar, como mínimo, las siguientes buenas prácticas de ingeniería de software y atributos técnicos:
- Prácticas de arquitectura de aplicaciones
- Prácticas de codificación
- Complejidad de los algoritmos
- Complejidad de las prácticas de programación
- Cumplimiento de las mejores prácticas de programación orientada a objetos y estructurada (cuando corresponda).
- Índice de reutilización de componentes o patrones
- Programación sucia
- Gestión de errores y excepciones (para todas las capas: interfaz gráfica de usuario, lógica y datos)
- Cumplimiento del diseño multicapa
- gestión de límites de recursos
- El software evita patrones que puedan dar lugar a comportamientos inesperados.
- El software gestiona la integridad y la coherencia de los datos.
- Nivel de complejidad de la transacción
En función de la arquitectura de la aplicación y de los componentes de terceros utilizados (como bibliotecas o marcos de trabajo externos), se deben definir comprobaciones personalizadas siguiendo las pautas establecidas en la lista de mejores prácticas anterior para garantizar una mejor evaluación de la fiabilidad del software entregado.
Eficiencia
Al igual que con la fiabilidad, las causas de la ineficiencia en el rendimiento suelen residir en el incumplimiento de las buenas prácticas de arquitectura y codificación, las cuales pueden detectarse midiendo los atributos de calidad estática de una aplicación. Estos atributos estáticos predicen posibles cuellos de botella en el rendimiento operativo y futuros problemas de escalabilidad, especialmente en aplicaciones que requieren una alta velocidad de ejecución para gestionar algoritmos complejos o grandes volúmenes de datos.
Para evaluar la eficiencia del rendimiento es necesario comprobar, como mínimo, las siguientes mejores prácticas de ingeniería de software y atributos técnicos:
- Prácticas de arquitectura de aplicaciones
- Interacciones apropiadas con recursos costosos y/o remotos
- Rendimiento del acceso a los datos y gestión de datos
- Gestión de memoria, red y espacio en disco
- Cumplimiento de las prácticas de codificación [ 70 ] ( Mejores prácticas de codificación )
Seguridad
La calidad del software incluye la seguridad del software . [ 71 ] Muchas vulnerabilidades de seguridad resultan de prácticas deficientes de codificación y arquitectura, como la inyección SQL o el cross-site scripting. [ 72 ] [ 73 ] Estas están bien documentadas en listas mantenidas por CWE, [ 74 ] y el SEI/Computer Emergency Center (CERT) de la Universidad Carnegie Mellon. [ 70 ]
Para evaluar la seguridad es necesario comprobar, como mínimo, las siguientes buenas prácticas de ingeniería de software y atributos técnicos:
- Implementación y gestión de un proceso de desarrollo que tenga en cuenta la seguridad y que mejore su resistencia, por ejemplo, el Ciclo de vida de desarrollo seguro (Microsoft) o el Marco de ingeniería segura de IBM. [ 75 ]
- Prácticas de arquitectura de aplicaciones seguras [ 76 ] [ 77 ]
- Cumplimiento del diseño multicapa
- Mejores prácticas de seguridad (validación de entrada, inyección SQL, secuencias de comandos entre sitios, control de acceso, etc.) [ 78 ] [ 79 ]
- Prácticas de programación seguras y buenas [ 70 ]
- Manejo de errores y excepciones
Mantenibilidad
La mantenibilidad incluye conceptos como modularidad , comprensibilidad, modificabilidad, capacidad de prueba, reutilización y transferibilidad entre equipos de desarrollo. Estos no se manifiestan como problemas críticos a nivel de código. Más bien, una mala mantenibilidad suele ser el resultado de miles de infracciones menores a las buenas prácticas de documentación, estrategias para evitar la complejidad y prácticas básicas de programación que marcan la diferencia entre un código limpio y fácil de leer y un código desorganizado y difícil de leer. [ 80 ]
Para evaluar la mantenibilidad es necesario comprobar las siguientes buenas prácticas de ingeniería de software y atributos técnicos:
- Prácticas de arquitectura de aplicaciones
- Documentación de arquitectura, programas y código integrada en el código fuente.
- legibilidad del código
- El código huele mal
- Nivel de complejidad de las transacciones
- Complejidad de los algoritmos
- Complejidad de las prácticas de programación
- Cumplimiento de las mejores prácticas de programación orientada a objetos y estructurada (cuando corresponda).
- Índice de reutilización de componentes o patrones
- Nivel controlado de codificación dinámica
- Relación de acoplamiento
- Programación sucia
- Documentación
- Independencia de hardware, sistema operativo, middleware, componentes de software y base de datos
- Cumplimiento del diseño multicapa
- Portabilidad
- Prácticas de programación (a nivel de código)
- Se redujo el código y las funciones duplicadas.
- Organización y limpieza de los archivos de código fuente
La mantenibilidad está estrechamente relacionada con el concepto de deuda técnica de Ward Cunningham , que es una expresión de los costos resultantes de la falta de mantenibilidad. Las razones por las que la mantenibilidad es baja pueden clasificarse como imprudentes frente a prudentes y deliberadas frente a inadvertidas, [ 81 ] [ 82 ] y a menudo tienen su origen en la incapacidad de los desarrolladores, la falta de tiempo y objetivos, su descuido y las discrepancias en el costo de creación y los beneficios de la documentación y, en particular, del código fuente mantenible . [ 83 ]
Tamaño
Para medir el tamaño del software, es necesario recopilar correctamente todo el código fuente, incluidos los scripts de estructura de la base de datos, el código fuente de manipulación de datos, los encabezados de los componentes, los archivos de configuración, etc. Existen esencialmente dos tipos de tamaños de software que se pueden medir: el tamaño técnico (huella) y el tamaño funcional.
- Existen varios métodos de dimensionamiento técnico de software que han sido ampliamente descritos. El método de dimensionamiento técnico más común es el número de líneas de código (#LOC) por tecnología, número de archivos, funciones, clases, tablas, etc., a partir de los cuales se pueden calcular los puntos de función de retroceso;
- El método más común para medir el tamaño funcional es el análisis de puntos de función . Este análisis mide el tamaño del software desde la perspectiva del usuario. El dimensionamiento de puntos de función se basa en los requisitos del usuario y proporciona una representación precisa tanto del tamaño para el desarrollador/estimador como del valor (funcionalidad a entregar), reflejando la funcionalidad empresarial que se ofrece al cliente. El método incluye la identificación y ponderación de las entradas, salidas y almacenes de datos reconocibles por el usuario. El valor del tamaño resultante se puede utilizar junto con diversas métricas para cuantificar y evaluar la entrega y el rendimiento del software (coste de desarrollo por punto de función; defectos entregados por punto de función; puntos de función por mes de personal).
El estándar de dimensionamiento de análisis de puntos de función cuenta con el respaldo del Grupo Internacional de Usuarios de Puntos de Función ( IFPUG ). Puede aplicarse en las primeras etapas del ciclo de vida del desarrollo de software y, a diferencia del método Backfiring, que resulta algo impreciso, no depende de las líneas de código. Este método es independiente de la tecnología y puede utilizarse para análisis comparativos entre organizaciones e industrias.
Desde la creación del Análisis de Puntos de Función, han surgido diversas variantes y la familia de técnicas de dimensionamiento funcional se ha ampliado para incluir medidas como COSMIC, NESMA, Puntos de Casos de Uso, FP Lite, FP Tempranos y Rápidos, y más recientemente, Puntos de Historia. El Análisis de Puntos de Función cuenta con un historial de precisión estadística y se ha utilizado como una unidad de medida común en numerosos proyectos de gestión del desarrollo de aplicaciones (ADM) o subcontratación, sirviendo como la "moneda" con la que se prestan los servicios y se mide el rendimiento.
Una limitación común de la metodología de Puntos de Función es que se trata de un proceso manual, lo que puede resultar laborioso y costoso en iniciativas a gran escala, como el desarrollo de aplicaciones o la subcontratación. Este aspecto negativo de la metodología podría ser lo que motivó a los líderes de TI del sector a formar el Consorcio para la Calidad del Software de TI, centrado en introducir un estándar de métricas computables para automatizar la medición del tamaño del software, mientras que el IFPUG sigue promoviendo un enfoque manual, ya que la mayor parte de su actividad se basa en las certificaciones de contadores de puntos de función.
CISQ define el dimensionamiento como la estimación del tamaño del software para respaldar la estimación de costos, el seguimiento del progreso u otras actividades relacionadas con la gestión de proyectos de software. Se utilizan dos estándares: Puntos de Función Automatizados para medir el tamaño funcional del software y Puntos de Mejora Automatizados para medir el tamaño del código funcional y no funcional en una sola medida. [ 84 ]
Identificación de errores de programación críticos
Los errores críticos de programación son malas prácticas específicas de arquitectura y/o codificación que resultan en el mayor riesgo de interrupción del negocio, ya sea inmediato o a largo plazo. [ 85 ]
Estas prácticas suelen estar relacionadas con la tecnología y dependen en gran medida del contexto, los objetivos comerciales y los riesgos. Algunos consideran importante respetar las convenciones de nomenclatura, mientras que otros, como quienes preparan el terreno para una transferencia de conocimiento, lo consideran fundamental.
Los errores críticos de programación también pueden clasificarse según las características de CISQ. Ejemplo básico a continuación:
- Fiabilidad
- Evite patrones de software que puedan provocar comportamientos inesperados ( variables no inicializadas , punteros nulos, etc.).
- Los métodos, procedimientos y funciones que realizan Inserciones, Actualizaciones, Eliminaciones, Creaciones de Tablas o Selecciones deben incluir gestión de errores.
- Las funciones multihilo deben ser seguras para subprocesos; por ejemplo, las clases de acción de servlets o Struts no deben tener campos estáticos de instancia/no finales.
- Eficiencia
- Garantizar la centralización de las solicitudes de los clientes (entrantes y de datos) para reducir el tráfico de la red.
- Evite las consultas SQL que no utilicen un índice contra tablas grandes en un bucle.
- Seguridad
- Evite campos en las clases de servlet que no sean estáticos finales.
- Evite el acceso a los datos sin incluir la gestión de errores.
- Verifique los códigos de retorno de control e implemente mecanismos de manejo de errores.
- Asegúrese de validar las entradas para evitar vulnerabilidades de secuencias de comandos entre sitios o inyecciones SQL.
- Mantenibilidad
- Se deben evitar los árboles de herencia profundos y el anidamiento para mejorar la comprensibilidad.
- Los módulos deben estar débilmente acoplados (distribución, intermediarios) para evitar la propagación de modificaciones.
- Imponer convenciones de nomenclatura homogéneas
Modelos de calidad operacionalizados
Las propuestas más recientes para modelos de calidad, como Squale y Quamoco [ 86 ], promueven la integración directa de la definición y la medición de los atributos de calidad. Al desglosar los atributos de calidad o incluso definir capas adicionales, los atributos complejos y abstractos (como la fiabilidad o la mantenibilidad) se vuelven más manejables y medibles. Estos modelos de calidad se han aplicado en contextos industriales, pero no han tenido una adopción generalizada.
Véase también
- Accesibilidad
- Disponibilidad
- Mejores prácticas de codificación
- Convenciones de codificación
- Cohesión y acoplamiento
- Error informático
- Complejidad ciclomática
- Criticidad del defecto
- Confianza
- GQM
- ISO/IEC 9126
- Mejora de procesos de software y determinación de capacidades - ISO/IEC 15504
- Estilo de programación
- Calidad : control de calidad , gestión de calidad total .
- Gestión de requisitos
- Alcance (gestión de proyectos)
- Seguridad
- Ingeniería de seguridad
- Arquitectura de software
- Error de software
- garantía de calidad del software
- Control de calidad del software
- Métricas de software
- Reutilización de software
- Estándar de software
- Pruebas de software
- Análisis estático de programas
- Capacidad de prueba
Lecturas adicionales
- Directrices de calidad del sistema operativo Android , incluyendo listas de verificación para la interfaz de usuario, la seguridad, etc. Julio de 2021.
- Asociación de Gestores Marítimos en Tecnologías de la Información y las Comunicaciones (AMMITEC). Directrices de calidad del software marítimo . Septiembre de 2017.
- Capers Jones y Olivier Bonsignour, «La economía de la calidad del software», Addison-Wesley Professional, 1.ª edición, 31 de diciembre de 2011, ISBN 978-0-13-258220-9
- CAT Lab - Laboratorio de herramientas de análisis de código del CNES (en GitHub)
- Girish Suryanarayana, ¿Proceso de software versus calidad del diseño: tira y afloja? [ 87 ]
- Ho-Won Jung, Seung-Gweon Kim y Chang-Sin Chung. Medición de la calidad de los productos de software: Un estudio de la norma ISO/IEC 9126. IEEE Software , 21(5):10–13, septiembre/octubre de 2004.
- Organización Internacional de Normalización. Ingeniería de software—Calidad del producto—Parte 1: Modelo de calidad . ISO, Ginebra, Suiza, 2001. ISO/IEC 9126-1:2001(E).
- Medición de la calidad del software: la serie ISO 25000 y CMMI (sitio web de SEI)
- MSQF - Un marco de calidad de software basado en mediciones Biblioteca de la Universidad de Cornell
- Omar Alshathry, Helge Janicke, "Optimizing Software Quality Assurance," compsacw, pp. 87–92, 2010 IEEE 34th Annual Computer Software and Applications Conference Workshops, 2010.
- Robert L. Glass. Software para la calidad de los edificios . Prentice Hall, Upper Saddle River, NJ, 1992.
- Roland Petrasch, " La definición de 'calidad del software': un enfoque práctico ", ISSRE, 1999
- Profesional de la calidad del software, [ 88 ] Sociedad Americana para la Calidad (ASQ)
- Revista de calidad de software [ 89 ] de Springer Nature
- Spinellis, Diomidis (4 de abril de 2006). Calidad del código: la perspectiva del código abierto . Upper Saddle River, Nueva Jersey, EE. UU.: Addison-Wesley Professional. ISBN 978-0-321-16607-4.
- Stephen H. Kan. Métricas y modelos en la ingeniería de calidad de software . Addison-Wesley, Boston, MA, segunda edición, 2002.
- Stefan Wagner. Control de calidad de productos de software . Springer, 2013.
Referencias
Notas
- ↑ Wagner, Stefan; Goeb, Andreas; Heinemann, Lars; Kläs, Michael; Lampasona, Constanza; Lochmann, Klaus; Mayr, Alois; Plösch, Reinhold; Seidl, Andreas (2015). "Modelos operacionalizados de calidad de producto y evaluación: El enfoque Quamoco" (PDF) . Information and Software Technology . 62 : 101–123 . arXiv : 1611.09230 . doi : 10.1016/j.infsof.2015.02.009 . S2CID 10992384 .
- ↑ "Aprendiendo de la historia: El caso de la ingeniería de requisitos de software – Requirements Engineering Magazine" . Aprendiendo de la historia: El caso de la ingeniería de requisitos de software – Requirements Engineering Magazine . Consultado el 25 de febrero de 2021 .
- ↑ Pressman, Roger S. (2005). Ingeniería de software: Un enfoque práctico (Sexta edición internacional). McGraw-Hill Education. pág. 388. ISBN 0071267824.
- ↑ "Acerca de la especificación de medidas automatizadas de calidad del código fuente, versión 1.0" . www.omg.org . Consultado el 25 de febrero de 2021 .
- ↑ "Cómo realizar pruebas de extremo a extremo" . smartbear.com . Consultado el 25 de febrero de 2021 .
- ↑ "Cómo implementar sistemas de TI resilientes, seguros, eficientes y fácilmente modificables de acuerdo con las recomendaciones de CISQ" (PDF) . Archivado (PDF) del original el 28/12/2013 . Consultado el 18/10/2013 .
- ↑ Fundamentos de la arquitectura de software: Un enfoque de ingeniería . O'Reilly Media. 2020. ISBN 978-1492043454.
- ↑ "ISO/IEC 25010:2011" . ISO . Consultado el 23 de febrero de 2021 .
- ↑ Armour, Phillip G. (1 de junio de 2012). "Una medida de control" . Communications of the ACM . 55 (6): 26– 28. doi : 10.1145/2184319.2184329 . ISSN 0001-0782 . S2CID 6059054 .
- ↑ Voas, J. (noviembre de 2011). "El ingrediente secreto del software: las "-ilidades" [calidad del software]". IEEE Software . 21 (6): 14– 15. doi : 10.1109/MS.2004.54 . ISSN 1937-4194 .
- ↑ "Estándares de calidad del código | CISQ - Consorcio para la calidad de la información y el software" . www.it-cisq.org . Consultado el 25 de febrero de 2021 .
- ↑ "Estándares de dimensionamiento de software | CISQ - Consorcio para la calidad de la información y el software" . www.it-cisq.org . Consultado el 25 de febrero de 2021 .
- ↑ J. Bohnet, J. Döllner Archivado el 27/04/2014 en Wayback Machine , "Monitoring Code Quality and Development Activity by Software Maps". Actas del Taller IEEE ACM ICSE sobre Gestión de la Deuda Técnica, págs. 9-16, 2011.
- ↑ "IIA - Guía global de auditoría tecnológica: Gestión del cambio de TI: fundamental para el éxito organizacional" . na.theiia.org . Consultado el 26 de febrero de 2021 .
- ↑ Boursier, Jérôme (11 de enero de 2018). "Consecuencias de Meltdown y Spectre: persisten los problemas de parcheo" . Malwarebytes Labs . Recuperado el 26 de febrero de 2021 .
- ↑ "Mejores prácticas para las actualizaciones de software - Configuration Manager" . docs.microsoft.com . Consultado el 26 de febrero de 2021 .
- ↑ Wright, Hyrum K. (25 de agosto de 2009). "Procesos, modelos y métricas de ingeniería de versiones" . Actas del simposio doctoral de ESEC/FSE . Simposio doctoral ESEC/FSE '09. Ámsterdam, Países Bajos: Association for Computing Machinery. pp. 27–28 . doi : 10.1145/1595782.1595793 . ISBN 978-1-60558-731-8. S2CID 10483918 .
- ↑ van der Hoek, André; Hall, Richard S.; Heimbigner, Dennis; Wolf, Alexander L. (noviembre de 1997). "Gestión de lanzamientos de software" . Notas de ingeniería de software de ACM SIGSOFT . 22 (6): 159– 175. doi : 10.1145/267896.267909 . ISSN 0163-5948 .
- ↑ Sutton, Mike; Moore, Tym (30 de julio de 2008). "7 maneras de mejorar la gestión de lanzamientos de software" . CIO . Recuperado el 26 de febrero de 2021 .
- ↑ Clark, Mitchell (24 de febrero de 2021). "iRobot dice que tardará algunas semanas en solucionar el desastre de su última actualización de software para Roomba" . The Verge . Consultado el 25 de febrero de 2021 .
- ↑ "Los 25 errores de software más comunes" . www.sans.org . Consultado el 25 de febrero de 2021 .
- ↑ "«Apagarlo y volverlo a encender cada 149 horas» es una solución preocupante para un fallo de software en un avión Airbus de 300 millones de dólares . Gizmodo . 30 de julio de 2019. Consultado el 25 de febrero de 2021 .
- ↑ "MISRA C, Toyota y la muerte de la Tarea X" . Consultado el 25 de febrero de 2021 .
- ↑ "Actualización sobre Toyota y la aceleración involuntaria « Barr Code" . embeddedgurus.com . Consultado el 25 de febrero de 2021 .
- ↑ Dispositivos médicos: El Therac-25* Archivado el 16 de febrero de 2008 en Wayback Machine , Nancy Leveson, Universidad de Washington
- ↑ Software embebido archivado el 5 de julio de 2010 en Wayback Machine , Edward A. Lee, Próxima publicación en Advances in Computers ( Marvin Victor Zelkowitz , editor), Vol. 56, Academic Press, Londres, 2002, Revisado a partir del Memorando UCB ERL M01/26, Universidad de California, Berkeley, CA 94720, EE. UU., 1 de noviembre de 2001
- ↑ "Software de certificación de aeronaves y hardware electrónico a bordo" . Archivado del original el 4 de octubre de 2014. Consultado el 28 de septiembre de 2014 .
- ↑ "El costo de la mala calidad del software en EE. UU.: un informe de 2020 | CISQ - Consorcio para la Calidad de la Información y el Software" . www.it-cisq.org . Consultado el 25 de febrero de 2021 .
- ↑ "¿Qué es el desperdicio? | Agile Alliance" . Agile Alliance | 20 de abril de 2016. Consultado el 25 de febrero de 2021 .
- ↑ Matteson, Scott (26 de enero de 2018). "Informe: Las fallas de software causaron pérdidas financieras de 1,7 billones de dólares en 2017" . TechRepublic . Recuperado el 25 de febrero de 2021 .
- ↑ Cohane, Ryan (16 de noviembre de 2017). "Costo financiero de los errores de software" . Medium . Consultado el 25 de febrero de 2021 .
- ↑ Eloff, Jan; Bella, Madeleine Bihina (2018), "Software Failures: An Overview" , Software Failure Investigation , Cham: Springer International Publishing, pp. 7–24 , doi : 10.1007/978-3-319-61334-5_2 , ISBN 978-3-319-61333-8, consultado el 25 de febrero de 2021
- ↑ "La mala calidad del software costó a las empresas 2 billones de dólares el año pasado y puso en riesgo la seguridad" . CIO Dive . Consultado el 26 de febrero de 2021 .
- ↑ "Un estudio de CISQ, patrocinado por Synopsys, estima que el costo de la mala calidad del software en EE. UU. ascendió a 2,08 billones de dólares en 2020" . finance.yahoo.com . Consultado el 26 de febrero de 2021 .
- ↑ "Informe sobre el coste de una filtración de datos 2020 | IBM" . www.ibm.com . 2020. Consultado el 8 de marzo de 2021 .
- ↑ "ISO - Familia ISO 9000 — Gestión de la calidad" . ISO . Consultado el 24 de febrero de 2021 .
- ↑ "ISO/IEC/IEEE 24765:2017" . ISO . Consultado el 24 de febrero de 2021 .
- 1 2 "Dominando el software automotriz" . www.mckinsey.com . Consultado el 25 de febrero de 2021 .
- ↑ "ISO/IEC 25010:2011" . ISO . Consultado el 24 de febrero de 2021 .
- ↑ Wallace, DR (2002). "Modelado práctico de la fiabilidad del software". Actas del 26.º Taller Anual de Ingeniería de Software de la NASA Goddard . Greenbelt, MD, EE. UU.: IEEE Comput. Soc. págs. 147–155 . doi : 10.1109/SEW.2001.992668 . ISBN 978-0-7695-1456-7. S2CID 57382117 .
- ↑ "ISO/IEC 25023:2016" . ISO . Consultado el 6 de noviembre de 2023 .
- ↑ "¿Qué es la calidad del software? | ASQ" . asq.org . Consultado el 24 de febrero de 2021 .
- ↑ "SAMATE - Página principal del proyecto de evaluación de herramientas y métricas de garantía de software" . NIST . 3 de febrero de 2021. Consultado el 26 de febrero de 2021 .
- ↑ Extensión de software para la guía PMBOK . Project Management Institute (5.ª ed.). Newtown Square, Pensilvania. 2013. ISBN 978-1-62825-041-1OCLC 959513383
{{cite book}}: CS1 maint: falta el editor de ubicación ( enlace ) CS1 maint: otros ( enlace ) - ↑ Shewart, Walter A. (2015). Control económico de la calidad del producto manufacturado . [Lugar de publicación no identificado]: Martino Fine Books. ISBN 978-1-61427-811-5OCLC 1108913766 .
- ↑ Kitchenham, B. ; Pfleeger, SL (enero de 1996). "Calidad del software: el objetivo esquivo [sección de números especiales]". IEEE Software . 13 (1): 12– 21. doi : 10.1109/52.476281 . ISSN 1937-4194 .
- ↑ Garvin, David A. (1988). Managing quality : the strategic and competitive edge . Nueva York: Free Press. ISBN 0-02-911380-6OCLC 16005388
- 1 2 B. Kitchenham y S. Pfleeger, "Calidad del software: el objetivo esquivo", IEEE Software, vol. 13, n.º 1, págs. 12–21, 1996.
- ↑ Kan, Stephen H. (2003). Métricas y modelos en ingeniería de calidad de software (2.ª ed.). Boston: Addison-Wesley. ISBN 0-201-72915-6OCLC 50149641
- ↑ Organización Internacional de Normalización, "ISO/IEC 9001: Sistemas de gestión de la calidad - Requisitos", 1999.
- ↑ WE Deming, "Salir de la crisis: calidad, productividad y posición competitiva". Cambridge University Press, 1988.
- ↑ AV Feigenbaum, "Control de calidad total", McGraw-Hill, 1983.
- ↑ JM Juran, "Manual de control de calidad de Juran", McGraw-Hill, 1988.
- ↑ Weinberg, Gerald M. (1991). Gestión de software de calidad: Volumen 1, Pensamiento sistémico . Nueva York, NY: Dorset House. ISBN 0-932633-22-6OCLC 23870230
- ↑ Weinberg, Gerald M. (1993). Gestión de software de calidad: Volumen 2, Medición de primer orden . Nueva York, NY: Dorset House. ISBN 0-932633-22-6OCLC 23870230
- ↑ Crosby, P., La calidad es gratis , McGraw-Hill, 1979
- ↑ "SUP.9 – Gestión de resolución de problemas - Kugler Maag Cie" . www.kuglermaag.com . Consultado el 25 de febrero de 2021 .
- 1 2 Hoipt (29-11-2019). "Las organizaciones suelen usar los términos 'Garantía de Calidad' (GC) frente a 'Control de Calidad' (CC)…" . Medium . Consultado el 25-02-2021 .
- ↑ Tempero, Ewan; Ralph, Paul (16 de marzo de 2026), Cómo hacer que las métricas de software sean útiles , arXiv, doi : 10.48550/arXiv.2603.16012 , arXiv:2603.16012 , consultado el 20 de marzo de 2026
- ↑ Wallace, D.; Watson, AH; McCabe, TJ (1996-08-01). "Pruebas estructuradas: una metodología de pruebas que utiliza la métrica de complejidad ciclomática" . NIST .
- ↑ Bellairs, Richard. "¿Qué es la calidad del código? Y cómo mejorar la calidad del código" . Perforce Software . Consultado el 28 de febrero de 2021 .
- ↑ "Documento técnico de OMG | CISQ - Consorcio para la calidad de la información y el software" . www.it-cisq.org . Consultado el 26 de febrero de 2021 .
- ↑ "Cómo implementar sistemas de TI resilientes, seguros, eficientes y ágiles de acuerdo con las recomendaciones de CISQ - Libro blanco | Object Management Group" (PDF) . Archivado (PDF) del original el 28/12/2013 . Consultado el 18/10/2013 .
- ↑ "Medición del tamaño del software: un marco para contar las declaraciones de código fuente" . resources.sei.cmu.edu . 31 de agosto de 1992. Consultado el 24 de febrero de 2021 .
- ↑ Halstead, Maurice H. (1977). Elementos de la ciencia del software (Serie de sistemas operativos y de programación) . EE. UU.: Elsevier Science Inc. ISBN 978-0-444-00205-1.
- ↑ Chidamber, SR; Kemerer, CF (junio de 1994). "Un conjunto de métricas para el diseño orientado a objetos". IEEE Transactions on Software Engineering . 20 (6): 476– 493. doi : 10.1109/32.295895 . hdl : 1721.1/48424 . ISSN 1939-3520 . S2CID 9493847 .
- ↑ Nygard, Michael (2007). ¡Libéralo! . Una compañía de O'Reilly Media. Safari (1.ª ed.). Pragmatic Bookshelf. ISBN 978-0978739218OCLC 1102387436
- ↑ "CWE - Enumeración de Debilidades Comunes" . cwe.mitre.org . Archivado del original el 10 de mayo de 2016. Consultado el 20 de mayo de 2016 .
- ↑ Boehm, B., Brown, JR, Kaspar, H., Lipow, M., MacLeod, GJ, & Merritt, MJ (1978). Características de la calidad del software. North-Holland.
- 1 2 3 "Estándares de codificación SEI CERT - Codificación segura CERT - Confluence" . wiki.sei.cmu.edu . Consultado el 24 de febrero de 2021 .
- ↑ "Calidad del código y seguridad del código: ¿Cómo se relacionan? | Synopsys" . Blog de integridad del software . 24 de mayo de 2019. Consultado el 9 de marzo de 2021 .
- ↑ "Informe sobre el coste de una filtración de datos 2020 | IBM" . www.ibm.com . 2020. Consultado el 9 de marzo de 2021 .
- ↑ "Principales conclusiones del informe sobre el coste de una filtración de datos de 2020" . Bluefin . 27 de agosto de 2020. Consultado el 9 de marzo de 2021 .
- ↑ "CWE - Enumeración de Debilidades Comunes" . Cwe.mitre.org. Archivado del original el 14 de octubre de 2013. Consultado el 18 de octubre de 2013 .
- ↑ Seguridad en el desarrollo: El marco de ingeniería segura de IBM | IBM Redbooks . 30 de septiembre de 2016.
- ↑ Arquitectura de seguridad empresarial con soluciones de seguridad IBM Tivoli | IBM Redbooks . 30/09/2016.
- ↑ "Definiciones de diseño de arquitectura segura | CISA" . us-cert.cisa.gov . Consultado el 9 de marzo de 2021 .
- ↑ "Fundación OWASP | Fundación de código abierto para la seguridad de las aplicaciones" . owasp.org . Consultado el 24 de febrero de 2021 .
- ↑ "Los 25 mejores de CWE" . Sans.org . Consultado el 18 de octubre de 2013 .
- ↑ IfSQ Nivel 2 Un estándar de nivel básico para el código fuente de programas informáticos Archivado el 27/10/2011 en Wayback Machine , Segunda edición Agosto de 2008, Graham Bolton, Stuart Johnston, IfSQ, Instituto para la Calidad del Software.
- ↑ Fowler, Martin (14 de octubre de 2009). "TechnicalDebtQuadrant" . Archivado del original el 2 de febrero de 2013. Recuperado el 4 de febrero de 2013 .
- ↑ "Calidad del código: una preocupación para las empresas, los resultados financieros y los programadores empáticos" . Stack Overflow . 18 de octubre de 2021. Consultado el 5 de diciembre de 2023 .
- ↑ Prause, Christian; Durdik, Zoya (3 de junio de 2012). «Diseño arquitectónico y documentación: ¿Desperdicio en el desarrollo ágil?». Conferencia Internacional de 2012 sobre Software y Procesos de Sistemas (ICSSP) . IEEE Computer Society. págs. 130–134 . doi : 10.1109/ICSSP.2012.6225956 . ISBN 978-1-4673-2352-9. S2CID 15216552 .
- ↑ "Estándares de dimensionamiento de software | CISQ - Consorcio para la calidad de la información y el software" . www.it-cisq.org . Consultado el 28 de enero de 2021 .
- ↑ "Por qué falla el software" . IEEE Spectrum: Noticias sobre tecnología, ingeniería y ciencia . 2 de septiembre de 2005. Consultado el 20 de marzo de 2021 .
- ↑ Wagner, Stefan; Goeb, Andreas; Heinemann, Lars; Kläs, Michael; Lampasona, Constanza; Lochmann, Klaus; Mayr, Alois; Plösch, Reinhold; Seidl, Andreas (2015). "Modelos operacionalizados de calidad de producto y evaluación: El enfoque Quamoco" (PDF) . Information and Software Technology . 62 : 101–123 . arXiv : 1611.09230 . doi : 10.1016/j.infsof.2015.02.009 . S2CID 10992384 .
- ↑ Suryanarayana, Girish (2015). "Proceso de software versus calidad del diseño: ¿tira y afloja?" . IEEE Software . 32 (4): 7– 11. doi : 10.1109/MS.2015.87 . S2CID 9226051 .
- ↑ "Profesional de la calidad del software | ASQ" . asq.org . Consultado el 28 de enero de 2021 .
- ↑ "Software Quality Journal" . Springer . Consultado el 28 de enero de 2021 .
Bibliografía
- Albrecht, AJ (1979), Medición de la productividad en el desarrollo de aplicaciones. En Actas del Simposio Conjunto SHARE/GUIDE de IBM sobre Desarrollo de Aplicaciones. , IBM
- Ben-Menachem, M.; Marliss, GS (1997), Calidad del software: Cómo producir software práctico y consistente , Thomson Computer Press
- Boehm, B.; Brown, JR; Kaspar, H.; Lipow, M.; MacLeod, GJ; Merritt, MJ (1978), Características de la calidad del software , North-Holland.
- Chidamber, S.; Kemerer, C. (1994), Un conjunto de métricas para el diseño orientado a objetos. IEEE Transactions on Software Engineering, 20 (6) , pp. 476–493
- Ebert, Christof; Dumke, Reiner, Medición de software: Establecer - Extraer - Evaluar - Ejecutar , Edición Kindle, pág. 91
- Garmus, D.; Herron, D. (2001), Análisis de puntos de función , Addison Wesley
- Halstead, ME (1977), Elementos de la ciencia del software , Elsevier North-Holland
- Hamill, M.; Goseva-Popstojanova, K. (2009), Fallos comunes en los datos de fallos y errores de software. IEEE Transactions on Software Engineering, 35 (4) , pp. 484–496
- Jackson, DJ (2009), Un camino directo hacia un software confiable. Communications of the ACM, 52 (4).
- Martin, R. (2001), Gestión de vulnerabilidades en sistemas en red , IEEE Computer.
- McCabe, T. (diciembre de 1976), Una medida de complejidad. IEEE Transactions on Software Engineering
- McConnell, Steve (1993), Code Complete (Primera edición), Microsoft Press
- Nygard, MT (2007), ¡ Libéralo! Diseñe e implemente software listo para producción , The Pragmatic Programmers.
- Park, RE (1992), Medición del tamaño del software: Un marco para contar las sentencias fuente. (CMU/SEI-92-TR-020). , Instituto de Ingeniería de Software, Universidad Carnegie Mellon
- Pressman, Roger S. (2005). Ingeniería de software: Un enfoque práctico (Sexta edición internacional). McGraw-Hill Education. ISBN 0071267824.
- Spinellis, D. (2006), Calidad del código , Addison Wesley
Enlaces externos
- Cuando el código es el rey: Dominando la excelencia del software automotriz (McKinsey, 2021)
- Calidad del software para sistemas embebidos: ¿Por qué suele ser tan deficiente? ¿Qué podemos hacer al respecto? (Por Philip Koopman )
- Estándares de calidad de código de CISQ ™
- Blog de CISQ: https://blog.it-cisq.org
- Guía para el aseguramiento de la calidad del software (ESA)
- Guía para la aplicación de las normas de ingeniería de software de la ESA a pequeños proyectos de software (ESA)
- Descripción general de los servicios de garantía de productos de software de la ESA (NASA/ESA)
- Nuestro enfoque de la calidad en el Centro de Desarrollo de Software de Volkswagen en Lisboa
- Guías de estilo de Google
- Garantizar la calidad del producto en Google (2011)
- Garantía de software de la NASA
- Grupo de Calidad de Software del NIST
- Puntos de función automatizados OMG/CISQ ( ISO/IEC 19515 )
- Estándar automatizado de deuda técnica de OMG
- Control de calidad automatizado (artículo publicado en IREB por Harry Sneed)
- Pruebas estructuradas: una metodología de pruebas que utiliza la métrica de complejidad ciclomática (1996)
- Análisis de la calidad de las aplicaciones mediante herramientas de análisis de código (Microsoft, Documentación, Visual Studio, 2016)
- Calidad del software
- Pensamiento sistémico
- Pruebas de software
- Código fuente