UNIDAD PROFESIONAL INTERDISCIPLINARIA
DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS
“CALIDAD DEL SOFTWARE”
T E S I S
México, D.F. 2010.
QUE PARA OBTENER POR EL TÍTULO DE:
LICENCIADO EN CIENCIAS DE LA INFORMÁTICA
P R E S E N T A:
ROSA ELENA AYALA FUENTES
ÍNDICE
RESUMEN ... I
INTRODUCCIÓN ... VI
CAPÍTULO I
FUNDAMENTOS DE CALIDAD DEL SOFTWARE
1.1 MODELOS Y CARACTERÍSTICAS DE CALIDAD ... 4
1.1.1 MODELOS DE CALIDAD ... 5
1.1.1.1 MODELO PROSOFT (Programa para el Desarrollo de la Industria del Software) ... 6
1.1.1.2 MOPROSOFT ... 10
1.1.1.3 NORMA ISO 9000-2000 ... 11
1.1.1.4 NORMA ISO/IEC TR 15504 ... 11
1.1.1.5 MODELO DE CAPACIDAD Y MADUREZ P-CMM (Capability Maturity Model) ... 12
1.1.1.6 MODELO SPICE (Software Process Improvement Capability determination) ... 16
1.2 CALIDAD DE PROCESO DE INGENIERIA DE SOFTWARE ... 21
1.3 CALIDAD DEL PRODUCTO DE SOFTWARE ... 22
1.3.1 MODELO DE CALIDAD PARA CALIDAD INTERNA Y EXTERNA .. 23
1.3.2 MODELO DE CALIDAD PARA CALIDAD EN USO ... 26
1.3.3 CALIDAD DE SOFTWARE BASADO EN COMPONENTES ... 27
1.3.3.1 CARACTERÍSTICAS ... 29
1.4 MEJORA DE CALIDAD ... 37
1.4.1 RECOMENDACIONES PARA LA MEJORA CONTÍNUA ... 41
1.4.2 IMPORTANCIA DE LA MEJORA CONTINUA ... 42
CAPÍTULO II
PROCESOS DE ADMINISTRACIÓN DE CALIDAD DE SOFTWARE
2.1 GARANTÍA DE LA CALIDAD DE SOFTWARE ... 44
2.2 ASEGURAMIENTO DE LA CALIDAD ... 48
2.3 CONTROL DE LA CALIDAD DEL SOFTWARE ... 49
2.3.1 CARACTERÍSTICAS DEL CONTROL DE LA CALIDAD ... 51
2.4 CERTIFICACIÓN DE LA CALIDAD ... 52
2.5 COMPROBACIÓN & VALIDACIÓN ... 54
2.6 EVALUACIONES Y AUDITORIAS ... 55
2.6.1 PROCESO DE EVALUACIÓN ... 57
2.6.2 INSPECCIONES ... 64
2.6.2.1 EL PROCESO DE INSPECCIÓN ... 66
2.6.3 RECORRIDOS COMPLETOS ... 69
2.6.4 AUDITORIAS ... 69
CAPÍTULO III CONSIDERACIONES PRÁCTICAS 3.1 REQUERIMIENTOS DE CALIDAD DE SOFTWARE ... 72
3.1.1 DEFINICIÓN DE REQUERIMIENTOS DE CALIDAD (DReC ) ... 75
3.1.2 DESCRIPCIÓN DE LA TÉCNICA DReC ... 77
3.1.3 DOCUMENTACIÓN DE LA TÉCNICA ... 80
3.1.4 APLICACIÓN DE LA TÉCNICA ... 81
3.2 INFLUENCIA EN LOS FACTORES ... 82
3.3 SERIEDAD ... 83
3.4 NIVELES DE INTEGRIDAD DEL SOFTWARE ... 83
3.5 CARACTERIZACIÓN DE DEFECTO... 84
3.6 TÉCNICAS DE DIRECCIÓN DE CALIDAD DE SOFTWARE ... 86
3.6.1 TÉCNICAS ESTÁTICAS ... 87
3.6.2 TECNICAS PERSONALES INTENSIVAS ... 87
3.6.3 TÉCNICAS DE EVALUACIÓN ... 88
3.6.4 TÉCNICA ANALÍTICAS ... 89
3.6.5 TÉCNICAS DINÁMICAS ... 90
3.7 PRUEBA ... 90
3.7.1 CLASIFICACIÓN DE PRUEBAS DEL SOFTWARE... 92
3.7.2 MARCO DEL TESTEO ... 95
3.7.3 MÉTODOS DE TESTEO ... 95
3.7.4 TIPOS DE PRUEBAS DINÁMICAS... 97
3.7.5 FASES DE LAS PRUEBAS DINÁMICAS ... 99
3.8 MEDICIÓN DE LA CALIDAD DEL SOFTWARE ... 101
3.8.1 MÉTRICAS DE LA DOCUMENTACIÓN DEL SOFTWARE ... 105
3.8.2 MÉTRICAS EN LA REUTILIZACIÓN ORIENTADA AL OBJETO ... 106
3.8.3 CALIDAD Y MÉTRICAS VS. REUTILIZACIÓN ... 106
CONCLUSIÓN ... 110
BIBLIOGRAFÍA ... 111
I RESUMEN
CAPITULO 1
FUNDAMENTOS DE CALIDAD DE SOFTWARE
En este capitulo se da una introducción de lo que es la ingeniería de software y la importancia actual de la calidad del software enfocándonos a la resolución de dos preguntas esenciales, la primera ¿cómo poder obtener un software de y con calidad? Y la segunda ¿cómo se puede evaluar dicha calidad a fondo y completamente?.
La calidad del software busca poder alcanzar dentro de un producto de software características tales como: Confiabilidad, soporte logístico, agilidad de respuesta, flexibilidad, facilidad de adopción, integridad, consistencia, congruencia de diseño y producto, sencillez, entre otros.
Esto es conseguir hoy por hoy productos portables, fáciles de mantener y/o ampliar, sencillos de entender, de validación accesible, compatibles con otros sistemas rápidos y efectivos, más un sinfín de características que provoque el terminar o trascender la llamada crisis del software.
Algunas de las características que debe cumplir un software son corrección, fiabilidad, eficiencia, facilidad de uso, facilidad de mantenimiento entre otras, mientras más características reúna un desarrollo de software mayor será su calidad.
Existen varios modelos de calidad muy útiles que pueden ser usados para evaluar y medir la calidad de un software algunos de ellos son el modelo SPICE, el modelo CMM, el modelo PROSOFT y MOPROSOFT entre otros.
La calidad del software tiene dos enfoques diferentes por un lado tenemos a la calidad del proceso que es cuando se diseña, desarrolla y construye el software así como cuando se mantiene y por otro lado se tiene la calidad del producto que es la mejora que se le hace a todo el proceso y al producto en
II general para esto es necesario comprender desde el principio del proyecto las necesidades reales y completas de los usuarios con tanto detalle como sea posible (requerimientos) mientras mas claras y detalladas sean mas fáciles de solucionar e implementar van a ser.
La Calidad Total en Informática, es el resultado del movimiento global dentro del proceso de mejoramiento continuo de los estándares de producción en todos los sectores industriales, en particular, cuando éste se concentra en la producción de sistemas de información y software especializado. Como la calidad total no es un producto sino una actividad, la industria del software se ha visto afectada muy radicalmente y por lo mismo es de gran importancia.
En la actualidad los productores de software están en una situación más dramática que hace unos años, pues no sólo quieren producir software con crecientes características de calidad, también tienen la necesidad de producir software más sofisticado.
Con la mejora continua en las organizaciones se logra a que se desarrollen sus procesos de una manera más productiva y eficiente para así reducir costos y poder ofrecer un producto o servicio de calidad.
En el mundo actual, la gestión del conocimiento por parte de la empresa, adquiere nuevas características, determinadas por la gestión de la información y de la calidad. En las organizaciones más modernas cohabitan, indisolublemente ligadas, la gestión de información, del conocimiento y de la calidad; ellas son organizaciones de excelencia, donde la ética, la motivación y el buen desempeño rinden incrementos constantes en los resultados y en el reconocimiento de las empresas.
III CAPITULO 2
PROCESOS DE ADMINISTRACIÓN DE CALIDAD DE SOFTWARE
Para poder llevar a cabo exitosamente la gestión de la calidad del software es necesario dejar muy claros los beneficios que va a proporcionar el hecho de tener que estandarizar y controlar los procesos y formas de trabajo ya existentes dentro de la organización, ya que es difícil que una organización se adapte a cambios y nuevos procedimientos sin saber en que los va a beneficiar hacerlos.
Desarrollar un plan de administración de software no es para nada una tarea fácil ya que es un factor critico dentro la calidad del software, afortunadamente actualmente los consultores o evaluadores están haciendo mucho mas fácil este proceso.
Algunos de los factores que afectan la calidad del software son corrección, fiabilidad, eficiencia, integridad, facilidad de uso, flexibilidad, facilidad de prueba entre otras.
Existe un concepto llamado Gestión de la calidad del software que no es otra cosa que administrar las actividades que se deben llevar a cabo antes, durante y después de la construcción de un software para alcanzar la calidad del mismo. Esta actividad le corresponde y se aplica normalmente a las empresas en el área directiva de la misma, aunque también puede existir dentro de un proyecto en especifico.
En dicha gestión se determinan la calidad, los objetivos y las responsabilidades del desarrollo de un producto y se apoya de medios tales como la planificación de la calidad, el control de la calidad, el aseguramiento de la calidad, la mejora de la calidad, la comprobación y validación de la calidad, la certificación de la calidad, evaluaciones , auditorias , inspecciones de la calidad, todos ellos apoyados en modelos y técnicas que mas se adapten a la organización y que a la larga y con una buena aplicación pueden arrojar resultados muy satisfactorios.
IV CAPITULO 3
CONSIDERACIONES PRÁCTICAS
Los requerimientos del software son una descripción abstracta de los servicios que el sistema debería proporcionar al cliente, y las limitaciones bajo las cuales éste debería operar.
La determinación de requerimientos de calidad es un proceso de fijación de valores (niveles de calidad y estimación de métricas) que serán tomados inicialmente para la planificación de la calidad y posteriormente como referencia para la evaluación del producto software.
El usuario es un actor importante en la determinación de los requerimientos de calidad y su punto de vista debe ser sistemáticamente obtenido.
El desarrollador es un actor que opondrá la opinión del usuario, pero debe subordinar –finalmente- su opinión a la del usuario si no existe un consenso sobre los valores de las mismas.
Todo requerimiento debe cumplir con diversos factores como son la seriedad al realizar el producto, los niveles de integridad del software para evitar posibles fracasos y la caracterización de los defectos que sirve para futuras revisiones.
Existen varias técnicas de dirección de calidad del software, por ejemplo, las técnicas estáticas que son aplicadas a la documentación del proyecto, las técnicas personales intensivas se basan en revisiones y auditorias y requieren de mas de una persona, técnicas analíticas como análisis de la complejidad, control del análisis del flujo, y el análisis algorítmico, las técnicas dinámicas que Incluyen técnicas de prueba, pero también la simulación, el chequeo de modelos y la ejecución simbólica pueden ser consideradas dinámicas.
V También tenemos las pruebas que son los procesos del aseguramiento descritos en la SQA y V&V examinan cada salida concerniente a la especificación del requerimiento del software para asegurar la consistencia, lo completo, la corrección, y el buen funcionamiento del software.
Existen varios tipos de pruebas como son prueba genérica, prueba dinámica, marco del testeo etc.y que aplicadas correctamente resultan bastante efectivas para enviar un software de calidad.
Por último tenemos la Medición y las métricas que ya sean para el proceso de desarrollo del software como para la documentación, como para programación tradicional y orientada a objetos y ahora también dentro de la creación de software para la reutilización son y serán instrumentos que nos ayuden a tener una visión más amplia de cómo van y como salieron las cosas al final del trabajo.
VI INTRODUCCIÓN
Actualmente la palabra "calidad" se usa cada vez con más frecuencia en las empresas, ya sea en los sectores de alimentos, industria o servicios y especialmente en el sector de Tecnología Informática (TI).
Dicha atención se debe en gran parte al interés de la industria sobre la calidad y a la necesidad de controlar gastos de mantenimiento crecientes.
Hasta hace poco la calidad era responsabilidad del ingeniero de software o el programador, sin embargo, el creciente interés sobre la calidad del software ha generado un aumento en el numero de organizaciones enfocadas a la calidad.
El éxito de una organización es dependiente de varios factores: el avance de tecnologías de calidad de software, compromiso de dirección de alto nivel, y recursos técnicos y humanos adecuados.
El concepto de calidad tiene varias definiciones formales. Algunas de ellas ponen mayor énfasis en el producto y otras en el cliente o el servicio. Sin embargo, todas tienen un mensaje común, que es el de obtener una mejora, ya sea en el producto software, o en los procesos que llevan a la creación del mismo.
Para aumentar la calidad se establecen una serie de metodologías formales y buenas prácticas que permiten tener control sobre lo que está ocurriendo en todos los niveles del ciclo de vida del software y así poder evaluarlo y mejorarlo.
Gracias a ellas, se consigue no sólo que el producto final tenga las características que deseamos (robustez, usabilidad, correctitud, fiabilidad, entre otros) sino que los procesos asociados sean positivos, los tiempos de entrega disminuyan, los costos se reduzcan y la satisfacción del cliente sea la esperada.
VII Por supuesto existen modelos, métricas y herramientas que complementan estos procesos y nos ayudan en la mejora de la calidad.
En este proyecto de investigación se pretende cubrir los siguientes objetivos;
• Uno: Clarificar el significado del término Calidad en el desarrollo del software.
• Segundo: Identificar los diferentes aspectos que se deben considerar durante el proceso de calidad del software, desde su definición hasta su mantenimiento, conocer los diferentes modelos de calidad y la técnicas de medición de la misma y por ultimo conocer y considerar las ventajas que un software de calidad representa.
Para cubrir dichos objetivos primero debemos entender bien a que se le llama calidad del software hay quien piensa que la calidad es un simple papeleo pesado, o muchas reuniones para establecer un proceso, conseguir un sello de calidad en nuestro producto y así mejorar su publicidad punto que resultaría muy poco efectivo para la calidad del software, o piensan que simplemente es tener un producto mejor que el de la competencia sin importar costos ni garantías. La calidad va mucho mas allá de todo eso y por lo mismo es un tema que debe preocuparnos ya que los clientes quieren un producto de calidad y por lo tanto evalúan las soluciones que se les proporcionan, muchas veces con ayuda de auditores o gente conocedora del campo, los proyectos y definición de los requerimientos siempre varia de uno a otro, exigen fiabilidad y seguridad y muy a menudo preguntan o quieren conocer el proceso con el que se desarrollo su proyecto.
Por todo lo anterior el siguiente proyecto nos presenta los métodos y modelos que nos pueden ayudar a mejorar la calidad de nuestro producto, así como las técnicas de dirección de la administración del software, las métricas y/o medidas de dicho producto todo con el mismo objetivo: presentar un proyecto que satisfaga las exigencias y necesidades del cliente, que sea seguro y confiable, que su mantenimiento y su adaptación a otros sistemas y cambios dentro del mismo sean los propios y sobre todo que los costos no representen mas que una ganancia una perdida para el cliente
1 CAPÍTULO I
FUNDAMENTOS DE CALIDAD DEL SOFTWARE
Actualmente en el ámbito de la computación se ha venido presentando un problema bastante serio sobre todo para la industria del software, dicho problema es la calidad del software. Desde hace varias décadas este tema se volvió un tema de preocupación para ingenieros, maestros, desarrolladores, alumnos, productores, investigadores e industriales. Todos ellos preguntándose y enfocándose a dos preguntas esenciales:
La primera ¿cómo poder obtener un software de y con calidad? Y la segunda
¿cómo se puede evaluar dicha calidad a fondo y completamente?.
Es bien sabido que la industria de la construcción de software es una industria en la que el concepto de calidad ha generado una gran revolución, primero que nada por el hecho de que es una disciplina relativamente joven en comparación a muchas otras en los que los estándares de calidad ya van en versiones muy avanzadas.
Otro aspecto importante que nos frena en cuanto a lograr calidad es que dicha industria exige y crece mas rápido que las mismas metodologías y capacidad de las personas, porque aunque todo se facilita poco a poco por ejemplo el uso de herramientas CASE (Software de Ingeniería asistida por Computadora), la ingeniería de software requiere todavía de mucho capital humano e intelectual, no de insumos ni de materias primas.
Tales circunstancias han provocado una llamada crisis del software, que principalmente se manifiesta en la demora en entregas del producto, los excesos de presupuestos, la falta de cumplimiento de los requerimientos iniciales, entre otros.
2 La pregunta es ¿Existen criterios para evaluar la calidad del software?
Anteriormente la calidad de un programa o sistema se evaluaba de acuerdo al número de defectos por cada mil líneas de código. En 1988, un estudio realizado en los EEUU, demostró que se introducían cerca de sesenta defectos por cada mil líneas de código (60 def/KLOC), durante las etapas de análisis, desarrollo y puesta en operación ya en la producción la cantidad aumenta.
Actualmente para alcanzar un completo y preciso concepto de la calidad del software se requiere una clara y eficaz congruencia entre los requerimientos y características del producto, para poder alcanzar una plena satisfacción del usuario.
Por lo tanto ahora se busca poder alcanzar dentro de un producto de software características tales como: Confiabilidad, soporte logístico, agilidad de respuesta, flexibilidad, facilidad de adopción, integridad, consistencia, congruencia de diseño y producto, sencillez , entre otros.
Esto es conseguir hoy por hoy productos portables, fáciles de mantener y/o ampliar, sencillos de entender, de validación accesible, compatibles con otros sistemas rápidos y efectivos, más un sinfín de características que provoque el terminar o trascender la llamada crisis del software.
Ahora bien, se sabe que el reto es grande porque no se ha respondido la pregunta: ¿cómo podemos lograr la gestión y el aseguramiento de la calidad en el software que se produce?
Podría ser que como primer respuesta se buscará la implementación de la calidad total en la producción del mismo, esto es, buscar el compromiso altamente estrecho entre todas las áreas de una organización, incluyendo servicios y mantenimiento después de la venta.
Claro esta que este debe ser un proyecto planeado a largo plazo ya que conlleva el cambio y adaptación a muchas nuevas reglas, políticas y procedimientos, pero sobre todo el paso a un amplio concepto de lo que es cultura de la calidad total.
3 Dentro de un programa de gestión y aseguramiento de la calidad se deben tomar en cuenta varios aspectos, primero el modelo a seguir y la definición de lo que es calidad para la propia empresa o institución, identificar componentes tipo de resultado y tipo de contribuyente, fijar metas, objetivos y tiempos, técnicas de medición y de comparación, entre muchas otras cosas que mas adelante se podrán percibir mas claramente.
Por lo anterior puedo afirmar en términos generales que la industria del software aun no ha acabado de salir de la fase artesanal, padecemos la llamada “prisa patológica”, que es consecuencia de aspectos tales como:
• Desorganización.
• Falta de planificación.
• Alta dependencia de los “héroes”.
• Dedicamos nuestros esfuerzos de hoy a arreglar lo que se hizo mal ayer.
• El producto (software) es algo intangible y no constreñido por las leyes físicas.
• La disciplina, ingeniería del software, es relativamente reciente y muchos de sus conceptos importantes están aún inmaduros.
• Carencia de un corpus de conocimiento aceptado mayoritariamente que sirva como fundamentos.
• Escasa presión del mercado.
Todos estos factores dan como resultado una empresa inmadura carente de la capacidad para alcanzar una calidad total y por lo tanto la mantiene alejada de lograr productos de software con calidad y mucho menos le permite gestionar sus procesos de calidad ni evaluar efectivamente sus productos frente a otros en el mercado.
Algunos aspectos que se pueden observar dentro de una organización inmadura ante el hecho de crear software de calidad son:
4
• Procesos software normalmente improvisados.
• Si se han especificado, no se siguen rigurosamente.
• Organización reactiva (resolver crisis inmediatas).
• Planes y presupuestos excedidos sistemáticamente, al no estar basados en estimaciones realistas.
• Si hay plazos rígidos, se sacrifican funcionalidad y calidad del producto para satisfacer el plan.
• No existen bases objetivas para juzgar la calidad del producto.
• Cuando los proyectos están fuera de plan, las revisiones o pruebas se recortan o eliminan.
• El 90% de los proyectos no alcanzan los objetivos.
• El 40% fracasan por completo.
• El 29% no se entregan nunca.
• Gastos de adaptación tecnológica al año 2000.
• Coste de demandas y litigios legales añadidos.1
1.1 MODELOS Y CARACTERÍSTICAS DE CALIDAD
Algunas características de calidad con las que debe contar cualquier producto de software para poder cumplir los requerimientos de usuario así como tiempos de entrega y confiabilidad son:
Corrección.- Que se refiere a si el producto de software hace lo que se quiere.
Fiabilidad.-Si el producto trabaja de forma fiable todo el tiempo.
Eficiencia.- Si el software se ejecutará en mi hardware lo mejor que pueda.
Seguridad (Integridad).-Se hace la pregunta de si el software es seguro.
Facilidad de uso.- Que tanto está diseñado para ser usado.
Facilidad de mantenimiento.- Si después de entregado se puede corregir.
Flexibilidad.- En algún momento puedo llegar a cambiarlo.
Facilidad de prueba.- Que tan fácil es probarlo.
Portabilidad.- Se refiere a si podré usarlo en otra máquina.
Reusabilidad.- Podré reutilizar alguna parte del software.
1 www.calidaddelsoftware.com.
5 Interoperabilidad.- Podré hacerlo interactuar con otro sistema.
Podríamos listar muchas características más, ya que la calidad es algo muy complejo y extenso, es claro también que no siempre podremos lograr cubrir en su totalidad todas y cada una de ellas pero es importante saber que mientras mas nos acerquemos a cumplirlas mayor calidad tendrá nuestro software.
Existen varios modelos de calidad de software muy útiles, algunos más complejos que otros pero todos con un mismo fin, lograr la construcción de un software de calidad que pueda ser medido y evaluado, así como también comparado con otros, y que por consiguiente sea un software que cubra al 100% los requerimientos iniciales del usuario-cliente.
Dichos modelos de calidad se pueden clasificar en dos grandes grupos:
Factores que pueden ser medidos directamente.
Factores que solo pueden ser medidos indirectamente.
Las características se centran en tres aspectos importantes de un producto software (McCall):
Características operativas.
Capacidad de soportar los cambios.
Adaptabilidad a nuevos entornos.2
1.1.1 MODELOS DE CALIDAD
Un modelo de calidad es un conjunto de buenas prácticas para el ciclo de vida del software, enfocado en los procesos de gestión y desarrollo de proyectos.
Existen diferentes modelos que incluyen métricas para evaluar diferentes atributos o características de calidad del producto casi siempre en el nivel del diseño o del código durante la etapa de desarrollo del software.
2www.ingenierosoftware.com/calidad
6 Los modelos más actuales generalmente están enfocados a la mejora de procesos, ya que la idea de calidad total se refiere a la calidad desde el inicio del proyecto y el hecho de tener mejores procesos nos conlleva a un mejor resultado.
Algunos modelos de calidad son:
• Modelo PROSOFT.
• Modelo MOPROSOFT.
• NORMA ISO 9000-2000 .
• NORMA ISO/IEC TR 15504.
• Modelo CMM(Modelo de Capacidad y Madurez).
• Modelo SPICE (Mejora de Procesos de Software y capacidad de determinación).
A continuación se explicará de manera detallada cada uno de los modelos con el objeto de comprender y tener una visión más amplia de los estándares de calidad.
1.1.1.1 MODELO PROSOFT (Programa para el Desarrollo de la Industria del Software)
El modelo PROSOFT se define como:
“El Plan Nacional de Desarrollo 2001 - 2006 que plantea el fomento a la industria y el mercado de Tecnologías de la Información (TI) con el objetivo de crear una estrategia para aumentar la competitividad del país.
Como es bien sabido las TI tienen un efecto transversal en toda la economía de una nación, razón por la cual impactan positivamente la competitividad de todos los sectores.” 3
3 www.economia.gob.mx/
7 México cuenta con un gran potencial para desarrollar la industria del software por eso la Secretaría de Economía, en coordinación con organismos empresariales y empresas del sector tecnológico, diseñaron el Programa para el Desarrollo de la Industria del Software (PROSOFT).
A continuación menciono algunas estadísticas interesantes acerca de la situación mexicana dentro de la industria del software:
Actualmente México se ubica en el lugar 50 a nivel mundial con un nivel de gasto en tecnologías de información y comunicaciones de 3.2% del PIB (Producto Interno Bruto). Así mismo este rezago es aún mayor en términos de gasto en software, que es 6 veces inferior al promedio mundial y 9 veces menor que el de EUA, a diferencia de países como la India, Irlanda y Singapur que han logrado alcanzar el éxito en base a su industria de software que es la base de su crecimiento económico.
Realmente México tiene un gran potencial y oportunidades para desarrollar esta industria al máximo dada su cercanía geográfica y en algunos de sus estados el mismo huso horario con el mercado de software mas grande del mundo (EUA), también la red de tratados comerciales mas extensa del mundo y la afinidad con la cultura de negocios occidental.
Por todo esto el objetivo principal del programa PROSOFT es impulsar precisamente la industria de software y extender el mercado de tecnologías de información en México.
PROSOFT tiene fijadas varias metas y estrategias que se pretenden aplicar y alcanzar a partir de hoy al año 2013, a continuación se enumeran y describen brevemente:
METAS:
• Lograr una producción anual de software de 5,000 millones de dólares.
• Alcanzar el promedio mundial de gasto en tecnologías de información.
8
• Convertir a México en el líder latinoamericano de desarrollo de software y contenidos digitales en español.
ESTRATEGIAS:
Para alcanzar esos objetivos, la Secretaría de Economía en conjunto con la industria y con los organismos gubernamentales relacionados con el sector, acordaron desarrollar siete estrategias:
1.- Promover las exportaciones y la atracción de inversiones.- Aprovechando las ventajas del país por su cercanía y el mismo huso horario que EUA, procurando que las empresas incursionen en nichos de mercado con un alto valor agregado.
2.- Educación y formación de personal competente en el desarrollo de software, en cantidad y calidad necesarias.- Ofreciendo capacitación a los ingenieros y técnicos que se encuentran en el mercado y la adecuación de los planes de estudio para que sean acordes con las necesidades de la industria.
3.- Contar con un marco legal promotor de la industria.- Un marco legal que fomente el uso de tecnologías de información y el desarrollo de la industria con reglas como la norma de conservación de mensajes de datos, factura electrónica y firma digital.
4.- Desarrollar el mercado interno.- Apoyando a las empresas para que usen hardware y software en sus operaciones (Inventarios, Normas, Contabilidad) y en su relación con proveedores y clientes (Digitalización de Cadenas de Valor).
5.- Fortalecer a la industria local.- Mediante programas de financiamiento adecuado para sus necesidades de capital de trabajo y capacitación, la disponibilidad de capital de riesgo, el uso de las compras de gobierno para desarrollar una industria de calidad y la incubación de nuevas empresas de software.
9 6.- Alcanzar niveles internacionales en capacidad de procesos.- A efecto de que las empresas cuenten con las mejores prácticas internacionales en la producción de sus sistemas. Para ello, se impulsará la normalización, la creación de una entidad local de certificación, se apoyará la investigación y desarrollo con el fondo sectorial de apoyo creado por la SE (Secretaria de Economía) y CONACYT (Consejo Nacional de Ciencia y Tecnología) y se reconocerá a las mejores empresas a través del Premio Nacional de Tecnología.
7.- Promover la construcción de infraestructura básica y de telecomunicaciones.- Apoyando el desarrollo de parques de alta tecnología vinculados a centros de investigación.
Con estas estrategias se beneficiará no sólo la competitividad de la industria del software, sino también la de la economía en general, puesto que las empresas mexicanas tendrán más opciones para incorporar las tecnologías de información en sus procesos productivos y de comercio.
El Programa para el Desarrollo de la Industria del Software (PROSOFT) se lanzó el 9 de Octubre del 2002 por la Secretaría de Economía, con el objetivo de crear las condiciones necesarias para que México cuente con una industria de software competitiva a nivel internacional y asegurar así el crecimiento de la misma.
Hoy en día la complejidad con que se realizan los sistemas de información y las exigencias de los mismos va cada vez mas en aumento, y por lo mismo muchas veces resulta difícil cumplir con las expectativas de los clientes.
También es cierto que cada día surgen mas herramientas, técnicas y modelos que nos facilitan esta tarea, ayudando a las empresas encargadas de las tecnologías de información a generar productos de mayor calidad y que cumplan con los requerimientos de los clientes, así mismo ayudan también a mejorar costos y tiempos.
10 Anteriormente aunque se reconocía la necesidad de crear software de calidad realmente no se había hecho un verdadero esfuerzo por alcanzarla, afortunadamente surgió PROSOFT que como ya mencione es un programa realmente enfocado a invertir y no escatimar en recursos tanto humano, intelectual, económico con el fin de colocar a la industria del software como la base de la economía mexicana, generando mas empleos y posicionando a México como líder en construcción de software. 4
1.1.1.2 MOPROSOFT
Este modelo surge como consecuencia del análisis de la sexta estrategia planteada por el PROSOFT, es un modelo concebido, diseñado y desarrollado por mentes mexicanas, este modelo esta adecuado específicamente para las necesidades mexicanas y con ventajas mayores a otros modelos.
Tiene mayores ventajas que los modelos que se mencionaran a lo largo del capítulo porque fue creado tomando lo mejor de todos esos modelos, sus mejores practicas integrándolas y mejorándolas.
Algunas ventajas son:
• Fácil de entender.
• Fácil de aplicar.
• No es costoso en su adopción.
• Sirve de base para alcanzar evaluaciones exitosas con otros modelos o normas.
Dicho modelo esta orientado a pequeñas y medianas empresas, hecho favorable si se considera que aproximadamente el 80% de las empresas desarrolladoras de software del país se encuentran en esta categoría.
4www.software.net.mx/desarrolladores/prosoft.
11 Su principal fortaleza es que integra varias de las prácticas propuestas por los otros modelos y corrige algunas de sus desventajas, como son el hecho de que no ha sido liberado por completo o al menos falta el modelo de evaluación;
además, está en proceso de convertirse en norma compitiendo con el proyecto de norma ISO/IEC TR 15504 y aunque no ha sido aprobado, se planea realizar pilotos en algunas organizaciones para evaluar qué tan fácil resulta su implantación determinando los recursos necesarios.
Existen más modelos y normas que también están enfocados a lograr la calidad del software, pero solo mencionare a groso modo dos de ellas por considerarlas las de mayor relevancia.5
1.1.1.3 NORMA ISO 9000-2000
Es una norma internacional destinada a evaluar la capacidad de la organización para cumplir los requisitos del cliente, los reglamentarios y los propios de la organización.
Algunas de sus ventajas son que tiene un mecanismo de certificación bien establecido y que además esta disponible y es conocido. Y como desventajas podemos mencionar que no es específica para la industria de software, no es muy fácil de entender puesto que no está definida como un conjunto de procesos y además no es fácil de aplicar ya que se conforma de una fuerte cantidad de procedimientos.
1.1.1.4 NORMA ISO/IEC TR 15504
Esta norma define el modelo de referencia de procesos de software y de capacidades de procesos que constituyen la base para la evaluación de procesos de software. Se compone de 9 partes de las cuales la 2, 3 y 9 son normativas y las demás informativas.
5alarcos.inf-cr.uclm.es/doc/calidadSI/Index.htm
12 Como ventajas de esta norma podemos mencionar que es específico para el desarrollo y mantenimiento de software es fácil de entender (24 procesos, 16 páginas) también esta definido como un conjunto de procesos y esta orientado a mejorar los procesos para contribuir a los objetivos del negocio.
Y como sus desventajas esta que no es práctico ni fácil de aplicar, además tiene solamente lineamientos para un mecanismo de evaluación. Y todavía no es norma internacional.6
1.1.1.5 MODELO DE CAPACIDAD Y MADUREZ P-CMM (Capability Maturity Model)
P-CMM es un modelo de madurez cuyo objetivo principal es desarrollar el talento e intelecto humano dentro de las organizaciones de desarrollo y construcción del software.
Dicho modelo describe el proceso evolutivo desde prácticas inconsistentes y ad-hoc, hasta el desarrollo del conocimiento y habilidades de una fuerza de trabajo madura y disciplinada.
Todo esto con el fin de atraer, desarrollar, motivar, organizar y retener el talento necesario para sostener el proceso de desarrollo de software.
Los objetivos estratégicos del P-CMM son:
• Mejorar la capacidad de las organizaciones de software por incrementar la capacidad de su fuerza de trabajo.
• Asegurar la capacidad del desarrollo de software que es mas un atributo de la organización que de solo unos pocos individuos.
• Alinear la motivación de los individuos con el de la organización, es decir que todos persigan el mismo objetivo.
6www.monografias.com/modelos/call/call.shtml
13
• Retener el recurso humano dentro de la organización, que se comprometan y quieran a su empresa y mas que buscar un bienestar o provecho personal lo busquen para si y para su misma organización.
Este modelo pretende ayudar a las empresas desarrolladoras de software de la siguiente manera:
Primero pretende caracterizar la madurez de todas sus prácticas en la fuerza de trabajo, propone también un programa de continuo desarrollo en la fuerza de trabajo, es decir, que el personal no deje de aprender y crecer en su área de trabajo, además se pretende priorizar las acciones que se tienen que llevar a cabo de forma inmediata, integra también el desarrollo continuo de la fuerza de trabajo con el mismo mejoramiento del proceso y por ultimo pero como punto más importante para mi es que se propone establecer una cultura de excelencia en la ingeniería de software.
Este modelo consiste o se lleva a cabo en 5 niveles que continuamente mejoran los estados laborales, espirituales y sentimentales de los trabajadores, puesto que genera equipos de trabajo, motiva el desempeño, los alienta a trabajar, entre otros.
Cada nivel es una plataforma bien organizada que promueve el desarrollo de la fuerza de trabajo dentro de la organización.
Al llevar a cabo cada uno de estos niveles la organización puede introducir trabajos o actividades que muy probablemente los empleados no puedan realizar por no estar bien capacitados para hacerlo.
Nivel 1
En este nivel mas que empezar a introducir o ejecutar procedimientos de mejora es mas bien analizar si dentro de la empresa se presenta alguno de los siguientes casos, que obviamente no son positivos o benéficos para la misma organización.
14 Los puntos a considerar son:
• Si el desempeño de actividades de recursos humanos es inconsistente.
• Si hay formularios (como evaluación de desempeño) pero no se capacita sobre como utilizarlos.
• Si existen jefes o gerentes sin entrenamiento que realizan sus funciones pero no saben o no están capacitados para dirigir a la fuerza de trabajo.
• Los gerentes no tienen la habilidad de desarrollar sistemáticamente la capacidad competitiva de su fuerza de trabajo.
Además de considerar problemas frecuentes por los que la fuerza de trabajo no puede ser efectiva los cuales son:
• Distractores ambientales.
• Objetivos de desempeño ambiguos.
• Falta de conocimientos o habilidades relevantes.
• Comunicación pobre entre la fuerza laboral misma, ya sea entre subordinados o entre subordinados y el jefe.
Nivel 2
En este nivel se busca eliminar los problemas de las organizaciones que se detectaron en el Nivel Inicial. En cuanto al ambiente de trabajo, esta diseñado para establecer y mantener condiciones de trabajo que permitan concentrarse en sus tareas, sin distracciones innecesarias o inapropiadas.
Los objetivos planteados en este nivel son poner a disposición de todos los empleados los recursos necesarios para que se sientan cómodos y contentos al realizar su trabajo y por consiguiente el desempeño de los procesos mejóre, además de evitar distracciones en el mismo lugar de trabajo. Desde el punto de vista de la comunicación se pretende establecer un ambiente social que permita una interacción efectiva entre todo el personal de la organización y asegura que la fuerza de trabajo tiene las habilidades para compartir información y coordinar sus actividades eficientemente.
15 Para el contrato de personal, se establece y usa un proceso formal por medio del cual el talento es reclutado, seleccionado sin preferencias de ningún tipo excepto el de la habilidad y conocimientos intelectuales para desempeñar sus funciones correctamente. También establece criterios objetivos para medir el desempeño grupal e individual y da retroalimentación sobre el mismo para así aumentar el desarrollo de los empleados día con día y evitarse el estancamiento o el que los procedimientos y metodologías así como la forma en que se llevan a cabo los procesos se vuelvan obsoletos.
Un punto muy importante en el que debe enfatizar la organización es en la forma en que se provee a todos los individuos con remuneración, premios y beneficios, que es en una sola palabra la motivación basada en su desempeño y contribución con la organización la cual es un arma que permite tener a los empleados comprometidos con los objetivos de la misma.
Nivel 3
Se enfoca en la creación de una estructura organizacional para el desarrollo de la fuerza de trabajo. En este nivel la organización identifica el conocimiento y las habilidades necesarias para la realización de las actividades de negocios también desarrolla planes estratégicos para que la fuerza de trabajo pueda y se le facilite cumplir los objetivos planteados por la organización a corto y largo plazo. Existen también las posibilidades de promoción para alentar a las personas a desarrollar sus capacidades de la mejor y más productiva manera.
Propone también utilizar las habilidades de cada individuo a la hora de llevar a cabo los procesos de trabajo para establecer roles que sirvan para dar el siguiente paso en el desarrollo del mismo grupo de trabajo.
Por ultimo se establece una cultura de participación que permite un mejor uso del talento de la gente dentro de la organización para tomar decisiones y realizar de forma más efectiva el trabajo.
16 Nivel 4
Las tareas por realizar en este nivel se enfocan principalmente en explotar el conocimiento y la experiencia de los trabajadores de la organización que se logro desarrollar en el nivel 3. Los procesos basados en la aptitud son usados para crear ahora procesos integrados y multidisciplinarios. Los grupos de trabajo son autorizados para manejar sus propios procesos de trabajo y dirigir la mayoría de sus actividades. Los resultados obtenidos son capturados y reutilizados. Los consejeros o jefes se apoyan en la infraestructura creada en este nivel para atender mejor a los individuos y grupos de trabajo en el desarrollo efectivo de sus capacidades.
Nivel 5
Las actividades realizadas en este nivel se enfocan en improvisar y mejorar continuamente las actividades y los procesos de la organización así como también las actividades de la fuerza de trabajo. Los individuos consecutivamente mejoran los procesos de trabajo personales que usan y por consiguiente el mismo grupo de trabajo mejora sus procesos por tomar mano de la buena ejecución individual de los mismos, así como también la organización evalúa y mejora la relación de rendimiento entre individuos, grupos de trabajo y unidades todos en conjunto y con los objetivos de negocios de la organización. Por último se evalúan las oportunidades para improvisar y renovar las prácticas de la fuerza de trabajo mediante la mejora o ajustes increméntales la adopción de practicas nuevas e innovadoras y por supuesto nueva tecnología que facilite el desarrollo de las mismas.7
1.1.1.6 MODELO SPICE (Software Process Improvement Capability determination)
Este modelo fue creado para la evaluación y mejora de procesos de software, el cual dio inicio en el año de 1993 y aún se encuentra en la fase de informe técnico. Dicho modelo es aplicable a cualquier organización o empresa que quiera mejorar la capacidad de cualquiera de sus procesos de software y se
7www.ingenierosoftware.com/calidad/cmm.
17 Conceptos
y guía de introducción
Guía para determinar capacidad de
proveedores
Realización de una evaluación
Guía de evaluación
Guía de calificación de
evaluadores Vocabulario
Guía de uso para la mejora
de procesos
Modelo de referencia para procesos
y capacidad
Modelo de evaluación y guía de uso
P P 1
P P 9 P
P
7 P P
8
P P 6
P P 3
P P 4
P P 2
P P 5
puede utilizar como herramienta de evaluación del estado de los procesos de software de la empresa, además es independiente de la organización, del modelo del ciclo de viia, de la metodología y la tecnología
Considero este modelo como un marco para métodos de evaluación, no un método o modelo en sí y abarca los siguientes puntos dentro de la calidad del software:
• Evaluación de procesos.
• Mejora de procesos.
• Determinación de capacidad.
Esta alineado con el ISO/IEC 12207 e intenta proporcionar un marco en el que los enfoques existentes puedan armonizarse y funcionar como uno solo.
Los componentes de este modelo se muestran en la siguiente figura:
Figura No. 1 Componentes del Modelo SPICE.
18 El modelo SPICE cuenta con un modelo de referencia llamado P2 el cual describe los procesos que una organización puede realizar para comprar, suministrar, desarrollar, operar, mantener y soportar el software, así como los atributos que caracterizan la capacidad de estos procesos, proporciona una base para medir la capacidad de los procesos, en función de grado de consecución de sus atributos.
P2 tiene dos dimensiones: Procesos y Capacidad
Procesos
Contiene los procesos que se han de evaluar y que corresponden con los procesos del ciclo de vida del software, definidos en el estándar ISO 12207 creado en 1995.
Se agrupan en categorías, en función del tipo de actividad al cual se aplican:
• CUS: Cliente-Proveedor.
• ENG: Ingeniería.
• SUP: Soporte.
• MAN: Gestión.
• ORG: Organización.
La categoría CUS está formada por procesos que afectan directamente al cliente, soportan el desarrollo y la transición del software al cliente y permiten la correcta operación y uso del producto y/o servicio software.
• CUS.1 Adquisición de productos software y/o servicios.
• CUS.2 Establecimiento de contratos.
• CUS.3 Identificar las necesidades del cliente.
• CUS.4 Realizar auditorias y revisiones conjuntas.
• CUS.5 Entrega e instalación del software.
• CUS.6 Mantenimiento del software.
19
• CUS.7 Proporcionar servicio al cliente.
• CUS.8 Valorar la satisfacción del cliente.
La categoría ENG está formada por procesos que directamente especifican, implementan o mantienen el producto software, su relación con el sistema y su documentación.
• ENG.1 Análisis y diseño de requerimientos del sistema.
• ENG.2 Análisis de requerimientos del software.
• ENG.3 Diseño del software.
• ENG.4 Construcción del software.
• ENG.5 Integración y pruebas del software.
• ENG.6 Integración y pruebas del sistema.
• ENG.7 Mantenimiento del software y del sistema.
La dimensión de procesos SUP está formada por procesos que dan soporte a cualquiera del resto de procesos (incluidos los SUP), en distintos puntos del ciclo de vida del software.
• SUP.1 Documentación.
• SUP.2 Gestión de la configuración del software.
• SUP.3 Garantía de calidad.
• SUP.4 Resolución de problemas.
• SUP.5 Realizar revisiones conjuntas.
La dimensión MAN esta formada por procesos utilizados en la gestión de cualquier tipo de proyecto o proceso en el ciclo de vida del software.
• MAN.1 Gestionar el proceso.
• MAN.2 Gestionar el proyecto.
• MAN.3 Gestionar la calidad.
• MAN.4 Gestionar los riesgos.
20 La dimensión ORG se encuentra formada por procesos que establecen los objetivos de negocio de la organización.
• ORG.1 Alineamiento de la organización.
• ORG.2 Establecimiento del proceso.
• ORG.3 Evaluación del proceso.
• ORG.4 Mejora del proceso.
• ORG.5 Gestión de recursos humanos.
• ORG.6 Infraestructura.
• ORG.7 Reutilización.
Capacidad
Define una escala de medida para determinar la capacidad de cualquier proceso y consta de seis niveles:
1. Incompleto.
2. Realizado (Realización del proceso).
3. Gestionado (Gestión de realización, Gestión de productos) . 4. Establecido (Definición de procesos, Recursos de procesos) . 5. Predecible (Medición de procesos, Control de procesos).
6. En optimización (Cambio de procesos, Mejora continua).
Es importante mencionar que cada proceso tiene un conjunto de prácticas base asociadas; las prácticas base describen las actividades esenciales de un proceso específico y la realización de las prácticas base indica el grado de alcance de la finalidad del proceso.
Así como también cada atributo de proceso tiene un conjunto de prácticas de gestión asociadas las cuales son las que implementan o institucionalizan un proceso de una manera general y su realización indica la consecución del atributo en esa instancia del proceso. 8
8www.ingenierosoftware.com/calidad/spice
21 1.2 CALIDAD DE PROCESO DE INGENIERIA DE SOFTWARE
Cuando hablo de la calidad del producto y la calidad del proceso de software no me refiero a la misma cosa, un proceso de software se refiere al conjunto de actividades, métodos, prácticas y transformaciones que se utilizan para desarrollar y mantener un software así como sus productos asociados (planes, documentos de diseño, código, casos de prueba, manuales, etc.).
Ahora bien un método de mejoramiento de procesos es un conjunto de procedimientos, herramientas y entrenamiento para incrementar la calidad del producto.
Es decir, la calidad del proceso es cuando se diseña, desarrolla y construye el software así como cuando se mantiene y la calidad del producto es la mejora que se le hace a todo el proceso y al producto en general.
En los últimos años se ha venido observando la estrecha relación entre la calidad de los productos de software y los procesos utilizados para construirlos.
El mejoramiento de procesos tiene planteados 4 objetivos básicos para alcanzar la calidad de los mismos y más que nada empezar a introducirnos de lleno en la búsqueda de la calidad total.
Dichos objetivos son los siguientes:
• Comprender el estado actual de la práctica de Ingeniería de Software y gestión en una organización.
• Seleccionar áreas de mejoramiento donde los cambios pueden significar el mayor beneficio a largo plazo.
• Enfocarse en agregar un verdadero valor agregado al negocio y no solo quedarnos en alcanzar una utopía del proceso.
• Lograr los objetivos mediante una combinación de procesos efectivos, con gente preparada, motivada, comprometida y creativa.
22 1.3 CALIDAD DEL PRODUCTO DE SOFTWARE
En la actualidad existen diversos problemas para obtener la calidad del software. Antes que cualquier cosa hay que saber que la calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia.
La calidad se puede expresar como eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.
La calidad del software se puede medir y varía de un programa a otro según para las funciones que se ha elaborado, por ejemplo el software que se desarrolla para el control de aparatos médicos debe de ser confiable "cero fallas" un software hecho para ejecutarse una sola vez no requiere el mismo nivel de calidad; mientras que un producto de software que es utilizado durante un periodo de 5 años necesita ser confiable, mantenible y flexible para que de esta manera se puedan disminuir los costos de mantenimiento que pueda existir durante el tiempo de su explotación.
Al hablar de calidad del producto o calidad total no precisamente se refiere a lograr una calidad perfecta, es cierto que se requiere calidad en todo, tanto en el proceso como en el producto final, pero la perfección es algo de lo que se debe hablar hasta que al menos la calidad total haya sido alcanzada.
Por lo tanto para lograr la calidad en el producto primero que nada es necesario comprender desde el principio del proyecto las necesidades reales y completas de los usuarios con tanto detalle como sea posible (requerimientos) mientras mas claras y detalladas sean mas fáciles de solucionar e implementar van a ser.
23 Existen diferentes aspectos de la calidad que seria conveniente tomar en cuenta:
Interna.- Es aquella que es medible a partir de las características intrínsecas, como por ejemplo el código fuente, la definición de requerimientos, etc.
Externa.- Es aquella que es medible en el comportamiento mismo del producto, es decir ya que fue entregado puede ser desde una prueba o hasta la implementación.
En uso.- Esto es durante la utilización efectiva por parte del usuario, cuando el producto ya esta puesto en marcha y viene ya el mantenimiento, las actualizaciones, las mejoras, etc.
1.3.1 MODELO DE CALIDAD PARA CALIDAD INTERNA Y EXTERNA
Figura No. 2 Modelo de Calidad Externa e Interna Calidad externa
e interna
Funcionalidad Fiabilidad Usabilidad Eficiencia Mantenibilidad Portabilidad
adecuación exactitud interoperabilidad
seguridad de acceso cumplimiento de
la funcionalidad
madurez tolerancia a
fallos capacidad de recuperación cumplimiento de
la fiabilidad
capacidad para ser entendido capacidad para ser aprendido capacidad para
ser operado capacidad de
atracción cumplimiento de
la usabilidad
comportamiento temporal utilización de
recursos cumplimiento de
la eficiencia
capacidad para ser analizado capacidad para
ser cambiado estabilidad capacidad para
ser probado cumplimiento de lamantenibilidad
adaptabilidad instalabilidad coexistencia capacidad para ser reemplazado cumplimiento de la portabilidad
24 Características del modelo:
FUNCIONALIDAD
Adecuación.- Es la capacidad del producto para generar procesos que funcionen específicamente para los requerimientos especificados por el usuario.
Exactitud.- Capacidad del producto para proporcionar los resultados o efectos correctos y acordados, con un buen grado de precisión.
Interoperabilidad.-Capacidad del software para interactuar con otros sistemas, ya sea con sistemas internos de la empresa o con sistemas del mercado.
Seguridad de acceso.-Capacidad del software para proteger información y datos de manera que las personas o sistemas no autorizados no puedan leerlos o modificarlos, al tiempo que no se deniega el acceso a las personas o sistemas autorizados.
Cumplimiento funcional.- Capacidad del software para adherirse a firmas, convenciones o regulaciones en leyes y prescripciones similares relacionadas con la funcionalidad.
FIABILIDAD
Madurez.-Capacidad del producto software para evitar fallar como resultado de fallos en el software.
Tolerancia a fallos.-Capacidad del software para atender el margen de error o fallos que pudieran surgir durante su operación.
Capacidad de recuperación.-Capacidad del producto para reestablecer un nivel de prestaciones especificado y de recuperar los datos directamente afectados en caso de fallo.
Cumplimiento de la fiabilidad.-Capacidad del producto para adherirse a normas, convenciones o regulaciones relacionadas con al fiabilidad.
25 USABILIDAD
Capacidad para ser entendido.-Capacidad del software que permite al usuario entender el software, y poder manejarlo asi como tambien para que pueda determinar si es adecuado para realizar sus operaciones.
Capacidad para ser aprendido.-Se refiere a la facilidad con la cual el software es aprendido por el usuario, si es claro y entendible.
Capacidad para ser operado.-Capacidad del software que permite al usuario operarlo y controlarlo.
Capacidad de atracción.-Capacidad del producto ara ser atractivo al usuario.
Cumplimiento de la usabilidad.-Capacidad del producto software para adherirse a normas, convenciones, guías de estilo o regulaciones relacionadas con el mismo.
EFICIENCIA
Comportamiento temporal.- Capacidad del producto para proporcionar tiempos de respuesta, tiempos de proceso y potencia apropiados, bajo condiciones determinadas y muchas veces condiciones de mucha presión.
Utilización de recursos.- Capacidad del software para maximizar el rendimiento la utilización de los recursos con los que cuenta.
Cumplimiento de la eficiencia.- Capacidad del software para adaptarse a las condiciones y exigencias de la industria y de los clientes y/o usuarios.
MANTENIBILIDAD
Capacidad para ser analizado.- Es la capacidad del producto para determinar cuales son las deficiencias o fallas que presenta el mismo durante su operación.
Capacidad para ser cambiado.- Es la facilidad con la que se le pueden hacer modificaciones al software.
Estabilidad.- Capacidad del producto para evitar efectos inesperados que puedan afectar su operación y que son resultado de las modificaciones que se le hayan hecho.
26 Capacidad para ser probado.- Permite que el software modificado pueda ser validado y probado las veces que resulte necesario.
Cumplimiento de la mantenibilidad.- Capacidad del software de poder ser mantenido y corregido durante la operación del mismo sin que se altere en ningún momento.
PORTABILIDAD
Adaptabilidad.- Capacidad del software para ser adaptado a diferentes entornos especificados y diferentes a el mismo sin que cause ningún problema y que funcione igual en alguna otra aplicación, área, rubro, empresa , etc.
Coexistencia.-Capacidad del software para coexistir con otro software independiente, en un entorno común, compartiendo recursos comunes.
Capacidad para reemplazar.- Capacidad del software para ser usado en lugar de otro producto software, para el mismo propósito, en el mismo entorno.
Cumplimiento de la portabilidad.- Capacidad del producto para transferirse o utilizarse en otros ambientes y procesos diferentes. 9
1.3.2 MODELO DE CALIDAD PARA CALIDAD EN USO
Figura No. 3 Modelo de Calidad para Calidad en Uso
9www.ideotechnologies.com/calidadexternainterna.html (23/11/2006) Calidad en
Uso
Efectividad Productividad Seguridad de Satisfacción acceso
27 Características del modelo:
EFECTIVIDAD
Es la capacidad del producto para entregar y mostrar los resultados fijados en los objetivos, resultados exactos, precisos y completos.
PRODUCTIVIDAD
Capacidad del software para permitir a los usuarios gastar una cantidad adecuada de recursos con relación a la efectividad alcanzada, en un contexto de uso especifico.
SEGURIDAD FÍSICA
Capacidad del software para alcanzar niveles aceptables en el riesgo de hacer daño a personas, al negocio, al software, a las propiedades o al medio ambiente en un contexto de uso especificado.
SATISFACCIÓN
Capacidad del software para satisfacer a los usuarios cumpliendo con todos los requerimientos que ellos esperaban o solicitaron.
1.3.3 CALIDAD DE SOFTWARE BASADO EN COMPONENTES
Esta disciplina se basa en el desarrollo de software utilizando software reutilizable, cuenta actualmente con un creciente interés, tanto desde el punto de vista académico como el de la industria, ya que la demanda de mecanismos y herramientas de desarrollo basados en componentes es cada día mayor.
Este paradigma se basa en el uso de los componentes software como entidades básicas del modelo, entendiendo por componente “una unidad de composición de aplicaciones software que posee un conjunto de requisitos, y
28 que podría ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes, de forma independiente en tiempo y espacio”.
Una de las principales ventajas del desarrollo de software basado en componentes se basa en la “reutilización” de los mismos. De esta forma, los componentes se diseñan y desarrollan con el objetivo de poder ser reutilizados en otras aplicaciones, reduciendo el tiempo de desarrollo, mejorando la fiabilidad del producto final, y siendo más competitivos en cuanto a costos.
Aunque hasta ahora la reutilización suele suceder principalmente a nivel interno dentro de las organizaciones, el uso de los componentes comerciales comienza a extenderse.
De esta forma se habla de componentes COTS (Commercial-Off-The-Shelf), que han sido definidos como una clase especial de componentes software, normalmente de grano grueso, que presentan las siguientes características:
• Son vendidos o licenciados al público en general.
• Los mantiene y actualiza el propio vendedor, quien conserva los derechos de la propiedad intelectual.
• Están disponibles en forma de múltiples copias, todas idénticas entre sí.
• Su código no puede ser modificado por el usuario.
La cada vez mayor disponibilidad y uso de este tipo de componentes está impulsando notablemente la creación de un mercado global de componentes COTS, que está pasando de ser la utopía de hace unos años a una realidad cada vez más cercana. La tecnología básica de componentes comienza a estar lo suficientemente madura (a través de plataformas de objetos distribuidos como EJB, CORBA o .NET) como para que numerosas empresas la adopten en sus nuevos desarrollos y sistemas de información.
29 La palabra calidad tiene varios significados, una de ellas es la definida por la Norma ISO 8402 que la define como:
“La totalidad de aspectos y características de un producto o servicio que tienen que ver con su habilidad para satisfacer las necesidades declaradas o implícitas”.
Aunque la calidad es un objetivo importante para cualquier producto, no debemos olvidar que los productos, y también los productos software, se construyen para ser utilizados.
Por tanto, el principal objetivo de un producto es satisfacer una necesidad (o varias) de un usuario y, por consiguiente, ofrecer al usuario algún beneficio por su utilización. Es decir la calidad no es lo único que se busca en un producto sino que cumpla las necesidades del cliente.
Es importante darnos cuenta de que la calidad de un producto en este caso software no se refiere únicamente a la entrega de un producto que no tenga errores, la calidad es mas un proceso de formalización durante todo el proceso de creación del producto mediante modelos que definan las características que el mismo debe ir cumpliendo mientras avanza su desarrollo y las mismas características que medirán la calidad del producto a la hora de ser finalizado y entregado.10
1.3.3.1 CARACTERÍSTICAS
En general, no existe un consenso a la hora de definir y clasificar las características de calidad que debe presentar un producto software. Para guiarnos un poco en esta definición de características tomaremos como base los estándares internacionales que fueron los primeros en definir y concretar dichas características.
10 www.msguayaquil.com/blogs/julioc/archive/2006/05/08/Desarrollo-de-Software-Basado-en- Componentes.aspx
30 Siguiendo su terminología, entendemos por característica de calidad de un producto software a un conjunto de propiedades mediante las cuales se evalúa y describe su calidad.
Una característica se puede refinar en múltiples niveles de sub-características.
Ejemplos de características son la funcionalidad, la fiabilidad o la facilidad de uso. A su vez, la característica funcionalidad se puede descomponer en sub- características como corrección, interoperatividad y seguridad, entre otras.
Llamaremos atributo a una propiedad de calidad a la que se le puede asignar una métrica, es decir, un atributo que en determinado momento va a poder ser medido y evaluado. Con todo esto, un modelo de calidad se define como “un conjunto de características y sub-características, junto con las relaciones que existen entre ellas”. Por supuesto, el modelo de calidad a utilizar va a depender del tipo de producto a evaluar.
Lamentablemente en este sentido, los estándares y propuestas que actualmente existen son modelos muy generalizados y muy extensos, y por lo tanto se hace difícil su aplicación en temas más concretos, es muy importante también tratar de “refinarlos” y particularizarlos en casos mas concretos para poder esperar mas garantía de éxito.
Es importante señalar que, además de las características de calidad en un componente, hay otro conjunto de características no relacionadas directamente con la calidad como pueden ser el precio, la asistencia técnica, las condiciones de licencia, etc., que también son necesarias a la hora de valorar el componente más adecuado.
Todas estas características técnicas y no técnicas deben estar documentadas en un formato aceptado por los participantes en el desarrollo de software.
Un tema adicional pero muy relacionado a este es el de la Calidad de Servicio (QoS). En su normativa, ISO define el QoS como “un conjunto de calidades relacionadas con el comportamiento colectivo de uno o más objetos”.