Sie sind auf Seite 1von 23

Estrategias de Programacin o y Estructuras de Datos

Enunciado de la Prctica a Curso 2.011-12

Enunciado de la Prctica a

-1 -

EPED curso 2.011-12

Indice
1. Introduccin o 2. Descripcin del Problema o 2.1. Organizacin f o sica del disco en clusters . . . . . . . . . . . . . . . . 2.2. La Tabla de Asignacin de Ficheros o . . . . . . . . . . . . . . . . . . 4 5 5 5 7 8 10 13 13 13 14 14 15 15 15 15 16 17 17 18 18 18 18 18 20 20 20 20 21 23

2.3. Directorios y Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Comandos del Sistema de Ficheros . . . . . . . . . . . . . . . . . . . 3. Desarrollo de la prctica a 3.1. Cdigo cerrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.1.1. Paquete es .uned. lsi .eped.lesystem . disk . . . . . . . . . . . 3.1.2. Paquete es .uned. lsi .eped.lesystem .os . . . . . . . . . . . . 3.1.3. Paquete es .uned. lsi .eped.lesystem . fs . . . . . . . . . . . . 3.1.4. Paquete es .uned. lsi .eped.lesystem .cmd . . . . . . . . . . . 3.1.5. Paquete es .uned. lsi .eped.lesystem . . . . . . . . . . . . . . 3.2. Cdigo abierto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.2.1. Paquete eped.lesystem .os . . . . . . . . . . . . . . . . . . . 3.2.2. Paquete eped.lesystem . fs . . . . . . . . . . . . . . . . . . . 3.2.3. Paquete eped.lesystem .cmd . . . . . . . . . . . . . . . . . . 4. Plan de trabajo 4.1. Actividad 0. Instalacin y preparacin del entorno . . . . . . . . . . o o 4.2. Actividad 1. Desarrollo de la FAT . . . . . . . . . . . . . . . . . . .

4.3. Actividad 2. Desarrollo de la DirTable . . . . . . . . . . . . . . . . . 4.4. Actividad 3. Desarrollo del FileManager . . . . . . . . . . . . . . . . 4.5. Actividad 4. Desarrollo del DirectoryManager . . . . . . . . . . . . . 4.6. Actividad 5. Implementacin de comandos . . . . . . . . . . . . . . . o 5. Evaluacin y calendario de entrega o 5.1. Fases de la realizacin de la prctica . . . . . . . . . . . . . . . . . . o a 5.2. Fechas de entrega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3. Evaluacin y calicacin . . . . . . . . . . . . . . . . . . . . . . . . . o o 5.4. Criterios de calicacin . . . . . . . . . . . . . . . . . . . . . . . . . o 6. Referencias

INDICE DE FIGURAS

INDICE DE FIGURAS

Indice de guras
1. 2. 3. 4. 5. Estructura de un disco duro ( c WikiMedia Commons) . . . . . . . . . . Disposicin de cheros en disco duro (FAT) . . . . . . . . . . . . . . o Contenido del proyecto de desarrollo de la practica . . . . . . . . . . Diagrama de clases de diseo de la prctica . . . . . . . . . . . . . . n a Modelo de comentario que describe una tarea . . . . . . . . . . . . . 5 6 10 12 17

Enunciado de la Prctica a

-3 -

EPED curso 2.011-12

INTRODUCCION

1.

Introduccin o

La prctica de la asignatura Estrategias de Programacin y Estructuras de Datosa o correspondiente al curso acadmico 2.011-2.012 que presentamos en este documento e pretende poner en contacto a los alumnos con un problema prctico donde los cona tenidos de la asignatura -tipos abstractos de datos, diseo de algoritmos y anlisis n a de la complejidad- se muestran como herramientas de util aplicacin recurrente o para resolver problemas complejos como el aqu descrito. El objetivo general en este sentido es doble. Por un lado se pretende motivar al estudiante en el estudio prctico de la asignatura, mientras que por otro lado se proporciona un contexto a de experimentacin donde los alumnos puedan poner en prctica los conocimientos o a adquiridos de forma progresiva, razonada y contrastada. En concreto, los objetivos se pueden resumir en los siguientes puntos: 1. Conocer los tipos abstractos de datos y su aplicacin en contextos prcticos o a 2. Elegir los TAD adecuados para la resolucin de un problema o 3. Aplicar distintos algoritmos fundamentales relacionados con los TAD 4. Aprender a realizar distintas implementaciones sobre los principales TAD 5. Adquirir actitud cr tica sobre los TAD bajo criterios de eciencia 6. Aprender a resolver un problema bajo restricciones contractuales 7. Aprender a probar exhaustivamente una solucin orientada a objetos o En cuanto a la estructura del resto del documento, la seccin 2, Descripcin del o o Problema, en la pgina 5, describe el problema que se desea resolver de forma detaa llada y que trata de implementar la emulacin de un sistema de cheros completo o similar a los utilizados por el sistema MS-DOS. Una vez enunciado el mismo, se discute la coleccin de artefactos de Java que compondrn el desarrollo de la misma. o a Puede encontrarse un diagrama en UML, una descripcin del cdigo y las explio o caciones pertinentes sobre el mismo en la seccin 3, en sus apartados 3.1 y 3.2. o La seccin 4 contina proporcionando el plan de trabajo con las actividades que o u el alumno debe llevar a cabo para completar su prctica. La seccin 5 describe las a o normas y fechas importantes para la entrega. Por ultimo, la seccin 6 detalla las o referencias importantes para entender el enunciado y su desarrollo.

EPED curso 2.011-12

-4 -

Enunciado de la Prctica a

DESCRIPCION DEL PROBLEMA

2.

Descripcin del Problema o

En la arquitectura de ordenadores de von Neumann, los datos se persisten en sistemas de almacenamiento secundarios (t picamente conocidos como discos duros). En este contexto, una parte nuclear de los sistemas operativos es el sistema de cheros, que proporciona una abstraccin de alto nivel que permite manejar los o datos de un disco en trminos de cheros y directorios a partir de una coleccin e o de comandos accesibles al usuario. En las siguientes subsecciones, describimos los niveles de operacin en los que trabaja un sistema de cheros similar a MS-DOSa . o

2.1.

Organizacin f o sica del disco en clusters

Un disco se divide f sicamente en bloques de datos contiguos llamados clusters, que el computador es capaz de leer o escribir. Los clusters pueden contener datos, estar vac o, incluso, estar daados por motivos cualesquiera, aunque este ultimo caso os n no se tendr en cuenta en esta prctica. El aspecto, enfocado a bajo nivel, de un a a disco duro se muestra en la gura 1.

A = pista B = sector geomtrico e C = sector de pista D = cluster

Figura 1: Estructura de un disco duro ( c WikiMedia Commons) Cuando se da formato a un disco, es preciso determinar en funcin de su tamao, o n cul es el nmero de clusters que contendr as como el tamao de cada cluster , a u a n de manera que se cumpla la relacin de tamao(disco) = nmero de clusters o n u tamao del cluster . Adicionalmente, el proceso de formateo escribe el valor 0 en n cada byte del disco.

2.2.

La Tabla de Asignacin de Ficheros o

El trabajo a nivel de cluster ser en extremo arduo y tedioso para el usuario por lo a que, como se ver ms adelante, el sistema operativo ofrece la metfora de chero a a a
aA

lo largo de este documento, se precisarn las diferencias con este sistema a

Enunciado de la Prctica a

-5 -

EPED curso 2.011-12

2.2

La Tabla de Asignacin de Ficheros o

DESCRIPCION DEL PROBLEMA

como una coleccin contigua de datos que se almacena bajo un nombre comn. o u Segn lo expuesto, la responsabilidad del sistema de cheros es ocultar la compleu jidad de la organizacin de los datos en disco para ofrecer una perspectiva basada o en dicha metfora. En efecto, los datos de un chero se persisten a nivel de disa co como un conjunto de clusters, mientras que el chero proporciona la ilusin de o contigidad. u

Figura 2: Disposicin de cheros en disco duro (FAT) o El artefacto del sistema operativo que sirve de puente de unin entre la organizacin o o f sica en clusters y la metfora de chero se conoce con el nombre de Tabla de a Asignacin de Ficheros o FAT, por sus siglas en ingls. De esta manera, al escribir o e un chero en disco, ste se almacena en tantos clusters como sean necesarios segn e u su tamao. Para ello, el sistema de cheros solicita un cluster libre a la FAT donde n comienza a escribir dichos datos. Si el volumen de datos sobrepasa el tamao de n un cluster , se le solicitar otro nuevo donde se continuar con la escritura. Dado a a que los datos del chero no tienen por qu ser un mltiplo entero del tamao de un e u n cluster , es muy probable que el ultimo cluster se quede a medio llenar. Para marcar en esta circunstancia el nal de los datos utiles del chero, se utiliza un carcter a especial conocido como EOF. Para articular la gestin de clusters libres y ocupados del disco, la FAT utiliza una o estructura de datos interna que mantiene informacin sobre el enlace de contigidad o u de los clusters que constituyen cada chero. Esta es una estructura de datos lineal y ordenada en la que el elemento i-simo representa el i-simo cluster del disco. El e e valor almacenado en cada entrada es una referencia al cluster donde continan los u datos del chero persistido en ese cluster . Si se trata del ultimo cluster con datos de un chero, su valor en la FAT ser -1. Si el cluster est libre, su valor en la FAT a a ser 0. a Como se puede observar en el ejemplo de la gura 2, en el primer cluster de la FAT comienza un chero que contina en el cluster 1 y termina en el 6. A su vez, en u el cluster 3 comienza un segundo chero que ocupa todos los clusters consecutivos EPED curso 2.011-12 -6 Enunciado de la Prctica a

DESCRIPCION DEL PROBLEMA

2.3

Directorios y Ficheros

hasta el 5. Finalmente, el cluster 7 contiene otro chero que contina y termina en u el cluster 8, mientras que los clusters 9 y 10 estn libres. a La FAT siempre comienza prescriptivamente en el cluster 0 del disco y debe ocupar tantos clusters como sea necesario para poder contener referencias a todos los clusters del disco. Como hemos dicho antes, esto depende del tamao del disco y n de los parmtros de formateo, en particular, del nmero de clusters. Por ejemplo, a u para un disco de 200 MBytes con un tamao 4096 de cluster en bytes, salen un n total de 51200 clusters. La m nima anchura de palabra que da cobertura en binario a este ultimo valor es de k = 16 bits, lo que deja un tamao de FAT de al menos n 216 entradas, lo que se traduce, en virtud del tamao del cluster , en 16 clusters. n

2.3.

Directorios y Ficheros

Como ya se dijo en secciones anteriores, los sistemas operativos ofrecen una abstraccin de alto nivel sobre la disposicin anterior en clusters basada en las metforas o o a de chero y directorio, que se denen como sigue: Un chero es una secuencia de datos cualquiera persistido bajo un nombre en algn medio de almacenamiento secundario y que puede moverse a la memoria u principal para su uso. Las operaciones principales que se pueden realizar sobre ellos son las de lectura o escritura de los datos que contiene. Un directorio o carpeta es un contenedor virtual que agrupa una coleccin de o cheros y directorios, que permiten al usuario crear una compartimentacin o de los contenidos del disco duro en forma de una estructura jerrquica, que a parte de un unico directorio llamado principal o ra Este directorio ra se z. z reere como / desde la consola del usuario e igualmente la operacin de o navegacin sobre la estructura jerrquica es el operador /, de tal manera o a que mediante la concatenacin de nombres de directorios separados por / o se establece la ruta (path) de acceso a la informacin. Por ejemplo, la ruta o /usr/bin/java nos llevar al chero llamado java, que est en un directorio a a llamado bin, dentro de otro directorio usr, incluido en el ra En esta prctica z. a no existen rutas relativas, por lo que no estn denidos los operadores . y a .., t picos de otros sistemas. Para dar soporte a la organizacin jerrquica de directorios descrita anteriormente, o a se utiliza un artefacto llamado tabla de directorios. El sistema de cheros mantiene una de estas tablas por cada directorio que contiene informacin sobre los cheros o y directorios que ste contiene. La estructura de esta tabla es una secuencia ordee nada de entradas de directorio (DirEntry) con una longitud ja de 15 bytes, con la siguiente estructura: Nombre del recurso: 12 bytes. Contiene el nombre bajo el que se almacena el recurso. En este sistema no se considera obligatorio ni se distingue el uso de extensiones a diferencia de otros como MS-DOS.Ntese que esta longitud o limita los nombre de cheros a 12 caracteres. Tipo: 1 byte. Permite diferenciar cheros y directorios. Un chero se codica como f y un directorio como d. Primer cluster del recurso: 2 bytes. Seala el nmero de cluster en el que n u comienza el chero o la tabla de directorios si el tipo era d. Enunciado de la Prctica a -7 EPED curso 2.011-12

2.4

Comandos del Sistema de Ficheros

DESCRIPCION DEL PROBLEMA

Como se puede apreciar, las tablas de directorios no slo sirven para dotar de un o nombre identicativo a los recursos del sistema sino que, adicionalmente, constituyen el punto de enlace con la FAT , ya que cada entrada incluye el cluster de comienzo del recurso que sta representa. Ntese que el tamao reservado para este e o n ultimo campo condiciona el nmero de clusters que se pueden direccionar y, por lo u tanto, el tamao de la FAT hasta un total de 216 clusters. n

2.4.

Comandos del Sistema de Ficheros

Sobre estas abstracciones, construiremos una coleccin de comandos que permitan o manejar los cheros mediante la consulta y manipulacin adecuadas de la tabla de o directorios y, en ultima instancia, de la FAT , que son la estructura principal que interesa a esta prctica. Para ello, se usar un intrprete de comandos o consola del a a e que trataremos ms adelante. Dichos comandos admiten, en primer lugar, parmea a tros posicionales (uno o ms, segn sea el comando) y opciones que comienzan por a u el signo y modican, si aparecen, el efecto del comando. Todos los parmetros a posicionales de los comandos que se reeran a rutas debern interpretarse como a rutas absolutas hacia una ubicacin sobre la que se deber aplicar dicho comando. o a Esas rutas pueden especicar nombres de cheros o de directorios. El efecto del comando ser, por lo general, diferente dependiendo del objeto al que conduzca a dicha ruta. Los comandos a los que se quiere dar servicio en esta prctica se listan a a continuacin: o cat concatenate - concatena cheros SINTAXIS cat pathFile -o cat pathFile1 pathFile2 pathFile3 Con la opcin -o, concatena el contenido del chero recibido como argumento o a la salida estndar, es decir, lista por la salida estndar el contenido de un a a chero. Ntese que su parmetro debe ser un chero. o a Sin opciones, concatena el contenido del chero pathFile2 al (nal del) contenido del chero pathFile1 y lo guarda en el chero pathFile3 OPCIONES -o vuelca por la salida estndar. a -h Muestra la ayuda del comando cp copy - copia cheros SINTAXIS cp sourcePath destPath [options] Copia el contenido del recurso origen (cuya ruta es sourcePath) en la ruta destino (destPath). Ntese que origen y destino pueden ser: o Dos cheros, en cuyo caso copia el primero en la ruta del segundo, sobreescribiendo ste ultimo si exist y crendolo como nuevo si no exist e a a a. Un chero y un directorio, en cuyo caso copia el primero dentro del directorio que aparece como segundo. Dos directorios, en cuyo caso, copia recursivamente del origen al destino. OPCIONES -h Muestra la ayuda del comando du display usage - muestra el espacio que ocupa un chero o directorio SINTAXIS EPED curso 2.011-12 -8 Enunciado de la Prctica a

DESCRIPCION DEL PROBLEMA

2.4

Comandos del Sistema de Ficheros

du path [option] Informa sobre el espacio que ocupa el chero o directorio denido por su parmetro. Si dicho parmetro es un chero, se lista el espacio que ocupa. a a Si se trata de un directorio, se lista cada nombre de chero junto con el espacio que ocupa y, al nal, se lista el espacio acumulado. No tiene en cuenta los subdirectorios. OPCIONES -a Si path es un directorio, muestra recursivamente el espacio que ocupa cada chero y subdirectorio, lo que se tiene en cuenta para el acumulado. -h Muestra la ayuda del comando dump dump - vuelca contenido aleatorio en un chero SINTAXIS dump path -n num Crea un chero que contiene num bytes producidos de forma aleatoria y que no incluyen la marca de n de chero EOF. OPCIONES -n Indica que el siguiente parmetro nominal representa un nmero de a u bytes con los que rellenar el chero que representa el parmetro posicional. a -h Muestra la ayuda del comando ls list - lista informacin sobre cheros y directorios o SINTAXIS ls path [option] Lista los cheros y directorios de la ruta path si sta es un directorio. Si la e ruta es un chero, lista el chero (nombre y tamao). n OPCIONES -d Lista slo los directorios o -r Lista el contenido de directorios y subdirectorios recursivamente -s Incluye el tamao de cada chero n -h Muestra la ayuda del comando mkdir make directory - - crea directorios SINTAXIS mkdir path [option] Crea un directorio. Si alguno de los directorios antecesores en la ruta no existe, provoca un error. OPCIONES -h Muestra la ayuda del comando rm remove - elimina cheros o directorios SINTAXIS rm path [option] Borra cheros o directorios. Si el parmetro identica la ruta de un directorio a que no est vac no lo borra. a o, OPCIONES -f Borra recursivamente directorios aunque no estn vac e os. -h Muestra la ayuda del comando Todos estos comandos representan las utilidades disponible para el usuario del sistema de cheros. Adems, de cara a esta prctica, suponen una herramienta para a a la prueba de la implementacin de los distintos niveles de abstraccin sobre los que o o se apoyan. Enunciado de la Prctica a -9 EPED curso 2.011-12

DESARROLLO DE LA PRACTICA

3.

Desarrollo de la prctica a

Con el nimo de reducir la carga de trabajo del alumno y de mantener el desarrollo a de la prctica alineado con los aspectos tericos de la asignatura, se proporciona una a o infraestructura de clases que modelan el problema descrito en la seccin anterior o en orientacin a objetos y utilizando los TAD estudiados a lo largo del curso. Para o articular esta idea, el cdigo se organiza en torno a dos tipos de artefactos: o Cdigo cerrado (vase el apartado 3.1 en la pgina 13), que es aqul que el o e a e Equipo Docente ofrece como andamiaje de soporte del trabajo del alumno. Este cdigo no debe modicarse y por tanto se ofrece compilado. o Cdigo abierto (vase el apartado 3.2 en la pgina 15), que es aqul que el o e a e alumno debe modicar y completar para realizar sus tareas en el marco de la prctica. a es.uned.lsi.practica.1112 src main java eped filesystem os fs cmd tads resources doc test java resources target main java resources test lib

Figura 3: Contenido del proyecto de desarrollo de la practica El alumno debe comprometerse a respetar dicha estructura desarrollando el cdigo o dentro del marco tecnolgico proporcionado y haciendo uso exclusivo de los TAD o estudiados en la asignatura. Todo este cdigo se encuentra en el recurso practio ca2012.zip, que se puede descargar desde el curso virtual y contiene un proyecto con todos los elementos necesarios para realizar la prctica. Una vez descomprimia do e incorporado a su entorno de desarrollo el aspecto deber ser el mostrado en a la gura 3. El cdigo fuente de las clases abiertas aparecer dentro de la carpeta o a src/main/java. Las documentacin de las API (en formato javadoc), tanto de las o que se utilizan en la prctica como las propias de los TAD, aparecen en la carpeta a src/main/resources/doc. En la carpeta test/java, el alumno puede incluir los juegos de pruebas que considere oportunos. La carpeta target deber incluir los artefactos a compilados de la prctica (cheros con extensin . class ). Finalmente, la carpeta a o EPED curso 2.011-12 -10 Enunciado de la Prctica a

DESARROLLO DE LA PRACTICA

/lib contiene los jar tad.jar y lesystem.jar que incluyen el cdigo de las interfaces o de los TAD de la asignatura y el cdigo de las clases cerradas de la prctica respeco a tivamente. A continuacin, detallamos ms detenidamente las responsabilidades de o a los artefactos que aparecen en la arquitectura de la prctica: a 1. El paquete eped.lesystem. El proyecto de la prctica contiene una coleccin a o de clases java, dentro del paquete lesystem, que se corresponden parcialmente con la modelizacin del problema descrito en la seccin 2, que comienza en la o o pgina 5. De estas clases se proporciona su cdigo fuente para que sea editado a o (modicado y completado) por el alumno. En torno a estos recursos giran las actividades descritas en la seccin 4 de la pgina 17 o a 2. El paquete eped.tads, inicialmente vac deber contener al nal de la realio, a zacin de la prctica una coleccin de clases en forma de cdigo fuente que se o a o o corresponden con la implementacin de aquellas interfaces de los TAD estudiao dos en la asignatura, que el alumno haya necesitado para la implementacin o de esta prctica. Aunque no lo recomendamos, el alumno puede hacer una a implementacin adaptada al problema de la prctica de estos tipos abstractos o a extendiendo o alterando su comportamiento. Pero nada de esto debe ir en contra de la semntica establecida en el contrato de las interfaces de los TAD. a Adems, queda terminantemente prohibido el uso de las clases de utilidad de a Java (java.util.*) para implementar los TADs que describen estas interfaces. 3. El jar lesystem. En la carpeta lib del proyecto, aparece el chero lesystem.jar que contiene el paquete es.uned.lsi.eped.lesystem con la coleccin de o interfaces y clases cerradas que implementan la otra parte de la descripcin o del problema. Ntese que las clases de este paquete se referenciarn en la o a implementacin de las clases de cdigo abierto del paquete eped.lesystem o o descrito en el punto 1 de esta enumeracin. o 4. El jar tads. Tambin en la carpeta lib, se encuentra el chero tads.jar que cone tiene las interfaces de todos los tipos abstractos de datos estudiados durante el curso y cuya implementacin deber ser realizada por el estudiante en el o a paquete eped.tads, tal y como se ha descrito en el punto 2 de esta enumeracin. o 5. Documentacin. Finalmente, es de destacar la aparicin de toda la documeno o tacin de las APIs de la prctica en formato javadoc. Recomendamos que o a mantenga abierta esta documentacin en un navegador mientras implementa o la prctica para tener acceso a la forma de los contratos de todas las clases e a interfaces de los TAD y de la prctica. a En las dos siguientes subsecciones, describiremos cada uno de los elementos que pueden encontrarse en el proyecto como cdigo cerrado y como cdigo abierto reso o pectivamente. Recomendamos que la lectura de estas dos subsecciones se relice en paralelo siguiendo la estructura de paquetes incluida en cada una de ellas. Antes de nalizar, no obstante, se ofrece un diagrama de clases de diseo en UML (gun ra 4 en la pgina 12) que representa grcamente estos elementos y las relaciones a a estructurales entre ellos.

Enunciado de la Prctica a

-11 -

EPED curso 2.011-12

DESARROLLO DE LA PRACTICA

Figura 4: Diagrama de clases de diseo de la prctica n a

EPED curso 2.011-12

-12 -

Enunciado de la Prctica a

DESARROLLO DE LA PRACTICA

3.1

Cdigo cerrado o

3.1.

Cdigo cerrado o

Tal y como hemos dicho, las clases de cdigo cerrado que se proporcionan inicialmeno te en el proyecto son aquellas contenidas en el paquete es .uned. lsi .eped.lesystem. A continuacin, describimos el contenido de cada uno de estos paquetes. o 3.1.1. Paquete es .uned. lsi .eped.lesystem . disk

Este paquete representa una abstraccin sobre la organizacin f o o sica de los datos en un dispositivo de almacenamiento secundario o disco y pretende facilitar el acceso a estos segn se persisten en dicho disco pero desde un punto de vista cercano al u del hardware. En este nivel, la organizacin de un disco se establece respecto a unidades de datos o llamadas clusters, que representan conjuntos contiguos de datos relacionados por ser parte de un mismo recurso. Como se explic en el apartado 2 (vase la pgina 5), o e a un disco se compone de un cierto nmero de clusters, que suponen la linealizacin u o de todo el espacio con que dicho dispositivo cuenta para almacenar informacin. o Los artefactos que comprende este paquete son: Interfaz DiskIF. Respresenta el disco y est constituido por una coleccin a o contigua de clusters. Ofrece mtodos para cargar y guardar el contenido del e disco en un chero, aunque estas operaciones no son imprescindibles para desarrollar la prctica. a Clase Disk. Es una implementacin de la interfaz anterior. Su constructor o incorpora la lgica que permite crear esa coleccin en funcin de un nmero o o o u de clusters y el tamao de los mismos. n Interfaz ClusterIF. Constituye el contrato programtico de un cluster , es decir, a aquellas operaciones que toda implementacin de dicha entidad debe cumplir. o Sus mtodos permiten fundamentalmente, volcar y recuperar datos en el cluse ter . Asimismo, en esta interfaz se dene la constante EOF, que identica el nal del contenido de un chero en aquellos clusters que sean cola de la secuencia de datos que componen el mismo. Clase Cluster. Es una implementacin de la interfaz descrita anteriormente. o 3.1.2. Paquete es .uned. lsi .eped.lesystem . os

Este paquete representa una abstraccin sobre el disco, que permite gestionar y o organizar los clusters del nivel anterior enlazndolos con el concepto de recurso a (cheros y directorios) propios de los niveles superiores de la prctica (descritos a ms adelante). a Los artefactos de este paquete son: Interfaz FATIF. Representa el contrato programtico de cualquier implemena tacin de una FAT. Sus mtodos principales permiten realizar operaciones o e sobre secuencias enlazadas de clusters tales como recorridos, reservas y liberaciones. Interfaz DirTableIF. Constituye el contrato programtico de toda implemena tacin de una Tabla de Directorios. Una Tabla de Directorios es un artefacto o Enunciado de la Prctica a -13 EPED curso 2.011-12

3.1

Cdigo cerrado o

DESARROLLO DE LA PRACTICA

que gestiona la coleccin de entradas que representan los recursos que se eno cuentran lgicamente contenidos en un directorio. Los mtodos principales de o e esta interfaz permiten modicar estos atributos y recuperar, aadir y eliminar n elementos de esta coleccin. o Interfaz DirEntryIF. Cada uno de los recursos que aparecen en una Tabla de Directorios, se describe a partir de una coleccin de atributos (nombre, tipo, o etc.). La DirEntry es el artefacto que recoge esta coleccin de atributos. Esta o interfaz representa el contrato programtico de toda implementacin de una a o DirEntry. Sus mtodos principales permiten obtener o establecer valores de e los atributos de un recurso. Clase DirEntry. Es una implementacin de la interfaz anterior. o 3.1.3. Paquete es .uned. lsi .eped.lesystem . fs

Este paquete constituye una abstraccin sobre el anterior nivel (os) y representa los o artefactos de alto nivel chero (File) y directorio (Directory). Los artefactos de este paquete son: Interfaz FileManagerIF. Representa el contrato programtico del FileManaa ger. Entre las responsabilidades que prescribe esta interfaz estn la carga y a la salvaguarda de los datos de un chero, abstrayendo de la existencia de clusters. Interfaz DirectoryManagerIF. Representa un contrato para la implementacin o del DirectoryManager. Este artefacto permite la organizacin jerrquica de los o a cheros del sistema en una estructura de directorios y subdirectorios, para lo cual proporciona capacidades de creacin, consulta, modicacin y borrado de o o directorios as como la adicin y eliminacin de cheros dentro de los mismos. o o Interfaz ResourceIF. Un recurso es una abstraccin que representa de forma o general cualquiera de los elementos que se pueden contener en un directorio. Esta interfaz constituye un contrato para este artefacto. Clase Resource. Constituye una representacin comn de cheros y directorios o u y es una implementacin abstracta de la interfaz ResourceIF. o Clase File. Mediante esta abstraccin de alto nivel, los datos enlazados en o clusters reciben un nombre para que puedan ser referidos por los comandos. Esta clase es un subtipo de la clase Resource. Clase Directory. Mediante esta abstraccin, los recursos del sistema de cheo ros se pueden organizar de forma jerrquica. Esta clase es el otro subtipo de a Resource. 3.1.4. Paquete es .uned. lsi .eped.lesystem .cmd

Este paquete contiene un conjunto de artefactos que permiten ejecutar una serie de acciones de modicacin y consulta al usuario nal sobre los recursos del sistema o de cheros. Los artefactos de este paquete son: Interfaz CommandIF. Representa el contrato programtico de cualquier ima plementacin de un comando del sistema. En esencia, contiene un mtodo que o e permite la ejecucin del mismo. o EPED curso 2.011-12 -14 Enunciado de la Prctica a

DESARROLLO DE LA PRACTICA

3.2

Cdigo abierto o

Clase Command. Es una clase abstracta que implementa la interfaz CommandIF y que, a su vez, sirve de base para la implementacin de comandos espec o cos. Interfaz CommandFactoryIF. Esta interfaz dene un contrato para la implementacin de artefactos que permiten crear comandos espec o cos por medio de una representacin textual de los mismos. o Clase CommandFactory. Implementa la interfaz CommandFactoryIF anterior. 3.1.5. Paquete es .uned. lsi .eped.lesystem

Este es el paquete padre que contiene todo el resto de paquetes anteriormente descritos. Adicionalmente, incluye una clase de uso general, que se describe a continuacin: o Clase FilesystemContext. Esta clase proporciona acceso directo a los artefactos de carcter unico que se utilizan a lo largo del desarrollo de la prctica. En a a particular, nos referimos a la FAT, el FilesystemManager y al DirectoryManager. El constructor de esta clase recibe como argumento el disco sobre el cual se va a montar el sistema de cheros. Atencin: es muy importante que se o construya un unico objeto de esta clase para proporcionar un solo acceso a los tres artefactos anteriormente descritos y as evitar pervertir el correcto funcionamiento del sistema.

3.2.

Cdigo abierto o

Tal y como hemos dicho, las clases de cdigo abierto que se proporcionan inicialmeno te en el proyecto son aquellas contenidas en el paquete eped.lesystem. La implementacin de las clases de cdigo abierto contenidas en este paquete complementan o o a las de cdigo cerrado (vase el apartado 3.1 en la pgina 13) para proporcionar un o e a funcionamiento coherente y completo al sistema. Este paquete contiene las tareas de implementacin que debe realizar el alumno y, por tanto, la mayor de la deso a cripcin de las clases subsiguientes contiene sugerencias, pistas y consejos relativos o a las dependencias de carcter estructural que se dan entre dichas clases. a 3.2.1. Paquete eped.lesystem . os

Clase FAT. Representa una implementacin de la interfaz FATIF y organiza o la coleccin de clusters enlazados de los recursos en una estructura interna o en memoria para facilitar su gestin. La implementacin de esta clase debe o o presentar una dependencia de uso con el Disco, ya que trata con los clusters almacenados en ste. e Clase DirTable. Representa una implementacin de la interfaz DirTableIF y o se corresponde con la estructura de Tabla de Directorios de un sistema de cheros, que fue descritta en el apartado 3.1. En tanto que este artefacto gestiona una coleccin de entradas de directorio, debe existir una relacin o o compositiva entre esta clase y la clase DirEntry. 3.2.2. Paquete eped.lesystem . fs

Clase FileManager. Como se dijo en el apartado 3.1.3 de la pgina 14, esta a clase es la implementacin de la interfaz FileManagerIF y debe permitir la o Enunciado de la Prctica a -15 EPED curso 2.011-12

3.2

Cdigo abierto o

DESARROLLO DE LA PRACTICA

carga y salvaguarda de los datos de un chero. Esto impone la necesidad de mantener una relacin de uso con la clase FAT. Asimismo, necesita mantenerse o una relacin de uso con la clase DirectoryManager para localizar los cheros o sobre los que trabaja. Clase DirectoryManager. Implementa la interfaz DirectoryManagerIF, que se explicaba en el apartado 3.1.3, y que gestiona la estructura jerrquica de a directorios del sistema de cheros. Para ello, mantiene una estructura interna en memoria que representa todo el rbol de directorios y hace uso de la clase a FAT para acceder a los clusters del disco donde residen los recursos. Esta estructura interna debe ser prescriptivamente un arbol de objetos DirEntry y no debe ser substituida por ninguna otra por parte del alumno. 3.2.3. Paquete eped.lesystem . cmd

Existe un conjunto de clases que extienden Command (vase 3.1.4 en la pgina 14) e a y que representan los distintos comandos que puede ejecutar el usuario. Estas clases son: CommandCat CommandCp CommandDu CommandDump CommandLs CommandMkdir CommandRm La descripcin del funcionamiento de dichos comandos puede encontrarse en el o apartado 2.4. La clase CommandCp se da implementada a modo de ejemplo y gu Adems, este paquete incluye la clase Console que constituye una interfaz de a. a usuario para facilitar la prueba simulando una l nea de comandos. Si desea salir de sta, utilice el comando quit. En principio, esta clase no debe modicarse pero se e proporciona como cdigo abierto por si el alumno desease realizar modicaciones. o

EPED curso 2.011-12

-16 -

Enunciado de la Prctica a

PLAN DE TRABAJO

4.

Plan de trabajo

Para realizar la prctica, el alumno deber llevar a cabo una serie de actividades que a a se detallan a continuacin. Para cada una de ellas, habr que realizar un conjunto o a de tareas, que estn reejadas en el cdigo mediante comentarios similares al que a o aparece en la gura 5. Como puede apreciarse, toda tarea comienza por la palabra clave TODO seguida de un cdigo entre corchetes que indica el nmero de la actividad o u y el nmero de tarea dentro de la misma, separados por . y nalizado por el mensaje u Trabajo del estudiante y, en las l neas subsiguientes, la descripcin de la o tarea. El uso de IDEs como Eclipse, NetBeans o IntelligentJ ayuda a localizar este conjunto de tareas fcilmente. Se recomienda que el alumno, segn vaya terminando a u las tareas en el orden que se indica, vaya borrando los comentarios // TODO : Trabajo de estudiante .
// TODO [1.03]: Trabajo de estudiante // A partir de la estructura de datos decidida // para la FAT debe ser posible siempre devolver // el siguiente cluster al dado como parmetro a // que forma parte de un recurso. Recuerde que // si un cluster es el ltimo de un recurso su u // siguiente en la FAT escrita en disco est a // marcada con un LAST_CLUSTER. Tenga en cuenta // que el primer cluster libre de un disco vaco // va justo detrs de los clusters dedicados a la a // FAT y a la dirTable del directo raz.

Figura 5: Modelo de comentario que describe una tarea

4.1.

Actividad 0. Instalacin y preparacin del entorno o o

El paso preliminar para comenzar con la realizacin de la prctica requiere preparar o a el entorno de desarrollo e instalar todo el software necesario. Sus fases son las siguientes: 1. Instalacin del lenguaje Java. La prctica de esta asignatura se desarrolla o a sobre la plataforma JSE de Java. Para realizarla es necesario que instale el kit de desarrollo JDK que puede descargar de la direccin web descrita en [Java]. o Recomendamos que seleccione la ultima versin de Java y nunca una anterior o a la versin 1.6 (Mustang). Siga la secuencia de instrucciones del programa o instalador y si es necesario, establezca la variable de entorno CLASSPATH para que apunte al directorio en curso (.) y al directorio /lib donde haya instalado Java (si su ordenador ya dispone de una instalacin de Java, omita o este paso). 2. Instale un entorno de desarrollo (IDE). Seleccione el entorno de desarrollo integrado que ms le agrade e instlelo en su sistema. Existen disponibles a a en Internet varios de estos entornos y desde esta asignatura no pretendemos inclinarnos por ninguno de ellos. Puede seleccionar [BlueJ] que es un entorno preparado para la educacin y que se utiliza en otras asignaturas de este grado o en la UNED o puede decantarse por herramientas de carcter profesional como a [Eclipse], [NetBeans] o [IntelligentJ]. Enunciado de la Prctica a -17 EPED curso 2.011-12

4.2

Actividad 1. Desarrollo de la FAT

PLAN DE TRABAJO

3. Instale la infraestructura de clases para la prctica. Para desarrollar la prctica a a se proporciona la coleccin de clases que fueron descritas en la seccin 3 de o o este documento. Descargue del entorno virtual todo el cdigo necesario para o la prctica y genere un proyecto con ella en su entorno de desarrollo. a

4.2.

Actividad 1. Desarrollo de la FAT

La primera actividad consiste en la realizacin de la FAT. Esta actividad requiere o la eleccin de un TAD para la FAT . Recurdese que la FAT contiene una coleccin o e o de clusters y que cada recurso (directorio o chero) se almacena en una secuencia enlazada de clusters, por lo que la FAT contendr una coleccin de secuencias de a o clusters. Edite la clase abierta FAT perteneciente al paquete eped.os, inspeccione el cdigo y lleve a cabo las tareas all descritas. o

4.3.

Actividad 2. Desarrollo de la DirTable

La segunda actividad consiste en la implementacin de la clase DirTable que reo presenta una Tabla de Directorio. Es decir, que recoge la informacin sobre todos o los cheros y directorios que contiene el directorio al que representa dicha tabla. La DirTable contendr una coleccin de entradas (DirEntry), que representan a a o los cheros y directorios antedichos. Edite la clase abierta DirTable en el paquete eped.os y complete las tareas all descritas.

4.4.

Actividad 3. Desarrollo del FileManager

La tercera actividad consiste en la implementacin del FileManager: un gestor de o cheros que constituye la fachada entre los paquetes eped.fs y eped.os. Esta clase facilita trabajar con el segundo paquete desde el primero elevando el nivel de abstraccin. Edite la clase abierta FileManager y realice las tareas que all se detallan. o

4.5.

Actividad 4. Desarrollo del DirectoryManager

La cuarta actividad trata de la implementacin del DirectoryManager, es decir, un o gestor de directorios que representa la fachada para operaciones con recursos (directorios y cheros) entre los paquetes eped.fs y eped.os. El DirectoryManager es el encargado de la estructuracin jerrquica de los directorios del sistema de cheros o a y tiene como responsabilidades las operaciones de alta, baja, localizacin y detero minacin del tipo de recurso, entre otras. Ntese que, para mantener la estructura o o de rbol de directorios, se utiliza un atributo privado lesystem declarado como a TreeIF. Esta estructura debe ser utilizada sin cambiarla. Edite la clase abierta DirectoryManager perteneciente al paquete eped.fs y realice las tareas que all se detallan.

4.6.

Actividad 5. Implementacin de comandos o

La ultima actividad tiene por objetivo la implementacin de un conjunto de co o mandos de usuario mediante la utilizacin de la arquitectura subyacente que se o deber haber implementado en las actividades anteriores. Cada uno de los comana dos trabaja con cheros y directorios, por lo que se debern usar las clases cerradas a EPED curso 2.011-12 -18 Enunciado de la Prctica a

PLAN DE TRABAJO

4.6

Actividad 5. Implementacin de comandos o

File y Directory que encapsulan estas entidades para realizar las operaciones adecuadas a cada comando y ninguna otra clase ms. La lgica de los mismos debe a o reproducir elmente la que est descrita en el apartado 2.4 de la pgina 8 y consia a derar tanto los ujos principales (el desarrollo normal de cada comando) como los alternativos y los potenciales errores en la ejecucin de dichos comandos. Cada uno o de los comandos se corresponde con una subclase de la clase cerrada Command y cumple la interfaz CommandIF. En cuanto a las tareas de esta actividad, el Equipo Docente proporciona implementado el comando CommandCp como cdigo abierto para que el alumno lo utilice o como gu de implementacin de los dems. Edite las clases abiertas correspona o a dientes a los distintos comandos pertenecientes al paquete eped.cmd, inspeccione el cdigo que ofrece el Equipo Docente e implemente las tareas que se recogen all o .

Enunciado de la Prctica a

-19 -

EPED curso 2.011-12

EVALUACION Y CALENDARIO DE ENTREGA

5.
5.1.

Evaluacin y calendario de entrega o


Fases de la realizacin de la prctica o a

Para llevar a cabo la prctica, el alumno deber seguir las siguientes fases de desaa a rrollo, si bien algunas de ellas, no necesariamente tienen por qu realizarse en el e orden en que se detallan a continuacin: o 1. Asistencia a la sesin de control obligatoria. Durante el desarrollo del cuao trimestre, tendr lugar en los centros asociados de la UNED una sesin de a o control con carcter orientativo y asistencia obligatoria para aprobar la asiga natura. Pngase en contacto con su tutor o Centro Asociado para conocer la o fecha de celebracin de estas sesiones. o 2. Implementacin de la prctica segn las instrucciones de este documento. o a u 3. Entrega del cdigo al Tutor, que ser el encargado de evaluar la la prctica, o a a en la forma y tiempo que ste prescriba segn el calendario marcado por l. e u e 4. Entrega del cdigo al Equipo Docente mediante el entorno virtual. o

5.2.

Fechas de entrega

La evaluacin de la prctica implica los cuatro pasos que deben ser satisfechos para o a aprobarla. Cada uno tiene una fecha concreta para su realizacin. En particular, la o fecha de los 3 primeros pasos la establece el Tutor de su Centro Asociado. Pngao se en contacto con l para obtener informacin al respecto de este calendario. El e o paso 4 - el env del cdigo de la prctica al Equipo Docente - se realizar teo o a a lemticamente a travs del entorno virtual de la asignatura mediante un enlace que a e permanecer habilitado hasta el 22 de junio de 2012 para la convocatoria de junio a y hasta el 14 de septiembre para la convocatoria extraordinaria. Cualquier cambio al respecto de esta planicacin inicial, tanto de retraso como adelanto, ser conveo a nientemente publicado en el tabln de noticias de la asignatura, accesible desde el o entorno virtual. Recomendamos al alumno que revise este tabln con frecuencia. o

5.3.

Evaluacin y calicacin o o

Segn aparece publicado en la normativa de la asignatura la evaluacin de la prctica u o a supone un 20 % sobre el total de la nota nal. Es decir, la nota del examen se pondera en rango [0 . . . 10] al 80 % y la de esta prctica en rango [0 . . . 10] al 20 % de manera a que: N otaF inal = 0,8 N otaExamen + 0,2 N otaP rctica a Lo que se describe a continuacin es cmo se computa el valor de NotaPrctica a o o a partir del resultado de los pasos de evaluacin descritos en la subseccin 5.1. Deso o cribiremos los factores que intervienen en la calicacin de forma aislada: o 1. Sesiones de control [SC]. Para aprobar la sesin de control unicamente es o necesario que el Tutor registre la asistencia del alumno. Recomendamos que el alumno se asegure de este hecho ya que de no gurar como presentado en la misma, la prctica estar suspensa. De cara al cmputo numrico, considere a a o e que esta calicacin es 1 en caso de asistencia y 0 en caso contrario. El Centro o slo tiene obligacin de celebrar una sesin para cada grupo de alumnos en o o o los que divida sus matriculados y por cada curso acadmico. e EPED curso 2.011-12 -20 Enunciado de la Prctica a

EVALUACION Y CALENDARIO DE ENTREGA

5.4

Criterios de calicacin o

2. Cdigo de la prctica [CP], que valorar el Tutor segn los criterios que preso a a u cribe el Equipo Docente. A partir de esta informacin se pueden describir los criterios que asignan una o calicacin nal a la nota de la prctica por aplicacin de la siguiente frmula: o a o o N otaP rctica = SC CP a Donde deben cumplirse para computar la frmula las siguientes restricciones: o SC = 1 CP 4

5.4.

Criterios de calicacin o

A continuacin se discuten algunos de los criterios ms relevantes de correccin que o a o deben ser tenidos en cuenta por el estudiante durante la realizacin de la prctica o a para la obtencin de una calicacin apta en la misma. Ntese que no cumplir o o o alguno de estos criterios puede suponer un suspenso automtico. a 1. La realizacin de la prctica tiene carcter obligatorio. No puede aprobarse la o a a asignatura sin haber aprobado la prctica. a 2. La prctica es individual. Las prcticas cuyo cdigo coincida signicativamena a o te con el de otro alumno sern motivo de suspenso para todos los implicados, a no pudiendo aprobar ninguno de ellos en el presente curso acadmico. e 3. El alumno deber implementar su prctica utilizando, exclusivamente, los a a TAD explicados en el curso. Toda utilizacin de otras abstracciones o imo plementaciones (por ejemplo, las clases de utilidad que Java proporciona para las estructuras lineales, o las estructuras propias del lenguaje) implicar el susa penso inmediato de la prctica con las consecuencias descritas en los puntos 1 a y 2. Aqu naturalmente, nos referimos a las clases del paquete eped.lesystem , y no a las implementaciones de TAD del paquete eped.tads. 4. Asimismo, las implementaciones que el alumno realice de los TADs necesarios para el funcionamiento de su prctica deben ser normativamente incluidas a dentro del paquete eped.tads. El uso de clases fuera de este paquete podr sua poner el suspenso de la prctica. a 5. El alumno deber cumplir con el protocolo y fechas de entrega descritas en a las subsecciones 5.1 y 5.2 de este documento. No se admitirn excepciones a a esta norma, por lo que se recomienda una adecuada planicacin temporal o as como la observancia de unas m nimas normas de seguridad inexcusables, que incluyen pero no se limitan a: a) La conservacin de copias de seguridad en cantidad y medios que eviten o problemas de prdida o corrupcin del cdigo, ya que no se conteme o o plar ni la exencin ni el aplazamiento debido a estos motivos. Recomena o damos al alumno que obtenga algn medio de almacenamiento en la red u que complemente sus propias medidas y copias. Asimismo, nos permitimos recomendar que se estudie la instalacin y uso de algn sistema de o u control de versiones como [Subversion] o [Git] Enunciado de la Prctica a -21 EPED curso 2.011-12

5.4

Criterios de calicacin o

EVALUACION Y CALENDARIO DE ENTREGA

b) La garant de la ausencia de virus, troyanos, gusanos y cualquier otro a malware o spyware. La deteccin de dichos elementos ajenos a la prctica o a provocar el inmediato suspenso en los trminos que dictan los puntos 1 a e y 2 de este apartado. El alumno deber consultar los foros de la asignatura (Foro de Prcticas) y contactar a a con el TAR o con su Tutor si tiene dudas sobre la prctica. La puesta en comn de a u ideas con los compaeros a travs de los foros se permite y se aconseja, siempre que n e no lleve asociado el intercambio de cdigo (vase el punto 2). o e

EPED curso 2.011-12

-22 -

Enunciado de la Prctica a

REFERENCIAS

6.

Referencias
Java: http://www.java.com BlueJ: http://www.bluej.org Eclipse: {http://www.eclipse.org IntelligentJ: {http://www.jetbrains.com/idea/} NetBeans: http://www.netbeans.org Subversion: http://subversion.tigris.org Git: http://git-scm.com

Enunciado de la Prctica a

-23 -

EPED curso 2.011-12

Das könnte Ihnen auch gefallen