Criterios de evaluación de prácticas


Criterios de evaluación de las prácticas

La realización de las prácticas de Sistemas Operativos comprende tres elementos:

1. El programa propuesto para la práctica

2. Una memoria explicativa

3. La exposición y defensa verbal del trabajo realizado

Estos tres elementos, programa, memoria y exposición, son obligatorios para considerar calificable el trabajo práctico. Los tres intervendrán en la nota final del trabajo, si bien es cierto que la mayor contribución vendrá dada por la calidad del programa.

En las siguientes líneas se aclaran aspectos importantes que definen la calidad del trabajo realizado y que definirán la calificación que obtendrán.

Cumplimiento de las especificaciones

El software que construyan tiene que cumplir los requisitos que se especifiquen en la propuesta de práctica. Parece una tontería tener que decir esto, pero no sería extraño que usted esté tentado de alterar las especificaciones del trabajo. Si le han dicho que tiene que trabajar con ficheros de datos con cierta estructura, hágalo. Si se le dice que su programa ha de tener una determinada sintaxis, respétela.

Un trabajo que no cumpla las especificaciones es un trabajo suspendido.

Aparte de lo anterior, el programa habrá de ejecutarse satisfactoriamente en la máquina que los profesores especifiquen, y que actualmente es el HP-9000 del Laboratorio de Sistemas Operativos. Aunque serán libres de realizar su trabajo en cualquier otro ordenador, la evaluación del programa se hará en la máquina mencionada.

Calidad del programa

Por último, se considerarán aspectos de calidad del código, atendiendo a características como:

* Modularidad

* Legibilidad

* Eficiencia

* Reusabilidad

* Robustez

que pasamos a explicar en las siguientes líneas.

Modularidad

Un buen programador ha de elaborar código modular. Es decir, ha de procurar encapsular su código y datos, ocultando la implementación privada. También ha de diseñar unos módulos pequeños y manejables, fáciles de entender y tratar. El programa que escriban se juzgará según hayan explotado las técnicas de programación modular en lenguaje C, como queda descrito en el documento de la asignatura "Programación Modular en Lenguaje C".

Algunos principios elementales de programación modular que tienen que observar son:

* Distinguir claramente entre interfaz (pública) e implementación (privada)

* No abusar de las variables globales

* Reducir al mínimo la interdependencia entre los módulos

* Las funciones no deberían ocupar más de unas decenas de líneas de código

* Descomponer el programa en archivos .C de compilación separadam y utilizar el make

Legibilidad

Los programas han de ser legibles, esto es, no han de emplear nombres arcanos para sus subprogramas y variables. Un programa salpicado de variables llamadas pepe o grijander podrá ser simpático, pero difícilmente legible por un observador que no sea el propio programador. Tiendan a asignar nombres a sus variables y subprogramas que tengan que ver con la función que realizan en el programa.

Otro aspecto crucial en la legibilidad es la aparición de comentarios. No tengan reparo alguno en comentar sus programas, especialmente en los puntos donde no sea evidente lo que está codificándose. En general, cada declaración de subprograma debería añadir un comentario aclaratorio de su finalidad.

Utilicen constantes simbólicas en lugar de valores numéricos literales. Es preferible una constante LONG_PAGINA a un incomprensible 500.

Por último, no olviden que un programa no sólo se escribe, sino que también se lee. Por tanto, den una presentación limpia y cuidada al código. No apelotonen sentencias en la misma línea, ni escriban una función tras otra sin dejar líneas en blanco. Un listado bonito es un programa legible y, por tanto, de más calidad.

Algunas recomendaciones de legibilidad:

* Describir cada una de las funciones y estructuras de datos mediante comentarios

* Utilizar constantes simbólicas en lugar de literales

* Los nombres de las variables y funciones deben ser ilustrativos de la función que realizan

* Separar cada bloque de código por varias líneas en blanco

* No escribir más de una sentencia en cada línea

Eficiencia

Los programas han de ser lo más eficientes que se pueda, es decir, han de cumplir las especificaciones explotando al máximo los recursos disponibles. Se valorará la velocidad de ejecución de sus programas, así como el aprovechamiento de la memoria.

La eficiencia suele estar reñida con otros criterios de evaluación, como la modularidad o la legibilidad. Si hay que elegir entre eficiencia y modularidad o legibilidad, opten siempre por esas últimas. Un programa que vaya un 10% más rápido, pero incomprensible para una persona distinta del autor, no vale gran cosa.

En la calificación del trabajo se dará más valor a un programa bien estructurado y legible que a un programa rápido.

Reusabilidad

Un programa es más reusable cuanto más fácil sea incorporar en él nuevas características. La reusabilidad está muy ligada a la modularidad, puesto que la descomposición en subprogramas facilita la reescritura de código para nuevas situaciones. La profusión de variables globales dificulta la creación de nuevos símbolos. Donde sea posible, empleen constantes simbólicas en lugar de valores numéricos. Aparte de aumentar la legibilidad, pueden cambiar fácilmente el valor de la constante sin tener que editar todo el texto del programa. En general, se valorará que dejen puertas abierta" a posibles expansiones de sus programas.

Robustez

El hecho de que un programa resista situaciones anómalas tiene cierto valor. Se premiará a los programas que contemplen condiciones de error y que salgan de ellas grácilmente.

Aportaciones originales

Aunque tendrán que ceñirse a las especificaciones indicadas en los textos de las prácticas, se valorarán positivamente las aportaciones originales decidan incluir. La creatividad será premiada.

En ocasiones una idea original entra en colisión con las especificaciones de la práctica que realizan. En tales casos, habrán de consultar con el profesor tutor del trabajo.

En cualquier caso, los trabajos han sido diseñados para que se puedan realizar en un tiempo previsto si se limitan a cumplir los requisitos. Tengan presente que cualquier innovación puede suponer una sobrecarga de trabajo y por tanto el riesgo de no terminar en el plazo establecido.

Exposición

No sólo tendrán que escribir su programa, hacer que funcione y confeccionar la memoria. El último paso para que la práctica sea evaluada, es que todos los miembros que forman el grupo la defiendan verbalmente ante un profesor de la asignatura. Durante la exposición tendrán que enfrentarse a la despiadada ejecución de su programa y a un capcioso interrogatorio con el fin de dilucidar la calidad del trabajo y el grado de implicación que los alumnos han tenido en él.

La exposición puede sacar a la luz pequeños parches o errores dentro del programa. Puede también revelar lagunas de conocimiento en los alumnos. Esto es normal y no hay que preocuparse demasiado por ello. Nadie es perfecto. Simplemente háganlo lo mejor que puedan y sean sinceros (o astutos, lo que mejor se les dé).