Calidad y Ética en Ingeniería de Software

Explora la calidad y ética en ingeniería de software. Entiende su impacto, evolución y desafíos. ¡Optimiza tus conocimientos sobre IS ahora!

La Ingeniería de Software (IS) es una disciplina fundamental que abarca todos los aspectos de la producción de software, buscando garantizar la calidad y la eficiencia en su desarrollo y entrega. En este artículo, exploraremos la importancia de la calidad, las particularidades del software y el rol crucial de la ética en la ingeniería de software, brindando una comprensión profunda para estudiantes y profesionales.

¿Qué es la Ingeniería de Software y por qué es Vital para la Calidad?

La ingeniería de software es una rama de la ingeniería que se enfoca en métodos prácticos para desarrollar, entregar y mantener software de alta calidad. Su meta principal es la búsqueda constante de la calidad, aplicando técnicas que mejoren el producto final. En la actualidad, casi todas las naciones dependen de sistemas informáticos, y la producción de software confiable y costeable es esencial para el funcionamiento de la economía global.

La noción de ingeniería del software surgió en 1968 durante la llamada “crisis del software”. Esta crisis se debió a la introducción de nuevas computadoras con hardware basado en circuitos integrados, lo que permitió aplicaciones más grandes y complejas. Sin embargo, el enfoque informal de desarrollo de ese entonces resultaba en proyectos con años de retraso, sobrecostos, dificultades de mantenimiento y resultados pobres. Se hizo evidente la necesidad de nuevas técnicas y métodos para gestionar esta complejidad creciente.

La Evolución de la Ingeniería del Software

En los últimos 15 años, la IS se ha desarrollado significativamente, creando e implementando métodos, procedimientos, técnicas y herramientas. Estos buscan cubrir las necesidades de cada etapa del ciclo de vida de un producto software, desde la definición de requisitos hasta su mantenimiento. El objetivo es incrementar la productividad de la programación mientras se mejora y garantiza simultáneamente la calidad del producto resultante.

El Software: Más Allá de un Simple Programa

El software no es solo un programa de ordenador; incluye también toda la documentación asociada. Los productos de software pueden ser desarrollados para un cliente específico o para un mercado general.

Tipos de Productos de Software

Existen dos categorías principales de productos de software:

  • Productos genéricos: Son sistemas producidos por una organización de desarrollo y vendidos en el mercado abierto a cualquier cliente. Ejemplos incluyen software para móviles, bases de datos, procesadores de texto y herramientas de gestión de proyectos.
  • Productos personalizados: Son sistemas requeridos por un cliente particular, desarrollados específicamente para sus necesidades. Ejemplos son sistemas de control de componentes electrónicos, sistemas para procesos de negocios específicos o sistemas de control de tráfico aéreo.

La distinción entre estos tipos se ha vuelto cada vez más difusa. Muchas empresas de software inician con un producto genérico y lo adaptan a las necesidades de clientes específicos, como es el caso de los sistemas de planificación de recursos empresariales (ERP) tipo SAP.

Antecedentes y Definiciones de Calidad en el Contexto de la Ingeniería de Software

La búsqueda de la perfección y el trabajo bien hecho han sido constantes a lo largo de la historia, derivando en el concepto de calidad. La calidad, en esencia, busca la satisfacción del cliente, la competitividad y la mejora continua.

Cronología de la Calidad

El concepto de calidad ha evolucionado a través de varias etapas clave:

  • Artesanado: Hacer las cosas bien, sin importar el coste ni el esfuerzo, buscando la autosatisfacción y un producto único.
  • Revolución Industrial: Producción en serie, enfocada en hacer muchas cosas rápidamente para satisfacer la demanda, sin priorizar la calidad individual.
  • II Guerra Mundial: Énfasis en asegurar la eficacia en la producción de armamentos, garantizando disponibilidad y plazos, sin importar el coste.
  • Postguerra (Japón): Hacer las cosas bien a la primera, minimizando costes mediante la calidad, satisfaciendo al cliente.
  • Postguerra (Resto): Producir cuanto más mejor para satisfacer la gran demanda de bienes, buscando ser competitivo.
  • Control de Calidad: Inspección en producción para evitar bienes defectuosos, satisfaciendo necesidades técnicas.
  • Aseguramiento de la Calidad: Implementación de sistemas y procedimientos para prevenir errores y reducir costes, satisfaciendo al cliente.
  • Calidad Total: Administración empresarial centrada en la satisfacción permanente de las expectativas de todos los colectivos humanos relacionados con la empresa.

Definiciones Clave de Calidad

Grandes figuras y entidades han definido la calidad de diversas maneras:

  • Feigenbaum, Deming y Juran: "Conjunto de esfuerzos efectivos... para la integración del desarrollo, del mantenimiento y de la superación de la calidad de un producto... a satisfacción completa del consumidor y al nivel más económico."
  • Dr. Kaoru Ishikawa: "La mejor calidad que una empresa puede producir con su tecnología de producción y capacidades de proceso actuales, y que satisfará las necesidades de los clientes, en función de factores tales como el coste y el uso previsto."
  • Consultora Arthur Andersen: "La gestión de calidad en la empresa es el proceso de identificar, aceptar, satisfacer y superar constantemente las expectativas y necesidades de todos los colectivos humanos relacionados con ella."

De estas definiciones, se desprende la necesidad de planificar la calidad (diseño), producirla (fabricación) y venderla (satisfacción del cliente).

Calidad del Software: Desafíos y Particularidades

La calidad en el software debe diferenciarse entre la calidad del producto y la calidad del proceso de desarrollo. Un buen proceso de desarrollo es casi indispensable para obtener un producto de calidad. Sin embargo, el software presenta características únicas que lo distinguen de otros productos industriales:

  • Es un producto mental: Se desarrolla, no se fabrica en el sentido tradicional.
  • Los costes de desarrollo se concentran en tareas de ingeniería.
  • Es una disciplina joven: Las técnicas aún no están completamente perfeccionadas.
  • El software con errores no se rechaza automáticamente, sino que se busca su corrección y mejora continua.
  • No se deteriora con el tiempo como el hardware, pero sufre de obsolescencia funcional.
  • Es engañosamente fácil realizar cambios sobre un producto software, lo que puede llevar a problemas si no se gestiona bien.
  • El mantenimiento del software es más complejo que el del hardware.

Es crucial considerar la calidad en todas las fases de evolución del software (especificaciones, diseño, códigos), no solo al final, cuando corregir problemas puede ser muy costoso.

Problemática de la Calidad en la Ingeniería de Software

La ingeniería de software enfrenta diversos desafíos en su búsqueda de calidad:

  • Aumento constante del tamaño y complejidad de los programas.
  • Carácter dinámico e iterativo del software a lo largo de su ciclo de vida.
  • Dificultad de conseguir productos totalmente depurados y perfectos.
  • Elevados recursos monetarios dedicados al mantenimiento debido a la complejidad y falta de normalización.
  • Frecuentes retrasos en los plazos y sobrecostos presupuestarios.
  • Incrementos constantes en los costes de desarrollo debido a bajos niveles de productividad.
  • Alta dependencia de los clientes respecto a sus proveedores, especialmente en aplicaciones a medida.
  • Procesos de producción artesanales con escasez de herramientas adecuadas.
  • Insuficientes procedimientos estandarizados para evaluar productividad, costes y calidad.

Estos problemas se agravan por la ausencia de especificaciones completas, falta de aplicación sistemática de métodos y normas de ingeniería de software, escasez de entornos de programación integrados, poco uso de técnicas de gestión de proyectos automatizadas y la escasez de personal con formación y experiencia adecuada.

Modelos y Normalización para la Calidad del Software

La normalización es un proceso esencial para elaborar guías, normas y convenciones en una materia, buscando definir, simplificar y especificar actividades. En la IS, las normas son un desafío, pero también un medio fundamental para transferir métodos y técnicas a la industria, maximizando la comunicación entre profesionales.

El Rol de las Normas IEEE en la Calidad

Organismos como el IEEE dictan normas para el desarrollo de software. El proceso de creación de una norma IEEE es riguroso:

  1. Sugerencia: Cualquier miembro puede sugerir una idea al Comité de Normas de IS.
  2. Petición de Autorización de Proyecto (PAP): Se define el objetivo, ámbito y descripción del proyecto, coordinando con el ANSI (American National Standard Institute).
  3. Desarrollo: Un grupo de trabajo se encarga de desarrollar la norma, con participación abierta a todos los interesados.
  4. Revisión y Votación: El borrador (draft) pasa por varias revisiones y un proceso de votación. Al menos el 75% de los miembros del grupo de votación (unos 100 expertos) debe votar positivamente. El tiempo medio para aprobar una norma es de tres años.
  5. Difusión: Una vez aprobada, la norma se difunde a través de seminarios.
  6. Uso y Revisión: Las empresas u organismos la utilizan y proporcionan comentarios. La norma se evalúa cada cinco años para decidir si se mantiene, modifica o elimina.

Estas normas son cruciales para asegurar la producción de software de calidad, reducir costes y aumentar la productividad al mejorar la comunicación entre los profesionales.

Modelos de Calidad del Software de Gestión

Los modelos de calidad definen la calidad de forma jerárquica, evaluándola a través de indicadores o métricas. Estos modelos se estructuran en:

  • Factores de Calidad: Nivel más alto, definidos desde la perspectiva del usuario (atributos de calidad externos).
  • Criterios de Calidad: Descomposición de los factores, son atributos técnicos del producto (atributos de calidad internos).
  • Métricas: Medidas cuantitativas de características del producto que indican el grado de un atributo de calidad.

Mediante un modelo de calidad, se puede definir, medir y planificar la calidad, comprendiendo las relaciones entre las diferentes características del software. A pesar de sus beneficios, aún no se ha demostrado la validez absoluta de ninguno de estos modelos.

Código de Ética en la Ingeniería de Software

Dado el papel central y creciente de las computadoras en todas las actividades de la sociedad, los ingenieros de software tienen una gran responsabilidad. Sus acciones pueden generar grandes beneficios o causar daños significativos. Para asegurar un correcto desempeño, la ACM y la IEEE han redactado un código de ética para la profesión.

Este código establece ocho principios básicos que deben regir el actuar de los ingenieros de software:

  1. Público: Actuar en consonancia con el interés público.
  2. Cliente y Empleador: Responder a los intereses de clientes y empleadores, siendo consecuentes con el interés público.
  3. Producto: Asegurar que los productos y sus modificaciones cumplan con los más altos estándares profesionales posibles.
  4. Juicio: Mantener la integridad e independencia de los juicios profesionales.
  5. Gestión: Suscribir y promover un enfoque ético en la gestión del desarrollo y mantenimiento del software.
  6. Profesión: Mantener la integridad y reputación de la profesión de acuerdo con el interés público.
  7. Colegas: Ser imparcial y apoyar a los colegas.
  8. Personal: Aprender continuamente sobre la práctica de la profesión y promover un enfoque ético.

Estos principios son fundamentales para garantizar que la ingeniería de software sea una disciplina de beneficio y respeto para la sociedad.

Preguntas Frecuentes sobre Calidad y Ética en Ingeniería de Software

¿Por qué es importante la calidad en el desarrollo de software?

La calidad en el desarrollo de software es crucial porque garantiza que los programas funcionen correctamente, sean fiables, fáciles de mantener y satisfagan las necesidades del usuario. Sin calidad, los proyectos pueden sufrir retrasos, sobrecostos y un bajo rendimiento, afectando la economía y la confianza en los sistemas informáticos.

¿Cuáles son las diferencias clave entre productos de software genéricos y personalizados?

Los productos genéricos se desarrollan para un mercado amplio y se venden a múltiples clientes, mientras que los personalizados se crean específicamente para las necesidades de un único cliente. La especificación de los genéricos la controla la organización desarrolladora, mientras que en los personalizados, el desarrollador trabaja con la especificación del cliente. Sin embargo, esta distinción se está difuminando, con muchas empresas adaptando productos genéricos para clientes específicos.

¿Cómo influye la normalización en la calidad del software?

La normalización, a través de la creación de guías y convenciones (como las del IEEE), mejora la calidad del software al estandarizar métodos, técnicas y procedimientos. Facilita la comunicación entre profesionales, reduce costes, aumenta la productividad y asegura que los productos cumplan con altos estándares de fiabilidad y consistencia. Las normas buscan homogeneizar los planes de garantía de calidad y gestión de la configuración.

¿Qué es la “crisis del software” y cómo llevó al surgimiento de la ingeniería de software?

La “crisis del software” fue un periodo en 1968 donde el rápido avance del hardware permitió crear aplicaciones mucho más grandes y complejas. Sin embargo, los enfoques informales de desarrollo de software no podían manejar esta complejidad, resultando en proyectos con retrasos, sobrecostos y baja calidad. Esta crisis hizo evidente la necesidad de una disciplina formal, la ingeniería de software, para aplicar métodos y técnicas estructuradas al desarrollo de software.

¿Cuáles son los principios éticos fundamentales para un ingeniero de software?

Los principios éticos fundamentales, según el código ACM y IEEE, incluyen actuar en interés público, responder a los intereses de clientes y empleadores (coherente con el interés público), asegurar productos de alta calidad, mantener la independencia de juicio, promover la ética en la gestión, preservar la integridad de la profesión, apoyar a colegas y buscar el aprendizaje continuo y la promoción de un enfoque ético personal. Estos guían al ingeniero para obrar bien y evitar daños en un campo de gran influencia social.

Temas relacionados