CEET - Distrito Capital Programa de Formación: ADSI 150752 – TRIMESTRE VI Conocimiento de Proceso: Aplicar los estándares de calidad involucrados en los procesos de desarrollo de software, siguiendo el plan establecido para mantener la integridad de los productos de trabajo definidos, según las prácticas de configuración establecidas por la empresa. Instructor: Ing. Espec. Javier Vaquiro Laboratorio No. 2 (Calidad del Software) OBJETIVO: Aprender a evaluar la Calidad de un producto de Software a través de los diferentes factores propuestos por los modelos y estándares de calidad. Ejercicio 1 . Encontrar ejemplos concretos de dependencias de aplicaciones para con el sistema operativo o con el hardware. ¿Por qué razón estas dependencias pueden afectar la calidad del software? Ejercicio 2 . Uno de los sistemas operativos más utilizados en el mundo es Microsoft Windows . Evaluar el cumplimiento de los distintos factores externos de calidad de software para este sistema operativo, indicando qué versión del mismo se está evaluando. Analizar si las sucesivas versiones introducidas mejoraron el cumplimiento de alguno de los factores identificados. Ejercicio 3 . Se denominó “problema Y2K” a la incapacidad de un sistema de software de representar fechas usando cuatro dígitos para codificar los años. A fines del año 1999 mucho dinero fue invertido en la actualización de los sistemas que no estaban preparados para el cambio de siglo. ¿Qué factor o factores de calidad de software no cumplían los sistemas alcanzados por el problema Y2K? Ejercicio 4 . En el contexto del tema factores de calidad externos, considere la siguiente métrica de usabilidad: Usabilidad = 1 / (cantidad de clicks de ratón necesarios para llevar a cabo una determinada tarea) Elija dos usuarios de mail y determine el valor de la métrica “Usabilidad” para la tarea: enviar un mail sin usar el teclado a una persona existente en la libreta de contactos y adjuntando un archivo de texto ubicado en el directorio raíz. Conteste cuál de los dos programas sería el "más usable" de acuerdo con los resultados obtenidos. ADSI – Calidad del Software Página 1 CEET - Distrito Capital Programa de Formación: ADSI 150752 – TRIMESTRE VI Conocimiento de Proceso: Aplicar los estándares de calidad involucrados en los procesos de desarrollo de software, siguiendo el plan establecido para mantener la integridad de los productos de trabajo definidos, según las prácticas de configuración establecidas por la empresa. Instructor: Ing. Espec. Javier Vaquiro Ejercicio 6 . ¿Es posible medir la interfaz de un módulo? Proponer al menos dos criterios que sirvan a tal efecto. Ejercicio 5. En programación orientada a objetos, las Clases de tipo prívate son procedimientos privados. ¿Por qué razón sería incorrecto afirmar que estos procedimientos y funciones en java o PhP son en general reusables? Ejercicio 7. En el contexto del tema factores de calidad internos del software, una métrica para medir la complejidad del código fuente en función de su contenido de información es la métrica de Halstead, que se define de la siguiente manera y su unidad es en bits: Volumen = Longitud * Log2(Vocabulario) donde : Longitud = cantidad de todas las instancias de variables usadas Vocabulario = cantidad de variables definidas. Determine el volumen de las siguientes porciones de código y en base a ello decida cuál de las dos contiene más contenido de información: Procedure BubbleSort(numbers: Array of Integer; size : Integer); Var i, j, temp : Integer; Begin For i := size-1 DownTo 1 do For j := 2 to i do If (numbers[j-1] > numbers[j]) then Begin temp := numbers[j-1]; numbers[j-1] := numbers[j]; numbers[j] := temp; End; End; ADSI – Calidad del Software Function Array of Integer) Var i, p LinearSearch(numbers : Integer; size : Integer; x: : Integer; : Integer; Begin P := -1; For i:=1 to size do If numbers[i] = x then P := i; LinearSearch := p; End; Página 2 CEET - Distrito Capital Programa de Formación: ADSI 150752 – TRIMESTRE VI Conocimiento de Proceso: Aplicar los estándares de calidad involucrados en los procesos de desarrollo de software, siguiendo el plan establecido para mantener la integridad de los productos de trabajo definidos, según las prácticas de configuración establecidas por la empresa. Instructor: Ing. Espec. Javier Vaquiro Ejercicio 8. En el contexto del tema Factores de calidad externos del software, considere la métrica para medir la portabilidad de un sistema que ya está operando en un ambiente e1 y se desea migrar a un ambiente e2: Portabilidad = 1 – ET / ER donde ET es una medida de la cantidad de recursos necesarios para migrar el sistema del ambiente e1 al ambiente destino e2, y ER es una medida de la cantidad de recursos necesarios para crear el sistema para el ambiente destino e2. Suponga que tenemos dos sistemas S1 y S2 que se desean migrar del sistema operativo Windows XP al sistema operativo Windows Mobile Edition. Si adaptar a S1 cuesta $4.000.000 en sueldos de programadores mientras que desarrollarlo desde cero cuesta $10.000.000. En cambio, adaptar a S2 cuesta $2.800.000 pero desarrollarlo desde cero cuesta $8.500.000. a) Justifica tu respuesta adecuadamente, cuál de los dos sistemas es más portable. b) Desde su punto de vista, explique cuál sería el problema de utilizar esta métrica en la práctica. Ejercicio 9. Describir un sistema que no sea de software pero que presente una organización basada en módulos, donde toda comunicación entre los distintos módulos se realice a nivel de las interfaces. El sistema descripto, ¿en qué forma cumple las reglas y principios de modularidad? Ejercicio 10. ¿Es suficiente con que un lenguaje de programación soporte el concepto de módulo, o en realidad hacen falta herramientas meta-lingüísticas (esto es, herramientas fuera del lenguaje) adicionales para asegurar la calidad del software? Ejercicio 11. El modelo en cascada completamente lineal del ciclo de vida del software es usualmente impracticable. En este contexto, indicar cuál o cuáles son los inconvenientes de este modelo. Ejercicio 12. Un error común en ciencias de la computación es pensar que la codificación insume la mayor parte del tiempo de desarrollo del software. Apelando a la experiencia individual, establecer qué porcentaje de tiempo requieren aproximadamente las fases de especificación de requerimientos, diseño, codificación, testeo y mantenimiento en el desarrollo de un programa. Ejercicio 13. Definir el concepto de riesgo en el desarrollo de software. Enumerar algunos de los riesgos que deberían tenerse en cuenta a lo largo de la producción de software. ADSI – Calidad del Software Página 3 CEET - Distrito Capital Programa de Formación: ADSI 150752 – TRIMESTRE VI Conocimiento de Proceso: Aplicar los estándares de calidad involucrados en los procesos de desarrollo de software, siguiendo el plan establecido para mantener la integridad de los productos de trabajo definidos, según las prácticas de configuración establecidas por la empresa. Instructor: Ing. Espec. Javier Vaquiro Ejercicio 14. Explicar brevemente cómo funciona el modelo en espiral del ciclo de vida del software. Los modelos en espiral o en cascada (con feedback), ¿se pueden usar indistintamente? Justificar la respuesta suministrada. Ejercicio 15. Explicar por qué está mal pensar que la Ingeniería de Software (producción de software de alta calidad) consume mucho tiempo e interfiere con la productividad del programador. Repasar la respuesta dada en el ejercicio 12. Con todo esto en mente, ¿cuál sería la mejor estrategia para reducir los tiempos de codificación? Ejercicio 16. Si hoy es lunes y se debe entregar en una semana uno de los proyectos de programación de esta asignatura, cuyo enunciado recién hoy está disponible en fotocopiadora, proponer un plan coherente para desarrollar el programa en el plazo previsto, considerando acomodar otras actividades prioritarias (por ej., asistir a clase o dormir la cantidad necesaria de horas). Se debe tener en cuenta el siguiente dato importante: la cátedra dispone sólo de una clase de consulta en donde resolver cualquier eventualidad en relación al proyecto y la misma está acordada para el día jueves. Ejercicio 17. En el contexto de la planificación descripta en el ejercicio anterior, suponer que la impresora decide dejar de funcionar justo el día asignado para imprimir el informe. Además, el informe se debe entregar junto al programa implementado. Comprobar si la planificación propuesta es capaz de tolerar el fallo de la impresora, proponiendo como manejar esta situación. Ejercicio 18. En el contexto del tema gestión de riesgos, suponga que usted es el dueño de una pequeña empresa de desarrollo de software, por ejemplo formada por cinco programadores. Considere el riesgo asociado a la pérdida de todos los archivos de datos y código fuente y conteste las siguientes preguntas: a) ¿Cuáles son los riesgos asociados? b) ¿Cuál es la probabilidad de pérdida asociada a esos riesgos? c) ¿Cuál sería el costo monetario de recuperarse de los riesgos si éstos ocurrieran? d) ¿Cuál sería el costo si ocurriera el peor escenario? ¿Cómo se puede hacer para disminuir o eliminar el costo si ocurriera el peor escenario? e) ¿Cuáles son las alternativas para atenuar los riesgos? ¿Cómo se controla que las alternativas son efectivas y se están llevando a cabo correctamente? f) ¿Las alternativas producen otros riesgos? ADSI – Calidad del Software Página 4