+ All Categories
Home > Documents > UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título:...

UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título:...

Date post: 17-Jun-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
85
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/283291584 Corrección de Errores a Nova Ligero 3.0 Thesis · June 2012 DOI: 10.13140/RG.2.1.3670.3440 CITATIONS 0 READS 65 1 author: Some of the authors of this publication are also working on these related projects: Influence analysis in technological networks (SNA) View project Nova Linux View project Dairelys García Rivas University of Information Sciences 9 PUBLICATIONS 3 CITATIONS SEE PROFILE All content following this page was uploaded by Dairelys García Rivas on 28 October 2015. The user has requested enhancement of the downloaded file.
Transcript
Page 1: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/283291584

Corrección de Errores a Nova Ligero 3.0

Thesis · June 2012

DOI: 10.13140/RG.2.1.3670.3440

CITATIONS

0READS

65

1 author:

Some of the authors of this publication are also working on these related projects:

Influence analysis in technological networks (SNA) View project

Nova Linux View project

Dairelys García Rivas

University of Information Sciences

9 PUBLICATIONS   3 CITATIONS   

SEE PROFILE

All content following this page was uploaded by Dairelys García Rivas on 28 October 2015.

The user has requested enhancement of the downloaded file.

Page 2: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS

Título: “Corrección de errores a Nova Ligero 3.0.”

Trabajo de Diploma para optar por el título de

Ingeniero en Ciencias Informáticas

Autor: Dairelys García Rivas

Tutores: Ing. Nadia Porro Lugo

Ing. Miguel Albalat Águila

Ciudad de La Habana

Junio de 2012

1

Page 3: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

“La   mayor ía   de   las   veces   la   gente   no   sabe   lo  

que quiere hasta que se   lo  enseñas”.

“Desafortunadamente,   la   gente   no   se   est á  

rebelando   contra   Microsoft .   No   conocen   nada  

mejor” .

Steve Jobs

2

Page 4: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

DECLARACIÓN DE AUTORÍA

Declaro que soy la única autora de la presente tesis y reconozco a la Universidad de las Ciencias

Informáticas los derechos patrimoniales de la misma, con carácter no exclusivo.

Para que así conste firmo la presente a los 28 días del mes de Junio del año 2012

_____________________ __________________________

Dairelys García Rivas Ing. Nadia Porro Lugo

__________________________

Ing. Miguel Albalat Águila

3

Page 5: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Dedicator iaDedico este trabajo de diploma a mis padres, que me han hecho la mujer que hoy en día 

intento construir y que han estado a mi lado a cada paso del camino; que han compartido mis 

noches de insomnio y hoy me acompañan en este día donde de alguna forma culmina una 

etapa hermosa de mi vida.

A mis tíos Rodolfo García y Clara Mayo, que no pueden estar a mi lado en estos momentos 

por dos razones bien diferentes, pero han sido mi motor impulsor a superarme en la vida.

4

Page 6: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

AgradecimientosA Dios y a la Revolución por construir esta obra hermosa que es la UCI.

A mis tutores, Miguel Albalat y Nadia Porro, que han estado a mi lado, dándome apoyo, y 

atendiendo mis llamadas a deshora sin protestar; a mi oponente, Yadira, que con ojo avisor ha 

revisado el documento en función de hacerlo lo más completo posible.

A mi querido Abel Firvida, que ha sido como un padre para mí todo este tiempo, y también 

ha dedicado su valioso tiempo a la revisión de este documento.

A mis abuelas y abuelo, mis tíos y tías, y demás, que me han enseñado lo que es una familia 

que confía en uno y cree en sus éxitos.

A mi novio Alexis, que ha sido un gran apoyo para la realización de la investigación e 

implementación de aplicaciones, así como un gran apoyo emocional; y a mi gran amigo Yulio 

Alemán, que me ayudó a ver las cosas desde otro punto de vista.

A todos los profesores del proyecto Nova: Machín, Miranda, Mónica, Yusleidys, Ernesto 

Puente, y otros que me ayudaron con sus ideas y sus consejos.

A mis compañeros de proyecto, que me apoyaron en todo momento.

A todas las personas que se preocuparon por el desarrollo de esta investigación.

5

Page 7: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

RESUMEN

La ley de Wirth, en contraposición a la ley de Moore, y el fenómeno de la obsolescencia programada,

imponen el ineficiente aprovechamiento de los recursos computacionales. Como solución a esta

problemática, en Cuba surge Nova Ligero, sistema operativo orientado a computadoras de bajos recursos,

y también al proceso de migración1 de la isla. Durante su despliegue en diversos lugares del territorio

cubano, de conjunto con un proceso de pruebas de la empresa Calisoft, el mismo ha arrojado una serie de

dificultades de necesaria modificación para el correcto funcionamiento del sistema operativo.

La presente investigación documenta minuciosamente el proceso de investigación para la solución de

dichas dificultades, así como la realización del proceso ingenieril y la implementación de su solución de

manera óptima, lo que permitió que se obtuviera un producto final avalado por por la empresa Calisoft.

Palabras Claves: Nova Ligero, sistema operativo, entorno de escritorio, resolución de problemas.

1 Hace referencia al proceso de migración a sistemas operativos GNU/Linux que se encuentran llevando a cabo los Organismos de la Administración Central del Estado en Cuba. En lo adelante, el mismo será referido solamente como “Proceso de migración”.

6

Page 8: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

ABSTRACT

Wirth's law, as opposed to Moore's Law, and the phenomenon of planned obsolescence, impose

inefficient use of computational resources. As a solution to this problem arises in Cuba Nova Light,

operating system oriented to computers with low incomes, and also to the migration process2 of the island.

While deployed in various places throughout Cuba, with an overall testing process from Calisoft company,

it has yielded a number of difficulties of necessary amendments to the proper functioning of the operating

system.

This research documents in detail the research process to solve these difficulties, as well as the

realization of process engineering and the implementation of the optimal solution, which allowed to obtain a

final product by the company endorsed by Calisoft.

Keywords: Nova Light, operating system, desktop environment, problem solving.

2 It refers to the migration process to GNU/Linux operating systems that has been taken by the Institutions of the Central Administration of the State in Cuba. From now on, it will be referred just as “Migration process”.

7

Page 9: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

ÍNDICE DE CONTENIDOS

INTRODUCCIÓN..........................................................................................................................................3

CAPÍTULO 1: ESTUDIO DEL ESTADO DEL ARTE......................................................................................7

1.1 Ponderación de criticidad de errores.............................................................................................7

1.2 Análisis de posibles soluciones.....................................................................................................8

1.2.1 Errores en comparticiones CIFS en el PCManFM..................................................................8

1.2.2 Errores en opciones Hibernar y Suspender............................................................................9

1.2.3 Aplicación de gestión de distribuciones de teclado...............................................................11

1.2.4 Soporte para impresoras HP LaserJet..................................................................................13

1.2.5 Soporte para proxy...............................................................................................................15

1.2.6 Salvar resoluciones de pantalla............................................................................................15

1.2.7 Aplicación de gestión de preferencias visuales.....................................................................15

1.3 Definición de metodología y herramientas..................................................................................16

1.4 Conclusiones del capítulo...........................................................................................................18

CAPÍTULO 2: IMPLEMENTACIÓN DE SOLUCIONES...............................................................................19

2.1 Errores en comparticiones CIFS en el PCManFM.......................................................................19

Adicionando funcionalidad de montar dispositivos de red.............................................................21

Adicionando código a Libfm..........................................................................................................25

Adicionando código a PCManFM..................................................................................................27

2.2 Errores en opciones Hibernar o suspender.................................................................................29

Adicionando método isEnoughSwapToHibern()............................................................................29

Modificando método check_available_actions()............................................................................30

2.3 Aplicación para la gestión de las distribuciones de teclado.........................................................30

2.4 Soporte para impresora modelo HP LaserJet 2300....................................................................32

2.5 Aplicación para la gestión del soporte de proxy..........................................................................33

2.6 Salvar resoluciones de pantalla..................................................................................................36

2.7 Aplicación de gestión de preferencias visuales...........................................................................36

1

Page 10: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.8 Otras modificaciones...................................................................................................................37

2.8.1 Menú Inicio/Preferencias......................................................................................................37

2.8.2 PC ManFM...........................................................................................................................37

2.8.3 /home/[usuario].....................................................................................................................37

2.8.4 Inicio de sesión.....................................................................................................................37

2.9 Conclusiones del capítulo...........................................................................................................38

CAPÍTULO 3: REALIZACIÓN DE PRUEBAS..............................................................................................39

3.1 Errores en comparticiones CIFS en el PCManFM.......................................................................39

3.2 Errores en opciones Hibernar o suspender.................................................................................42

3.3 Aplicación para la gestión de las distribuciones de teclado.........................................................42

2.4 Soporte para impresora modelo HP LaserJet 2300....................................................................45

2.5 Aplicación para la gestión del soporte de proxy..........................................................................45

2.6 Salvar resoluciones de pantalla..................................................................................................46

2.7 Aplicación de gestión de preferencias visuales...........................................................................47

2.8 Conclusiones del capítulo...........................................................................................................47

CONCLUSIONES ...................................................................................................................................... 48

RECOMENDACIONES...............................................................................................................................49

REFERENCIAS BIBLIOGRÁFICAS............................................................................................................50

BIBLIOGRAFÍA........................................................................................................................................... 54

ANEXOS..................................................................................................................................................... 55

GLOSARIO DE TÉRMINOS........................................................................................................................75

2

Page 11: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

INTRODUCCIÓN

Según la ley de Moore (Gordon Moore 2005), formulada en 1965, “cada veinticuatro meses se

duplicará el número de transistores en un circuito integrado”, por lo que las computadoras cada dos años

han multiplicado al doble su capacidad de procesamiento y han dividido entre dos el valor de su costo de

fabricación, lo que ha impuesto un vertiginoso ritmo de producción. En 1995, Niklaus Wirth (Ziff Davis

1996b) planteó que el hardware se ha hecho más rápido con el tiempo, y algo de ese desarrollo está

cuantificado por la Ley de Moore, pero anota que esto no implica que el trabajo se esté haciendo más

rápido. Bill Gates negó los beneficios de la Ley de Moore años más tarde, proponiendo una variante de la

ley de Wirth, llamada Gates Law (Ley de Gates)(Eric Raymond [no date]), la cual sugiere que la velocidad

del software comercial generalmente disminuye en un 50% cada 18 meses.

Como consecuencia de las leyes explicadas anteriormente, se produce el software bloat3, dando paso

al fenómeno conocido como obsolescencia programada. Ambos han provocado que las computadoras

sean desechadas cada vez con menos tiempo de uso en los países desarrollados; pero Cuba, como país

tercermundista, posee una economía que no puede soportar este modelo consumista, situación que se

encuentra agravada por el bloqueo económico impuesto por parte de Estados Unidos. Por tal motivo, las

computadoras deben explotarse el máximo de tiempo posible. Esto supone un problema, ya que la

sociedad cubana pretende informatizarse, pero cada vez el software actualizado requiere más capacidad

de procesamiento, almacenamiento, etc. Añadido a esto, la isla ha planteado desde el 2004 el proceso de

migración paulatina de los Organismos de la Administración Central del Estado (OACE), con el reto

adicional de que las distribuciones de GNU/Linux más difundidas, como son Ubuntu, Fedora, OpenSuse,

Debian, RedHat, también se rigen por los parámetros dictados en el mercado internacional de hardware y

software.

Por todo lo planteado anteriormente, surge Nova Ligero (sistema operativo desarrollado por un grupo

de estudiantes y profesores de la Universidad de las Ciencias Informáticas (UCI)) como alternativa de

3 Se refiere a la creciente complejidad del software. Las aplicaciones y sistemas operativos modernos son mucho más grandes en tamaño y complejidad, comparados al software en computadoras personales a finales de los '70 y principios de los '80. (Ziff Davis 1996a)

3

Page 12: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

código abierto, que soporta la migración, y además se encuentra enfocado específicamente a las

computadoras cubanas con bajas prestaciones .

Como parte del proceso de pruebas, el proyecto Nova Ligero ha sido desplegado en los Joven Club de

Computación de las provincias Sancti Spíritus y Ciego de Ávila, el Parque Zoológico de la provincia Ciego

de Ávila, las computadoras destinadas a la docencia de la Facultad 1 de la UCI, y se está realizando una

versión como sistema operativo personalizado para utilizarse en el proceso eleccionario que se llevará a

cabo en el país. Este sistema operativo, al igual que el resto de los procesos de desarrollo que se

desenvuelven dentro de la UCI, tiene como parámetro indispensable la liberación del producto por la

empresa aseguradora de la calidad del software: Calisoft4. El proceso de retroalimentación con los

involucrados antes mencionados, de conjunto con las no conformidades detectadas por el proceso de

revisión de Calisoft, han dado como resultado un grupo de obstáculos que atentan contra el correcto

funcionamiento del producto resultante. Una gran cantidad de proyectos que desarrollan software libre han

realizado este proceso en incontables ocasiones, pero no lo han documentado para la prevención de

futuros errores. La ausencia de la completa documentación, la no realización del proceso ingenieril y la

falta de implementación de las soluciones más óptimas a las dificultades encontradas, impiden que Nova

Ligero sea un producto avalado por la empresa Calisoft, lo que constituye la situación problemática de la

presente investigación. Para llegar a la búsqueda de una solución a esta situación, se plantea el

problema científico ¿Cómo solucionar los errores detectados por la comunidad de usuarios y Calisoft en

Nova Ligero 3.0?

Como objeto de estudio se determinaron los Sistemas Operativos con Entornos de Escritorio más

reconocidos actualmente, especificándose como campo de acción el Sistema Operativo Nova Ligero 3.0,

sobre el que se trabajará.

El objetivo general de la presente investigación será: Solucionar los errores detectados por la

comunidad de usuarios y Calisoft en Nova Ligero 3.0, teniendo como objetivos específicos:

4 Empresa cubana que brinda servicios de pruebas de calidad a productos de software. Entre estos se encuentran: pruebas de liberación, certificación de productos, sellos de calidad, auditorías, revisiones, diagnósticos, etc. (CALISOFT 2009)

4

Page 13: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

1. Analizar causas y posibles soluciones de cada dificultad encontrada.

2. Diseñar e implementar las soluciones elegidas.

3. Realizar pruebas de caja negra a las correcciones implementadas.

Con el propósito de dar cumplimiento a los objetivos planteados se hace necesario realizar las

siguientes tareas:

1. Ponderar la criticidad de las dificultades encontradas.

2. Estudiar los fundamentos teóricos de cada problema.

3. Proponer un diseño de clases para cada solución seleccionada.

4. Comprobar mediante pruebas las soluciones implementadas.

La presente investigación está sustentada sobre la base de la utilización de diferentes métodos

científicos. Como métodos teóricos se emplearon el Analítico-Sintético, permitiendo dividir mentalmente

el fenómeno y establecer la unión entre las partes previamente analizadas, y la Modelación para lograr

una estructura que permita predecir la respuesta del sistema a los cambios realizados. Como método

empírico, se utilizó la Observación para comprobar si en las pruebas realizadas se alcanzaba el resultado

esperado.

El cumplimiento de todas las tareas propuestas permitirá ofrecer un producto que posea una

documentación actualizada de los errores más críticos que puedan surgir durante la utilización del mismo,

que cuente con la explicación detallada de todo el proceso ingenieril realizado y la forma de implementar

las soluciones, y se encuentre avalado por una empresa de prestigio y externa a la institución. Por todo lo

anteriormente expuesto, se determina la idea a defender de que la presente investigación posiblemente

contribuirá a la solución de los errores detectados por la comunidad de usuarios y Calisoft en el sistema

operativo Nova Ligero 3.0.

El presente documento cuenta con las secciones Glosario de términos, Referencias bibliográficas,

Bibliografía y Anexos; y tres capítulos organizados de la siguiente forma:

CAPÍTULO I: “Estudio del estado del arte”: Se presentan propuestas de aplicaciones que puedan

apoyar la erradicación de los errores detectados por la comunidad de usuarios y Calisoft y se seleccionan

5

Page 14: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

las posibles soluciones, estableciendo el orden de corrección de estos según su criticidad en Nova Ligero

3.0. Además se determinan las herramientas, la metodología y los lenguajes que se utilizan para el

proceso de desarrollo de las soluciones.

CAPÍTULO II: “Diseño e implementación de soluciones”: Se presentan los procedimientos a realizar y

los componentes a modificar, para dar solución a los errores detectados, asegurando su correcta

documentación con el objetivo de brindar facilidades de mantenimiento al producto Nova Ligero 3.0.

CAPÍTULO III: “Realización de pruebas”: Se presenta el análisis de los resultados alcanzados de la

aplicación de las pruebas de software a Nova Ligero 3.0.

6

Page 15: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

CAPÍTULO 1: ESTUDIO DEL ESTADO DEL ARTE

En el presente capítulo se mostrará una introducción al estudio de las herramientas, metodología y

lenguajes de programación a utilizar en el desarrollo de las aplicaciones requeridas. Seguidamente se

procederá a realizar una ponderación de errores, que consiste en asignar valores de criticidad a las

dificultades encontradas con el fin de hallar aquellas que necesitan una solución con mayor prioridad; para

ello serán numeradas desde uno en adelante, donde mientras menor sea el número, mayor será la

prioridad asignada. Luego se analizarán las posibles soluciones a cada unos de los problemas

encontrados, para determinar en las conclusiones del capítulo qué solución es la más propicia para cada

una de las dificultades.

1.1 Ponderación de criticidad de errores

Cuando se cuenta con varios problemas a resolver, es sabio asignarle un valor de criticidad a cada uno,

para saber cuál de ellos solucionar primero; luego, dividir este problema en otros más pequeños, para

poder darle respuesta por partes.

1. Errores en comparticiones CIFS5 en el PCManFM

2. Errores en opciones Hibernar o suspender del entorno de escritorio

3. Ausencia de una aplicación eficiente de gestión de distribuciones de teclado

4. Ausencia de soporte para impresoras modelo HP LaserJet

5. Ausencia de una aplicación para el soporte de proxy6 en el entorno de escritorio

6. Error al guardar resoluciones de pantalla del monitor

5 Siglas de Common Internet File System, en español Sistema de Archivos Comunes de Internet. SMB fue originalmente inventado por IBM, pero la versión más común es esta, renombrada por Microsoft en 1998 con características que incluyen soporte para enlaces simbólicos, enlaces duros, y mayores tamaños de archivo. (Wikipedia 2012s)

6 Programa o dispositivo que realiza una acción en representación de otro. Esta situación estratégica de punto intermedio suele ser aprovechada para soportar una serie de funcionalidades, aunque su finalidad más habitual es la de servidor proxy, que consiste en interceptar las conexiones de red que un cliente hace a un servidor de destino. (Wikipedia 2012q)

7

Page 16: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

7. Ausencia de una aplicación de gestión de preferencias visuales del escritorio

8. Otras correcciones de menor criticidad

1.2 Análisis de posibles soluciones

1.2.1 Errores en comparticiones CIFS en el PCManFM

El programa presenta problemas a la hora de montar dispositivos de almacenamiento como discos

compactos (CDs) y dispositivos de almacenamiento por la red (ftp7, sftp8, samba, etc...).

En el proyecto LXDE (http://www.sourceforge.net/projects/lxde), para la creación del manejador de

ficheros PCManFM no existe una librería para el manejo de las funcionalidades principales, como en el

caso de otros entornos de escritorio como Gnome, y KDE (MACÍAS BRUZZONE 2000). Usando GIO9, se

creó una librería llamada LibFM (RENDLE 2010), que cumple con estas funciones, y maneja todas las

acciones que realiza el manejador. (Ver Ilustración 1).

7 Acrónimo de “File Transfer Protocol”, traducido al español como “Protocolo de Transferencia de Ficheros”. Es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (acrónimo de “Transmission Control Protocol”, traducido al español como “Protocolo de control de transmisiones”), basado en la arquitectura cliente-servidor.

8 Acrónimo de “Secure File Transfer Protocol”, traducido al español como “Protocolo de Transferencia Segura de Ficheros”. Es un protocolo del nivel de aplicación que proporciona la funcionalidad necesaria para la transferencia y manipulación de archivos sobre un flujo de datos fiable.

9 Librería que se esfuerza por brindar una API (Acrónimo de “Application Programming Interface”, traducido al español como “Interfaz de programación de aplicaciones” (Wikipedia 2012j)) VFS (Acrónimo de “Virtual File System”, traducido al español como “Sistema de archivos virtual” (Wikipedia 2012t)) moderno y fácil de usar, que se encuentre en el nivel adecuado en la pila de la biblioteca. El objetivo es superar las deficiencias de GnomeVFS (Wikipedia 2012g) y que la API proporcionada sea tan buena que los desarrolladores la prefieran a las llamadas primas de POSIX (Wikipedia 2012n).

8

Page 17: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Posible solución:

Hacer funcionar la aplicación PCManFM desde una terminal o CLI10 y detectar los errores ocurridos,

para acceder al código fuente y modificarlo.

1.2.2 Errores en opciones Hibernar y Suspender

En el sistema operativo ocurre el error de que en algunas ocasiones el equipo hiberna cuando lo

selecciona el usuario y en otras ocasiones no lo hace, desconociéndose por parte de los usuarios el

motivo por el que sucede esto.

Para que una computadora con un sistema operativo de código abierto pueda hibernar, todos los

procesos que se encuentren en ejecución, deben ser guardados en el disco duro, por tanto se debe

comprobar que las memorias RAM11 y SWAP12 (suponiendo que el sistema operativo cuente con la misma

y tenga configurado su soporte) usadas puedan ser almacenadas ambas en la memoria SWAP disponible,

lo que permite proteger la información de forma que cuando el usuario acceda de nuevo al equipo,

parezca que este último no ha sido apagado (GONZÁLEZ DUQUE 2008). Debe cumplirse una condición

para que la computadora sea capaz de hibernar o suspenderse, la cual se expresa mediante la fórmula:

10 Acrónimo de “Command Line Interface”, traducido al español como “Interfaz de línea de comandos”.11 Acrónimo de “Random Access Memory”, traducido al español como “Memoria de acceso aleatorio”. Es la

memoria desde donde el procesador recibe las instrucciones y guarda los resultados. (Wikipedia 2012k)12 Es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han

de mantenerse en memoria física. (Wikipedia 2012d)

9

Ilustración 1: Componentes LibFM y

PCManFM para comparticiones CIFS

Page 18: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

RAMusadaSWAPusadaSWAPdisponible

Donde RAMusada representa la cantidad de esta memoria que está usando el equipo en el momento de

hibernar, SWAPusada representa la cantidad de esta memoria que se encuentra en uso en el momento de

hibernar, y SWAPdisponible representa la cantidad restante de esta memoria de la que dispone el equipo para

almacenar las dos anteriores.

Cuando el usuario decide apagar el equipo, el paquete guano-sesion muestra una pantalla con las

acciones de las que es capaz el sistema, entonces el primero selecciona la opción que desea, y guano-

session envía un mensaje usando dbus13 al paquete HAL14, para que este se encargue de comunicarse

con el hardware (ver Ilustración 2).

Posible solución 1:

Agregar un parche de código al paquete guano-session-0.9.12, el mismo se encontrará en el directorio

debian/patches/debian-changes-0.9.10, y consiste en la adición del método

isEnougthSwapToHibern(), y la modificación del método check_available_actions(). El primer método

devolverá un valor verdadero si el equipo puede hibernar y valor falso si no puede. El segundo método se

modificará para que si el equipo puede hibernar, muestre todas las opciones, y sino, solamente muestre

13 Acrónimo de “Desktop Bus”. Es un sistema de comunicación entre procesos (IPC), desarrollado como parte del proyecto freedesktop.org para aplicaciones de software con el fin de comunicarse entre sí. (Wikipedia 2012c)

14 Proyecto de software que provee una capa de abstracción de hardware para sistemas Unix, que actualmente está descontinuado en sistemas GNU/Linux, y su funcionalidad se ha incorporado a udev. (Wikipedia 2011c)

10

Ilustración 2: Comunicación entre paquetes guano-session

Page 19: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

las opciones de apagar o reiniciar.

Posible solución 2:

Arreglar el paquete que gestiona la acción de hibernar o suspender, proceso que varía en dependencia

del hardware utilizado y se hace complejo debido a que no se cuenta con todo el parque tecnológico

desplegado en Cuba para realizar las pruebas pertinentes sobre el mismo.

Posible solución 3:

Al crear las particiones, se debe asignar de tamaño a la SWAP el doble de capacidad de la memoria

RAM actual, asegurando de esta forma que, de utilizarse toda la memoria RAM, quede espacio libre para

lo que ocupa la SWAP, y aún más de reserva. Este proceso es de práctica muy común entre los usuarios

Linux; aunque no garantiza la solución del problema, se debe tener en cuenta la Posible Solución 1.

1.2.3 Aplicación de gestión de distribuciones de teclado

Para la gestión de las distribuciones de teclado el entorno de escritorio cuenta con una aplicación, la

cual no funciona correctamente, pues no permite guardar las configuraciones de teclado que se le asignan

al sistema. Para la propuesta de solución de esta dificultad, se realizará una investigación de aplicaciones

similares a las que se encuentra en el sistema actualmente, existentes en otros entornos de escritorio,

para determinar las características de las mismas.

En el entorno de escritorio Gnome15 existe una herramienta de administración de opciones del teclado,

llamada gnome-keyboard-propierties (Ver Ilustración 3).

15 Entorno de escritorio e interfaz gráfica de usuario desarrollado por el Proyecto GNOME, con una liberación inicial el 3 de marzo de 1999, encontrándose actualmente en su liberación estable 3.4. Compuesto completamente de software libre y de código abierto. (MACÍAS BRUZZONE 2000)

11

Page 20: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Esta aplicación cuenta con las siguientes características:

• Establecer el idioma del teclado para la marca y modelo del teclado que se está usan-do. Esto

permite usar las teclas multimedia especiales y mostrar los caracteres correctos.

• Separar la distribución de teclado para cada ventana, por lo que cambiar a una distribución

diferente sólo afecta a la ventana actual. Esto permite teclear con una distribución de teclado en ruso

una palabra en un procesador de textos, después cambiar al navegador web y teclear con una

distribución de teclado en inglés, por ejemplo.

• Alternar entre las distribuciones de teclas seleccionadas para cambiar los caracteres que produce

el teclado cuando se teclea. Es posible añadir y eliminar distribuciones, pueden existir hasta cuatro

distribuciones.

• Restaurar predeterminados, restablece los ajustes de distribución de teclado a su estado inicial

para el sistema y la configuración regional.

12

Ilustración 3: gnome-keyboard-propierties

Page 21: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

El entorno de escritorio XFCE16 cuenta con una herramienta que permite configurar el teclado, llamada

fbxkb, la misma muestra una bandera del teclado actual en el área de la bandeja de tareas y permite

cambiar a otra mediante un click del mouse.

El entorno de escritorio KDE17 cuenta con una herramienta similar llamada KDE keyboard tool, con una

serie de preferencias que requieren configuraciones adiciones.

Los sistemas operativos Linux poseen por defecto un programa llamado setxkbmap (xfree86.org [no

date]), el cual es el sistema de teclado X11 por defecto y es muy personalizable, aunque presenta el

inconveniente de que no cuenta con interfaz visual para su manejo, sino que se debe especificar el

comando y sus opciones mediante la consola. También contiene un manual que puede ser invocado por

esta misma vía: man setxkbmap.

Posible solución:

La aplicaciones pertenecientes a los entorno de escritorio de Gnome y KDE consumen una cantidad de

memoria en su ejecución superior al deseado para el entorno de escritorio Guano, mientras que la

aplicación perteneciente al entorno de escritorio XFCE no brinda las opciones que brindan estas. Por tanto

se propone la creación de una nueva aplicación que consuma poca memoria y cuente con las

funcionalidades principales de las aplicaciones de Gnome y KDE.

1.2.4 Soporte para impresoras HP LaserJet

Cuando se intenta la conexión física de una impresora de la familia HP, específicamente la modelo

LaserJet 2300, el sistema no la reconoce, pues no cuenta con el soporte para la misma.

Para que el sistema pueda imprimir cuando se conecta una impresora al equipo, el mismo debe

16 Entorno de escritorio de software libre que realizó su última liberación estable el 16 de enero de 2011, escrito en C y GTK+ 2. Se propone ser rápido y ligero, sin dejar de ser visualmente agradable y fácil de usar. (MACÍAS BRUZZONE 2000)

17 Entorno de escritorio contemporáneo para estaciones de trabajo Unix. Cumple con la necesidad de un escritorio amigable para estaciones de trabajo Unix. (MACÍAS BRUZZONE 2000)

13

Page 22: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

reconocerla. Existe un programa que gestiona la administración de estos equipos que se encuentren

disponibles. Este se llama CUPS18 y es un sistema de impresión modular para sistemas operativos de tipo

Unix que permite que un computador actúe como servidor de impresión (Ecured 2002).

Existen varios paquetes, como foo2zjs y foomatic-db, que contienen ficheros de extensión .ppd19.

Cada uno de los mismos, contiene dentro un árbol en formato xml que cuenta con las características de

cada equipo. Cuando uno de estos paquetes de instala, al iniciar CUPS, la lista de impresoras disponibles

se actualiza con todas las que existen en este nuevo, y se permite añadirlos.

Cuando un usuario hace una petición de impresión desde cualquier programa, el documento se envía a

una cola de impresión del sistema, donde se verifica que el mismo se encuentre en codificación

PostScript (Wikipedia 2012o), la cual es la que se establece por defecto generalmente en los sistemas

UNIX; de no ser así, el documento es convertido y luego se verifica que la impresora maneje este formato;

de lo contrario se utiliza el GhostScript (SUSE LINUX 2012) para establecer la compatibilidad. Pero para

realizar este proceso, primeramente CUPS debe verificar que la impresora a la que se envía la petición

existe por defecto o en los paquetes instalados (ver Ilustración 4).

Posible solución:

Añadir a los paquetes foo2zjs y foomatic-db el soporte para estas impresoras.

18 Acrónimo de “Common UNIX Print System”, traducido al español como “Sistema de impresión común de UNIX”.19 Acrónimo de “PostScript Printer Description”, traducido al español como “Descripción de impresoras PostScript”.

14

Ilustración 4: Comunicación CUPS - paquetes

Page 23: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

1.2.5 Soporte para proxy

En el Sistema Operativo Nova Ligero no existe un programa que gestione la existencia de proxies. El

Sistema Operativo ZevenOS20 utiliza un programa llamado lx-proxy, que permite la existencia de los

mismos, pero funciona mediante una CLI y no contiene una interfaz gráfica.

Posible solución 1:

Utilizar el programa existente en el entorno de escritorio. Esta solución cuenta con la desventaja de que

el sistema operativo intenta ser lo más agradable posible para el usuario, y una interfaz de línea de

comandos puede ser un impedimento para este objetivo.

Posible solución 2:

Añadir al programa existente una interfaz gráfica de usuario (GUI), para lograr la mejor usabilidad del

programa por parte de los usuarios.

1.2.6 Salvar resoluciones de pantalla

En el sistema, actualmente no se puede realizar el cambio de resoluciones de escritorio eficazmente,

debido a que una vez reiniciada la máquina, no se guarda la resolución escogida anteriormente, y se

toman por defecto los valores 800 x 600 píxeles. La aplicación por defecto para esta gestión en el entorno

de escritorio LXDE se llama lxrandr, y la misma guarda las configuraciones en el fichero autostart en el

directorio /home del usuario.

Posible solución:

Utilizando el programa lxrandr, salvar en el directorio autostart del directorio home del usuario los

valores de la resolución en el momento que se modifican.

1.2.7 Aplicación de gestión de preferencias visuales

Nova Ligero, se plantea ser un sistema operativo independiente, pero carece de una identidad propia;

20 ZevenOS es una distribución GNU/Linux con un enfoque en un sistema rápido y fácil de usar con un toque de BeOS (Wikipedia 2012a). Su objetivo es trabajar en ordenadores portátiles más antiguos y computadoras con baja velocidad de la CPU y la memoria con soporte multimedia completo. (ZevenOS 2008)

15

Page 24: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

por lo tanto, es necesaria la creación de uno o varios paquetes que contengan los elementos que brinden

propiedades propias del mismo (fondo de escritorio, tema de iconos, tema de ventanas, salvapantalla,

etc.).

Posible solución:

Crear los paquetes necesarios para proveer la identidad del sistema operativo.

1.3 Definición de metodología y herramientas

Como metodología de desarrollo de software21 se utilizará la metodología ágil OpenUP22, la cual

constituye una alternativa eficaz para proyectos pequeños y con pocos recursos, en los que se aprecia un

desarrollo ágil, iterativo e incremental y cuenta con una personalización realizada para el trabajo en el

proyecto productivo Nova (FERNÁNDEZ DEL MONTE, ALBO CASTRO 2011).

Como herramienta de modelado CASE23 se utilizará el Visual Paradigm, la cual permite la

representación gráfica en lenguaje UML24 del ciclo de vida completo del desarrollo de software y

constituye una aplicación open source25 de probada utilidad para el analista y diseñada para la

construcción de sistemas de forma confiable a través de la utilización de un enfoque orientado a objetos.

Como herramienta de programación se utilizará el Geany, basado en el editor de textos Scintilla. Como

lenguaje de programación, se utilizará C, lenguaje orientado a la implementación de Sistemas Operativos,

concretamente Unix, creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del

21 Marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información. (Wikipedia 2012l)

22 Acrónimo de “Open Unified Process”, traducido al español como “Proceso unificado abierto”. Es un método y proceso de desarrollo de software presentada por IBM (Acrónimo de “International Bussiness Machines” (Wikipedia 2012i)) en el año 2006 como producto de las mejores características de Rational Unified Process (RUP (Wikipedia 2012p)). (Wikipedia 2012m)

23 Acrónimo de “Computer Aided Software Engineering”, traducido al español como “Ingeniería de Software Asistida por Computadora”

24 Acrónimo de “Unified Modeling Language”, traducido al español como “Lenguaje de Modelado Unificado”. Junto al proceso de desarrollo de software RUP, constituyen la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

25 Denominación que describe la libertad de uso de un software determinado y el acceso a su código fuente.

16

Page 25: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

anterior lenguaje B, a su vez basado en BCPL26. Es apreciado por la eficiencia del código que produce y

es el más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones

(Wikipedia 2012b). Además, en el desarrollo de algunas aplicaciones se utilizará Python, un lenguaje de

programación multiparadigma (soporta orientación a objetos, programación imperativa y, en menor

medida, programación funcional), interpretado de alto nivel cuya filosofía hace hincapié en una sintaxis

muy limpia y que favorezca un código legible; además de que posee una licencia de código abierto

(Wikipedia 2012r). También se utilizará XML27, un metalenguaje28 extensible de etiquetas desarrollado por

el World Wide Web Consortium (W3C29) simplificado y adaptado del SGML30 y permite definir la gramática

de lenguajes específicos (Wikipedia 2012e).

Para lograr la integración de las soluciones obtenidas al repositorio oficial del proyecto, será necesario

realizar un proceso de empaquetamiento de software para distribuciones GNU/Linux. Dicho proceso

consiste en proporcionar las aplicaciones en forma de paquetes. Estos paquetes están formados por los

programas ejecutables de la aplicación, así como por todas las bibliotecas de las que depende y otros

tipos de ficheros (como imágenes, ficheros de audio, traducciones y localizaciones, etc.), de forma que se

proporcionan como un conjunto. Las bibliotecas de las que depende el programa pueden haber sido

enlazadas tanto de forma dinámica como también estática. Por tanto, el usuario percibe al paquete como

un conjunto que representa al programa en sí, cuando en realidad incluye otros ficheros. En los sistemas

26 Acrónimo de “Basic Combined Programming Language”, traducido al español como “Lenguaje de Programación Básico Combinado”. Fue diseñado por Martin Richards de la Universidad de Cambridge en 1966 debido a las dificultades experimentadas con el lenguaje de programación CPL(Wikipedia 2011b) durante los años 60. (Wikipedia 2011a)

27 Acrónimo de “eXstensible Markup Language”, traducido al español como “Lenguaje de Marcas Extensible”.28 Forma de definir lenguajes para diferentes necesidades.29 El Consorcio World Wide Web (W3C) es una comunidad internacional donde las organizaciones Miembro,

personal a tiempo completo y el público en general trabajan conjuntamente para desarrollar estándares Web. Liderado por el inventor de la Web Tim Berners-Lee y el Director Ejecutivo (CEO) Jeffrey Jaffe, la misión del W3C es guiar la Web hacia su máximo potencial. (W3C 2012)

30 Acrónimo de “Standard Generalized Markup Language”, traducido al español como “Estándar de Lenguaje de Marcado Generalizado”. Sistema para la organización y etiquetado de documentos. La Organización Internacional de Estándares (ISO) normalizó este lenguaje ISO 8879:1986. Sirve para especificar las reglas de etiquetado de documentos y no impone en sí ningún conjunto de etiquetas en especial. (Wikipedia 2011d)

17

Page 26: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

operativos Debian, o basados en él, el artefacto de salida de dicho proceso es un paquete de extensión

.deb, listo para ser instalado (Debian.org 2012).

1.4 Conclusiones del capítulo

A partir de la ponderación de criticidad realizada, es posible decir cuáles dificultades presentan mayor

prioridad para ser solucionadas. Partiendo del estudio de las causas de cada una de las mismas, se

puede afirmar que el sistema presenta un conjunto de errores, que pudieran ser corregidos de aplicar

alguna de las soluciones propuestas. Estas, se definen como:

1. En los acápites 1.3.1, 1.3.3, 1.3.4, 1.3.6, 1.3.7, se optará por la única solución posible, además

de que cumple con los requisitos establecidos por el sistema.

2. En el acápite 1.3.2, se optará por la Posible Solución 1, ya que es la que se encuentra al

alcance de las posibilidades actuales del país, y se carecen de los medios para poner en práctica la

otra solución.

3. En el acápite 1.3.5, se optará por la Posible Solución 2, ya que es la que más se aproxima a los

objetivos del sistema operativo que se está implementando.

18

Page 27: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

CAPÍTULO 2: IMPLEMENTACIÓN DE SOLUCIONES

Un error frecuente en el desarrollo de software libre es la no documentación de los cambios y

aplicaciones que se le ofrecen a la comunidad (Free Software Foundation 2012). Mediante un proceso de

organización y documentación de cada una de las soluciones propuestas en el presente capítulo, se

pretende evitar esta mala práctica, brindando el procedimiento a realizar y los componentes a modificar,

para facilitar el trabajo de las personas que vayan a realizar alguna modificación a estas soluciones,

utilizar el código, o usar la investigación como manual para la solución de errores similares a los aquí

descritos. Por tanto, se procede a identificar los casos de uso que respondan a los requisitos funcionales

que deben ser modificados para corregir las dificultades encontradas.

2.1 Errores en comparticiones CIFS en el PCManFM

Los problemas presentados por la aplicación se evidencian en el error de implementación de los

requisitos funcionales:

• Montar volumen de red.

• Desmontar volumen de red.

• Montar medio extraíble.

• Desmontar medio extraíble.

• Montar dirección.

• Extraer medio extraíble.

Estas funcionalidades se cumplen, modificando los casos de uso (CU) siguientes:

19

Page 28: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Estas modificaciones se evidencian, añadiendo las siguientes funcionalidades, que el programa no

presentaba al inicio:

•Montar dispositivos de almacenamiento por la red (ftp, sftp, samba, etc...) mediante el uso de URI31.

• Visualizar dispositivos de almacenamiento por la red en el panel izquierdo del gestor (ver

Ilustración 5).

• Cuando se montaba un dispositivo de red, el programa ejecutaba la operación sin errores, añadía

el dispositivo al panel izquierdo junto a los demás, para su mejor acceso por parte del usuario; además

de brindar la posibilidad de desmontar mediante la acción de clic sobre un triángulo en el mismo.

Estas trajeron consigo el siguiente error:

En los casos donde se añadía un volumen o dispositivo removible (cd, dvd,stick memory, etc...), se

cerraba sin previo aviso después de correr varias instancias, dejando la siguiente salida de error (Ver

Ilustración 6):

31 Acrónimo de “Uniform Resource Identifier”, traducido al español como “Identificador uniforme de recurso”. Es una cadena de caracteres corta que identifica inequívocamente un recurso (servicio, página, documento, dirección de correo electrónico, enciclopedia, etc.).

20

Ilustración 5: Comparticiones Samba

Page 29: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

PcmanFm es una aplicación que se encuentra compuesta por una librería Libfm a partir de su versión 0.5

en adelante; donde Libfm, que trabaja con GTK+32, encierra las principales funcionalidades que debe

tener un gestor de archivos genérico y PcmanFm contiene el código que construye solamente la interface

de usuario (GUI por sus siglas en inglés). Esta característica permite que el mantenimiento de esta

aplicación sea más fácil, modificando solamente Libfm; en este caso es la operación que se realiza. Para

ver el diagrama completo, ir a Anexo 4: Diagrama de clases LibFM (requiere ampliar la imagen).

Adicionando funcionalidad de montar dispositivos de red

En el código fuente de Libfm, se encuentra la carpeta src/gtk (Ver Ilustración 7), dentro de la misma se

encuentran los ficheros que contienen los componentes que manejan la interface o tienen algún

componente visual en la librería.

Entre estos archivos, se encuentran:

• fm-places-model.h, fm-places-model.c

• fm-places-view.h, fm-places-view.c

32 Conjunto de bibliotecas multiplataforma para desarrollar interfaces gráficas de usuario (GUI), creadas inicialmente para desarrollar el programa de edición de imágenes GIMP (Wikipedia 2012f), sin embargo actualmente bastante usadas por muchos otros programas en los sistemas GNU/Linux. (Wikipedia 2012h)

21

Ilustración 6: Errores de ejecución

Page 30: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

• fm-gtk-utils.h, fm-gtk-utils.c

El código que se encuentra en los ficheros con el prefijo fm-places-model (ver Ilustración 8) es el

encargado de construir el componente GtkListStore33 (contenedor de los dispositivos). Aquí se adicionará

la mayor cantidad de código, ya que es donde se definen todas las características de los dispositivos

montados, así como su localización.

El código que se encuentra en los ficheros con el prefijo fm-places-view (ver Ilustración 9) es el

encargado de construir el componente GtkTreeView34 (interface del contendor de dispositivos); este

componente define la forma en que serán accedidos los dispositivos visualmente: cómo se muestran,

acceden, y desmontan los dispositivos al usuario.

33 Estructura de datos en forma de Lista que puede ser usada junto al componente de almacenamiento GtkTreeView.34 Componente de la librería Gtk-2.0 el cual se encarga de mostrar estructuras tanto listas como árboles.

22

Page 31: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el
Page 32: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

El código que se encuentra en los ficheros con el prefijo fm-gtk-utils (ver Ilustración 10) contiene las

funciones primarias utilizadas por los ficheros anteriormente mencionados:

• Montar una dirección URI.

• Montar, desmontar y expulsar un Volumen (dispositivo de almacenamiento removible).

• Montar y desmontar un Mount (dispositivo de red virtual).

• Operaciones de copiar y mover archivos.

• Manejo de la papelera de reciclaje.

• Creación y manejo de ventanas de diálogos de errores o preguntas al usuario.

24

Ilustración 9: /src/gtk/fm-places-view.h

Page 33: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Adicionando código a Libfm

Las primeras funciones a modificar son las almacenadas en fm-gtk-utils.c. En este archivo se modifica

la estructura de datos que contiene los tipos de montajes que la aplicación puede manejar, estos se

encuentran en la estructura MountAction. Además, se modifica la función fm_do_mount, agregándole la

manera de manejar cada uno de los tipos de dispositivos previamente adicionados en MountAction.

(Anexo 5: Parche de código fuente)

El próximo paso es incorporar al contenedor de los dispositivos una manera de manejar los mismos.

Estas modificaciones se deben realizar a los archivos fm-places-model.h y fm-places-model.c (ver

Ilustración 11).

25

Ilustración 10: Fichero gtk-utils

Page 34: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

En el archivo fm-places-model.h se adiciona a la estructura FmPlaceItem un objeto de tipo GMount

solamente para manejar los dispositivos de almacenamiento por la red, debido a que ya existe la

funcionalidad de reconocer los volúmenes o dispositivos extraíbles de almacenamiento; en la misma se le

adiciona al enumerativo FmPlaceType el tipo de dispositivo añadido antes en FmPlaceItem. (Anexo 6:

Parche de código fuente)

En el archivo fm-places-model.c se implementan las funciones add_mount, on_mount_removed:

encargadas de adicionar y borrar un dispositivo de almacenamiento por la red respectivamente. Se

modifican las funciones place_item_free, encargada de eliminar las instancias de los contenedores;

update_vol, encargada de actualizar el contenedor en materia de información: tipo de icono, nombre del

dispositivo, etc...; add_vol se encarga de añadir un volumen; find_vol se encarga de localizar un volumen

en un componente GtkTreeView; on_mount_added se ejecuta cuando se monta un dispositivo de

almacenamiento por la red y llama la función add_vol; fm_places_model_init se encarga de inicializar el

componente GtkListStore. (Anexo 2: Parche de código fuente).

El próximo paso es modificar e incorporar las funcionalidades necesarias al componente visual que se

encarga de mostrar los dispositivos. Estas modificaciones se deben realizar a los archivos fm-places-

view.h y fm-places-view.c (ver Ilustración 12).

Se modifica la función activate_row, encargada de gestionar las acciones que se pueden realizar con

26

Page 35: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

un dispositivo; se modifica on_button_release, que se encarga de localizar qué fue activado cuando se

realiza un clic sobre el componente, debido a que el mismo componente contiene la funcionalidad de

acceder y desmontar en el evento on_click; se modifica place_item_get_menu, encargada de crear el

menú de funcionalidades a realizar sobre los dispositivos: ya sea montarlos, desmontarlos o expulsar; se

modifica además on_umount, encargada de realizar la función de montaje cuando se selecciona la

misma en el menú de acciones a realizar. (Anexo 3: Parche de código fuente)

Adicionando código a PCManFM

El código fuente de PCManFM en versiones anteriores a la 0.6 se encontraba en el mismo código

fuente de LibFM, en las versiones actuales se encuentra como un código fuente aparte. No obstante, en

el código fuente de LibFM se encuentra un demo de PCManFM con las mínimas funcionalidades.

Luego de realizar los cambios pertinentes en LibFM, es necesario modificar a PCManFM para que

utilice lo que se ha incorporado. Vale destacar que se daba por sentado que no se debería modificar el

código fuente de PCManFM, ya que este utiliza a LibFM como principal librería de funciones para su

construcción y habiendo hecho las modificaciones a LibFM directamente estas modificaciones tendrían

efecto en PCManFM. Esto no ocurre debido a errores de diseño del propio PCManFM: se encuentra

diseñado para que sólo exista una instancia del mismo, mediante el uso de sockets35, a los cuales se le

agregan funcionalidades según se soliciten en el momento de su ejecución; trayendo consigo la

problemática de que ciertos componentes se crean y se actualizan sólo cuando se crea la primera

instancia de PCManFM.

Para solucionar la problemática anterior se modifica el archivo main-win.c situado en la carpeta src/

dentro del código fuente (ver Ilustración 13), el código alojado en este archivo es el encargado de definir la

ventana principal del PcManFM junto a los componentes que la conforman.

35 Extremo de comunicación al que le puede ser asignado un nombre, que permite el intercambio de información punto a punto bilateral entre dos procesos.

27

Page 36: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

28

Page 37: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

29

Ilustración 13: Archivo main-win.c

Page 38: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.2 Errores en opciones Hibernar o suspender

El problema presentado está dado por el requisito funcional:

• RF # 1: Permitir al sistema la opción de Hibernar o Suspender.

De dicho requisito se obtiene un caso de uso virtual, del que se derivan cuatro casos de uso

adicionales:

En este caso, solamente es necesario modificar dos de ellos, Hibernar sistema y Suspender sistema.

Basado en la investigación realizada en el Capítulo 1, se procede a adicionar el método

isEnoughSwapToHibern() al paquete guano-session, y modificar el método check_available_actions().

Adicionando método isEnoughSwapToHibern()

Se procede a la declaración de las variables, primeramente se declara un puntero que hace referencia

a la cabecera del fichero que contiene la información de la memoria, se declara un buffer de 255

caracteres para leer dicho fichero línea por línea, una variable de 100 caracteres para ir seleccionando las

palabras clave e ir asignando los valores correspondientes a las variables, que se declaran debajo.

Recorriendo cada línea, se comparan los valores correspondientes a las variables necesarias para

realizar la comprobación, y se almacenan los mismos en las variables declaradas anteriormente.

Mediante un cálculo aritmético se almacena la memoria total usada y se compara con la cantidad de

memoria SWAP disponible en el momento. El método devuelve 0 si no se puede hibernar, y 1 si se puede.

30

Page 39: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Modificando método check_available_actions()

A continuación, se procede a eliminar la sección de código que permite por defecto listar todas las

opciones, sin verificar primeramente si puede ser realizada la acción. Se adiciona una condición que

establece que si el sistema puede suspender o hibernar, se muestren estas opciones, de lo contrario no lo

harán, de esta forma se restringe al usuario solamente a las funcionalidades para las que esté capacitado

el sistema operativo en ese instante.

Para visualizar el código íntegro, ver Anexo 1: Parche de código fuente.

2.3 Aplicación para la gestión de las distribuciones de teclado

El panel del entorno de escritorio LXDE presenta un conjunto de plugins para brindarle otras

funcionalidades al mismo, una de ellas es un plugin para gestionar el manejo de los modelos de teclado y

los idiomas existentes. Esta aplicación no funciona adecuadamente (obsoleta, utiliza funciones ya

deprecadas de xkb36), no logra configurar el teclado según los idiomas existentes al no encontrarlos en el

sistema operativo.

Por lo tanto, es recomendable implementar una nueva aplicación para la configuración del teclado:

lxkb-config, basándose en otras aplicaciones existentes y cumpliendo con el estándar dictado por la

Freedesktop.org37. La misma, cuenta con los siguientes requisitos funcionales:

• RF # 1: Adicionar nueva distribución de teclado.

• RF # 2: Eliminar distribución de teclado existente.

• RF # 3: Establecer distribuciones de teclado predeterminadas.

• RF # 4: Probar distribución de teclado seleccionada.

• RF # 5: Aplicar configuración al sistema completo.

36 Acrónimo de “X keyboard extension”. Habilita un control del teclado más allá de lo que realiza el núcleo del sistema de ventanas X.

37 Proyecto que trabaja por la interoperatibilidad y la compartición de la tecnología base de los DE (Desktop Enviroment, Entorno de escritorio) para X Windows System (X11), tanto en GNU/Linux como en otros SO de tipo Unix.

31

Page 40: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

• RF # 6: Aplicar configuración al usuario actual.

Para satisfacer estos requisitos funcionales, se determinan los casos de uso siguientes:

Esta aplicación accede al fichero xfree86.xml, que se encuentra en la ruta /usr/share/x11/xkb/rules/.

De él obtiene las distribuciones que se encuentran disponibles en el sistema operativo, y las muestra para

su selección en la aplicación LXKB-config. Si el usuario selecciona alguna opción, la herramienta utiliza

el comando setxkbmap (estudiado en el Capítulo 1 en el subepígrafe 1.2.3 Aplicación de gestión de

distribuciones de teclado) para realizar las modificaciones pertinentes en el sistema. Consiguiendo una

integración, el programa modifica el fichero autostart en la ruta /home/.config/, para que agregue en los

programas de inicio por defecto (Ver Ilustración 14).

En el proceso de creación del programa, se agrupan

los ficheros fuentes del mismo en una carpeta llamada

src/; los mismos importan las librerías necesarias para

el trabajo con la interfaz visual, entre otras opciones

(ver Ilustración 14).

32 Ilustración 14: Componentes de LXKB

Page 41: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

El resultado final es un programa que cumple con las funcionalidades expresadas al comenzar el proceso

de diseño (Ver Ilustraciones 15 y 16).

2.4 Soporte para impresora modelo HP LaserJet 2300

Para la solución del problema, se identifica el requisito funcional:

• RF # 1: Imprimir documentos en impresora modelo HP LaserJet.

El mismo se satisface mediante la modificación del siguiente CU:

Utilizando el lenguaje XML se modifica el paquete foo2zjs y se le adiciona al mismo la información

33

Ilustración 15: LXKB-config Ilustración 16: LXKB-config

Page 42: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

concerniente a las impresoras de modelo HP LaserJet, junto con la de otros modelos. En países con

conexión a Internet de banda ancha, este fichero contiene un enlace simbólico que permite descargar el

firmware de la impresora que se desea conectar al equipo. En Cuba, por no contar con estas condiciones,

se procedió a descargar todos estos paquetes, e incluirlos en el repositorio del sistema operativo, para

que pueda ser accesible por cualquier usuario que desee instalarlo. En la unión de este paquete y el

foomatic-db se encuentran todas las configuraciones de impresoras que obtiene el programa CUPS para

generar la lista de impresoras conocidas por el sistema (ver Ilustración 17).

34

Ilustración 17: Clases aplicación LXKB-config

Ilustración 18: Componentes CUPS

Page 43: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.5 Aplicación para la gestión del soporte de proxy

Utilizando el lenguaje de programación Python en aras de acelerar el proceso de desarrollo, y teniendo

en cuenta que se trata de la aplicación Lxproxy, nativa del sistema operativo ZevenOS, que presenta

errores de ejecución y que la misma no se encontrará en ejecución en todo momento, lo que no atenta

contra el uso de poca memoria, se procede a programar la aplicación que permite la gestión de proxies en

el sistema.

Primeramente, se identifican los siguientes requisitos funcionales:

• RF # 1: Usar conexión directa a Internet.

• RF # 2: Configurar el proxy manualmente.

Los mismos se satisfacen mediante los casos de uso siguientes:

En el directorio raíz del

paquete Lxproxy existe el

fichero setup.py, el cual

contiene una clase llamada InstallAndUpdateDataDirectory, que se encarga de instalar el paquete en el

sistema. En el directorio bin, se encuentra el fichero lxproxy, el cual contiene una clase que es la

responsable de controlar las funcionalidades de mostrar la aplicación, cerrar, mostrar preferencias, etc. En

el directorio lxproxy, se encuentra el fichero de configuración de las preferencias (lxproxyconfig.py) y los

ficheros que inicializan las clases visuales con la ayuda de la librería GTK+ (AboutLxproxyDialog.py y

PreferencesLxproxyDialog.py) (ver Ilustración 19).

35

Page 44: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

36

Page 45: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

El resultado es una aplicación funcional que brinda solución al problema inicial (ver Ilustración 20).

37

Ilustración 19: Clases y ficheros Lxproxy

Ilustración 20: Interfaz de usuario Lxproxy

Page 46: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.6 Salvar resoluciones de pantalla

Al seleccionar la opción de apagar o reiniciar el sistema, el mismo no almacena la configuración de

pantalla que se definió, siempre inicia el sistema con la resolución 800x600.

Esta situación arroja la definición del requisito funcional:

• RF # 1: Guardar resolución de pantalla

Y para dar solución al mismo, la presentación del siguiente caso de uso:

Existe una aplicación llamada lxrandr que gestiona las resoluciones de pantalla del sistema. Esto es un

frontend38 o interfaz para el comando xrandr, que permite modificar la resolución de pantalla y la tasa de

refresco39. Mediante código C, se crea un lanzador para xrandr en la carpeta /home/.config/autostart,

con la última configuración seleccionada por el usuario. Esta variante soluciona el problema para todas las

resoluciones posteriores, en caso de usarse una variable para guardar los valores seleccionados.

2.7 Aplicación de gestión de preferencias visuales

Se procede a la creación y empaquetamiento de las aplicaciones nova-artwort y nova-wallpapers. La

primera contiene un protector de pantalla con imágenes propias del sistema operativo y el logo del sistema

operativo, que será establecido como logo de inicio, configuraciones que se encuentran dentro de un

fichero en el directorio debian/. La segunda fue programada usando el lenguaje Python y contiene un

fichero de extensión .xml que se establece como fondo de escritorio dinámico que cada una cantidad de

tiempo determinada cambia automáticamente las imágenes de fondo de escritorio; las mismas también se

encuentran dentro de dicho paquete y se copian al directorio del sistema /usr/share/background.

38 Front-end y back-end son términos que se relacionan con el principio y el final de un proceso.39 El número de cuadros mostrados en un segundo, expresado en Hertzios. (Tschemig 2007)

38

Page 47: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.8 Otras modificaciones

2.8.1 Menú Inicio/Preferencias

En las preferencias del menú Inicio existen dos opciones con el mismo nombre, que cumplen con las

mismas funciones, y existen otras dos opciones que cumplen con el mismo objetivo, pero tienen cambiado

el idioma del nombre en el menú (español e inglés).

La solución consiste en acceder al fichero donde se editan las preferencias de los usuarios (fichero que

se encuentra en el directorio home del usuario), y eliminar los ítems del menú que se encuentran

repetidos.

2.8.2 PC ManFM

El texto alternativo del botón “Añadir nueva pestaña” no se muestra.

La solución en este caso consiste en acceder al fichero que se encuentra dentro del paquete de fuentes

de PCManFM que crea las ventanas, y añadir el texto que corresponde al mensaje que se muestra

cuando se detiene el cursor del mouse sobre el mismo.

Otra solución posible consistiría en eliminar el botón, teniendo en cuenta que para obtener una nueva

pestaña se puede utilizar la combinación de teclas Ctrl + T.

2.8.3 /home/[usuario]

Las carpetas del home aparecen en inglés, incluso cuando se haya instalado el sistema en español.

La solución a este problema consiste en cambiar el nombre de esta carpeta en el directorio /etc/skel, y

luego aplicar un comando para que se actualicen los nombres de carpetas del escritorio.

2.8.4 Inicio de sesión

Se muestran las opciones al usuario de iniciar sesión por los escritorios KDE/Openbox,

GNOME/Openbox, Openbox session y sin embargo no se pueden brindar los servicios.

La integración con estos escritorios se tuvo en cuenta en la concepción inicial de entorno de escritorio,

39

Page 48: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

pero luego no fue implementada, por lo que nunca existió, y por lo tanto, no podían funcionar. La solución

sería eliminar esas opciones del fichero desde donde se cargan automáticamente cuando inicia la

computadora.

2.9 Conclusiones del capítulo

Luego de implementadas, las soluciones propuestas son incorporadas a sus respectivos software. Los

paquetes resultantes son empaquetados, recompilados e incluidos como paquetes de software en los

repositorios de Nova40 en su versión 2011.

40 Repositorio: servidor en Internet donde se puede acceder al software que brinda la distribución. En el caso de Nova, el mismo se encuentra solamente a disposición de la UCI en el sitio: http://novarepo.uci.cu/nova.

40

Page 49: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Ilustración 21: Caso de Prueba basado en CU Montar dirección URI

CAPÍTULO 3: REALIZACIÓN DE PRUEBAS

Para dar garantía de que las dificultades existentes han sido solucionadas, y obtener el certificado de

calidad por parte de la empresa Calisoft, en el presente capítulo se diseñan una serie de casos de prueba

de caja negra que permiten comprobar que las soluciones implementadas han sido las correctas. Las

pruebas se realizarán en función de los casos de uso identificados en el capítulo anterior.

3.1 Errores en comparticiones CIFS en el PCManFM

En el capítulo 2 se detectaron seis casos de uso para dar respuesta a las dificultades planteadas:

• Montar volumen de red (RF # 1)

Para comprobar la correcta realización de este, se determinaron cinco escenarios (Montar dirección

smb, Intentar montar dirección smb incorrecta, Intentar montar dirección smb con campos vacíos, Montar

dirección sftp, Intentar montar dirección sftp con campos vacíos) y tres variables (Dirección de red,

Usuario, Contraseña), obteniéndose los resultados esperados y no arrojando No Conformidades41.

• Desmontar volumen de red (RF # 2)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Desmontar volumen

de red mediante barra lateral izquierda, Intentar desmontar volumen de red mediante icono en el directorio

“/media” del navegador de archivos) y ninguna variable, obteniéndose los resultados esperados y no

arrojando No Conformidades.

• Montar medio extraíble (RF # 3)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Montar medio en

dirección de memoria libre, Intentar montar medio en dirección de memoria ocupada) y ninguna variable,

obteniéndose los resultados esperados y no arrojando No Conformidades.

• Desmontar medio extraíble (RF # 4)

41 Una no conformidad ocurre cuando un producto o un proceso no cumple con lo establecido en las descripciones o en los requisitos funcionales descritos, que podría directa o indirectamente conducir al mal funcionamiento del programa, falta de aceptación de parte del cliente, o una combinación de éstos.

41

Condiciones de ejecuciónQue exista un navegador de archivos que soporte el protocolo de la dirección

SC Montaje de dispositivos

Escenario Descripción Usuario Contraseña Respuesta del sistema Flujo centralV

V

V V V

compartido compartido

V

V V V

compartido

V V V

********

V

V V V

Descripción generalEl caso de uso comienza cuando el usuario selecciona la opción de insertar una nueva dirección. A partir de ahí, analiza el tipo de dirección que se está insertandoY en función de eso el sistema responde.

Dirección URIEC 1.1 Montar

dirección URI correcta

El usuario inserta una dirección en la barra de direcciones de su navegador y el mismo le ofrece la localización donde se encuentra

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Se verifica que es una dirección válida y se localiza la carpeta en el equipo.

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

/home/[usuario]/Des

EC 1.2 Intentar montar dirección URI incorrecta

El usuario inserta una dirección en la barra de direcciones de su navegador y el mismo interpreta que la dirección no es válida

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Se interpreta que la dirección no corresponde a ninguna carpeta del sistema de archivos.1.2 El sistema muestra un prompt con un mensaje de error

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

/fgr/dd/ff

EC 2.1 Montar dirección smb

El usuario inserta una dirección en la barra de direcciones de su navegador y el mismo abre la carpeta.

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Interpreta que se trata del protocolo samba.2.0 El sistema se conecta a dicha carpeta para identificar si necesita autenticación y muestra un prompt pidiendo la información de conexión.2.2 El navegador verifica los datos y abre la carpeta compartida.3.0 El navegador actualiza su barra lateral izquierda con la nueva compartición.

1.0 El usuario inserta la dirección samba en el navegador de ficheros.

2.1 El usuario inserta los datos de autenticación.

smb://10.34.5.24

EC 2.2 Intentar montar dirección smb incorrecta

El usuario inserta una dirección en la barra de direcciones de su navegador y el mismo interpreta que la dirección no es válida

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Se interpreta que la dirección no es válida para este protocolo.1.2 El sistema muestra un prompt con un mensaje de error

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

smb://150.250.254.255

EC 2.3 Intentar montar dirección smb correcta con campos vacíos

El usuario inserta una dirección en la barra de direcciones de su navegador pero los datos para acceder a la carpeta no son válidos

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Interpreta que se trata del protocolo samba.2.0 El sistema se conecta a dicha carpeta para identificar si necesita autenticación y muestra un prompt pidiendo la información de conexión.2.2 El navegador verifica los datos y lanza un prompt con el error de que hay campos incorrectos.

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

2.1 El usuario inserta el valor del campo usuario y deja en blanco el campo contraseña

smb://10.34.5.24

EC 3.1 Montar dirección sftp

El usuario inserta una dirección sftp en la barra de direcciones de su navegador y el mismo abre la carpeta.

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Interpreta que se trata del protocolo sftp.2.0 El sistema se conecta a dicha carpeta muestra un prompt pidiendo la información de conexión.2.2 El navegador verifica los datos y abre la carpeta compartida.3.0 El navegador actualiza su barra lateral izquierda con la nueva compartición.

1.0 El usuario inserta la dirección samba en el navegador de ficheros.

2.1 El usuario inserta los datos de autenticación.

sftp://10.34.5.24

dairelys

EC 3.2 Intentar montar dirección sftp incorrecta

El usuario inserta una dirección en la barra de direcciones de su navegador y el mismo interpreta que la dirección no es válida

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Se interpreta que es el protocolo sftp pero que la dirección no es válida para este protocolo.1.2 El sistema muestra un prompt con un mensaje de error

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

sftp://150.250.254.255

EC 3.3 Intentar montar dirección sftp con datos de conexión vacíos

El usuario inserta una dirección en la barra de direcciones de su navegador pero los datos para acceder a la carpeta no son válidos

1.1 El sistema evalúa el protocolo usado para procesar la dirección. Interpreta que se trata del protocolo sftp.2.0 El sistema se conecta a dicha carpeta para identificar si necesita autenticación y muestra un prompt pidiendo la información de conexión.2.2 El navegador verifica los datos y lanza un prompt con el error de que hay campos incorrectos.

1.0 El usuario inserta la dirección URI en el navegador de ficheros.

2.1 El usuario inserta el valor del campo usuario y deja en blanco el campo contraseña

Sftp://10.34.5.24

dairelys

Page 50: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Para comprobar la correcta realización de este, se determinaron dos escenarios (Desmontar medio

mediante barra lateral izquierda, Intentar desmontar medio mediante icono en el directorio “/media” del

navegador de archivos) y ninguna variable, obteniéndose los resultados esperados y no arrojando No

Conformidades. (ver Ilustración 21)

• CU Montar dirección URI (RF # 5)

Para comprobar la correcta realización de este, se determinaron ocho escenarios (Montar dirección URI

correcta, Intentar montar dirección URI incorrecta, Montar dirección smb, Intentar montar dirección smb

incorrecta, Intentar montar dirección smb con campos vacíos, Montar dirección sftp, Intentar montar

dirección sftp con campos vacíos) y tres variables (Dirección URI, Usuario, Contraseña), obteniéndose los

resultados esperados y no arrojando No Conformidades. (ver Ilustración 22)

42

Ilustración 22: Caso de Prueba basado en CU Desmontar medio extraíble

El caso de uso comienza cuando el usuario selecciona la opción de desmontar el medio extraíble

Condiciones de ejecuciónQue se encuentre correctamente montado el dispositivo, sin errores.

SC Montaje de dispositivos

Escenario Descripción Respuesta del sistema Flujo central

Descripción general

EC 1.1 Desmontar medio mediante barra lateral izquierda

Se desmonta un medio extraíble previamente montado en el sistema de archivos usando el botón de desmontado de la barra lateral izquierda

1.1 El sistema localiza la dirección de memoria donde se encuentra montado el dispositivo y la libera.

1.2 El navegador actualiza el panel lateral para mostrar al usuario que el medio ha sido expulsado.

1.0 El usuario da click en el icono de triángulo que se encuentra al lado del nombre del dispositivo, localizados en el panel lateral izquierdo del navegador

EC 1.2 Intentar desmontar medio mediante icono en el directorio /media del navegador de archivos

Se desmonta un medio extraíble previamente montado en el sistema de archivos utilizando el menú contextual de la carpeta en el directorio /media o en el Escritorio del sistema de archivos

1.1 El navegador le muestra al usuario el menú contextual del medio.2.1 El sistema localiza la dirección de memoria donde se encuentra montado el dispositivo y la libera.2.2 El navegador actualiza el panel lateral para mostrar al usuario que el medio ha sido expulsado.

1.0 El usuario da click derecho en el icono que se encuentra en el escritorio o en el directorio media.2.0 El usuario selecciona la opción de Desmontar medio del menú contextual.

Page 51: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

43

Ilustración 23: Caso de Prueba basado en CU Agregar nueva distribución

Condiciones de ejecución-

SC Adicionar nueva distribución de teclado

Escenario Descripción Disposición Variante txt_probar Respuesta del sistema Flujo centralV V

EEUU

V V V

EEUU á é í ó ú ñ

Descripción generalEl caso de uso comienza cuando el usuario selecciona una nueva distribución y su variante a utilizar por el teclado existente, y termina cuando el mismo puede probar o no el cambio.

EC 1.1 Adicionar distribución y variante sin probarlas

El usuario selecciona la distribución y luego la variante que desea y luego acepta los cambios sin probarlos.

0.0 El sistema muestra las distribuciones existentes.1.2 El sistema busca las variantes asociadas a esa distribución y las muestra.2.2 El sistema aplica los cambios correspondientes.

1.1 El usuario selecciona la distribución de teclado.2.1 El usuario selecciona la variante deseada y presiona la tecla aceptar.

Alternativa internacional (antigua us_intl)

EC 1.2 Adicionar distribución y variante probando los cambios efectuados

El usuario selecciona la distribución y luego la variante que desea y luego comprueba el cambio antes de dar click en aceptar.

0.0 El sistema muestra las distribuciones existentes.1.2 El sistema busca las variantes asociadas a esa distribución y las muestra.2.2 El sistema aplica los cambios correspondientes.

1.1 El usuario selecciona la distribución de teclado.2.1 El usuario selecciona la variante deseada e introduce el texto a probar en el campo “Probar distribución” y presiona la tecla aceptar.

Alternativa internacional (antigua us_intl)

Page 52: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

• Extraer medio extraíble (RF # 6)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Extraer medio,

Intentar extraer medio con dirección de memoria ocupada) y ninguna variable, obteniéndose los resultados

esperados y no arrojando No Conformidades.

3.2 Errores en opciones Hibernar o suspender

Fueron detectados para dar solución a esta dificultad, los siguientes casos de uso:

• Hibernar sistema (RF # 1)

• Suspender sistema (RF # 2)

Para realizar el proceso de pruebas de ambos casos de uso, se determinaron dos escenarios: Que el

equipo

pueda

llevar a

cabo la

opción

seleccionada (Hibernar o Suspender), o que no pueda. Para comprobar que la solución es la correcta, se

44

Ilustración 24: Caso de Prueba basado en CU Aplicar configuración a la sesión

Condiciones de ejecuciónQue exista al menos una variante insertada en la lista.

SC Aplicar configuración a la sesión

Escenario Descripción Respuesta del sistema Flujo central

Descripción generalEl caso de uso comienza cuando el usuario da click en el botón Aceptar de la pestaña principal del programa y termina con un mensaje o con el cierre del programa.

EC 1.1 Aplicar configuración correctamente seleccionando opción Aplicar

El usuario aplica los cambios que realizó y el sistema muestra un mensaje informando que los cambios se realizaron con éxito.

1.2 El programa verifica que las configuraciones sean válidas y las aplica al sistema. Muestra un mensaje informando que la configuración fue aplicada con éxito.

1.1 El usuario da click en el botón “Aplicar” de la ventana principal.

EC 1.2 Aplicar configuración incorrecta seleccionando opción Aceptar

El usuario intenta aplicar los cambios que realizó y el sistema muestra un mensaje informando que los cambios no se aplicaron.

1.2 El programa intenta verificar que las configuraciones sean válidas, pero encuentra que no lo son. Muestra un mensaje informando que la distribución no es válida.

1.1 El usuario da click en el botón “Aplicar” de la ventana principal.

EC 2.1 Aplicar configuración seleccionando opción Aceptar

El usuario acepta los cambios y la aplicación se cierra.

1.2 El programa aplica las configuraciones seleccionadas y se cierra.

1.1 El usuario da click en el botón “Aceptar” de la ventana principal.

Page 53: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

procede a probar en un equipo que el sistema operativo suspenda e hiberne, teniendo resultados

satisfactorios.

3.3 Aplicación para la gestión de las distribuciones de teclado

Se detectaron en el capítulo anterior seis casos de uso para dar respuesta a las dificultades

planteadas:

• Agregar nueva distribución de teclado (RF # 1)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Agregar distribución

correcta, Intentar agregar distribución existente42) y dos variables (Distribución, Variante), arrojando los

resultados esperados y ninguna No Conformidad. (ver Ilustración 23)

• Eliminar distribución seleccionada (RF # 2)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Eliminar distribución

existente, Intentar eliminar única distribución existente) y dos variables (Distribución, Variante), arrojando

los resultados esperados y ninguna No Conformidad.

• Establecer distribución predeterminada (RF # 3)

Para comprobar la correcta realización de este, se determinaron un escenario (Establecer configuración

correctamente) y dos variables (Distribución, Variante), arrojando los resultados esperados y ninguna No

Conformidad.

• Probar distribución (RF # 4)

Para comprobar la correcta realización de este requisito, se procede a probar la aplicación que se ha

seleccionado escribiendo en el campo de texto, obteniendo un resultado favorable.

42 Si el usuario intenta agregar una distribución existente en la lista de las adicionadas, la misma se añade dos veces.

45

Page 54: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

• Aplicar distribución al sistema (RF # 5)

Para comprobar la correcta realización de este, se determinó un escenario (Aplicar configuración

correctamente) y dos variables (Distribución, Variante), arrojando los resultados esperados y ninguna No

Conformidad.

• Aplicar configuración a la sesión (RF # 6)

Para comprobar la correcta realización de este, se determinó un escenario (Aplicar configuración

correctamente) y dos variables (Distribución, Variante), arrojando los resultados esperados y ninguna No

Conformidad. (ver Ilustración 26)

46

Page 55: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.4 Soporte para impresora modelo HP LaserJet 2300

Se detectó en el capítulo anterior un caso de uso para dar respuesta a esta dificultad:

• Imprimir documento (RF # 1)

Para comprobar la correcta realización de este, se determinaron tres escenarios (Imprimir documento

correctamente, Imprimir en ausencia de drivers, Imprimir en ausencia de impresora) y ninguna variable,

arrojando los resultados esperados y ninguna No Conformidad. (ver Ilustración 27)

2.5 Aplicación para la gestión del soporte de proxy

Se detectaron en el capítulo anterior dos casos de uso para dar respuesta a esta dificultad:

• Usar configuración directa a Internet (RF # 1)

47

Ilustración 25: Caso de Prueba basado en CU Imprimir documento

Condiciones de ejecuciónQue exista una impresora conectada al equipo.

SC Imprimir documento

Escenario Descripción Respuesta del sistema Flujo central

Descripción generalEl CU de comienza cuando el usuario decide imprimir un documento, el sistema verifica que posee una impresora conectada y los drivers para usarla, y termina con el documento impreso.

EC 1.1 Imprimir documento correctamente

El documento seleccionado por el usuario es puesto en cola de impresión, el sistema verifica que existe impresora disponible e imprime el documento.

1.2 El sistema pone el documento en cola de impresión.

1.3 El sistema verifica que existe una impresora disponible, cuando la encuentra, le asigna la cola de impresión, y la misma imprime el documento.

1.1 El usuario selecciona la opción de imprimir el documento.

EC 1.2 Imprimir en ausencia de drivers

El documento seleccionado por el usuario es puesto en cola de impresión, el sistema verifica que existe una impresora conectada al equipo, pero no cuenta con la información ni drivers de la misma, y muestra un mensaje de error.

1.2 El sistema pone el documento en cola de impresión.1.3 El sistema verifica que existe una impresora conectada al equipo, pero CUPS no cuenta con la información referente a la misma.1.4 El sistema muestra un mensaje de error.

1.1 El usuario selecciona la opción de imprimir el documento.

EC 1.3 Imprimir en ausencia de impresora

El documento seleccionado por el usuario es puesto en cola de impresión, el sistema verifica si existe una impresora disponible, pero no existe ninguna, y muestra mensaje de error.

1.2 El sistema pone el documento en cola de impresión.1.3 El sistema verifica si existe una impresora conectada al equipo, pero no encuentra ninguna.1.4 El sistema muestra un mensaje de error.

1.1 El usuario selecciona la opción de imprimir el documento.

Page 56: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

Para comprobar la correcta realización de este, se determinó un escenario (Obtener configuración por

defecto) y ninguna variable, arrojando los resultados esperados y ninguna No Conformidad.

• Usar configuración manual del proxy (RF # 2)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Configuración de

proxy con datos correctos, Intento de configuración con datos incorrectos) y tres variables (HTTP-Proxy,

SHTTP-Proxy, FTP-Proxy), arrojando los resultados esperados y ninguna No Conformidad. (ver Ilustración

28)

2.6 Salvar resoluciones de pantalla

Se detectó en el capítulo anterior un caso de uso para dar respuesta a esta dificultad:

• Guardar configuración (RF # 1)

Para comprobar la correcta realización de este, se determinaron dos escenarios (Guardar configuración

correctamente, Intentar guardar configuración insatisfactoriamente) y ninguna variable, arrojando los

resultados esperados y ninguna No Conformidad.

48

Ilustración 26: Caso de prueba basado en CU Usar configuración manual

Object 7

Page 57: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2.7 Aplicación de gestión de preferencias visuales

Se procede a la instalación de los paquetes obtenidos en el Sistema Operativo Nova Desktop 2011, a la

comprobación de la instalación correcta de los mismos, comprobando que el cambio dinámico de fondos

de escritorio se realiza automáticamente, y el protector de pantalla es fácilmente configurable.

2.8 Conclusiones del capítulo

Se realizaron en total 17 casos de prueba basados en casos de uso, tomando en cuenta más de 34

escenarios de pruebas, con la intención de analizar la respuesta posible del sistema ante cada uno de los

mismos.

Mediante la realización de las pruebas anteriores, fue posible comprobar que la implementación

propuesta de las aplicaciones permite la erradicación de los errores iniciales.

49

Page 58: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

CONCLUSIONES

A partir de la investigación realizada se arriban a las siguientes conclusiones:

Se analizaron las causas de cada dificultad encontrada y se concluye que estas se debían a

errores en el código fuente y ausencia de firmware para el hardware específico.

Se redefinió el diseño de varias aplicaciones que presentaban mal diseño de clases.

Mediante la corrección del código se erradicaron las dificultades existentes.

Las pruebas realizadas permitieron comprobar que las soluciones propuestas funcionan

correctamente.

50

Page 59: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

RECOMENDACIONES

A pesar de que los objetivos de la presente investigación fueron satisfechos, no obstante se propone:

Realizar un rediseño del programa PCManFM y la librería LibFM.

Incluir las modificaciones realizadas en los repositorios de Nova y las próximas distribuciones.

Compartir las mejoras realizadas con la comunidad internacional.

51

Page 60: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

REFERENCIAS BIBLIOGRÁFICAS

• CALISOFT, 2009. Calisoft. In: [online]. 2009. [Accessed 1 February 2012]. Available from: http://calisoft.uci.cu/index.php/servicios.

• ECURED, 2002. Common Unix Printing System - EcuRed. In: [online]. 8 January 2002. [Accessed 8 January 2002]. Available from: http://www.ecured.cu/index.php/Common_Unix_Printing_System.

• ERIC RAYMOND, [no date]. The Jargon File - Gates’s Law. In: The Jargon File, version 4.4.7 [online]. [Accessed 25 May 2012]. Available from: http://www.catb.org/jargon/html/G/Gatess-Law.html.

• RENDLE, Steffen, 2010. libFM. In: [online]. 2011 2010. [Accessed 13 March 2012]. Available from: http://www.libfm.org/.

• SUSE LINUX, 2012. Capítulo 5. Funcionamiento de la impresora. In: SUSE LINUX [online]. 2 May 2012. [Accessed 2 May 2012]. Available from: http://www.cez.com.pe/Linux/manual%20suse%20linux%209.1/suselinux-adminguide_es/html/ch05.html.

• TSCHEMIG, 2007. Refresh Rate: Frecuencia de Refresco Vertical. In: [online]. 6 February 2007. [Accessed 10 June 2012]. Available from: http://www.tecnologiahechapalabra.com/tecnologia/glosario_tecnico/articulo.asp?i=559.

• W3C, 2012. Sobre el W3C - W3C España. In: [online]. 2012. [Accessed 21 May 2012]. Available from: http://www.w3c.es/Consorcio/.

• WIKIPEDIA, 2011a. BCPL - Wikipedia, la enciclopedia libre. In: [online]. 15 November 2011. [Accessed 10 June 2012]. Available from: http://es.wikipedia.org/wiki/BCPL.

• WIKIPEDIA, 2011b. Combined Programming Language - Wikipedia, la enciclopedia libre. In: [online]. 17 November 2011. [Accessed 10 June 2012]. Available from: http://es.wikipedia.org/wiki/Combined_Programming_Language.

• WIKIPEDIA, 2011c. HAL (software) - Wikipedia, la enciclopedia libre. In: [online]. 29 November 2011. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/HAL_(software).

• WIKIPEDIA, 2011d. SGML - Wikipedia, la enciclopedia libre. In: [online]. 22 July 2011.

52

Page 61: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

[Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/SGML.

• WIKIPEDIA, 2012a. BeOS - Wikipedia, la enciclopedia libre. In: [online]. 24 March 2012. [Accessed 10 June 2012]. Available from: http://es.wikipedia.org/wiki/BeOS.

• WIKIPEDIA, 2012b. C (lenguaje de programación) - Wikipedia, la enciclopedia libre. In: [online]. 15 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n).

• WIKIPEDIA, 2012c. D-Bus - Wikipedia, la enciclopedia libre. In: [online]. 24 January 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Dbus.

• WIKIPEDIA, 2012d. Espacio de intercambio - Wikipedia, la enciclopedia libre. In: [online]. 5 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Espacio_de_intercambio.

• WIKIPEDIA, 2012e. Extensible Markup Language - Wikipedia, la enciclopedia libre. In: [online]. 12 April 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Xml.

• WIKIPEDIA, 2012f. GIMP - Wikipedia, la enciclopedia libre. In: [online]. 17 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Gimp.

• WIKIPEDIA, 2012g. GNOME VFS - Wikipedia, la enciclopedia libre. In: [online]. 4 April 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/GNOME_VFS.

• WIKIPEDIA, 2012h. GTK+ - Wikipedia, la enciclopedia libre. In: [online]. 18 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Gtk.

• WIKIPEDIA, 2012i. IBM - Wikipedia, la enciclopedia libre. In: [online]. 12 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/IBM.

• WIKIPEDIA, 2012j. Interfaz de programación de aplicaciones - Wikipedia, la enciclopedia libre. In: [online]. 28 March 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones.

• WIKIPEDIA, 2012k. Memoria de acceso aleatorio - Wikipedia, la enciclopedia libre. In: [online]. 23 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Ram.

• WIKIPEDIA, 2012l. Metodología de desarrollo de software - Wikipedia, la enciclopedia libre. In:

53

Page 62: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

[online]. 1 April 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software.

• WIKIPEDIA, 2012m. OpenUP - Wikipedia, la enciclopedia libre. In: [online]. 20 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/OpenUP.

• WIKIPEDIA, 2012n. POSIX - Wikipedia, la enciclopedia libre. In: [online]. 26 March 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Posix.

• WIKIPEDIA, 2012o. PostScript - Wikipedia, la enciclopedia libre. In: [online]. 30 April 2012. [Accessed 30 April 2012]. Available from: http://es.wikipedia.org/wiki/PostScript.

• WIKIPEDIA, 2012p. Proceso Unificado de Rational - Wikipedia, la enciclopedia libre. In: [online]. 21 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/RUP.

• WIKIPEDIA, 2012q. Proxy - Wikipedia, la enciclopedia libre. In: [online]. 25 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Proxy.

• WIKIPEDIA, 2012r. Python - Wikipedia, la enciclopedia libre. In: [online]. 23 April 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/Python.

• WIKIPEDIA, 2012s. Server Message Block - Wikipedia, the free encyclopedia. In: [online]. 3 April 2012. [Accessed 25 May 2012]. Available from: http://en.wikipedia.org/wiki/Server_Message_Block.

• WIKIPEDIA, 2012t. Sistema de archivos virtual - Wikipedia, la enciclopedia libre. In: [online]. 16 May 2012. [Accessed 25 May 2012]. Available from: http://es.wikipedia.org/wiki/VFS.

• XFREE86.ORG, [no date]. SETXKBMAP(1) manual page. In: [online]. [Accessed 25 May 2012]. Available from: http://www.xfree86.org/current/setxkbmap.1.html.

• ZEVENOS, 2008. ZevenOS » About. In: [online]. 2008. [Accessed  10 June 2012]. Available from: http://www.zevenos.com/about.

• ZIFF DAVIS, 1996a. Software bloat Definition from PC Magazine Encyclopedia. In: PC Magazine [online]. 2012 1996. [Accessed 11 May 2012]. Available from: http://www.pcmag.com/encyclopedia_term/0,1237,t=software+bloat&i=57626,00.asp.

• ZIFF DAVIS, 1996b. Wirth’s law Definition from PC Magazine Encyclopedia. In: PC Magazine [online].

54

Page 63: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

2012 1996. [Accessed 11 May 2012]. Available from: http://www.pcmag.com/encyclopedia_term/0,1237,t=Wirths+law&i=57670,00.asp.

55

Page 64: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

BIBLIOGRAFÍA

• DEBIAN.ORG, 2012. Packaging manuals. In: [online]. 9 April 2012. [Accessed 25 May 2012]. Available from: http://www.debian.org/doc/manuals/packaging-tutorial/.

• FERNÁNDEZ DEL MONTE, ING. YUSLEYDI and ALBO CASTRO, ING. MÓNICA, 2011. Metodología para el desarrollo de distribuciones GNU/Linux basada en OpenUp y el programa de mejora organizado por CaliSoft. S.l.: s.n.

• FREE SOFTWARE FOUNDATION, 2012. Por qué el software libre necesita documentación libre - Proyecto GNU - Free Software Foundation (FSF). In: [online]. 6 June 2012. [Accessed 10 June 2012]. Available from: http://www.gnu.org/philosophy/free-doc.es.html.

• GONZÁLEZ DUQUE, Raúl, 2008. Suspender e Hibernar. In: [online]. 2008. [Accessed 1 February 2012]. Available from: http://mundogeek.net/archivos/2008/06/08/suspender-e-hibernar/.

• GORDON MOORE, 2005. Excerpts from A Conversation with Gordon Moore: Moore’s Law. 2005. S.l.: s.n.

• MACÍAS BRUZZONE, Francisco, 2000. 10 Entornos de escritorio linux. In: Opcionweb.com [online]. 2 March 2000. [Accessed 7 March 2012]. Available from: http://www.opcionweb.com/index.php/2009/05/26/10-entornos-de-escritorio-linux/.

56

Page 65: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

ANEXOS

1. Anexo 1: Parche de código fuente

--- guano-session-0.9.10.orig/src/main.c+++ guano-session-0.9.10/src/main.c@@ -270,13 +270,63 @@ xfsm_shutdown_helper_hal_send ( LogoutAc #endif } +/*+ * Determines if there is enought space in the swap+ * to hibernate the system. Comparing the total memory+ * size with the swap size.+ * + * Returns: 1 if there is enought space, + * 0 if there is not.+ */++static int isEnougthSwapToHibern() {+ FILE *f = fopen("/proc/meminfo", "r");+ char buff[255];+ char var[100];+ long value;+ long ram_total, ram_libre, swap_total, swap_libre;+++ while (fgets(buff, 255, f) != NULL) {+ sscanf(buff, "%s %ld", var, &value);+ if (strcmp(var, "MemTotal:") == 0) {+ ram_total = value;+ continue;+ }+ if (strcmp(var, "MemFree:") == 0) {+ ram_libre = value;+ continue;+ }+ if (strcmp(var, "SwapTotal:") == 0) {

57

Page 66: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

+ swap_total = value;+ continue;+ }+ if (strcmp(var, "SwapFree:") == 0) {+ swap_libre = value;+ continue;+ }+ }+ + + + long total_used = (ram_total - ram_libre) + (swap_total - swap_libre);+ if (total_used > swap_total)+ return 0;+ else+ return 1;+}+ static void check_available_actions() { /* check if we can use HAL to shutdown the computer */ use_hal = xfsm_shutdown_helper_hal_check (); if( use_hal ) /* check if hal is available */ {- available_actions = LOGOUT_ACTION_SHUTDOWN | LOGOUT_ACTION_REBOOT | LOGOUT_ACTION_SUSPEND | LOGOUT_ACTION_HIBERNATE;+ /* Check if the swap have enought space for SUSPEND OR HIBERNATE */+ if (isEnougthSwapToHibern() )+ available_actions = LOGOUT_ACTION_SHUTDOWN | LOGOUT_ACTION_REBOOT | LOGOUT_ACTION_SUSPEND | LOGOUT_ACTION_HIBERNATE;+ else+ available_actions = LOGOUT_ACTION_SHUTDOWN | LOGOUT_ACTION_REBOOT ; } else /* check if gdm is available */ {--- guano-session-0.9.10.orig/data/utils/autostart.sh+++ guano-session-0.9.10/data/utils/autostart.sh

58

Page 67: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

@@ -63,4 +63,4 @@ nm-applet & /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 & # ejecter-ejecter &+# ejecter &--- /dev/null+++ guano-session-0.9.10/data/utils/printer.desktop@@ -0,0 +1,14 @@+[Desktop Entry]+Encoding=UTF-8+Name=Printer Configuration+Name[es]=Configuración de impresoras+GenericName=Printer+GenericName[es]=Impresoras+Comment=Printer+Comment[es]=Printer+Exec=x-www-browser 127.0.0.1:631+Icon=printer+Terminal=false+Type=Application+Categories=GTK;Printing;HardwareSettings;Settings;System;+StartupNotify=false

2. Anexo 2: Parche de código fuente

--- /tmp/libfm-36dfad2/src/gtk/fm-places-model.c..................................2011-02-08 10:39:01.000000000 -0500+++ libfm-0.1.15+git20110210nova1/src/gtk/fm-places-model.c..........2012-01-16 01:21:53.000000000 -0500@@ -41,6 +41,9 @@ case FM_PLACES_ITEM_VOL: g_object_unref(item->vol); break;+ case FM_PLACES_ITEM_MOUNT:+ g_object_unref(item->mount);+ break; } fm_file_info_unref(item->fi); g_slice_free(FmPlaceItem, item);

59

Page 68: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

@@ -92,8 +95,8 @@ { fm_file_info_unref(item->fi); item->fi = fm_file_info_ref(fi);- /* remove the file from list to speed up further loading.- * This won't cause problem since nobody else if using the list. */+ /* remove the file from list to speed up further loading. */+ /* This won't cause problem since nobody else if using the list. */ fm_list_delete_link(job->file_infos, l); break; }@@ -111,30 +114,47 @@ GdkPixbuf* pix; GMount* mount; FmPath* path;-- name = g_volume_get_name(item->vol);- if(item->fi->icon)- fm_icon_unref(item->fi->icon);- gicon = g_volume_get_icon(item->vol);- icon = fm_icon_from_gicon(gicon);- item->fi->icon = icon;- g_object_unref(gicon);-- mount = g_volume_get_mount(item->vol);- if(mount)- {- GFile* gf = g_mount_get_root(mount);- path = fm_path_new_for_gfile(gf);- g_object_unref(gf);- g_object_unref(mount);- item->vol_mounted = TRUE;- }- else- {- path = NULL;- item->vol_mounted = FALSE;- }-

60

Page 69: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

++ if (G_IS_VOLUME(item->vol) && (item->vol != NULL)){+ name = g_volume_get_name(item->vol);+ if(item->fi->icon)+ fm_icon_unref(item->fi->icon);+ gicon = g_volume_get_icon(item->vol);+ icon = fm_icon_from_gicon(gicon);+ item->fi->icon = icon;+ g_object_unref(gicon);++ mount = g_volume_get_mount(item->vol);+ if(mount)+ {+ GFile* gf = g_mount_get_root(mount);+ path = fm_path_new_for_gfile(gf);+ g_object_unref(gf);+ g_object_unref(mount);+ item->vol_mounted = TRUE;+ }+ else+ {+ path = NULL;+ item->vol_mounted = FALSE;+ }+ }+ if (G_IS_MOUNT(item->mount) && (item->mount != NULL)){+ name = g_mount_get_name(item->mount);+ if(item->fi->icon)+ fm_icon_unref(item->fi->icon);+ gicon = g_mount_get_icon(item->mount);+ icon = fm_icon_from_gicon(gicon);+ item->fi->icon = icon;+ g_object_unref(gicon);++ GFile* gf = g_mount_get_root(item->mount);+ path = fm_path_new_for_gfile(gf);++ g_object_unref(gf);+ item->vol_mounted = TRUE;

61

Page 70: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

++ }

if(!fm_path_equal(item->fi->path, path)) { fm_file_info_set_path(item->fi, path);@@ -164,18 +184,40 @@ GtkTreeIter it; FmPlaceItem* item; item = g_slice_new0(FmPlaceItem);- item->fi = fm_file_info_new();- item->type = FM_PLACES_ITEM_VOL;- item->vol = (GVolume*)g_object_ref(vol);- gtk_list_store_insert_before(GTK_LIST_STORE(model), &it, &model->sep_it);- gtk_list_store_set(GTK_LIST_STORE(model), &it, FM_PLACES_MODEL_COL_INFO, item, -1);- update_vol(model, item, &it, job);+ item->fi = fm_file_info_new();+ item->type = FM_PLACES_ITEM_VOL;+ item->mount = NULL;+ item->vol = (GVolume*)g_object_ref(vol);+ gtk_list_store_insert_before(GTK_LIST_STORE(model), &it, &model->sep_it);+ gtk_list_store_set(GTK_LIST_STORE(model), &it, FM_PLACES_MODEL_COL_INFO, item, -1);+ update_vol(model, item, &it, job);+}++static void add_mount(FmPlacesModel* model, GMount* mount, FmFileInfoJob* job)+{+ GtkTreeIter it;+ FmPlaceItem* item;+ item = g_slice_new0(FmPlaceItem);+ item->fi = fm_file_info_new();+ item->type = FM_PLACES_ITEM_MOUNT;+ item->vol = NULL;+ item->mount = (GMount*)g_object_ref(mount);+ gtk_list_store_insert_before(GTK_LIST_STORE(model), &it, &model->sep_it);+ gtk_list_store_set(GTK_LIST_STORE(model), &it, FM_PLACES_MODEL_COL_INFO, item, -1);+ update_vol(model, item, &it, job); }

62

Page 71: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

-static FmPlaceItem* find_vol(FmPlacesModel* model, GVolume* vol, GtkTreeIter* _it)+static FmPlaceItem* find_vol(FmPlacesModel* model, GObject* vol, GtkTreeIter* _it) { GtkTreeIter it; FmPlaceItem* item;+ GVolume* volume = NULL;+ GMount* mount = NULL;+ if (G_IS_VOLUME(vol) && vol != NULL)+ volume = (GVolume *)g_object_ref(vol);+ else if (G_IS_MOUNT(vol) && vol != NULL)+ mount = (GMount *)g_object_ref(vol);+ /* FIXME: don't need to find from the first iter */ if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &it)) {@@ -183,14 +225,27 @@ { FmPlaceItem* item; gtk_tree_model_get(GTK_TREE_MODEL(model), &it, FM_PLACES_MODEL_COL_INFO, &item, -1);-- if(item && item->type == FM_PLACES_ITEM_VOL && item->vol == vol)- {- *_it = it;- return item;+ if (volume != NULL){+ if(item && item->type == FM_PLACES_ITEM_VOL && \+ (item->vol != NULL && G_IS_VOLUME(item->vol)) && item->vol == volume)+ {+ *_it = it;+ return item;+ }+ }+ if (mount != NULL){+ if((item && item->type == FM_PLACES_ITEM_MOUNT) && \+ (item->mount != NULL && G_IS_MOUNT(item->mount)) && item->mount == mount)+ {+ *_it = it;+ return item;

63

Page 72: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

+ } } }while(it.user_data != model->sep_it.user_data && gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &it)); }+ g_object_unref(volume);+ g_object_unref(mount); return NULL; } @@ -207,7 +262,7 @@ FmPlacesModel* model = FM_PLACES_MODEL(user_data); FmPlaceItem* item; GtkTreeIter it;- item = find_vol(model, vol, &it);+ item = find_vol(model, (GObject*) vol, &it); /* g_debug("remove vol: %p, uuid: %s, udi: %s", vol, g_volume_get_identifier(vol, "uuid"), g_volume_get_identifier(vol, "hal-udi")); */ if(item) {@@ -217,13 +272,28 @@ } } +void on_mount_removed(GVolumeMonitor* vm, GMount* mount, gpointer user_data)+{+ FmPlacesModel* model = FM_PLACES_MODEL(user_data);+ FmPlaceItem* item;+ GtkTreeIter it;+ item = find_vol(model, (GObject*) mount, &it);+ g_debug("remove mount: %s, root: %s", g_mount_get_name(mount), g_mount_get_uuid(mount));+ if(item)+ {+ gtk_list_store_remove(GTK_LIST_STORE(model), &it);+ place_item_free(item);+ update_sep_tp(model);+ }+}+

64

Page 73: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

void on_vol_changed(GVolumeMonitor* vm, GVolume* vol, gpointer user_data) { FmPlacesModel* model = FM_PLACES_MODEL(user_data); FmPlaceItem* item; GtkTreeIter it; g_debug("vol-changed");- item = find_vol(model, vol, &it);+ item = find_vol(model,(GObject*) vol, &it); if(item) update_vol(model, item, &it, NULL); }@@ -231,15 +301,15 @@ void on_mount_added(GVolumeMonitor* vm, GMount* mount, gpointer user_data) { FmPlacesModel* model = FM_PLACES_MODEL(user_data);+ FmPlaceItem *item;+ GtkTreeIter it;+ GtkTreePath* tp; GVolume* vol = g_mount_get_volume(mount); if(vol) {- FmPlaceItem *item;- GtkTreeIter it;- item = find_vol(model, vol, &it);+ item = find_vol(model,(GObject*) vol, &it); if(item && item->type == FM_PLACES_ITEM_VOL && !item->fi->path) {- GtkTreePath* tp; GFile* gf = g_mount_get_root(mount); FmPath* path = fm_path_new_for_gfile(gf); g_debug("mount path: %s", path->name);@@ -256,6 +326,33 @@ } g_object_unref(vol); }+ else+ {+ /* If not volume then it's a mount added */+ /* Find it first if exists */

65

Page 74: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

+ item = find_vol(model,(GObject*) mount, &it);+ if (!item)+ {+ /* Adding mount */+ add_mount(GTK_TREE_MODEL(model), (GMount *)mount, NULL);+ }+ else if(item && item->type == FM_PLACES_ITEM_MOUNT && !item->fi->path)+ {+ GFile* gf = g_mount_get_root(mount);+ FmPath* path = fm_path_new_for_gfile(gf);+ g_debug("mount path: %s", path->name);+ g_object_unref(gf);+ fm_file_info_set_path(item->fi, path);+ if(path)+ fm_path_unref(path);+ item->vol_mounted = TRUE;++ /* inform the view to update mount indicator */+ tp = gtk_tree_model_get_path(GTK_TREE_MODEL(model), &it);+ gtk_tree_model_row_changed(GTK_TREE_MODEL(model), tp, &it);+ gtk_tree_path_free(tp);+ }+ } } static void add_bookmarks(FmPlacesModel* model, FmFileInfoJob* job)@@ -462,7 +559,9 @@ GtkTreeIter it; GtkTreePath* tp; FmPlaceItem* item;- GList *vols, *l;+ GList *vols = NULL, *l = NULL, *mounts = NULL, *all = NULL;+ GVolume *volume;+ GMount * mount; GIcon* gicon; FmIcon* icon; GFile* gf;@@ -531,19 +630,58 @@ g_signal_connect(self->vol_mon, "volume-removed", G_CALLBACK(on_vol_removed), self);

66

Page 75: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

g_signal_connect(self->vol_mon, "volume-changed", G_CALLBACK(on_vol_changed), self); g_signal_connect(self->vol_mon, "mount-added", G_CALLBACK(on_mount_added), self);+ g_signal_connect(self->vol_mon, "mount-removed", G_CALLBACK(on_mount_removed), self); /* separator */ gtk_list_store_append(model, &self->sep_it); - /* add volumes to side-pane */+ /* Colects volumes */ vols = g_volume_monitor_get_volumes(self->vol_mon); for(l=vols;l;l=l->next) { GVolume* vol = G_VOLUME(l->data);- add_vol(self, vol, job);+ all = g_list_append(all, vol);+ /* add_vol(self, vol, job); */ g_object_unref(vol); } g_list_free(vols);+ + /* Supports smb, sftp, ftp... */+ /* Colects mounts */+ mounts = g_volume_monitor_get_mounts (self->vol_mon);+ for (l=mounts;l;l=l->next)+ {+ mount = G_MOUNT(l->data);+ if (mount)+ {+ volume = g_mount_get_volume (mount);+ if (volume)+ {+ g_object_unref (volume);+ continue;+ }+ all = g_list_append(all, mount); + g_object_unref (mount);+ }+ }+ g_list_free(mounts);

67

Page 76: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

++ /* Adds all drives to side panel */+ for (l=all;l;l=l->next)+ {+ if (G_IS_VOLUME(l->data))+ {+ GVolume* vol1 = G_VOLUME(l->data);+ add_vol(self, vol1, job);+ g_object_unref (vol1);+ }+ if (G_IS_MOUNT(l->data))+ {+ GMount* mount1 = G_MOUNT(l->data);+ add_mount(self, mount1, job);+ g_object_unref (mount1);++ } /* get the path of separator */ self->sep_tp = gtk_tree_model_get_path(GTK_TREE_MODEL(self), &self->sep_it);

3. Anexo 3: Parche de código fuente

--- /tmp/libfm-36dfad2/src/gtk/fm-places-view.c..........................................2011-02-08 10:39:01.000000000 -0500+++ libfm-0.1.15+git20110210nova1/src/gtk/fm-places-view.c...................2012-01-16 10:11:55.000000000 -0500@@ -438,7 +438,9 @@ if(gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &it, tree_path)) { FmPlaceItem* item;- FmPath* path;+ FmPath* path = NULL;+ GFile* gf;+ GMount* mnt = NULL; gtk_tree_model_get(GTK_TREE_MODEL(model), &it, FM_PLACES_MODEL_COL_INFO, &item, -1); if(!item) return;@@ -447,38 +449,50 @@ case FM_PLACES_ITEM_PATH:

68

Page 77: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

path = fm_path_ref(item->fi->path); break;+ case FM_PLACES_ITEM_MOUNT:+ {+ if ((item->mount != NULL) && G_IS_MOUNT(item->mount)){+ mnt = (GMount*)g_object_ref(item->mount);+ }+ }+ break; case FM_PLACES_ITEM_VOL: {- GFile* gf;- GMount* mnt = g_volume_get_mount(item->vol);+ if ((item->vol != NULL) && G_IS_VOLUME(item->vol)){+ mnt = g_volume_get_mount(item->vol);+ } if(!mnt) {+ GtkWindow* parent = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(view)));- if(!fm_mount_volume(parent, item->vol, TRUE))- return;- mnt = g_volume_get_mount(item->vol);- if(!mnt)- {- g_debug("GMount is invalid after successful g_volume_mount().\nThis is quite possibly a gvfs bug.\nSee https://bugzilla.gnome.org/show_bug.cgi?id=552168");- return;+ if ((item->vol != NULL) && G_IS_VOLUME(item->vol)){+ if(!fm_mount_volume(parent, item->vol, TRUE))+ return;+ mnt = g_volume_get_mount(item->vol);+ if(!mnt)+ {+ g_debug("GMount is invalid after successful g_volume_mount().\nThis is quite possibly a gvfs bug.\nSee https://bugzilla.gnome.org/show_bug.cgi?id=552168");+ return;+ } }

69

Page 78: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

- }- gf = g_mount_get_root(mnt);- g_object_unref(mnt);- if(gf)- {- path = fm_path_new_for_gfile(gf);- g_object_unref(gf);- }- else- path = NULL;- break;- }+ } + } + break; default: return; }-- if(path)+ if (!path){+ gf = g_mount_get_root(mnt);+ g_object_unref(mnt);+ if(gf)+ {+ path = fm_path_new_for_gfile(gf);+ g_object_unref(gf);+ }+ else+ path = NULL;+ }+ if (path) { g_signal_emit(view, signals[CHDIR], 0, button, path); fm_path_unref(path);@@ -526,18 +540,27 @@ if(item && item->vol_mounted) { GtkWidget* toplevel = gtk_widget_get_toplevel(view);

70

Page 79: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

- /* eject the volume */- if(g_volume_can_eject(item->vol))- fm_eject_volume(toplevel, item->vol, TRUE);- else /* not ejectable, do unmount */- {- GMount* mnt = g_volume_get_mount(item->vol);- if(mnt)- {- fm_unmount_mount(toplevel, mnt, TRUE);- g_object_unref(mnt);- }- }+ + if ((item->vol != NULL) && G_IS_VOLUME(item->vol)){+ /* eject the volume */+ if(g_volume_can_eject(item->vol))+ fm_eject_volume(toplevel, item->vol, TRUE);+ else /* not ejectable, do unmount */+ {+ GMount* mnt = g_volume_get_mount(item->vol);+ if(mnt)+ {+ fm_unmount_mount(toplevel, mnt, TRUE);+ g_object_unref(mnt);+ }+ }

+ }+ else if ((item->mount != NULL) && G_IS_MOUNT(item->mount)){+ GMount* mnt = (GVolume*)g_object_ref(item->vol);+ fm_unmount_mount(toplevel, mnt, TRUE);+ g_object_unref(mnt);+ }+ gtk_tree_path_free(tp); gtk_tree_path_free(view->clicked_row);@@ -587,8 +610,12 @@ GMount* mnt;

71

Page 80: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

gtk_action_group_add_actions(act_grp, vol_menu_actions, G_N_ELEMENTS(vol_menu_actions), item); gtk_ui_manager_add_ui_from_string(ui, vol_menu_xml, -1, NULL);-- mnt = g_volume_get_mount(item->vol);++ if ((item->vol != NULL) && G_IS_VOLUME(item->vol))+ mnt = g_volume_get_mount(item->vol);+ else if ((item->vol != NULL) && G_IS_VOLUME(item->mount))+ mnt = item->mount;+ if(mnt) /* mounted */ { g_object_unref(mnt);@@ -607,6 +634,25 @@ act = gtk_action_group_get_action(act_grp, "Eject"); gtk_action_set_visible(act, FALSE); }+ else if(item->type == FM_PLACES_ITEM_MOUNT)+ {+ GtkAction* act;+ GMount* mnt;+ gtk_action_group_add_actions(act_grp, vol_menu_actions, G_N_ELEMENTS(vol_menu_actions), item);+ gtk_ui_manager_add_ui_from_string(ui, vol_menu_xml, -1, NULL);++ if ((item->mount != NULL) && G_IS_MOUNT(item->mount))+ mnt = (GMount*)g_object_ref(item->mount);++ if(mnt) /* mounted */+ {+ g_object_unref(mnt);+ act = gtk_action_group_get_action(act_grp, "Mount");+ gtk_action_set_visible(act, FALSE);+ act = gtk_action_group_get_action(act_grp, "Eject");+ gtk_action_set_visible(act, FALSE);+ }+ } else goto _out; gtk_ui_manager_insert_action_group(ui, act_grp, 0);

72

Page 81: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

@@ -681,8 +727,13 @@ void on_umount(GtkAction* act, gpointer user_data) {+ GMount* mnt; FmPlaceItem* item = (FmPlaceItem*)user_data;- GMount* mnt = g_volume_get_mount(item->vol);+ if ((item != NULL) && (G_IS_VOLUME(item->vol)) && item->type == FM_PLACES_ITEM_VOL)+ mnt = g_volume_get_mount(item->vol);+ else if ((item != NULL) && (G_IS_MOUNT(item->mount)) && item->type == FM_PLACES_ITEM_MOUNT)+ mnt = (GMount*)g_object_ref(item->mount);+ if(mnt) { fm_unmount_mount(NULL, mnt, TRUE);

73

Page 82: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

4. Anexo 4: Diagrama de clases LibFM (requiere ampliar la imagen)

Page 83: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

5. Anexo 5: Parche de código fuente

--- /tmp/libfm-36dfad2/src/gtk/fm-gtk-utils.c.............................................2011-02-08 10:39:01.000000000 -0500+++ libfm-0.1.15+git20110210nova1/src/gtk/fm-gtk-utils.c......................2011-02-23 14:50:35.000000000 -0500@@ -301,7 +301,8 @@ MOUNT_GFILE, UMOUNT_MOUNT, EJECT_MOUNT,- EJECT_VOLUME+ EJECT_VOLUME,+ MOUNT_MOUNT }MountAction; struct MountData@@ -364,6 +365,9 @@ case MOUNT_VOLUME: g_volume_mount(G_VOLUME(obj), 0, op, cancellable, on_mount_action_finished, data); break;+ case MOUNT_MOUNT:+ //g_volume_mount(G_VOLUME(obj), 0, op, cancellable, on_mount_action_finished, data);+ break; case MOUNT_GFILE: g_file_mount_enclosing_volume(G_FILE(obj), 0, op, cancellable, on_mount_action_finished, data); break;@@ -454,6 +458,11 @@ return fm_do_mount(parent, G_OBJECT(vol), MOUNT_VOLUME, interactive); } +gboolean fm_mount_mount(GtkWindow* parent, GMount* mount, gboolean interactive)+{+ return fm_do_mount(parent, G_OBJECT(mount), MOUNT_MOUNT, interactive);+}+ gboolean fm_unmount_mount(GtkWindow* parent, GMount* mount, gboolean interactive) { return fm_do_mount(parent, G_OBJECT(mount), UMOUNT_MOUNT, interactive);

75

Page 84: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

6. Anexo 6: Parche de código fuente

--- /tmp/libfm-36dfad2/src/gtk/fm-places-model.h.......................................2011-02-08 10:39:01.000000000 -0500+++ libfm-0.1.15+git20110210nova1/src/gtk/fm-places-model.h.................2011-02-23 14:50:35.000000000 -0500@@ -62,6 +62,7 @@ FM_PLACES_ITEM_NONE, FM_PLACES_ITEM_PATH, FM_PLACES_ITEM_VOL,+ FM_PLACES_ITEM_MOUNT }FmPlaceType; typedef struct _FmPlaceItem@@ -72,6 +73,7 @@ union { GVolume* vol;+ GMount* mount; FmBookmarkItem* bm_item; }; }FmPlaceItem;

76

Page 85: UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS...UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS Título: “Corrección de errores a Nova Ligero 3.0.” Trabajo de Diploma para optar por el

GLOSARIO DE TÉRMINOS

Distribución (distro): distribución de software basada en el núcleo Linux que incluye determinados

paquetes de software para satisfacer las necesidades de un grupo específico de usuarios, dando así

origen a ediciones domésticas, empresariales y para servidores. [3]

Framework: conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de

problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole

similar. Puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras

herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto. [8,13]

PCManFM: manejador de archivos extremadamente rápido y ligero, aunque con muchas funciones,

que funciona con navegación por pestañas. [10]

Software privativo: cualquier programa informático en el que el usuario tiene limitaciones para usarlo,

modificarlo o redistribuirlo (esto último con o sin modificaciones). [3]

SourceForge: sitio web de colaboración para proyectos de software que provee una portada para un

amplio rango de servicios útiles para los procesos de desarrollo de software e integra un amplio número

de aplicaciones de software libre (tales como PostgreSQL y CVS). [10]

77

View publication statsView publication stats


Recommended