UNIDAD 2 Introducción a los Estándares de Calidad Contenidos 2.1.-Introducción a los estándares de calidad. 2.2.-Formas y técnicas de documentar algoritmos y programas Objetivos de Aprendizaje Conocer los estándares de calidad para diseñar Algoritmos y Programas. Objetivos Específicos Al finalizar esta unidad, usted será capaz de: 1. Conocer los estándares de calidad en el desarrollo de algoritmos y programas. 2. Aplicar técnicas para la documentación de algoritmos y programas Conocimientos Previos Para poder dominar los contenidos presentes en la guía didáctica, es necesario dominar los contenidos de la unidad 1 de esta unidad curricular Algorítmica y Programación. Por lo que debe repasar los contenidos en los que se encuentra: 1. Para que sirve los algoritmos y programas. 2. Diferencia entre algoritmo y programa. Ing. Iris Daza-2019 3. Dominar el desarrollo en sus diferentes formas y ejecución de algoritmos Estrategias de Aprendizaje que se le sugiere Al igual como se indicó en la guías didácticas anterior las estrategias de aprendizaje son la forma en que debes aprenden aprender por ti mismos. Para ello se recomienda: 1. Conducir a la comprensión de los contenidos de la asignatura a través de: a) Estrategia: 1. Realizar lectura de estudio de la guía didáctica e investigación de los temas antes de la clase. 2. Realizar actividades de tareas asignadas siguiendo las indicaciones del docente. b) Técnica 1. Revisar la planificación de clases, para identificar los contenidos que darán en el próximo encuentro con el docente y las actividades evaluativas. 2. Dedicar 5 horas de estudio e investigación semanal como mínimo. 3. Al realizar la lectura de las guías e investigación de los temas que el docente abordara en la clase, debes hacer notas para exponer al docente de aquello que a pesar de haber hecho varios intentos para entender aún no lo logras. 4. Realizar actividades de tareas asignadas siguiendo las indicaciones del docente. Estas actividades deben realizarse obligatoriamente. 2. Aplicar en el aula y en los estudio independiente a) Estrategia 1. Concentrarse en comprender lo que está indicando el docente en la clase. 2. Realizar lecturas repetitivas de los contenidos de esta unidad hasta poder hablar con soltura de cada uno de los temas. 3. Realizar sin falta las actividades de tareas indicadas por el docente. b) Técnica 1. En la lectura de los contenidos si es muy larga subrayar lo más importante por cada párrafo, identificando la idea principal del párrafo, la cual debes anotar para obtener un resumen. 2. En clase, anota en el cuaderno las ideas principales de lo que dice el docente. Anota las dudas y al finalizar el docente, haz las preguntas…no te quedes con una duda. 3. Observa al docente cuando repite algo…debes anotarlo porque debe ser importante…y si tienes dudas al respecto, pregunta al docente que tan importante es lo que está indicando. 4. Para realizar las actividades de tareas debes: Ing. Iris Daza-2019 4.1. Leer el enunciado de la actividad e identificar el objetivo de la misma, repetir hasta lograrlo o preguntar inmediatamente al docente. 4.2. Seguir los pasos señalados por el docente en la clase para llevar acabo la actividad. Introducción Todos los algoritmos y todos los tipos de software (algoritmos escritos en un lenguaje de programación)) a ser desarrollados requieren un control de calidad. Actualmente, hay muchos programadores pero no todos desarrollan sus programas con calidad, a este tipo de productos se les llama software basura, algunos ni cuentan con un respaldo del programador, o simplemente no tiene un soporte de calidad que se adapte al usuario. Por eso se presentan dos de los más valiosos controles de calidad, como son la eficiencia y la eficacia. La ingeniería del software (es una disciplina o área de la Informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo) pretende utilizar los recursos computacionales de tal manera que se produzcan soluciones eficientes y eficaces a los problemas informáticos para el éxito de un Proyecto. Dada estas premisas es que se considera sumamente importante el desarrollo de software con los controles apropiados de calidad Desarrollo de los Contenidos 2.1.- Introducción a los Estándares de Calidad En algunos momento se definió a la Calidad como lo que se hace bien y a la primera, concepto erróneo ya que, no se puede determinar la calidad de un servicio, producto o proceso tomando en cuenta solo el aspecto de desarrollo, olvidando por completo al proceso de depuración que, inherentemente, involucra una serie de corrección de errores, por lo que, la definición de calidad está más allá de la observación de una parte de dicho proceso. La mayoría de los clientes busca calidad al mejor precio, sin embargo, lo que puede ser “excelente” para Ing. Iris Daza-2019 algunos, no lo es para otros. Cuando un individuo adquiere un producto o servicio, lo hace para satisfacer una necesidad, pero siempre espera que la “nueva adquisición” funcione como lo esperado, o al menos como se lo prometieron en el anuncio publicitario. Muchas veces la calidad se paga, justificando de esta forma el dicho de que “lo barato sale caro”. El significado de calidad puede adquirir múltiples interpretaciones, ya que todo dependerá del nivel de satisfacción o conformidad del cliente. Sin embargo, la calidad es el resultado de un esfuerzo arduo, se trabaja de forma eficaz para poder satisfacer el deseo del consumidor. Dependiendo de la forma en que un producto o servicio sea aceptado o rechazado por los clientes, podremos decir si éste es bueno o malo. Muchas veces, el nivel de calidad se mide de acuerdo a la reacción y preferencias del cliente. Desde el mismo momento en que éste llega al establecimiento comercial, sabe exactamente qué va a comprar y dónde ubicarlo, va directo al lugar donde se encuentra el producto de su preferencia. En ocasiones, no encontrará lo que está buscando y por tanto se decidirá por otro producto de mayor o menor precio, sin embargo, cuando su nivel de preferencia se afinca en una determinada marca, el cliente prefiere seguir buscando en otros establecimientos en vez de resolverse con un producto sustitutivo. Sin importar cualquiera que sea el tipo, todo ALGORITMO O PROGRAMAS (SOFTWARE) a ser desarrollado requiere que los analistas, diseñadores y desarrolladores apliquen características y elementos de calidad para que se logren productos a las necesidades del usuario. Los estándares definen un conjunto de criterios que guían la forma en que se aplican procedimientos y metodologías al desarrollado de algoritmo o programas, la certificación de calidad permite una valoración independiente de la organización, donde se demuestra la capacidad de desarrollar productos y servicios de calidad. Ing. Iris Daza-2019 El significado de la palabra calidad genera mucha confusión, quizás por la multidimensionalidad del propio concepto. Existen muchos organismos internacionales (IEEE, ISO entre otros) que regulan los estándares y entre los que se encuentra los de calidad en el desarrollo de software. Por lo anterior el glosario de estándares de computación IEEE Std. 610 – 1991, define la calidad del software como “el grado con el que un sistema (software), componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario”. Cuando ya se pasa de desarrollo de algoritmos a programas (software) se requiere cumplir con parámetros de calidad especificados en la siguiente imagen: A continuación se presenta los organismos internacionales encargados de generar estándares de calidad ISO La Organización Internacional para la Estandarización, mejor conocida como ISO, es la agencia especializada en estandarización, conformada por representantes de los Ing. Iris Daza-2019 cuerpos normalizadores, fue establecida oficialmente el 23 de febrero de 1947 con el objeto de promover la estandarización internacional, de tal manera que se facilitara el intercambio internacional de bienes y servicios casi como el desarrollo científico y tecnológico. Actualmente abarca los estándares nacionales de 91 países. En los Estados Unidos, la representación se llama The American National Standards Institute (ANSI) La norma ISO-12207 especifica algún estándar en el desarrollo de software como sigue: Estándar para los procesos de ciclo de vida del software de la organización, Este estándar se concibió para aquellos interesados en adquisición de software, así como desarrolladores y proveedores. El estándar indica una serie de procesos desde la recopilación de requisitos hasta la culminación del software. El estándar comprende 17 procesos lo cuales son agrupados en tres categorías: Principales De apoyo De organización Este estándar agrupa las actividades que se pueden llevar a cabo durante el ciclo de vida del software en cinco procesos principales, ocho procesos de apoyo y cuatro procesos organizativos. Ing. Iris Daza-2019 La norma ISO-14598 El estándar ISO/IEC 14598 es actualmente usado como base metodológica para la evaluación del producto software. En sus diferentes etapas, establece un marco de trabajo para evaluar la calidad de los productos de software proporcionando, además, métricas y requisitos para los procesos de evaluación de los mismos. La norma define las principales características del proceso de evaluación Repetitividad. Reproducibilidad. Imparcialidad. Objetividad. Ing. Iris Daza-2019 Para estas características se describen las medidas concretas que participan: Análisis de los requisitos de evaluación. Evaluación de las especificaciones. Evaluación del diseño y definición del plan de evaluación. Ejecución del plan de evaluación. Evaluación de la conclusión. La Norma ISO/IEC 14598 define el proceso para evaluar un producto de software, el mismo consta de seis partes: ISO/IEC 14598-1 Visión General: provee una visión general de las otras cinco partes y explica la relación entre la evaluación del producto software y el modelo de calidad definido en la ISO/IEC 9126. ISO/IEC 14598-2 Planeamiento y Gestión: contiene requisitos y guías para las funciones de soporte tales como la planificación y gestión de la evaluación del producto del software. ISO/IEC 14598-3 Proceso para desenvolvedores: provee los requisitos y guías para la evaluación del producto software cuando la evaluación es llevada a cabo en paralelo con el desarrollo por parte del desarrollador. ISO/IEC 14598-4 Proceso para adquirientes: provee los requisitos y guías para que la evaluación del producto software sea llevada a cabo en función a los compradores que planean adquirir o reutilizar un producto de software existente o pre-desarrollado. ISO/IEC 14598-5 Proceso para avaladores: provee los requisitos y guías para la evaluación del producto software cuando la evaluación es llevada a cabo por evaluadores independientes. ISO/IEC 14598-6 Documentación de Módulos: provee las guías para la documentación del módulo de evaluación. Ing. Iris Daza-2019 Los servicios relacionados con la evaluación de software de productos son generalmente adaptados a las necesidades de los usuarios finales individuales o proveedores, en función de por qué se pidió la evaluación. Los servicios de evaluación de software incluyen: Definición de perfiles de calidad de referencia de software Evaluación de acuerdo con los modelos de calidad predefinidos Certificación de la calidad del software de acuerdo a los modelos de calidad y normas Las comparaciones entre productos La reingeniería del software Servicio de Monitoreo de calidad del producto. Ing. Iris Daza-2019 La norma ISO-25000 ISO 25000:2005 (SQuaRE -Software Quality Requirements and Evaluation) es una nueva serie de normas que se basa en ISO 9126 y en ISO 14598 (Evaluación del software). Uno de los principales objetivos de la serie SQuaRE es la coordinación y harmonización del contenido de ISO 9126 y de ISO 15939:2002 (Measurement Information Model). ISO 15939 tiene un modelo de información que ayuda a determinar que se debe especificar durante la planificación, performance y evaluación de la medición. Para su aplicación, cuenta con los siguientes pasos: Recopilar los datos, Preparación de los datos y Análisis de los datos. Su objetivo principal es guiar el desarrollo de los productos de software con la especificación y evaluación de requisitos de calidad. Establece criterios para la especificación de requisitos de calidad de productos software, sus métricas y su evaluación. SQuaRE está formada por las divisiones siguientes: ISO/IEC 2500n. División de gestión de calidad. Los estándares que forman esta división definen todos los modelos comunes, términos y referencias a los que se alude en las demás divisiones de SQuaRE. ISO/IEC 2501n. División del modelo de calidad. El estándar que conforma esta Ing. Iris Daza-2019 división presenta un modelo de calidad detallado, incluyendo características para la calidad interna, externa y en uso. ISO/IEC 2502n. División de mediciones de calidad. Los estándares pertenecientes a esta división incluyen un modelo de referencia de calidad del producto software, definiciones matemáticas de las métricas de calidad y una guía práctica para su aplicación. Presenta aplicaciones de métricas para la calidad de software interna, externa y en uso. ISO/IEC 2503n. División de requisitos de calidad. Los estándares que forman parte de esta división ayudan a especificar los requisitos de calidad. Estos requisitos pueden ser usados en el proceso de especificación de requisitos de calidad para un producto software que va a ser desarrollado ó como entrada para un proceso de evaluación. El proceso de definición de requisitos se guía por el establecido en la norma ISO/IEC 15288 (ISO, 2003). ISO/IEC 2504n. División de evaluación de la calidad. Estos estándares proporcionan requisitos, recomendaciones y guías para la evaluación de un producto software, tanto si la llevan a cabo evaluadores, como clientes o desarrolladores. ISO/IEC 25050–25099. Estándares de extensión SQuaRE. Incluyen requisitos para la calidad de productos de software “Off-The-Self” y para el formato común de la industria (CIF) para informes de usabilidad. Al igual que la norma ISO/IEC 9126, este estándar define tres vistas diferenciadas en el estudio de la calidad de un producto: Vista interna: esta vista se ocupa de las propiedades del software como: el tamaño, la complejidad o la conformidad con las normas de orientación a objetos. Vista externa: vista que analiza el comportamiento del software en producción y estudia sus atributos, por ejemplo: el rendimiento de un software en una máquina determinada, el uso de memoria de un programa o el tiempo de Ing. Iris Daza-2019 funcionamiento entre fallos. Vista en uso: mide la productividad y efectividad del usuario final al utilizar el software. La primera puede utilizarse desde las primeras fases del desarrollo, permitiendo detectar deficiencias en el software en edades muy tempranas del ciclo de vida del software. La segunda, sin embargo, necesita que el producto software este completo y se utilizará por tanto en el pase a producción del producto, siendo muy dependiente de la máquina donde se ejecute. Por último la tercera vista que también estudia el producto software finalizado será dependiente del usuario y estará condicionada a los factores personales del mismo. La norma ISO-9126 Ing. Iris Daza-2019 El estándar ISO 9126 ha sido desarrollado en un intento de identificar los atributos clave de calidad para el software evalúa los productos de software, esta norma nos indica las características de la calidad y los lineamientos para su uso, fue desarrollada para dar soporte a aquellas necesidades; las características de calidad y sus métricas asociadas, pueden ser útiles tanto como para evaluar el producto como para definir los requerimientos de la calidad y otros usos. Esta norma definida por un marco conceptual basado en los factores tales como Calidad del Proceso, Calidad del Producto del Software y Calidad en Uso; según el marco conceptual, la calidad del producto, a su vez, contribuye a mejorar la calidad en uso. La norma ISO 9126 presentan dos modelos de calidad, el primero referido a la calidad interna y externa y el segundo modelo referido a la calidad en uso. El estándar identifica 6 atributos clave de calidad que todo software debe tener: Funcionalidad: el grado en que el software satisface las necesidades indicadas por los siguientes subatributos: idoneidad, corrección, interoperatividad, conformidad y seguridad. Confiabilidad: cantidad de tiempo que el software está disponible para su uso. Está referido por los siguientes subatributos: madurez, tolerancia a fallos y facilidad de recuperación. Usabilidad: grado en que el software es fácil de usar. Viene reflejado por los siguientes subatributos: facilidad de comprensión, facilidad de aprendizaje y operatividad. Eficiencia: grado en que el software hace óptimo el uso de los recursos del sistema. Está indicado por los siguientes subatributos: tiempo de uso y recursos utilizados. Facilidad de mantenimiento: la facilidad con que una modificación puede ser realizada. Está indicada por los siguientes subatributos: facilidad de análisis, facilidad de cambio, estabilidad y facilidad de prueba. Portabilidad: la facilidad con que el software puede ser llevado de un entorno a otro. Está referido por los siguientes subatributos: facilidad de instalación, facilidad de Ing. Iris Daza-2019 ajuste, facilidad de adaptación al cambio. Aunque estas normas existen y deben ser usadas para poder desarrollar y comercializar un software, por ahora se trabajara con los estándares básicos para el desarrollo de un programa sin olvidar por supuesto estos últimos 6 atributos. Estándares básicos y muy necesarios a la hora de desarrollar algoritmos y programas Ing. Iris Daza-2019 A diferencia de la sintaxis del lenguaje de programación, que son reglas fijas que obligatoriamente hay que seguir, un estilo de programación está constituido por directrices que ayudan a obtener programas más legibles. Es por esto que, si bien no existen estilos de programación absolutamente correctos o incorrectos, es aconsejable la adopción, de una manera sistemática, de un conjunto de normas para la escritura de algoritmos y/o programas. Por ello, se proponen aquí algunas normas relativas a la denominación de los elementos de los programas y de la estructuración de los mismos. 1. Indentación Indentación es un anglicismo, (de la palabra inglesa indentation), de uso común en informática y significa mover un bloque de texto hacia la derecha insertando espacios o tabuladores para separarlo del texto adyacente, lo que en el ámbito de la imprenta se ha denominado siempre como sangrado o sangría. Se debe utilizar un único modelo de indentación a lo largo de todo el programa. Los bloque de código (por ejemplo, dentro de un bucle o ciclo) deberán ir indentados. Si un bloque de pasos está anidado dentro de otro bloque de pasos, el bloque más interno deberá ir indentado respecto al externo. En la siguiente imagen podemos observar un ejemplo de Indentación. Para entenderlo, mejor hagamos un ejemplo de cómo identificar en un programa un bloque de código (pasos) indentado y uno no indentado: El siguiente código escrito en lenguaje C muestra las tablas de multiplicar. Ing. Iris Daza-2019 Sin indentación Con indentación 1. Nombres a usar en los datos (variables y constantes) Sobre todo cuando se realizan algoritmos cuantitativos, es necesario para los datos sea de entradas, generados en el proceso o datos de salidas del algoritmo o programas considerar que los nombres de los datos: No sean palabras reservadas (en el caso de programas) Que identifiquen al dato: ejemplo en el siguiente algoritmo el dato de entrada es edad, no debe llamarse apellido, o 10…no son nombres apropiados. Debe llamarse edad inicio 1.- obtener la edad de la persona 2.- chequear si esta edad obtenida es mayor a 18 2.1.- si lo mostrar “la persona mayor de edad” 2.2. si no mostrar “la persona no es mayor de edad” fin 2. Uso de mayúsculas y minúsculas Para el nombre, se debe estipular la forma en que escribirá, esto es, si el nombre será escrito todo en mayúscula, o la primera letra en mayúscula y el Ing. Iris Daza-2019 resto en minúscula o si es en minúscula. Lo que se estipulo debe cumplirse en la escritura de los algoritmos y/o programas. 2.2.- Formas y técnicas de documentar un algoritmo y programa La Documentación Un programa de computadora necesita siempre de una documentación que permita a los usuarios aprender a utilizarlos y mantenerlo, la documentación del programa se puede concretar a manual del usuario y manual de mantenimiento. La documentación: Consiste en describir por escrito a nivel técnico los procedimientos relacionados con el programa y su modo de uso. También se debe Ing. Iris Daza-2019 documentar el programa para que sea más entendible. Es fundamental para diseñadores y usuarios En pseudocódigo solo se documentarán los algoritmos internamente, esto es, se efectuarán comentarios de ciertas acciones o grupos de acciones para permitir al diseñador o al equipo del diseño releer el algoritmo con facilidad. Para documentar internamente un algoritmo en pseudocódigo se empleará la doble barra (//) y a continuación el texto o la frase explicativa. Al ejecutar el algoritmo, esté texto a la derecha de la // debe ser ignorado, pues no constituye a una acción algorítmica. Documentar el código de un programa es añadir suficiente información como para explicar lo que hace, punto por punto, de forma que no sólo los ordenadores sepan qué hacer, sino que además los humanos entiendan qué están haciendo y por qué. Ejemplo inicio 1.- obtener la edad de la persona // en este paso se solicita una edad 2.- chequear si esta edad obtenida es mayor a 18 2.1.- si lo mostrar “la persona mayor de edad” 2.2. si no mostrar “la persona no es mayor de edad” fin Ahora con respecto a un programa se debe realizar una documentación de dos tipo: Interna e Externa Ing. Iris Daza-2019 Documentación Interna: Esta documentación cubre los aspectos del programa relativos a la sintaxis de lenguaje. Esta documentación está contenida en los comentarios entre llaves, paréntesis o asteriscos. Algunos temas a considerar son: Cabecera de programa (breve descripción del programa) Nombres significativos para describir identificadores. Comentarios relativos a la función del programa. Claridad de estilo y formato, líneas en blanco para separar módulos. Comentarios significativos. Documentación externa Documentación ajena al programa, que se suele incluir en un manual de usuario, manual de mantenimiento que compaña al programa. Esta documentación debe incluir: módulos que comprenden el programa. ocesar. mantener el programa. ¿PARA QUIÉNES ES LA DOCUMENTACIÓN? Para: 1.-Usuarios (Digitadores) Ing. Iris Daza-2019 2.-Operadores 3.- Programadores 4.- Analistas de sistemas Reglas de documentación Un programa bien documentado es aquel que otras personas pueden leer, usar y modificar. Existe muchos tipos de documentación y con frecuencia los temas a incluir dependen del programa. A continuación señalamos algunas características esenciales de documentación de un programa. Un comentario de cabecera para el programa que incluye: Descripción del programa. Autor y fecha. Descripción de la entrada y salida del programa. Descripción de cómo utilizar el programa. Hipótesis sobre tipos de datos esperados. Breve descripción de los algoritmos globales y estructurados de datos. Descripción de los datos más importantes. Manual del usuario La documentación de un programa suele producirse con dos propósitos, el primero seria explicar las funciones del software y describir el modo de utilizarlas, estas están diseñadas para ser leídas por el usuario del programa y la segunda describir Ing. Iris Daza-2019 el software en si para poder mantener el sistema en una etapa posterior de su ciclo de vida. La documentación de usuario es un instrumento muy importante. Una buena documentación de usuario hará al programa más accesible. El manual de usuario debe contener los siguientes puntos. Ordenes necesarias para cargar el programa en memoria desde el almacenamiento secundario y comenzar su funcionamiento. Nombres de los archivos externos a los que accede el programa. Formato de todos los mensajes de error o informes. Opciones en el funcionamiento del programa. Descripción detallada de la función realizada por el programa. Descripción detallada de cualquier salida producida por el programa. Manual de mantenimiento El manual de mantenimiento es la documentación requerida para mantener un programa durante su ciclo de vida. Se divide en dos categorías, documentación interna y documentación externa. CONCLUSION La forma de trazabilidad un buen algoritmo que asegura que tanto algoritmos como programa resulten legibles y puedan modificarse fácilmente en caso de necesidad. La documentación de un algoritmo y programa necesita siempre de una documentación que permita a los usuarios aprender a utilizarlos y mantenerlo, la documentación del programa se puede concretar a manual del usuario y manual de mantenimiento. Ing. Iris Daza-2019 Ing. Iris Daza-2019