Autor: Enfoque SistĂŠmico 2014
Calidad de Software enfoque-sistemico-ing.blogspot.com Enfoque-sistemico-ing.blogspot.com
-Calidad de Software -
Calidad de Software Calidad, Eficiencia y Eficacia del Software Ciclos de Vida del Software Gestión de Calidad Principios de Calidad de Software
Contenido INTRODUCCIÓN ............................................................................................................................................. 3 Calidad, Eficiencia y Eficacia del Software .................................................................................................. 4 Ciclos de Vida del Software ........................................................................................................................... 5 Gestión de Calidad ........................................................................................................................................ 11 Principios de Calidad de Software .............................................................................................................. 13 BIBLIOGRAFIA .............................................................................................................................................. 15
2
-Calidad de Software INTRODUCCIÓN La eficiencia y eficacia son dos conceptos que deben ir de la mano en el desarrollo de cualquier tarea que se emprenda. En el caso de la producción de software, son elementos indispensables para el aseguramiento de la calidad. Así mismo, se deben seguir pautas delimitadas por los modelos de calidad, ciclo de vida sistemas de gestión de calidad y las normativas vigentes en lo concerniente al reconocer qué se espera de este tipo de productos. A través del análisis del material se conocerá la importancia de la eficiencia, calidad y eficacia en el desarrollo del software, su ciclo de vida, la gestión y los principios que se deben tener en cuenta para entregar al usuario final un programa que no sólo satisfaga las necesidades iniciales sino que aumente la demanda del producto.
3
-Calidad de Software Calidad, Eficiencia y Eficacia del Software A la hora de comprar, más que pensar en el precio o la comodidad, lo que el cliente siempre busca es un producto de calidad. Sin embargo, este concepto varía de acuerdo a la necesidad que se desea satisfacer. Por otro lado, se espera que el producto o servicio ofrecido cumpla lo prometido tanto por el vendedor, la empresa, como por la publicidad, y otros que apelan a la economía, terminan pagando por un artículo que a la final no suplirá las expectativas. En la mayoría de los casos el nivel de calidad varía de acuerdo a la reacción y predilección del cliente. Cuando este llega al establecimiento comercial es porque tiene claro lo que necesita, dónde lo encontrará y porque es su lugar de preferencia. Si no encuentra lo que está buscando, tratará de adquirir algo parecido a menor precio o lo mismo en un lugar diferente si manifiesta parcialidad hacia alguna marca en particular. Esto sucede cuando el cliente conoce la alta calidad de un producto en particular, y hace que quien lo adquiera establezca preferencias. Aun cuando la calidad aporte nivel al cliente, hay ocasiones en las que éste no tendrá el poder adquisitivo para invertir en él. En el caso de los servicios, estos dependen más de atención al cliente y las mínimas fricciones que puedan resultar. Se tiene el concepto erróneo de que un producto de calidad es aquel que goza de amplia publicidad y es mencionado en los diferentes medios de comunicación. En ocasiones, puede no ser tan cierto y se llega a caer en alguna trampa mediática. Es necesario cerciorarse muy bien en cuanto a las características de un artículo antes de adquirirlo. Por otro lado, se tiende a definir eficiencia y eficacia como una misma cosa. En la realidad, estos son dos conceptos que difieren enormemente. Se puede hablar de la eficiencia como la relación entre los logros obtenidos en un proyecto y los recursos utilizados para tal fin. Esto indica que se habla de menores gastos por un buen resultado o de mayores resultados con el mismo consumo. La eficacia, en cambio, se define como el nivel de obtención de metas y objetivos. Habla de la capacidad de lograr lo que se propone. Esta difiere de la eficiencia en que la primera se refiere a la óptima utilización de los recursos y la segunda a la capacidad de alcanzar un objetivo aun cuando se maximicen los gastos. Se puede ser eficaz sin ser eficiente, o eficiente sin ser eficaz, la meta final es propender por las dos cosas. Esto se podría evidenciar en el caso de que se entregue un trabajo de construcción, por ejemplo un puente antes del tiempo previsto pero con mayor uso de materiales, aquí se es eficaz más no eficiente. La gestión de la calidad genera gastos, los que a su vez se traducen en el nivel de eficiencia del proceso, el grado de satisfacción del cliente, la mínima o nula falla en la fabricación del artículo y/o prestación del servicio, en la disminución de los costos de oportunidad y elevados ingresos por venta. Es por esto que el control de los recursos juega
4
-Calidad de Software un papel preponderante en la garantía de calidad, para esto se deben identificar, determinar y analizar estos costos en los servicios que la organización ofrece para reajustar la toma de decisiones y ser más competitivos. Partiendo de ello se puede afirmar que una organización es competitiva cuando cuenta con buenos productos y/o servicios fabricados u ofertados gracias a un proceso eficiente de gestión y a un costo adecuado. Para esto se deben desarrollar diferentes tipos de calidad: en el proceso, gestión, atención al cliente y por supuesto la del producto o servicio. De aquí se puede concluir que este es un elemento vital para lograr una ventaja distintiva en el mercado, además de la base de la supervivencia y el desarrollo de las corporaciones. La prestación al elemento de calidad es un punto en que las personas en general son más sensibles, pues al ser un producto intangible recibe del cliente la mayor intensidad de capacidad crítica, no siendo así con los artículos de consumo. Para que la eficiencia y eficacia sean tangibles en los servicios prestados se debe considerar el costo de oportunidad, el cual se concibe como el ingreso que no se obtiene gracias a las irregularidades en la elaboración de un objeto o al facilitar una asistencia. En las organizaciones la eficiencia en la gestión de calidad va a la par del manejo inmejorable de los recursos invertidos en el proceso de gestión y mejora continua durante la manufactura de productos y/o prestación de servicios, con el fin de asumir los gastos mínimos y se obtenga un nivel de satisfacción al cliente aceptable.. La eficacia en la gestión de calidad se relaciona con la capacidad de respuesta de la organización para satisfacer la necesidad del cliente a tiempo y en las condiciones acordadas. Aquí se debe considerar un nivel óptimo o de equilibrio entre los costos de calidad y no calidad, expresado en mayor grado de creación de valor.
Ciclos de Vida del Software Los sistemas informáticos en primera instancia se crearon para cumplir la función de tomar el control de tareas altamente repetitivas y extremadamente específicas, alcanzando pocos objetivos a través de una metodología precisa. De aquí de muchas empresas consideraran “mecanizar” los procesos a través de estas herramientas, esto con el fin de minimizar el uso del intelecto o de un control y registro más preciso de los volúmenes de producción. Con el pasar del tiempo, surge la necesidad de adaptar estos sistemas a las exigencias del mercado, cada vez más complejas. El programador debía realizar un relevamiento de las solicitudes del cliente y con base en los requerimientos iniciaba la tarea de codificación. Esta tarea no se supervisaba, gestionaba o administraba de ningún modo, sólo se corregía a medida que se presentaban errores que usualmente se relacionaban con la lógica de la codificación como de los requerimientos del usuario final.
5
-Calidad de Software A través de este sistema de producción, se ahorran recursos en análisis, planeación, gestión de recursos, documentación, entre otros. Esto es útil en proyectos pequeños llevados a cabo por uno o dos programadores. En cambio, cuando el programa es más complejo de lo esperado puede conllevar a inconvenientes relacionados con costos, pues se verán aumentados o peor aún, reflejados en la pérdida de tiempo y calidad del producto. La metodología para desarrollar software permite realizar, gestionar y administrar un proyecto de modo sistemático para realizarlo con altas posibilidades de éxito. Este proceso permite dividir el plan en etapas con sus respectivas acciones a ser desarrolladas definiendo entradas y salidas para cada una de las fases, el mejor aporte es sin duda la normalización de la administración del proyecto. Por lo tanto, el concepto de metodología de desarrollo de software es el proceso sistemático que se sigue para idear, implementar y mantener un producto informático desde su diseño inicial hasta que se cumple el objetivo para el cual es creado. Desde esta perspectiva, el ciclo de vida del software tiene tres etapas diferenciadas las cuales se caracterizan a continuación: Planificación. Se realiza una planeación detallada que cumpla la función de indicador de la gestión del proyecto a nivel tiempo y recursos. Implementación. Es la puesta en marcha de las actividades que suponen el desarrollo del producto. Puesta en producción. En esta etapa se realiza la definición del producto, presentándoselo al usuario final, luego de verificar que funcione correctamente y responde a los requerimientos iniciales. Esta etapa representa la aceptación o rechazo del proyecto por parte del cliente y a su vez, porque supone múltiples dificultades no planeadas que a su vez obligan a incurrir en costos no esperados. A estas etapas macro, se puede añadir el conjunto de normas que estable la International Organization for Standarization, ISO, en su norma 12207, en donde se define más claramente el ciclo de vida de un software. Esta normativa sirve como marco de referencia para las tareas y actividades involucradas en el desarrollo, explotación y mantenimiento del software como producto, incluyendo todas sus etapas, desde la creación hasta la finalización de uso. De acuerdo al documento normativo de la ISO (2008), estas son las etapas: Inicio. Es el nacimiento de la idea. Se definen objetivos y recursos necesarios para desarrollar el proyecto, así como las características implícitas y explícitas, las cuales hacen necesaria una etapa previa en la cual se escribirán grandes cantidades de líneas de código para conseguir el objetivo. El éxito o fracaso depende en gran medida del tipo de trabajo ejecutado en estas etapas, que así como en la depuración, es subestimada por muchos líderes.
6
-Calidad de Software Control en producción. En esta etapa se analiza el producto a través de procesos de corrección y reajuste de las actividades. Aquí se realizan pequeñas variaciones de los requerimientos originales ocasionados en los ambientes productivos. Si el software no realiza la tarea para la que fue creada, no se puede pensar en un rediseño en esta etapa. Aquí también se incluyen el liderazgo, documentación y capacitación, dándole así directrices a los recursos humanos con el fin de que realicen sus labores de forma efectiva y eficiente. Por otro lado, entre algunos modelos de ciclo de vida se distinguen tres visiones: El alcance del ciclo de vida. Este depende del alcance del proyecto, conocer la viabilidad del desarrollo parcial o completo más las actualizaciones y mantenimiento. Cualidad y cantidad de etapas. Esto se refiere a las divisiones del ciclo de vida que a su vez dependen del ciclo y el proyecto para el cual se adopte. Estructura y sucesión de etapas. Evidencia la presencia de retroalimentación en ellas y si hay libertad en iterarlas. Así mismo, cada modelo supone un riesgo. Con esto se indica la probabilidad de tener que reemprender una o todas las etapas anteriores, con lo cual se pierde tiempo, dinero y esfuerzo. Es importante resaltar que no existe un modelo que evite los riesgos que conlleva la ejecución de cualquier proyecto. Esto eliminaría la incertidumbre que incluye un cambio, además de los requerimientos cuando un proyecto se encuentra en sus etapas finales y nadie adquiere el compromiso de manera cabal.
CICLO DE VIDA LINEAL Es el más sencillo de todos los modelos de ciclo de vida (Ver Figura 1), tiene las etapas del proyecto divididas y secuenciadas para ser desarrolladas de vez en vez. En este ciclo, la división de tareas es más fácil y prevé los tiempos.
Las
actividades de cada etapa son independientes entre sí, pues no debe haber retroalimentación entre las mismas, solo se podrá hacer en caso de que se requiera corrección.
7
-Calidad de Software Desde la perspectiva de la gestión, se debe conocer desde el primer momento y con excesiva rigidez lo que va a ocurrir en las etapas antes de iniciarlas. Esto minimizará las posibilidades de errores durante la codificación y la requisición de información del usuario final. Entre las ventajas se destacan la sencillez en la gestión y administración económica y temporal, pues encaja perfectamente en el desarrollo de proyectos internos de las organizaciones para programas pequeños de sistemas que realizan altas, bajas y modificaciones sobre un conjunto de datos o ABM. Una de las desventajas incluye la poca viabilidad que tiene este ciclo para proyectos que requieran retroalimentación entre etapas, pues el detectar alguna falla en el sistema implica un aumento considerable en los gastos. Este ciclo es válido para requerimientos sencillos relacionados con el registro de datos acumulativos tales como bases o almacenamiento de datos y archivos planos.
CICLO DE VIDA EN CASCADA PURA Winston Royce propone este modelo de ciclo de vida en el año 1970. Entre sus características se enumera su capacidad de admitir iteraciones pues a pesar de lo que se cree, no es un modelo lineal (Ver Figura 2). Al terminar cada etapa se realiza una revisión de comprobación para poder pasar a la siguiente etapa. Desafortunadamente, es un modelo poco flexible y tiene bastantes restricciones, aunque sirvió de base para futuros patrones de ciclo de vida.
8
-Calidad de Software Entre sus ventajas se pueden incluir la planificación sencilla y la obtención de un producto de alta calidad que no requiere personal altamente calificado, lo que conllevará a menores gastos. Entre las desventajas se puede mencionar el hecho de que los errores sólo se pueden observar cuando se pasa a la siguiente etapa, por lo que a veces corregir a posteriori implica un alto consumo de recursos y tiempo. Por otro lado, los resultados sólo se ven al final del proceso, por lo que cualquier error conlleva retrasos y aumento tanto de costos como de términos. Este ciclo es perfecto para proyectos cuyos requerimientos están disponibles de manera total desde el comienzo del proceso, en especial, para proyectos que aunque complejos son fáciles de comprender y otros con funcionalidades conocidas.
CICLO DE VIDA EN V Ciclo diseñado por Alan Davis y que contiene las etapas del modelo de cascara pura, pero diferenciándose en que se le agregan dos subetapas de retroalimentación como son entre el análisis y mantenimiento, así como en medio de las etapas de diseño y depuración.
Entre las ventajas se encuentra similitud con las del ciclo anterior, pero añadiendo los controles cruzados entre etapa para lograr una mejor corrección. Este modelo es útil para las aplicaciones, que aunque son simples necesitan alta confiabilidad, por ejemplo, una aplicación de facturación, que aunque tiene codificación e interpretación sencilla, tiene matices complicados en la puesta en marcha en conjunto.
9
-Calidad de Software CICLO DE VIDA TIPO SASHIMI Si bien es cierto que este ciclo de vida es muy similar al modelo de cascada pura, en este se pueden solapar las etapas, esto conlleva a un aumento en la eficiencia pues la retroalimentación entre fases está implícita.
Este modelo es válido cuando al realizar la aplicación, esta requiere el compartir recursos tales como CPU, memoria o espacio de almacenamiento con otras aplicaciones en un ambiente productivo. Este es un modelo de tres capas gracias al solapamiento en las etapas, lo que a su vez permite el ahorro de recursos. Se encuentran a su vez muchos más tipos de ciclo de vida, pero al reflexionar tras analizar cada uno de ellos surge el interrogante, ¿cuál de ellos se debe elegir? Si bien es cierto que ninguno prevalece, es menester revisar los requerimientos y las características del proyecto a emprender para elegir el modelo adecuado. Entre los aspectos a revisar antes de elegir el ciclo se pueden tener en cuenta la complejidad del problema, los términos para entregas parciales o finales, el nivel de comunicación entre los miembros del equipo de desarrollo y la certeza de que los requerimientos son correctos y están completos.
10
-Calidad de Software Gestión de Calidad Cuando mejoran los sistemas de gestión de calidad de la organización, aumenta la rentabilidad. La muestra de compromiso con la calidad de productos y servicios es un factor innovador de la cultura empresarial pues como consecuencia, hace que los empleados entiendan la necesidad de mejora continua. La gestión de calidad se puede definir como la parte de la gestión organizacional encargada de determinar y aplicar las políticas relacionadas con la calidad, esto con el propósito de orientas las tareas de la empresa en la obtención y mantenimiento de un alto nivel de calidad del producto o servicio. También puede y debe considerarse cliente el receptor que se encuentre dentro de la misma empresa del artículo ya sea terminado o semielaborado. Al concepto de proveedor se le puede aplicar la misma filosofía. Dentro de una empresa hay una relación continua entre este y el cliente, donde cada receptor tiene necesidades y expectativas específicas, como “cliente interno” que el “proveedor interno” debe satisfacer. El sistema de gestión de calidad debe estar compuesto por procesos, procedimientos, instrucciones de trabajo, mediciones y controles, entre otros, de las operaciones propias de la organización. Este sistema debe estar enfocado en la dirección y control de la organización en términos de calidad, pues está integrado en las operaciones de la misma y ayuda a asegurar el buen funcionamiento y control permanente. Otra ventaja es que proporciona herramientas de implantación de acciones para prevenir defectos o problemas, así como la corrección de los mismos. Entre otros apartes, incluye recursos humanos y físicos así como las responsabilidades del personal, organizado de manera que cada miembro cumpla sus objetivos funcionales.
VENTAJAS DEL SISTEMA DE GESTIÓN DE LA CALIDAD Entre las ventajas que conlleva la definición, desarrollo e implantación del Sistema de Gestión de Calidad se encuentran: Desde lo externo: •
•
Mejora la imagen de la empresa frente a los clientes actuales y potenciales al incrementar de manera permanente el nivel de satisfacción de los mismos. Esto permite que se aumente a su vez la confianza en las relaciones clienteproveedor logrando ser fuente de generación de conceptos novedosos de ingresos. Asegura la calidad de las relaciones comerciales.
11
-Calidad de Software •
Agiliza la salida de productos o servicios para exportación pues se asegura que la organización receptora conoce y puede sentirse conforme con los estándares de calidad, lo que a su vez favorece el mejoramiento de las relaciones clienteproveedor a nivel internacional y así penetrar en nuevos mercados o ampliar los existentes.
Desde lo interno: • •
•
Optimiza la calidad de productos y servicios gracias a procesos más eficientes en las distintas funciones de la organización. Afianza la visión de calidad en las organizaciones a través de la promoción de mejora continua de las estructuras tanto de funcionamiento interno como externo. A su vez, exige ciertos niveles de calidad en sistemas de gestión, productos y servicios. Disminuye los costos de no calidad y aumenta los ingresos para posibilitar la inclusión de nuevos clientes, mayor demanda de los existentes, entre otros.
RIESGOS DEL SISTEMA DE GESTIÓN DE LA CALIDAD Si no se asume como oportunidad para mejorar la situación actual de la organización, la implantación de sistemas de gestión de calidad se puede convertir en un riesgo a razón de que: •
• •
El desarrollo de sistemas puede convertirse en un generador de burocracia inútil y complicado si no se proporcionan elementos de detección de actividades generadoras de no calidad al no utilizar o tener en cuenta todas las circunstancias de la tarea. Los afectados no se sienten comprometidos o no colaboran. Se deben socializar los objetivos y responsabilidades. Se generan barreras significativas en el desarrollo del análisis e implantación de medidas por temores infundados u otros inconvenientes derivados de la mala comunicación.
QUÉ ES LA ISO Es la Organización Internacional de Normalización, una federación mundial de organismos nacionales de regulación. Está encargada de preparar las normas a nivel internacional a través de comités técnicos de ISO. Tienen derecho a ser presentados en dichos comités cada miembro interesado en una materia para la cual se haya establecido comisión técnica. También participan en el trabajo las entidades internacionales, públicas y privadas en coordinación con la ISO. Esta organización colabora a su vez con la Comisión Electrotécnica Internacional, CEI en todo lo relacionado con la normalización electrotécnica.
12
-Calidad de Software Estas normas se editan de acuerdo a las reglas que establece la Parte 3 de las Directivas ISO/CEI. Los Proyectos de Normas Internacionales o FDIS adoptados por los comités técnicos se envían a los organismos miembros para ser votados. La publicación como Norma Internacional demanda aprobación de por lo menos un 75% de las entidades participantes requeridas para votar. Las normas ISO 9000, fueron dispuestas por el Comité Técnico ISO/TC 176, Gestión de Calidad y Aseguramiento de Calidad.
Principios de Calidad de Software La calidad de software se puede definir como la suma de cualidades que caracterizan y determinan su utilidad y existencia. También hay que referirse a la calidad como un sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad. Se puede asegurar que la calidad del software es medible y cambia de un sistema o programa a otro, por ejemplo, un software requerido para una nave espacial debe tener un nivel de “cero errores”, mientras que un software para una única ejecución no requiere el mismo estándar de calidad. Así mismo, un programa informático que requiera un uso prolongado debe garantizar confiabilidad, mantenibilidad y flexibilidad para disminuir costos de mantenimiento y perfeccionamiento mientras es utilizado. La calidad de software se puede verificar luego de elaborado el producto. Esto puede resultar en aumento de cosos si los problemas se derivan de imperfecciones en diseño, por lo cual es importante recalcar acerca de la obtención de calidad y el control durante las etapas del ciclo de vida del programa. La utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba de software permitirán obtener un producto de calidad, así se logra la uniformidad en la filosofía de trabajo y aumenta la productividad a nivel de labor de desarrollo y control de calidad de software. La política establecida debe sustentarse sobre los siguientes principios básicos: Principio tecnológico. Conceptualiza las técnicas que se deben utilizar en el proceso de desarrollo de software. Principio administrativo. Incluye las funciones de planificación y control del desarrollo de software, al igual que la organización del ambiente o centro de ingeniería. Principio ergonómico. Delimita la interfaz entre el usuario y el ambiente automatizado. Para lograr la calidad del software es necesario adoptar una buena política. Sin embargo, esto no se asegurará mientras no haya procesos de control o evaluación para el
13
-Calidad de Software aseguramiento de la misma. Hay que definir parámetros, indicadores o criterios de medición con el fin de controlar la calidad del software pues si no hay medidas, tampoco habrá control. Innumerables autores han definido las cualidades para medir la calidad del software entre ellos John Wiley, quien define las métricas de calidad y criterio donde cada métrica se obtiene de las combinaciones de los criterios. Los medios de programas de la CIC de Rusia tiene una metodología para la evaluación de la calidad definida en cuatro grados jerárquicos: factor, criterio, métrica y elemento de evaluación. Cada nivel inferior tiene indicadores que constituyen el nivel anterior. Otros autores relacionan calidad con el nivel de complejidad del software en dos categorías de métricas: de programa o código y de sistema o estructura. Los autores en su totalidad coinciden en que el software tiene índices medibles que se constituyen en la base para la calidad, control y perfeccionamiento de la productividad. Una vez seleccionados, debe establecerse el proceso de control que requiere la ejecución de las siguientes actividades: Definir el software a controlar. Se clasifica por tipo, esfera de aplicación, complejidad, entre otros. Esto de acuerdo con los estándares internacionales elaborados para tal fin. Seleccionar una medida que pueda ser aplicada al objeto de control. Es necesario definir los indicadores y sus magnitudes para cada clase de software. Crear o determinar los métodos de valoración de los indicadores. Son los cuestionarios o encuestas estándar realizados para medir criterios periciales y herramientas automatizadas con el fin de evaluar las normas de cálculo. Definir las regulaciones organizativas para realizar el control. Se establece los participantes en el control de la calidad, se determinan fechas y documentos a ser revisados y elaborados, entre otros. Para lograr el éxito en la producción de software se necesita desarrollar procesos de calidad demostrados y esto sólo será posible en la medida en que se implanten los sistemas de aseguramiento de la calidad de software, el cual está estrechamente ligado a la definición ampliamente aceptada de calidad de la ISO y por los estándares del grupo ISO 9000.
14
-Calidad de Software BIBLIOGRAFIA
Trabajos citados BerrĂş Murillo, I. (31 de 07 de 2012). Ciclo de Vida del Software. Recuperado el 04 de 16 de 2014, de http://ciclodevidadelsoftwareporivan.blogspot.com/2012_07_01_archive.html
Fuertes Castro, J. L. (25 de 09 de 2018). Calidad de Software. Recuperado el 16 de 04 de 2014, de http://www.iimv.org/actividades2/08_Tecnologia/Jose%20LuisFuertesCalidad%20del%20Software.p df
Marco. (14 de 02 de 2012). Ingenieria de Software. Recuperado el 16 de 04 de 2014, de http://softwarepalooza.blogspot.com/
Quinterp, G. (16 de 11 de 2010). Metodologia de Desarrollo de Sistemas de Informacion. Recuperado el 16 de 04 de 2014, de http://glendysquintero.blogspot.com/
15