Icon - Instituto Politécnico Nacional

Anuncio
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
“SERVICIOS ACADÉMICOS ATRAVÉS DE LA WEB
PARA LA ACADEMIA DE COMPUTACIÓN”
TÉSIS
QUE PARA OBTENER EL TÍTULO DE:
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
P R E S E N T A N:
HERRERA URBINA ARES ROBERTO
MENDOZA MORENO VICENTE
ORTIZ CERVANTES RICARDO
ASESORES:
ING. ARMANDO MANCILLA LEÓN
M .en. C. ROBERTO GALICIA GALICIA
MÉXICO D.F. 2008
| Introducción.
I
| Introducción.
II
Dedicatoria
El esfuerzo y la dedicación que he puesto en
esta tesis, va con mucho cariño a mis padres
cuyo afecto y comprensión ha sido mi
inspiración, al igual que su apoyo ha sido
fundamental en todos estos años de estudio, a
mis hermanos quienes han sido mi aliciente, a
mis queridos amigos, pues su consejo ha sido
parte de este esfuerzo y a todos los que de una
u otra manera han sido partícipes de los
episodios de mi vida, hasta llegar a este
hermoso presente.
| Introducción.
III
Agradecimiento
En primer lugar quiero agradecer a Dios por bendecirme para
llegar hasta donde he llegado. Gracias por ayudarme a
levantarme en mis fracasos, por aprender de ellos y
principalmente por permitirme realizar el sueño más
importante de mi vida.”
A mis padres, quienes contribuyeron a mi formación como Ser
y como persona, por su sacrificio desmedido y desinteresado
para procurar mi bien y el de mis hermanos, y por el apoyo
incondicional que me dieron a lo largo de la carrera.
A mis hermanos, por hacer todo cuanto estuvo a su alcance
con tal de ayudarme.
A mis asesores de tesis, Ing. Armando Mancilla León y M .en.
C. Roberto Galicia Galicia, por su valiosa asesoría y su gran
apoyo y colaboración que me brindaron para la realización de
este proyecto.
A mis compañeros, por todos los momentos vividos durante
la carrera y por impulsar en mí el espíritu de competencia.
A la Escuela Superior de Ingeniería Mecánica y Eléctrica
(ESIME), por haberme brindado la oportunidad de estudiar mí
adorada carrera: Ingeniería en Comunicaciones y Electrónica.
Finalmente quiero agradecer a todas aquellas personas que
de alguna manera hicieron posible la terminación de este
trabajo de tesis, gracias a todos.
| Introducción.
IV
Tabla de contenido
Introducción. ..................................................................................................................................... X
Objetivo general. ...............................................................................................................................XI
Objetivo particular. ...........................................................................................................................XI
Descripción........................................................................................................................................XI
Capítulo 1. Planteamiento del problema............................................................................................1
Descripción del problema...............................................................................................................1
Formulación. ..................................................................................................................................2
Delimitación. ..................................................................................................................................2
Justificación. ...................................................................................................................................3
Capítulo 2. Marco teórico...................................................................................................................4
Antecedentes Teóricos. ..................................................................................................................4
Estado Del Arte ..............................................................................................................................6
Marco Conceptual. .........................................................................................................................7
Ingeniería de Software. ..............................................................................................................7
HTML. .......................................................................................................................................10
XHTML. .....................................................................................................................................11
DOM. ........................................................................................................................................12
XML. .........................................................................................................................................12
JavaScript. ................................................................................................................................12
CSS. ...........................................................................................................................................13
Tecnología .NET ........................................................................................................................14
AJAX. ........................................................................................................................................16
Framework Ajax Extjs ...............................................................................................................18
PHP. ..........................................................................................................................................19
MySql .......................................................................................................................................20
Capítulo 3. Análisis ..........................................................................................................................21
Diagramas de Caso de Uso ...........................................................................................................21
Caso de Uso de Profesores ...........................................................................................................21
Diagrama de Caso de Uso de Profesores ..................................................................................21
Caso de Uso para Alumnos ...........................................................................................................22
Diagrama de Caso de Uso de los Alumnos ...............................................................................22
| Introducción.
V
Caso de Uso para el Administrador ..............................................................................................23
Diagrama de Caso de Uso para el Administrador .....................................................................23
Requerimientos no funcionales. ...................................................................................................24
Requerimientos no funcionales del servidor. ...........................................................................24
Requerimientos no funcionales del cliente. .............................................................................24
Capítulo 4. Metodología ...................................................................................................................25
Ciclo de Vida del Software ............................................................................................................25
Modelo de Desarrollo Iterativo. ...............................................................................................25
Definición de Objetivos. ...........................................................................................................26
Entornos de Trabajo .....................................................................................................................28
Entorno de Desarrollo ..............................................................................................................28
Entorno de Producción .............................................................................................................29
Capítulo 5. Diseño ............................................................................................................................31
Usuarios y Permisos .....................................................................................................................31
Separación del Portal en Niveles ..................................................................................................32
Nivel Principal...........................................................................................................................32
Nivel de Acceso de Profesores .................................................................................................33
Nivel de Acceso del Administrador ...........................................................................................33
Modelado de la Base de Datos .....................................................................................................34
Tablas de la Base de Datos .......................................................................................................35
Diagrama de Clases ......................................................................................................................37
Diagrama de Clases para el manejo de Sesión de los usuarios. ................................................37
Diagrama de Clases para la Interfaz Ajax ..................................................................................38
Diagrama de Clases para la Base de Datos ...............................................................................39
Distribución de Archivos y Carpetas .............................................................................................40
Capítulo 6. Implementación .............................................................................................................44
Sitio Principal ................................................................................................................................44
Curricula ...................................................................................................................................45
Proyectos..................................................................................................................................46
Alumnos ...................................................................................................................................47
Materias ...................................................................................................................................49
Sitios Personales .......................................................................................................................49
| Introducción.
VI
Información de los Profesores ..................................................................................................50
Material de Apoyo ....................................................................................................................51
Sitio de Acceso del Profesor .........................................................................................................52
Sitio Personal del Profesor .......................................................................................................53
Videos.......................................................................................................................................55
Materias ...................................................................................................................................56
Perfil .........................................................................................................................................57
Evaluación ................................................................................................................................58
Sitio de Acceso del Administrador ................................................................................................59
Avisos .......................................................................................................................................60
Anuncios Publicitarios o Banners .............................................................................................61
Claves de Acceso para el Registro de Profesores .....................................................................62
E-MAIL ......................................................................................................................................63
Capítulo 7. Análisis de costos. ..........................................................................................................64
Estudio Económico. ......................................................................................................................64
Costo de Producción ................................................................................................................64
Costo de Administración ..........................................................................................................67
Precio de Venta ........................................................................................................................67
Desglose de cada uno de los gastos .........................................................................................68
Conclusiones ....................................................................................................................................70
Recomendaciones ............................................................................................................................71
Glosario ............................................................................................................................................72
Bibliografía .......................................................................................................................................77
Apéndice 1. Código Fuente ..............................................................................................................78
index.php .....................................................................................................................................78
index.js .........................................................................................................................................79
index.css .......................................................................................................................................81
functions.js ...................................................................................................................................83
database-config.php.....................................................................................................................86
Database.sql .................................................................................................................................86
fixtures.sql ....................................................................................................................................89
session-class.php ..........................................................................................................................89
| Introducción.
VII
crud-class.php ..............................................................................................................................93
pwd-class.php ..............................................................................................................................95
registra.php ..................................................................................................................................96
savexml.php .................................................................................................................................97
creapdf.php ..................................................................................................................................98
proyectos.xml ...............................................................................................................................99
configurar.php..............................................................................................................................99
Apéndice 2. Manual de Operación .................................................................................................101
Sitio del Administrador ...............................................................................................................101
Sitio del Profesor ........................................................................................................................104
Sitio Principal ..............................................................................................................................108
Índice de Figuras
Figura 1. Esquema de evolución de HTML y XHTML .........................................................................11
Figura 2. Tecnologías agrupadas bajo el concepto de AJAX .............................................................16
Figura 3. (izq) Modelo Tradicional de las aplicaciones Web. (der) Modelo Ajax (Garrett) ...............17
Figura 4. Arquitectura de Comunicación en PHP ..............................................................................19
Figura 5. Diagrama de casos de uso del profesor .............................................................................21
Figura 6. Diagrama de casos de uso para el alumno........................................................................22
Figura 7. Diagrama de casos de uso para el administrador ..............................................................23
Figura 8. Ciclo de vida del software ..................................................................................................25
Figura 9. Niveles de Acceso en el Portal ...........................................................................................32
Figura 10. Diagrama a bloques del Sitio Principal.............................................................................32
Figura 11. Diagrama a bloques del Sitio de nivel de acceso de profesores .....................................33
Figura 12. Diagrama a bloques del sitio de nivel de acceso del administrador ................................33
Figura 13. Modelo de la Base de Datos ............................................................................................34
Figura 14. Sistema de clases para el manejo de Sesiones ................................................................37
Figura 15. Sistema de clases para la interfaz AJAX ...........................................................................38
Figura 16. Clase para la abstracción de datos ..................................................................................39
Figura 17. Distribución de carpetas ..................................................................................................40
Figura 18. Distribución de Archivos I ................................................................................................41
Figura 19. Distribución de Archivos II ...............................................................................................42
Figura 20. Distribución de archivos III ..............................................................................................43
Figura 21. Captura de pantalla del sitio principal .............................................................................44
Figura 23. Captura de pantalla de los Horarios de clase ...................................................................45
Figura 22. Captura de pantalla del mapa curricular .........................................................................45
Figura 24. Captura de pantalla de los proyectos de titulación .........................................................46
| Introducción.
VIII
Figura 25. Captura de pantalla del formulario de registro del alumno .............................................47
Figura 26. Captura de pantalla de inicio de sesion del alumno ........................................................47
Figura 27. Captura de pantalla del formulario de evaluación de profesores ....................................48
Figura 28. Captura de pantalla de ingreso de comentarios y sugerencias para los profesores ........48
Figura 29. Captura de pantalla de las materias de Computación .....................................................49
Figura 30. Captura de pantalla de los sitios de profesores ...............................................................49
Figura 31. Captura de pantalla de la información del profesor ........................................................50
Figura 32. Captura de pantalla del reproductor de videos ..............................................................51
Figura 33. Captura de pantalla del sitio principal del profesor .........................................................52
Figura 34. Captura de pantalla para agregar contenido al sitio Personal ........................................53
Figura 35. Captura de pantalla del sitio personal en modo edición .................................................53
Figura 36. Captura de pantalla de configuración del enlace permanente ........................................54
Figura 37. Captura de pantalla del mensaje de configuración correcta ...........................................54
Figura 38. Captura de pantalla para agregar un video .....................................................................55
Figura 39. Captura de pantalla para modificar el sitio de la materia ................................................56
Figura 40. Captura de pantalla del módulo de perfil ........................................................................57
Figura 41. Captura de pantalla de las gráficas de resultado de la evaluación de profesores ...........58
Figura 42. Captura de pantalla de consulta de los comentarios hechos a los alumnos ....................58
Figura 43. Captura de pantalla del inicio de Sesión del administrador.............................................59
Figura 44. Captura de pantalla del módulo de Avisos ......................................................................60
Figura 45. Captura de pantalla del módulo de avisos en modo de edición ......................................60
Figura 46. Captura de pantalla del manejador de Banners ..............................................................61
Figura 47. Captura de pantalla del generador de claves de acceso ..................................................62
Figura 48. Captura de pantalla donde se muestran las claves de acceso .........................................62
Figura 49. Captura de pantalla para mostrar las claves disponibles .................................................63
Figura 50. Captura de pantalla para enviar un correo electrónico ...................................................63
Figura 51. Distribución del costo total..............................................................................................64
Figura 52. Materiales Directos .........................................................................................................65
Figura 53. Sueldos y Salarios ............................................................................................................66
Figura 54. Gastos indirectos .............................................................................................................66
Figura 55. Costo de Administración..................................................................................................67
Índice de Tablas
Tabla 1. Requerimientos no funcionales del servidor ......................................................................24
Tabla 2. Requerimientos no funcionales del cliente .........................................................................24
Tabla 3. Precio de venta ...................................................................................................................67
| Introducción.
IX
Introducción.
Este proyecto surge como una necesidad de estar al día en los cambios tecnológicos
que se presentan, donde estar a la vanguardia es parte fundamental para las instituciones
educativas, es por esto que el equipo de este proyecto de la carrera de Ingeniería en
Comunicaciones y Electrónica del Instituto Politécnico Nacional, ha decidido crear un
Portal Web para la Academia de Computación.
Atendiendo las necesidades de la Academia de Computación, el presente trabajo se
centró en la construcción de un Portal Web funcional, que muestre los conceptos
aprendidos en las materias de Ingeniería de Software y lenguajes de Internet, y aplicarlos
al sitio Web creado para la Academia en mención, con el fin de gestionar las actividades
académicas. Se mostrarán los aspectos que se deben tener en cuenta para construir un
Sistema de información como servicio Web.
| Introducción.
X
Objetivo general.
Crear aplicaciones con servicio por la Web para la administración académica,
aplicando los conocimientos adquiridos, utilizando la red o intranet.
Objetivo particular.
Crear aplicaciones donde se utilicen Bases de Datos como un servicio Web,
facilitando el manejo de la información entre profesores y alumnos.
Descripción.
Realizar sistemas de información utilizando la red Web. Los sistemas de
información utilizarán al menos las tres capas fundamentales (usuario, negocios,
persistencia).
| Objetivo general.
XI
Capítulo 1. Planteamiento del problema.
Descripción del problema.
Dentro de la Academia de Computación, se necesita facilitar el manejo de la
información generada por profesores y alumnos, como son programas de estudio,
proyectos de investigación, guías de estudio, exámenes tipo, tareas, avisos para el grupo,
comunicación entre profesores, y otros recursos académicos.
Toda la información existente de la academia se encuentra dispersa y no está
concentrada en una sola aplicación, por esta razón nos encontramos con profesores que
tienen sus páginas Web en distintos sitios. Para el alumno, esta situación se presenta
difícil, al tener que buscar por muchos sitios para encontrar la información de sus distintas
materias.
Qué mejor solución a este problema que un Portal Web, en donde se pueda
clasificar y ordenar toda la información, de tal manera que el personal académico y
estudiantil pueda estar al tanto de los sucesos más recientes en sus materias y con sus
profesores.
| Capítulo 1. Planteamiento del problema.
1
Formulación.
A partir de la investigación de varios sistemas de información de las academias a
nivel de universidades, definir cuáles son las características de requerimientos
funcionales y usabilidad que se necesitan, para que un Portal de la Academia de
Computación brinde un servicio adecuado en el manejo de información para los
estudiantes y profesores.
Delimitación.
El desarrollo del proyecto, consiste en la creación de un Portal Web que
gestione las actividades académicas en el Instituto Politécnico Nacional, basados en la
investigación acerca de la Ingeniería de software y en específico en la ingeniería Web.
El objetivo es aplicar los conceptos adquiridos durante la investigación, de tal
forma que éstos sean la base para construir una aplicación, que gestione
información como: programas de estudios, proyectos de investigación, guías de estudio,
exámenes, tareas, avisos, foros, comunicación entre profesores, sitios de cada profesor y
otros recursos académicos.
| Capítulo 1. Planteamiento del problema.
2
Justificación.
Debido al desarrollo tecnológico y las demandas que son requeridas por los
usuarios, la Academia de Computación de ESIME Zacatenco se ve en la necesidad de hacer
uso de nuevas tecnologías y herramientas en los procesos de educativos, que tienen como
finalidad el desarrollo de aplicaciones Web con el fin de no quedarse atrás en el avance
tecnológico.
De igual manera, el proyecto aportará un instructivo que servirá de guía en la
creación de sistemas de información como servicios Web, para posteriores proyectos en la
escuela.
| Capítulo 1. Planteamiento del problema.
3
Capítulo 2. Marco teórico.
Antecedentes Teóricos.
En 1989 Tim Berners Lee inventó lo que hoy en día se conoce como HTML
(HyperText Markup Language) que permitía separar la implementación de la información
que se le mostraba al usuario, también creó el HTTP (Hyper Text Transfer Protocol), que
permitía a los servidores comunicarse con los clientes. (Berners-Lee)
Cuando aparecieron las páginas Web, solamente tenían contenido estático, lo cual
para comenzar estaba bien, los científicos intercambiaban textos de sus investigaciones.
Sin embargo, al popularizarse Internet los usuarios comenzaron a demandar un contenido
que les permitiera interactuar con los sitios Web.
La primera solución que se creó fue la de los scripts CGI (Common Gateway
Interface), los cuales pueden ser creados en diferentes lenguajes de programación,
pasando por PERL hasta Visual Basic, estos scripts son rutinas que se ejecutan del lado del
servidor, cuando el cliente envía una petición. No obstante, los scripts CGI son lentos y
poco seguros, pero aún son usados en diversos sitios Web.
PHP (acrónimo de "PHP: Hypertext Preprocessor") es un lenguaje de "código
abierto" interpretado, de alto nivel, incrustado en páginas HTML y ejecutado en el
servidor. (php.net)
Fue creado en 1995, por Rasmus Lerdorf, con el objetivo de dar dinamismo a las
páginas Web, su principal ventaja es la gran cantidad de extensiones que permiten
aumentar su potencial, y se hizo popular varios años después.
Paralelamente, Netscape trabajaba en un lenguaje que permitiera a los
desarrolladores que no estaban familiarizados con Java, crear aplicaciones dinámicas. Para
esto la compañía contrató a Brendan Eich con el fin de diseñar e implementar un lenguaje
de encriptación al cual actualmente se le conoce como JavaScript, éste tenía como
objetivo ayudar a los desarrolladores a modificar los atributos de sus páginas de forma
dinámica, y así proveer al usuario una mejor experiencia.
| Capítulo 2. Marco teórico.
4
En 1997, cuando Netscape y Microsoft lanzaron las versiones 4.0 de sus
navegadores, los cuales implementaban la versión 1.1 del protocolo HTTP, los
desarrolladores podían crear nuevas aplicaciones basadas en DHTML1. La combinación de
estas tecnologías, le permitía a los desarrolladores modificar el contenido y la estructura
de las páginas rápidamente.
Sin embargo, las implementaciones para cada uno de estos navegadores eran
diferentes, lo cual ha sido un problema para DHTML. Además, los costos de desarrollo
también fueron altos, debido a la gran cantidad de código necesario para crear las
aplicaciones.
La W3C2 creó XML (eXtensible Markup Language) en 1998, como una forma de
representar información, también se pretendía estandarizar las páginas Web, debido a
que las aplicaciones de XML han llegado mucho más lejos y actualmente, es usado como
un metalenguaje en diferentes aplicaciones tanto de Web, como de plataforma.
1
Dynamic Hyper Text Language.- Es una unión entre HTML, CSS (Cascading Style Sheets) y JavaScript.
Wide World Web Consortium. Es una Organización que desarrolla estándares para guiar el desarrollo y
expansión de la Web. Organizado por el CERN y el MIT y apadrinado por varias empresas.
2
| Capítulo 2. Marco teórico.
5
Estado Del Arte
Las páginas que actualmente se están desarrollando obedecen a la demanda de un
usuario que requieren de una respuesta rápida, y la inclusión de un mayor número de
servicios como podrían ser televisión, telefonía, radio, seguridad, automatización en
algunas tareas o servicios, para lo cual también hay que hacer uso de las ultimas
herramientas de desarrollo y lenguajes orientados a servicios específicos.
Anteriormente la Academia de Computación contaba con una página web, la cual
ya no se encuentra disponible en la red; esta página no cubría las necesidades actuales y
demandantes de los docentes de la Academia de Computación, además de que no era
muy formal, pero esto no quita que era de mucha utilidad para la comunidad estudiantil,
en ella se podían encontrar vínculos para sitios de profesores pertenecientes a la
academia, guías de estudio, algunos apuntes y programas de estudio, esto nos sirvió para
ver que se tenía actualmente y partiendo de ahí, se buscaron otros servicios que se
podrían brindar a profesores y alumnos, se consultaron otras páginas de diferentes
instituciones académicas, como lo son, el Tecnológico de Monterrey, UNAM y UAM, entre
otras.
Actualmente en la realización de páginas Web se está usando más, el software de
distribución libre como lo es PHP y las Bases de Datos MySQL, usando plataformas Linux
en servidores Apache, esto no implica que no se estén usando aunque con menos
frecuencia los servidores Microsoft, para proyectos basados en tecnología ASP, los cuales
han sido lentamente desplazados por las tecnologías mencionadas anteriormente.
Se están elaborando páginas Web homologadas por el W3C (World Wide Web
Consortium), como máximo organismo internacional que lidera la World Wide Web, hacia
su máximo potencial con la creación de protocolos, guías y pautas a seguir para un
desarrollo Web lógico y uniforme, teniendo en cuenta lo antes mencionado, con lo que se
consigue que las páginas Web sean compatibles con el hardware y software que se están
usando en la actualidad.
En cuanto a flexibilidad, hoy en día la mayoría de las páginas Web cuentan con un
panel de control, en donde se pueden gestionar todas las funciones y todos los contenidos
que se publican, como lo son la alta y permisos de usuarios, actualización de banners y
creatividades de la Web, control de peticiones y registro de clientes, modificación de los
contenidos en la Base de Datos, envío de boletines y comunicados, etc.
| Capítulo 2. Marco teórico.
6
Marco Conceptual.
Ingeniería de Software.
Con el crecimiento espectacular de la demanda de sistemas de computación cada
vez más y más complejos, asociado a la inmadurez del propio sector informático y a la
falta de métodos y recursos, provocó lo que se llamó la crisis del software (en palabras de
Edsger Dijkstra) entre los años 1965 y 1985. (Marc Gibert Ginestá, 2005)
Así pues, desde 1985 hasta el presente, han ido apareciendo herramientas,
metodologías y tecnologías que se presentaban como la solución definitiva al problema de
la planificación, previsión de costes y aseguramiento de la calidad en el desarrollo de
software.
Entre las herramientas, la programación estructurada, la programación orientada a
objetos, la programación orientada a los aspectos, la documentación, los estándares, los
servicios Web y el lenguaje UML (entre otros) fueron todos anunciados en su momento
como la solución a los problemas de la ingeniería del software.
Ciclo de vida del software
Se llama ciclo de vida del software a las fases por las que pasa un proyecto de
software desde que es concebido, hasta que está listo para usarse. Es por eso que se han
propuesto varios modelos: en cascada, incremental, evolutivo, en espiral, o concurrente,
para describir el progreso real del proyecto.
El modelo en cascada es el más simple de todos ellos y sirve de base para el resto.
Simplemente asigna unas actividades a cada fase, que servirán para completarla y para
proporcionar los requisitos de la siguiente. Así, el proyecto no se diseña hasta que ha sido
analizado, o se desarrolla hasta que ha sido diseñado, o se prueba hasta que ha sido
desarrollado.
| Capítulo 2. Marco teórico.
7
A continuación se describirán las principales fase del modelo en cascada .
Análisis
El análisis de requisitos es la primera fase de la vida de un proyecto. En ella, habrá
que recoger tanto las necesidades del usuario del producto, al más alto nivel, como la
especificación de los requisitos de software del sistema.
Diseño
El diseño es la primera etapa técnica del proceso de Ingeniería de Software,
consiste en producir un modelo o representación técnica del software que se va a
desarrollar.
Implementación.
En esta fase de desarrollo de software se realiza la codificación y se lleva a cabo
todo lo planeado en las fases de análisis y diseño.
Pruebas
Los elementos, ya programados, se ensamblan para componer el sistema y se
comprueba que funciona correctamente antes de ser puesto en explotación.
Implantación
El software obtenido se pone en producción. Se implantan los niveles de software
y hardware que componen el proyecto. La implantación es la fase con más duración y con
más cambios en el ciclo de elaboración de un proyecto. Es una de las fases finales del
proyecto.
| Capítulo 2. Marco teórico.
8
UML
Existen muchas técnicas orientadas a modelar un aspecto de los sistemas de
información, Bases de Datos, interfaces de usuario, componentes, flujos de datos, etc.,
pero pocas han aportado un enfoque global al problema.
A finales de los años noventa, una empresa en particular (Rational Corp.) empezó
una iniciativa para desarrollar un estándar de modelado a la que se sumaron científicos y
otras empresas del sector. Así nació UML (Unified Modeling Language), que hoy en día
sigue siendo el método de modelado más completo y aceptado en la industria.
Un diagrama nos permitirá representar gráficamente un conjunto de elementos
del modelo, a veces como un grafo con vértices conectados, y otras veces como
secuencias de figuras conectadas que representen un flujo de trabajo.
Cada punto de vista del sistema (y cada nivel de detalle) podrá modelarse y ese
modelo podrá representarse gráficamente. Lo que UML propone es una notación y un
conjunto de diagramas que abarcan las perspectivas más relevantes del sistema. Estos
diagramas son:
Diagrama de casos de uso
Diagrama de clases
Diagrama de Casos de Uso
Los casos de uso son una herramienta esencial en la toma de requisitos del
sistema. Nos permiten expresar gráficamente las relaciones entre los diferentes usos del
mismo y sus participantes o actores. El resultado es un conjunto de diagramas muy
fácilmente entendibles tanto por el cliente, como por los analistas del proyecto.
Diagrama de Clases
La realización de un diagrama de clases está en la frontera entre el análisis y el
diseño. Probablemente es el diagrama UML más conocido, y nos permite identificar la
estructura de clases del sistema incluyendo las propiedades y métodos de cada clase.
También representan las relaciones que existen entre las clases tales como herencia,
generalización, agregación.
| Capítulo 2. Marco teórico.
9
HTML.
HyperText Markup Language (Lenguaje de marcación de Hipertexto) es el lenguaje
de marcas de texto utilizado normalmente en la www (World Wide Web).
Fue creado en 1986 por el físico nuclear Tim Berners-Lee; el cual tomó dos
herramientas preexistentes: El concepto de Hipertexto (Conocido también como link o
ancla), que permite conectar dos elementos entre sí y el SGML (Lenguaje Estándar de
Marcación General), el cual sirve para colocar etiquetas o marcas en un texto que indique
como debe verse. HTML no es propiamente un lenguaje de programación como C++,
Visual Basic, etc., sino un sistema de etiquetas. HTML no presenta ningún compilador, por
lo tanto algún error de sintaxis que se presente, éste no lo detectará y se visualizara en la
forma como éste lo entienda.
El funcionamiento de HTML se limita a los siguientes pasos:
i.
Se abre el explorador.
ii.
Se envía una solicitud de archivos HTML al servidor remoto mediante la URL.
iii.
El servidor procesa la solicitud y envía datos al navegador del usuario.
iv.
Una vez que los datos llegan al navegador del usuario, interpreta todas esas
etiquetas, imágenes, sonidos, entre otros, reconstruyendo la página como es
originalmente.
Ya que HTML no fue suficiente para cubrir las necesidades de los usuarios, se
buscaron diferentes alternativas que se describirán a continuación.
| Capítulo 2. Marco teórico.
10
XHTML.
XHTML (Lenguaje de Marcado de Hipertexto Extensible) es una versión más
estricta y limpia de HTML, que nace precisamente con el objetivo de remplazar a HTML
ante su limitación de uso, con las cada vez más abundantes herramientas basadas en XML.
(w3c)
XHTML, al estar orientado al uso de un etiquetado correcto, exige una serie de
requisitos básicos a cumplir, en lo que a código se refiere. Entre estos requisitos básicos se
puede mencionar una estructuración coherente dentro del documento, donde se
incluirían elementos correctamente anidados, etiquetas en minúsculas, elementos
cerrados correctamente, atributos de valores entrecomillados, etc.
XHTML es muy similar al lenguaje HTML. De hecho, XHTML no es más que una
adaptación de HTML al lenguaje XML. Técnicamente, HTML es descendiente directo del
lenguaje SGML, mientras que XHTML lo es del XML. Esto se puede apreciar mejor en la
siguiente figura.
Figura 1. Esquema de evolución de HTML
y XHTML
| Capítulo 2. Marco teórico.
11
DOM.
DOM (Document Object Model) es la representación orientada a objetos de una
página, que puede ser modificada con un lenguaje de encriptación como JavaScript. Fue
estandarizado por la W3C en diferentes niveles. El DOM nivel 1 fue terminado en Octubre
de 1998 y dio como resultado HTML 4.0 y XML 1.0, el DOM nivel 2 terminado en
Noviembre de 2000 incluye a CSS, pero aún no está implementado por todos los
navegadores y la última es conocida como DOM nivel 3, incluye la versión 1.1 de XML,
XML Schema 1.0 y SOAP 1.2, estos niveles están diseñados para crear la forma de
modificar el contenido de un documento DOM con contenido XML independientemente
del Sistema Operativo y el lenguaje que se desea usar.
DOM está basado en la orientación de objetos. Define los objetos que son
necesarios para representar y modificar documentos, los atributos y la relación entre
dichos atributos.
XML.
XML (Extensible Markup Language) es un Lenguaje de Etiquetado Extensible muy
simple, pero estricto, que juega un papel fundamental en el intercambio de una gran
variedad de datos. Es un lenguaje muy similar a HTML pero su función principal es
describir datos y no mostrarlos, como es el caso de HTML. XML es un formato que permite
la lectura de datos a través de diferentes aplicaciones. (w3c)
JavaScript.
JavaScript es un lenguaje de programación que se utiliza principalmente para crear
páginas Web dinámicas.
Una página Web dinámica es aquella que incorpora efectos como texto que
aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas
con mensajes de aviso al usuario.
Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que
no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas
escritos con JavaScript se pueden probar directamente en cualquier navegador, sin
necesidad de procesos intermedios.
JavaScript posee varias versiones que van desde la 1.0 hasta la 1.5, las cuales ahora
se encuentran compactadas en un estándar ECMAScript-262, impuesto por la organización
ECMA (Asociación Europea de Manufactura de Computadores).
| Capítulo 2. Marco teórico.
12
CSS.
CSS (Cascading Style Sheets) es un lenguaje de hojas de estilos, creado para
controlar el aspecto o presentación de los documentos electrónicos definidos con HTML y
XHTML. CSS es la mejor forma de separar los contenidos y su presentación y es
imprescindible para crear páginas Web complejas.
La separación de los contenidos y su presentación presenta numerosas ventajas, ya
que obliga a crear documentos HTML/XHTML bien definidos y con significado completo
(también llamados “documentos semánticos”). Además, mejora la accesibilidad del
documento, reduce la complejidad de su mantenimiento y permite visualizar el mismo
documento en infinidad de dispositivos diferentes.
Mientras que el lenguaje HTML/XHTML se utiliza para marcar los contenidos, es
decir, para designar lo que es un párrafo, lo que es un titular o lo que es una lista de
elementos, el lenguaje CSS se utiliza para definir el aspecto de todos los contenidos, es
decir, el color, tamaño y tipo de letra de los párrafos de texto, la separación entre titulares
y párrafos, la tabulación con la que se muestran los elementos de una lista, etc.
| Capítulo 2. Marco teórico.
13
Tecnología .NET
.NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo
de software con énfasis en transparencia de redes, con independencia de la plataforma de
hardware y que permita un rápido desarrollo de aplicaciones.
La norma (incluido en ECMA-335, ISO/IEC 23271) que define el conjunto de
funciones que debe implementar la biblioteca de clases base (BCL por sus siglas en inglés),
define un conjunto funcional mínimo que debe implementarse para que el marco de
trabajo sea soportado por un sistema operativo.
.NET soporta ya más de 20 lenguajes de programación y es posible desarrollar
cualquiera de los tipos de aplicaciones soportados en la plataforma con cualquiera de
ellos.
Algunos de los lenguajes desarrollados para el marco de trabajo .NET son: C#,
Visual Basic, Delphi (Object Pascal), C++, J#, Perl, Python, Fortran, Cobol y PowerBuilder.
Common Language Runtime (CLR)
Este es el lenguaje insignia de .NET Framework (marco de trabajo .NET) y pretende
reunir las ventajas de lenguajes como C, C++ y Visual Basic en uno solo. El CLR es el
verdadero núcleo del Framework de .NET, entorno de ejecución en el que se cargan las
aplicaciones desarrolladas en los distintos lenguajes, ampliando el conjunto de servicios
del sistema operativo.
Características
Es el encargado de proveer lo que se llama coadministrador, es decir, un entorno
que provee servicios automáticos al código que se ejecuta.
Cargador de clases: permite cargar en memoria las clases.
Compilador MSIL a nativo: transforma código intermedio de alto nivel
independiente del hardware que lo ejecuta a código de máquina propio del
dispositivo que lo ejecuta.
Administrador de código: coordina toda la operación de los distintos subsistemas
del Common Language Runtime.
Recolector de basura: elimina de memoria objetos no utilizados.
Motor de seguridad: administra la seguridad del código que se ejecuta.
Motor de depuración: permite hacer un seguimiento de la ejecución del código
aún cuando se utilicen lenguajes distintos.
Verificador de tipos: controla que las variables de la aplicación usen el área de
memoria que tienen asignado.
| Capítulo 2. Marco teórico.
14
Administrador de excepciones: maneja los errores que se producen durante la
ejecución del código.
Soporte de multiproceso (threads): permite ejecutar código en forma paralela.
Empaquetador de COM: coordina la comunicación con los componentes COM para
que puedan ser usados por el .NET Framework.
Soporte de la Biblioteca de Clases Base: interfaz con las clases base del .NET
Framework. Esto quiere decir que existen tipos de estructuras como es la de java y
la .NET
Biblioteca de clases .NET
La Biblioteca de Clases Base (BCL por sus siglas en inglés) maneja la mayoría de las
operaciones básicas que se encuentran involucradas en el desarrollo de aplicaciones,
incluyendo entre otras:
Interacción con los dispositivos periféricos.
Manejo de datos (ADO.NET).
Administración de memoria.
Cifrado de datos.
Transmisión y recepción de datos por distintos medios (XML, TCP/IP).
Administración de componentes Web que corren tanto en el servidor como en el
cliente (ASP.NET).
Manejo y administración de excepciones.
Manejo del sistema de ventanas.
Herramientas de despliegue de gráficos (GDI+).
Herramientas de seguridad e integración con la seguridad del sistema operativo.
Manejo de tipos de datos unificado.
Interacción con otras aplicaciones.
Manejo de cadenas de caracteres y expresiones regulares.
Operaciones aritméticas.
Manipulación de fechas, zonas horarias y periodos de tiempo.
Manejo de arreglos de datos y colecciones.
Manipulación de archivos de imágenes.
Aleatoriedad.
Generación de código.
Manejo de idiomas.
Auto descripción de código.
Interacción con el API Win32 o Windows API.
Compilación de código.
| Capítulo 2. Marco teórico.
15
AJAX.
El término AJAX se acuñó por primera vez en el artículo “Ajax: A New Approach to
Web Applications”, publicado por Jesse James Garrett el 18 de Febrero de 2005. Hasta ese
momento, no existía un término normalizado que hiciera referencia a un nuevo tipo de
aplicación Web que estaba apareciendo.
En realidad, el término AJAX es un acrónimo de Asynchronous JavaScript + XML,
que se puede traducir como “JavaScript asíncrono + XML”.
El artículo define AJAX de la siguiente forma:
Ajax no es una tecnología en sí mismo. En realidad, se trata de la unión de varias
tecnologías que se desarrollan de forma autónoma, y que se unen de formas nuevas y
sorprendentes. (Garrett)
Las tecnologías que forman AJAX son:

XHTML y CSS, para crear una presentación basada en estándares.

DOM, para la interacción y manipulación dinámica de la presentación.

XML, XSLT y JSON, para el intercambio y la manipulación de información.

XMLHttpRequest, para el intercambio asíncrono de información.

JavaScript, para unir todas las demás tecnologías.
En la siguiente figura se muestran estas tecnologías que son agrupadas bajo el
concepto de AJAX.
Figura 2. Tecnologías agrupadas bajo el concepto de AJAX
| Capítulo 2. Marco teórico.
16
Desarrollar aplicaciones AJAX, requiere un conocimiento avanzado de todas y cada
una de las tecnologías anteriores.
En las aplicaciones Web tradicionales, las acciones del usuario en la página,
desencadenan llamadas al servidor.
Una vez procesada la petición del usuario, el servidor devuelve una nueva página
HTML al navegador del usuario.
En la siguiente figura se puede observar el modelo tradicional de las aplicaciones
Web, así como el modelo Ajax.
Figura 3. (izq) Modelo Tradicional de las aplicaciones Web. (der) Modelo Ajax (Garrett)
Esta técnica tradicional para crear aplicaciones Web funciona correctamente, pero
no crea una buena sensación al usuario. Al realizar peticiones continuas al servidor, el
usuario debe esperar a que se recargue la página con los cambios solicitados. Si la
aplicación debe realizar peticiones continuas, la aplicación Web se convierte en algo más
molesto que útil.
AJAX permite mejorar completamente la interacción del usuario con la aplicación,
evitando las recargas constantes de la página, ya que el intercambio de información con el
servidor se produce en un segundo plano.
| Capítulo 2. Marco teórico.
17
Las aplicaciones construidas con AJAX eliminan la recarga constante de páginas,
mediante la creación de un elemento intermedio entre el usuario y el servidor. La nueva
capa intermedia de AJAX mejora la respuesta de la aplicación, ya que el usuario nunca se
encuentra con una ventana del navegador vacía, esperando la respuesta del servidor.
Framework Ajax Extjs
Soporte definido en la cual otro proyecto de software puede ser organizado y
desarrollado. Típicamente, un Framework puede incluir soporte de programas, bibliotecas
y un lenguaje interpretado entre otros software, para ayudar a desarrollar y unir los
diferentes componentes de un proyecto.
Un Framework representa una arquitectura de software que modela las relaciones
generales de las entidades del dominio. Provee una estructura y una metodología de
trabajo, la cual extiende o utiliza las aplicaciones del dominio.
Los Frameworks son diseñados con el intento de facilitar el desarrollo de software,
permitiendo a los diseñadores y programadores, pasar más tiempo identificando
requerimientos de software, que tratando con los tediosos detalles de bajo nivel de
proveer un sistema funcional.
| Capítulo 2. Marco teórico.
18
PHP.
PHP es un lenguaje de scripting que permite la generación dinámica de contenidos
en un servidor Web. Su nombre oficial es PHP: HyperText Preprocessor. (Rubio)
La primera versión de PHP se remonta a 1994, y en sus orígenes, no eran más que
una serie de scripts CGI escritos en Perl. Sin embargo, fue reescrito en su tercera versión
por Andi Gutmans y Zeev Suraski, con el fin de mejorar el funcionamiento y agregar
nuevas funcionalidades, basado en C / C++, pero con funciones de otros lenguajes como
Pascal, Basic y Perl.
En el siguiente esquema se puede observar el proceso de la arquitectura de
comunicación den PHP.
Figura 4. Arquitectura de Comunicación en PHP
La versión más reciente de PHP es la 5.0, tiene ventajas como el soporte de XML
(libxml2 library), una nueva extensión SimpleXML, extensión SOAP (interoperabilidad),
MySQLi, mejora del streaming para acceder a operaciones sobre sockets. PHP está muy
relacionado con HTML, ya que en algunos casos hay código PHP insertado dentro de
HTML; una vez interpretado PHP, éste genera una página HTML que será enviada al
cliente.
| Capítulo 2. Marco teórico.
19
MySql
Es un gestor de Base de Datos sencillo de usar e increíblemente rápido. También es
uno de los motores de Base de Datos más usados en Internet, la principal razón de esto,
es que es software libre para aplicaciones no comerciales.
Las características principales de MySQL son:
Es un gestor de Base de Datos. Una Base de Datos es un conjunto de datos y un
gestor de Base de Datos, es una aplicación capaz de manejar este conjunto de
datos de manera eficiente y cómoda.
Es una Base de Datos relacional. Una Base de Datos relacional es un conjunto de
datos que están almacenados en tablas, entre las cuales se establecen unas
relaciones para manejar los datos, de una forma eficiente y segura. Para usar y
gestionar una Base de Datos relacional se usa el lenguaje estándar de
programación SQL.
Es Open Source. El código fuente de MySQL se puede descargar y está accesible a
cualquiera, por otra parte, usa la licencia GPL3 para aplicaciones no comerciales.
Es una Base de Datos muy rápida, segura y fácil de usar. Gracias a la colaboración
de muchos usuarios, la Base de Datos se ha ido mejorando optimizándose en
velocidad. Por eso es una de las Bases de Datos más usadas en Internet.
3
Licencia Pública General.- Es una licencia creada por la Free Software Foundation y orientada
principalmente a los términos de distribución, modificación y uso de software. Su propósito es declarar que
el software cubierto por esta licencia es Software Libre.
|
20
Capítulo 3. Análisis
Diagramas de Caso de Uso
Los diagramas de caso de uso (Use Case Diagram), definidos en UML, son una
representación gráfica de las interacciones de los usuarios y su funcionalidad. Los casos de
uso nos sirven para obtener los requisitos de un sistema o de un software.
Caso de Uso de Profesores
Los profesores tendrán un mayor acceso a la información contenida del sitio Web.
Revisar la Evaluación de profesores.
Visualizar y editar sus sitios personales.
Modificar su información personal.
Subir materiales de apoyo como videos Académicos.
Editar los Sitios de las Materias que imparte.
Diagrama de Caso de Uso de Profesores
A continuación en la figura 5 se puede visualizar este diagrama de Caso de Uso del
profesor.
Figura 5. Diagrama de casos de uso del profesor
| Capítulo 3. Análisis
21
Caso de Uso para Alumnos
El uso general de un estudiante para la aplicación Web, se basa simplemente en la
información que los profesores proporcionen y las opciones son:
Visualización de la página principal.
Visualización de los sitios de las materias y profesores.
Visualización de los programas sintéticos de cada materia.
Visualización de horarios y datos de los profesores.
Visualización de los proyectos curriculares.
Acceso a materiales de apoyo como videos Académicos.
Realizar la evaluación de Profesores.
Diagrama de Caso de Uso de los Alumnos
A continuación en la figura 6 se puede visualizar este diagrama de Caso de Uso
para el alumno.
Figura 6. Diagrama de casos de uso para el alumno
| Capítulo 3. Análisis
22
Caso de Uso para el Administrador
El Administrador tiene los permisos y posibilidades para manejar información
fundamental en el Portal Web.
Administrar proyectos de tesis.
Envío de Correo Electrónico.
Manejadores de Banners
Envío de Avisos para la Academia de Computación.
Administrar cuentas de acceso para el registro de profesores.
Diagrama de Caso de Uso para el Administrador
A continuación en la figura 7 se puede visualizar este diagrama de Caso de Uso
para el Administrador.
Figura 7. Diagrama de casos de uso para el administrador
| Capítulo 3. Análisis
23
Requerimientos no funcionales.
Requerimientos no funcionales del servidor.
Estos requerimientos son las características necesarias para que el Portal Web pueda ser
alojado en un servidor, los cuales se muestran en la Tabla 1.
Nombre
Descripción
El servidor HTTP más
ampliamente disponible en
Internet. Soporta los lenguajes
PERL y PHP.
Lenguaje de programación
para el desarrollo de Webs
dinámicas
Apache
PHP
Tipo
Criterio de
Aceptación
Servidor
Web
Software libre
Multiplataforma
Lenguaje de
servidor
Software libre
Multiplataforma
Windows
server, Unix o
Linux.
Sistema Operativo que puede
trabajar como servidor Web
Sistema
operativo
Alto desempeño
Mysql
MySQL es el servidor de Bases
de Datos relacionales más
popular en software libre.
Gestor de
Bases de
Datos
Software libre
Multiplataforma
Tabla 1. Requerimientos no funcionales del servidor
Requerimientos no funcionales del cliente.
Estos requerimientos son las características necesarias para que el Portal Web pueda ser
visualizado por los usuarios, los cuales se muestran en la Tabla 2.
Nombre
Tipo
Versión
Windows
Sistema Operativo
2000, Xp, Vista
Linux
Sistema Operativo
Kernel 2.6
Mac Os
Sistema Operativo
10 o superior
Internet Explorer
Navegador
6 o superior
Firefox
Navegador
1.5, 2.0, 3.0
Safari
Navegador
3 o superior
Opera
Navegador
9 o superior
Tabla 2. Requerimientos no funcionales del cliente
| Capítulo 3. Análisis
24
Capítulo 4. Metodología
Ciclo de Vida del Software
En cuanto al ciclo de vida del software, hemos decidido tomar el modelo iterativo
en el cual el desarrollo del software siempre continúa.
Según Grady Booch, el modelo de desarrollo iterativo e incremental, “Es un
proceso que involucra la continua integración de la arquitectura del sistema, para poder
generar los ejecutables, donde cada uno de ellos incluye una mejora sobre los otros”.
Modelo de Desarrollo Iterativo.
Dado que el proyecto de software que pretendemos realizar es largo, lo vamos a
trabajar como multiproyectos, con lo cual con cada iteración obtendremos una versión
del software. En la figura 8 se muestra un esquema del ciclo de vida del software.
Figura 8. Ciclo de vida del software
En cada una de las iteraciones, hemos de definir los objetivos que debe de cumplir
la aplicación. Se crea un análisis (diagramas de uso de UML) y posteriormente se diseñan
los diagramas de clases. Hecho esto se empieza el proceso de codificación e
implementación, para al último hacer las pruebas correspondientes y completar un ciclo.
| Capítulo 4. Metodología
25
Las principales ventajas que nos proporciona este modelo son:
En caso de que alguna iteración falle, con la ayuda de las iteraciones controladas,
sólo se pierde el esfuerzo de esa iteración y no del proyecto completo.
Acelera la velocidad de desarrollo de los programadores, dado que es más
eficiente trabajar con objetivos a corto plazo.
Optar por este modelo asegura mejores soluciones a necesidades muy cambiantes,
ya que es fácilmente adaptable a cambios del entorno.
Definición de Objetivos.
Se definieron los objetivos en cada vuelta del ciclo. Se realizaron 8 ciclos, los cuales
generaron 8 versiones que hemos nombrado con lo correspondiente a las fases de
desarrollo, definidas en la ingeniería de software.
Versiones Alfa
Estas versiones son las primeras que el equipo de desarrollo entrega, y por tanto
sólo contemplan algunas de las funcionalidades del producto final, con muchos errores y
poca estabilidad.
Versiones Beta
Estas versiones proporcionan las funcionalidades más importantes del proyecto.
Las versiones beta son generalmente usadas para dar a conocer un producto y que pueda
ser probado.
Versión RC
RC proviene del inglés Release Candidate que traduciendo sería como candidata
para lanzamiento. Estas son versiones donde no se modifica drásticamente la arquitectura
de la aplicación, y en algunas veces se congela el código (Conocido en Ingeniería del
Software como Freeze), lo cual es muy conveniente para encontrar errores o bugs.
| Capítulo 4. Metodología
26
A continuación veremos los objetivos más importantes de cada ciclo o iteración.
Alfa 1
Desarrollar la Interfaz Ajax.
Crear Imágenes y Logos.
Definir la distribución de Archivos y Carpetas.
Alfa 2
Agregar soporte de pestañas a la interfaz Ajax.
Crear el Módulo de Mapa Curricular.
Crear la ventana de Horarios.
Alfa 3
Creación del sistema de gestión de profesores.
Creación del sistema de gestión del Administrador.
Creación del módulo Sitio Personal.
Sesiones de los Profesores y el Administrador.
Beta 1
Creación del módulo Proyectos de Tesis.
Sesión de Alumnos.
Creación del módulo Evaluación de profesores.
Creación del módulo Manejador de Banners.
Beta 2
Agregar Soporte para proyectos en formato PDF.
Creación del módulo Perfil del Profesor.
Creación del módulo Sistema de Avisos.
Creación del módulo Materias tipo Wiki.
Beta 3
Creación del sistema de Registro de Profesores y Alumnos.
Creación del módulo Videos Académicos.
Optimizar la velocidad de carga del Portal.
RC
Creación del módulo Correo Electrónico Masivo.
Agregar Enlace Permanente al módulo Sitio Personal.
Proporcionar Compatibilidad con los Navegadores: Internet Explorer, Firefox,
Safari, Opera y Google Chrome.
| Capítulo 4. Metodología
27
Entornos de Trabajo
Un entorno de trabajo está definido por la ingeniería de software, como todas las
herramientas necesarias para desarrollar, producir y probar una aplicación.
Existen tres entornos de trabajo: Entorno de Desarrollo, Entorno de Producción,
Entorno de Pruebas.
Entorno de Desarrollo
El entorno de desarrollo es el conjunto de las aplicaciones que utilizamos para
desarrollar el Portal Web. Entiéndase por desarrollar como diseñar, modelar y programar.
Eclipse PDT (PHP Development Tools)
Es un proyecto de software libre basado en el IDE Eclipse, que nos proporcionó
todos los componentes necesarios, para desarrollar en el lenguaje de programación PHP
fácilmente y rápidamente.
Aptana Studio
Es un plugin para Eclipse, el cual proporciona editores avanzados para los
siguientes lenguajes: HTML, XHtml, JavaScript, Css y XML.
Umbrello
Es una herramienta de software libre que nos permite crear diagramas UML. Este
nos permite la mayoría de los diagramas soportados por UML versión 2:
Diagrama de casos de uso.
Diagrama de componentes.
Diagrama de despliegue.
Diagrama de modelo entidadrelación.
Diagrama de clases.
Diagrama de secuencia.
Diagrama de estados.
Diagrama de actividades.
Diagrama de colaboración.
| Capítulo 4. Metodología
28
PhpMyAdmin
Es una herramienta de software libre escrita en PHP, que nos permite manejar las
Base de Datos en Mysql. Actualmente puede crear y eliminar Bases de Datos, crear,
eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL,
administrar privilegios, exportar datos en varios formatos, etc.
MySql Workbench OSS
Es una herramienta de software libre, que nos permite diseñar de forma visual,
generar y gestionar Bases de Datos MySQL. Se pueden crear complejos modelos E/R,
gestión de versiones del esquema de una Base de Datos, generación automática de
documentación de una Base de Datos, ingeniería inversa, etc.
Entorno de Producción
El entorno de producción es el conjunto de software, que nos permite tener el
Portal Web de la Academia de Computación en un servidor Web y que sea accesible
mediante Internet.
El entorno de producción puede ser multiplataforma pero en nuestro caso hemos
decidido especificar el que más se acerque a la filosofía del software libre.
Sistema operativo GNU/Linux
Es el sistema operativo más utilizado con licencia libre, ofrece una gran seguridad y
trabaja perfectamente en servidores en Internet.
Apache
Apache es un servidor de software libre, más utilizado en todo Internet gracias a su
gran estabilidad y seguridad.
| Capítulo 4. Metodología
29
PHP
Es un lenguaje de programación, tanto estructurado como orientado a objetos que
se utiliza para complementar el HTML logrando hacer una Web más interactiva y
funcional. Gracias a este lenguaje se pueden desarrollar cualquier tipo de servicios, a
través de su sitio Web.
Mysql
Es un servidor de Bases de Datos relacionales, en la comunidad de software libre es
el más popular y está desarrollado por Sun MicroSystems. Cabe destacar su gran potencial
unido a la programación PHP.
PHP-GD
GD es una biblioteca de código abierto para la creación dinámica de imágenes,
mediante programación. GD puede crear Imágenes PNG, JPEG, GIF y otros formatos. Es
generalmente usada para generar gráficas, tablas, imágenes miniaturas.
| Capítulo 4. Metodología
30
Capítulo 5. Diseño
Usuarios y Permisos
En el Portal Web manejamos cuentas de usuarios, por lo cual es necesario separar
los permisos a distintos niveles del sitio. Es por eso que se definen cuatro tipos de
cuentas: Administrador, Profesor, Alumno e Invitado.
Invitado.- Posee el mínimo de permisos, lo cual implica navegación solamente por
la página principal.
Alumno.- Incluye los permisos de un Invitado pero además permite ingresar a
sitios restringidos como al módulo “Evaluación de Profesores”.
Profesor.- Este tipo de usuario cuenta con permisos especiales, como lo son:
manejo de su sitio personal, modificación de su perfil y otros que se definirán más
adelante.
Administrador.- Posee permisos de un profesor pero se aumentan permisos que
manejan información importante del sitio. Como lo son Manejador de Claves de Acceso,
Manejador de Anuncios Publicitarios, entre otras.
| Capítulo 5. Diseño
31
Separación del Portal en Niveles
Siguiendo una de las frases celebres de Julio César, “Divide y Vencerás”, hemos
distribuido el Portal Web en tres niveles: Nivel Principal, Nivel de Acceso de Profesores,
Nivel de Acceso del Administrador, como se muestra en la siguiente figura:
Portal Web de la
Academia de
Computación
Nivel Principal
Nivel de Acceso
a Profesores
Nivel de Acceso
al Administrador
Figura 9. Niveles de Acceso en el Portal
Nivel Principal
Es el sitio donde cualquier persona puede ingresar y consultar la información que
contiene. En la siguiente figura se muestra el diagrama a bloques de este nivel principal.
Sitio Principal
Mapa Curricular
Información de
los Profesores
Horarios
Avisos a la
Comunidad
Académica
Proyectos de
Titulación
Evaluación de
Profesores
Sitios Personales
de Profesores
Videos
Sitios de
Materias de
Computación
Enlaces
Figura 10. Diagrama a bloques del Sitio Principal
| Capítulo 5. Diseño
32
Nivel de Acceso de Profesores
Con ayuda de este sitio, los profesores pueden fácilmente publicar su sitio
personal, los sitios de las diferentes materias de computación, modificar sus datos
personales y subir algún video académico. En la siguiente figura se muestra el diagrama a
bloques de este nivel de acceso a profesores.
Nivel de Acceso
de Profesores
Sitio Personal
Sitios de
Materias
Información
Personal
Videos
Resultados de
Evaluación
Profesores
Figura 11. Diagrama a bloques del Sitio de nivel de acceso de profesores
Nivel de Acceso del Administrador
Este sitio permite al administrador modificar borrar y actualizar la información
importante de la Academia de Computación. En la siguiente figura se muestra el diagrama
a bloques de este nivel de acceso al administrador.
Nivel de Acceso
del
Administrador
Manejo de
Banners
Manejo de
Avisos
Manejo de
Claves de Acceso
Proyectos de
Titulación
Correo
Electrónico
Figura 12. Diagrama a bloques del sitio de nivel de acceso del administrador
| Capítulo 5. Diseño
33
Modelado de la Base de Datos
El modelado de la Base de Datos comprende la estructura de la Base de Datos, así
como las relaciones que existen entre cada una de las tablas. Este modelo se muestra en
la figura 13. El Código Fuente esta descrito en los archivos Database.sql, databaseconfig.php y fixtures.sql del Apéndice.
Figura 13. Modelo de la Base de Datos
| Capítulo 5. Diseño
34
Tablas de la Base de Datos
profesoresCompuICE
Esta es la tabla más importante de la Base de Datos, donde se concentran las
cuentas de los profesores, es decir los nombres de usuarios y sus contraseñas. A demás el
campo user_id que es el identificador de usuario que sirve para relacionar con las otras
tablas.
materiasProfesores
Esta tabla contiene la relación entre materias y profesores, dicho de otro modo
contiene las materias que imparte cada profesor.
Materias
Esta tabla almacena las materias de la Academia de Computación y su respectivo
identificador.
Wiki
Esta tabla almacena todos los sitios de las materias impartidas por la Academia de
Computación. Los campos materia_id y profesor_id, son índices que permiten
relacionarse con las tablas materias y profesoresCompuICE respectivamente.
Sugerencias
Esta tabla almacena las sugerencias realizadas por los alumnos, hacia sus
profesores en el módulo de evaluación de profesores.
EvaluaciónProfesores
Aquí se almacenan los resultados del proceso de evaluación de los profesores. Esta
tabla es crucial para generar las gráficas de resultados.
infoProfesores
Esta tabla contiene la información personal de cada uno de los profesores. Hay
campos que almacenan el nombre, los apellidos, teléfono, celular, extensión, cubículo,
horario, email, y foto.
| Capítulo 5. Diseño
35
Permalink
Esta tabla contiene los enlaces permanentes de cada profesor que lo configure,
obteniendo así acceso directo a su sitio personal vía la siguiente dirección:
http://148.204.x.x/academia/sitio/nombre_del_enlace
sitesWeb
Esta tabla almacena todos los sitios personales de los profesores. Contiene campos
como el título, texto, y la fecha de creación, así como el campo profesor_id que sirve para
relacionar con la tabla de los profesores.
Videos
En esta tabla se almacenan todos los videos que los profesores suben al servidor.
Esta tabla contiene campos como la dirección del video, el título, la duración. Estos
campos son de suma importancia para el módulo de Videos Académicos.
Alumnos
Esta tabla agrupa todos los datos personales para las cuentas de los estudiantes,
como son: nombre y apellidos, boleta, grupo, semestre, su cuenta de usuario y password.
proyectosCompuICE
Aquí se almacenan los proyectos de titulación curricular que los profesores les
ofrecen a sus alumnos.
Claves
Contiene las claves que permiten a los profesores registrarse en el Portal Web.
Banners
Esta tabla contiene información sobre los anuncios publicitarios, culturales,
académicos y deportivos que aparecen el sitio principal.
Avisos
Almacenan cada uno de los mensajes que se transmiten a toda la comunidad
estudiantil y docente.
| Capítulo 5. Diseño
36
Diagrama de Clases
Los diagramas de clases son los más utilizados para el diseño de sistemas de
software. Son parte fundamental en la ingeniería de software y quedan definidos en UML.
Muestran un conjunto de clases, interfaces, y sus relaciones entre ellas.
Diagrama de Clases para el manejo de Sesión de los usuarios.
Este diagrama se compone de cuatro clases, que se relacionan a través de la
herencia que existe con la clase Session. La clase Session provee de atributos y métodos
comunes a sus clases hijas. Cada Clase hija posee sus propios atributos y métodos, con los
cuales se pretende tener el control sobre los usuarios que ingresan en el Portal. Como se
muestra a continuación en el siguiente diagrama. El Código Fuente esta descrito en el
archivo sesión-class.php del Apéndice.
Figura 14. Sistema de clases para el manejo de Sesiones
| Capítulo 5. Diseño
37
Diagrama de Clases para la Interfaz Ajax
Este diagrama de clases muestra las relaciones que existen entre las diferentes
clases que componen a la interfaz Ajax. La interfaz Ajax es la encargada de procesar todas
las peticiones XHR (XML HTTP Request), y presentarlas en el sitio principal a través de
Pestañas o Ventanas; como se muestra a continuación. El Código Fuente esta descrito en
los archivos index.php, index.js, index.css y functions.js del Apéndice.
Figura 15. Sistema de clases para la interfaz AJAX
| Capítulo 5. Diseño
38
Diagrama de Clases para la Base de Datos
El manejo de Bases de Datos es muy complejo, es por eso que se creó una clase
que encapsule el comportamiento de la misma. A esta clase la hemos llamado CRUD.
CRUD es el acrónimo de Crear, Obtener, Actualizar y Borrar (Create, Retrieve, Update y
Delete en inglés). Es usado para referirse a las funciones básicas en Bases de Datos, o la
capa de persistencia en un sistema de software; como se ve en la siguiente figura. El
Código Fuente esta descrito en el archivo crud-class.php del Apéndice.
Figura 16. Clase para la abstracción de datos
|
39
Distribución de Archivos y Carpetas
Para la mejor organización de nuestra aplicación, se debe de tener una distribución
de carpetas, en la cual se puedan agrupar archivos relacionados, y no tener en desorden
todos los archivos. A continuación en la siguiente figura se muestran la distribución de las
carpetas del Portal de la Academia de Computación.
Figura 17. Distribución de carpetas
|
40
En la siguiente figura se pueden ver los archivos más importantes, para el
desarrollo del Portal Web de la Academia de Computación.
Figura 18. Distribución de Archivos I
|
41
A continuación, se muestran los archivos más importantes que están debajo del
directorio admin:
Figura 19. Distribución de Archivos II
|
42
Figura 20. Distribución de archivos III
|
43
Capítulo 6. Implementación
Recordando lo explicado en capítulos anteriores, la página se dividió en tres partes,
las cuales son:
Página principal
Página de profesores
Página del administrador
Este capítulo será centrado en la explicación a detalle de cada una de estas secciones,
mencionando sus opciones para el alumno, profesor y para el público en general, se
mostrará el funcionamiento de cada una de las opciones, sus atributos, y la forma de
acceso a cada uno de ellos.
Sitio Principal
La página principal a la que tendrán acceso cualquier persona llámese alumno o
cualquier otra persona ajena a la institución, cuenta con un menú principal donde se
puede consultar la curricula de los profesores, proyectos , alumnos, materias, sitios de
profesores, información de profesores, material de apoyo, también se pueden consultar
los avisos puestos por el administrador y un área de enlaces a páginas de la institución o a
sitios personales de profesores, en la siguiente figura se puede apreciar la página
principal.
Figura 21. Captura de pantalla del sitio principal
| Capítulo 6. Implementación
44
Curricula
En esta opción se pueden consultar los mapas curriculares de las materias
impartidas por la Academia de Computación, desde primer semestre hasta noveno
semestre, donde el alumno podrá visualizar el objetivo general de la materia seleccionada,
contenido sintético, metodología y la bibliografía así como descargar todo el programa
sintético de la materia impartida. Esto se puede apreciar en la siguiente figura.
Figura 22. Captura de pantalla del mapa curricular
Dentro de la opción de curricula se pueden consultar todos los horarios desde
primero hasta noveno semestre ya sea del turno matutino o vespertino, como se observa
en la siguiente figura.
Figura 23. Captura de pantalla de los Horarios de clase
| Capítulo 6. Implementación
45
Proyectos
En esta opción se podrán observar, los proyectos terminales en los que se estén
trabajando, el profesor encargado del proyecto, asesor titular, descripción del proyecto y
también se puede descargar el documento PDF del proyecto, si el alumno quiere saber
más a profundidad sobre el proyecto, como se ve en la siguiente figura. El Código Fuente
esta descrito en los archivos savexml.php, creapdf.php y proyectos.xml del Apéndice.
Figura 24. Captura de pantalla de los proyectos de titulación
| Capítulo 6. Implementación
46
Alumnos
En esta opción primeramente se debe registrar, deberá proporcionar su nombre
de usuario, su password, los cuales se le pedirán cada vez que quiera ingresar como
alumno, boleta, grupo y email; como se muestra en la siguiente figura.
Figura 25. Captura de pantalla del formulario de registro del alumno
Una vez que se haya registrado deberá proporcionar su nombre de usuario y su
contraseña, como se muestra a continuación.
Figura 26. Captura de pantalla de inicio de sesion del alumno
| Capítulo 6. Implementación
47
Ya que haya iniciado su sesión como alumno, podrá evaluar a su profesor,
proporcionando su grupo, materia y el nombre del profesor, como se muestra en la
siguiente figura.
Figura 27. Captura de pantalla del formulario de evaluación de profesores
Al final de la evaluación, el alumno podra dar sus comentarios y sugerencias a la
escuela y al profesor en cuanto a la forma de impartir la clase.
Figura 28. Captura de pantalla de ingreso de comentarios y sugerencias para los profesores
| Capítulo 6. Implementación
48
Materias
En este campo el alumno podrá consultar sus materias de computación, desde
primero hasta noveno semestre, como se muestra en la siguiente figura.
Figura 29. Captura de pantalla de las materias de Computación
Sitios Personales
Aquí se pueden verificar los sitios personales de los profesores, ya sea tareas o
cualquier otro aviso para el grupo que el profesor edite en su sitio, como se muestra a
continuación.
Figura 30. Captura de pantalla de los sitios de profesores
| Capítulo 6. Implementación
49
Información de los Profesores
En esta opción el alumno podrá estar bien informado de los datos del profesor,
como son: nombre, teléfono, lugar en donde encontrarlo y el horario en el que se le
pueda ir a consultar, como se observa en la siguiente figura.
Figura 31. Captura de pantalla de la información del profesor
| Capítulo 6. Implementación
50
Material de Apoyo
Aquí el alumno podrá tener acceso a videos didácticos, puestos por el profesor o
el administrador de la página, guías de examen, trabajos de referencia o cualquier otro
tipo de material que el profesor considere conveniente para un mejor entendimiento del
tema que se esté analizando, como se ve a continuación.
Figura 32. Captura de pantalla del reproductor de videos
| Capítulo 6. Implementación
51
Sitio de Acceso del Profesor
Para que el profesor pueda tener acceso a esta parte de la página primeramente
necesita registrase como profesor, deberá tener su clave de acceso, dada por el
administrador, una vez que se haya registrado el profesor, podrá mostrar o editar su sitio
personal de una forma fácil y sencilla, publicar calificaciones, apuntes, tareas, exámenes,
esto para brindarle un mejor servicio a la comunidad estudiantil. A continuación se
muestra el sitio principal del profesor.
Figura 33. Captura de pantalla del sitio principal del profesor
| Capítulo 6. Implementación
52
Sitio Personal del Profesor
En esta sección es donde el profesor puede editar su sitio personal, teniendo la
opción de colocar imágenes para que tenga una mejor presentación, cambiar el tipo de
letra, el color etc., como se observa en la siguiente figura.
Figura 34. Captura de pantalla para agregar contenido al sitio Personal
Una vez editado su sitio, el profesor podrá agregar o quitar partes del mismo,
como también, tendrá la opción de observar una vista previa de como se mostrará en la
página principal.
Figura 35. Captura de pantalla del sitio personal en modo edición
| Capítulo 6. Implementación
53
Ya que el profesor tenga bien definido su sitio, podrá colocarlo en la opción de
enlaces dentro de la página principal, esto se pensó para que el alumno tenga un fácil
acceso a dicho sitio, deberá colocar el título de su página y el nombre del enlace, en la
opción de modificar y automáticamente será creado el enlace permanente. Esto se puede
apreciar en las figuras 36 y 37 como se muestran a continuación. El Código Fuente esta
descrito en el archivo configurar.php del Apéndice.
Figura 36. Captura de pantalla de configuración del enlace permanente
Figura 37. Captura de pantalla del mensaje de configuración correcta
| Capítulo 6. Implementación
54
Videos
En esta pestaña, el profesor podrá subir videos, los cuales aparecerán en la página
principal en la opción de material de apoyo. Para poder subirlos correctamente deberá
colocar el título del video y la duración del mismo, así como la ruta en donde se encuentra
el archivo.
Figura 38. Captura de pantalla para agregar un video
| Capítulo 6. Implementación
55
Materias
En la pestaña de materias, el profesor podrá agregar, mostrar y editar tareas,
avisos o cualquier tipo de información que desee, notando que sólo podrá hacerlo con las
materias que imparta, indicadas a la hora de darse de alta en la página de registro a
profesores. En la siguiente figura se puede observar un ejemplo de esto.
Figura 39. Captura de pantalla para modificar el sitio de la materia
| Capítulo 6. Implementación
56
Perfil
En esta opción el profesor podrá editar su perfil, el cual aparece en la página
principal en el área de menú, dentro de la pestaña de información de profesores,
resaltando que también tiene la opción de poder subir su foto, para una mejor
presentación de su sitio, como se muestra en la figura 40.
Figura 40. Captura de pantalla del módulo de perfil
| Capítulo 6. Implementación
57
Evaluación
Aquí es donde el profesor puede observar los resultados de las evaluaciones de los
alumnos, respecto a la forma de dar su clase, teniendo un enlace donde puede consultar
los comentarios y sugerencias que se le hacen, también tendrá la opción de pasar
directamente a ver estos comentarios y sugerencias, sin necesidad de ver primero la
evaluación, como se muestra en las figuras 40 y 41 respectivamente.
Figura 41. Captura de pantalla de las gráficas de resultado de la evaluación de profesores
Figura 42. Captura de pantalla de consulta de los comentarios hechos a los alumnos
| Capítulo 6. Implementación
58
Sitio de Acceso del Administrador
En esta sección de la página el Administrador, podrá cambiar la apariencia de la
misma de una forma fácil, sin necesidad de meterse con el código de programación, será
el encargado de proporcionar a los profesores claves de acceso, tendrá la opción de poner
avisos para el personal académico de la institución, enviar correos ya sea para profesores,
alumnos o para ambos.
Primeramente se debe ingresar el nombre de usuario y la contraseña, para poder
entrar como administrador, una vez iniciada la sesión como administrador se tiene acceso
a la página donde podrá manipular todas las propiedades antes expuestas. En la siguiente
figura se observa la página de inicio de sesión del administrador.
Figura 43. Captura de pantalla del inicio de Sesión del administrador
| Capítulo 6. Implementación
59
Avisos
En la pestaña de avisos, el administrador podrá editarlos, cambiándoles el tipo de
letra, el tamaño, color etc., y serán publicados en la página principal, esto se puede ver
dando clic en el aérea de avisos, ubicado en la parte superior derecha de la página.
Figura 44. Captura de pantalla del módulo de Avisos
Ya creados los avisos, se tiene la opción de borrar y modificar, al igual que en el
sitio personal para profesores, también cuenta con la opción de mostrar la vista previa de
cómo se a visualizar en la página principal, como se muestra figura 45.
Figura 45. Captura de pantalla del módulo de avisos en modo de edición
| Capítulo 6. Implementación
60
Anuncios Publicitarios o Banners
En esta opción el administrador podrá decidir que banners colocarle a la página;
dichos banners se pueden colocar en el lado derecho, izquierdo, y central de la página
principal, la forma en la que configuramos la página es usando el lado derecho y el
izquierdo, pero el administrador podrá cambiarlos cuantas veces quiera y si lo cree
conveniente puede usar el banner central.
Figura 46. Captura de pantalla del manejador de Banners
| Capítulo 6. Implementación
61
Claves de Acceso para el Registro de Profesores
Aquí es donde el administrador va a manejar todas las claves para profesores, para
generar las claves solamente se debe colocar el número de cuantas claves se desean y dar
clic en generar, el administrador podrá generar más claves conforme se vayan agotando.
Como se muestra en las figuras 47, 48 y 49.
Figura 47. Captura de pantalla del generador de claves de acceso
Figura 48. Captura de pantalla donde se muestran las claves de acceso
| Capítulo 6. Implementación
62
Figura 49. Captura de pantalla para mostrar las claves disponibles
E-MAIL
En esta opción, el Administrador podrá enviar correos electrónicos a alumnos o
profesores o ambos, las direcciones a las que serán enviados estos coreos son las que
fueron ingresadas a la hora que se realizó el registro tanto de alumnos como de
profesores. Al igual que en las opciones anteriores, se puede aplicar formato al correo, por
ejemplo, cambiarle el tamaño a la letra, el color, tipo de letra, agregarle una imagen, etc.,
como se muestra en la figura 50.
Figura 50. Captura de pantalla para enviar un correo electrónico
| Capítulo 6. Implementación
63
Capítulo 7. Análisis de costos.
Estudio Económico.
El costo total, económicamente hablando representa toda la inversión necesaria
para producir y vender un artículo. Este costo se puede dividir en Costo de Producción,
Costo de Administración y Otros Costos. En la siguiente figura podemos apreciarlo de
manera jerárquica.
Figura 51. Distribución del costo total
Costo de Producción
Representa todas las operaciones realizadas desde la adquisición de la materia
prima, hasta su transformación en artículo de consumo o de servicio. Integrado por tres
factores que a continuación se mencionan.
| Capítulo 7. Análisis de costos.
64
1) Materia Prima
Es el elemento que se convierte en un artículo de consumo o de servicio. En
nuestro proyecto no requerimos de una materia prima como algo tangible, pero si se
pueden considerar herramientas o el software utilizado. De aquí lo dividimos en Software
Propietario (requiere de comprar una licencia de uso) y el software libre que si bien no
requiere de un gasto, puede aportarse a este tipo de software en forma de donaciones.
En la siguiente figura se pueden observar los diferentes tipos de materiales directos que
se utilizaron para la creación del Portal Web.
Figura 52. Materiales Directos
2) Sueldos y Salarios
Es el esfuerzo humano necesario para la transformación de la materia prima.
Considerando las tres capas de Presentación, Negocios y Persistencia de nuestro proyecto,
hemos considerado un puesto de trabajo que se encargue de cada capa.
Negocios. En esta capa se lleva la lógica de la aplicación, la que se va a encargar de esta
capa, es el programador.
Persistencia. En esta capa se maneja todos los datos que van a ser vaciados en la Base de
Datos, entonces debe de encargarse un experto en Base de Datos.
Presentación. En esta última capa se da la estética al sitio Web. El encargado es un
diseñador gráfico.
| Capítulo 7. Análisis de costos.
65
En la siguiente figura se muestra un lo mencionado anteriormente.
Figura 53. Sueldos y Salarios
3) Gastos Indirectos de Producción.
Son los elementos necesarios para la transformación de la materia prima, como
son: el lugar donde se trabaja, el equipo, las herramientas, la luz y fuerza, etc.
Los Gastos indirectos que identificamos en nuestro proyecto son la energía
eléctrica para las computadoras y el Internet para la comunicación del equipo, como se
muestra en la siguiente figura.
Figura 54. Gastos indirectos
| Capítulo 7. Análisis de costos.
66
Costo de Administración
Está formado por las operaciones, desde la entrega del bien de servicio o de uso al cliente,
hasta el final de la garantía o soporte. En el costo de administración hemos incluido el
montado del servidor, así como el soporte técnico durante 6 meses después de la venta,
como se aprecia en la siguiente figura.
Figura 55. Costo de Administración
Otros Costos
Comprende todas aquellas partidas no propias ni indispensables para el desarrollo de la
empresa, como por ejemplo, una huelga, un incendio, impuestos no contemplados,
aranceles, etc.
Precio de Venta
Se determina agregándole al costo total el por ciento de utilidad probable. En la siguiente
tabla podemos observar como se compone el precio de venta en nuestro proyecto.
Precio de Venta
Costo Total
Costo de
Administración
Costo de Producción
Costo Directo
Gastos
Sueldos y
Indirectos
Material
Salarios
Directo
Costo de Transformación
Gastos de
Administración
Otros
Costos
Más Margen
de Utilidad
Tabla 3. Precio de venta
| Capítulo 7. Análisis de costos.
67
Desglose de cada uno de los gastos
Datos sobre el Proyecto
Horas mensuales dedicadas al proyecto: 20 horas
Meses calculados en el trabajo sobre el proyecto: 6 meses
Horas totales del proyecto: 120 horas
Material Directo
Licencias de Macromedia con duración de 6 meses: $ 500.00
Sueldos y Salarios
Precio laboral por hora de un trabajador: $ 60.00
Ganancia por hora del trabajador: $ 20.00
Sueldo total del Trabajador por hora: $100.00
Sueldo total al transcurso de 6 meses: $9,600
Si consideramos a los 3 empleados el programador, manejador de la Base de
Datos, y el diseñador tenemos $2,880.00
Gastos Indirectos
Recibo de luz: $ 150.00
Luz por Hora: (150)/20 = 7.5
Recibo de Internet $300.00
Internet por hora: 300/20 = 15
Gastos Indirectos = ( InternetporHora + LuzporHora ) * Horas del Proyecto
Gastos Indirectos = (7.5 + 15) * 120 = $ 2,700.00
| Capítulo 7. Análisis de costos.
68
Gastos de Administración
Instalación y configuración del servidor Web: $1,000.00
Mantenimiento y soporte técnico: $1,000.00
Otros Gastos
Impuestos, IVA: $5,100.00
Margen de Utilidad de 10 %
Precio de Venta
Material Directo
$
Sueldos y Salarios
$ 28,800.00
Gastos Indirectos
$ 2,700.00
Gastos de Administración
$ 2,000.00
Otros Gastos
500.00
$ 5,100.00
-----------------Costo Total
$ 39,100.00
Precio de Venta = Costo Total + Margen de Utilidad (10%)
Precio de Venta = $ 43,100.00
| Capítulo 7. Análisis de costos.
69
Conclusiones
La interfaz Web, la navegación entre páginas y la usabilidad, son los elementos más
importantes para el desarrollo de un sitio Web, porque son los elementos que más valora
el usuario final.
Un Portal Web es un tema complejo, en el que no sólo intervienen procesos de Diseño
gráfico, sino que también son imprescindibles, aspectos como arquitectura de la
información, navegación, usabilidad, funcionalidad, programación, etc.
Un estudio del Portal Web como el que hemos presentado tiene varias aplicaciones, la más
directa tiene que ver con el desarrollo de sistemas de información como servicios Web, en
particular, los Servicios Académicos.
El Portal Web de la Academia de Computación posee características de un Sistema de
Gestión de Contenidos, el cual nos permite separar la lógica, del negocio, y del modelo de
datos. Este proyecto es la base para el desarrollo de un Sistema de Gestión de Contenidos
de la Academia de Computación, mucho más completo y con mayores funcionalidades. Y
que dentro de la institución, no hemos encontrado proyectos enfocados a estos sistemas,
dando a nuestro proyecto un valor agregado.
Una de las tecnologías que aplicamos en el proyecto es AJAX, ya que esta nos brinda una
gran cantidad de beneficios:
Facilidad por parte de la interfaz de usuario.
La trasmisión de datos, desde el servidor al usuario, se reduce hasta un 80%. Con
esto mejora la velocidad y evita las recargas constantes de las páginas.
Lo importante no ha sido la finalidad del proyecto sino su funcionalidad. Lo fundamental
para nosotros era desarrollar todo el proceso de ingeniería del software para conseguir el
mantenimiento de la Base de Datos, una consulta fácil, paginación, selecciones y una
interactividad muy intuitiva.
En definitiva, ya que se han conseguido los objetivos marcados inicialmente en la tesis,
estamos contentos por el resultado obtenido, pues los conocimientos previos de PHP y
MySQL antes de la asignatura de Lenguajes de Internet, eran nulos.
| Conclusiones
70
Recomendaciones
Consideramos necesario continuar con el desarrollo del Portal Web, agregando
funcionalidades, actualizando el contenido, y documentando el proyecto.
Realizar la validación de usuarios con métodos especializados como LDAP (Light Directory
Access Protocol) y llevar el Portal a nuevas tecnologías como la Web 3.0.
Con el crecimiento de aplicaciones AJAX, han aparecido nuevos Frameworks, por lo que es
recomendable realizar un análisis y revalorar el uso de Ext-js como Framework principal.
Existen Framewoks respaldados por grandes empresas como Google y Yahoo con GWT
(Google Web Toolkit) y YUI (Yahoo! User Interface).
| Recomendaciones
71
Glosario
ADO
El ADO.NET es un conjunto de componentes del software, que pueden ser usados por los
programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca
de clases base, que están incluidas en el Microsoft .NET Framework. Es comúnmente
usado por los programadores para acceder y para modificar los datos, almacenados en un
Sistema Gestor de Bases de Datos Relacionales.
API
Una API representa una interfaz de comunicación entre componentes software. Se trata
del conjunto de llamadas a ciertas bibliotecas, que ofrecen acceso a ciertos servicios
desde los procesos y representa un método para conseguir abstracción en la
programación, generalmente entre los niveles o capas inferiores y los superiores del
software. Uno de los principales propósitos de una API consiste en proporcionar un
conjunto de funciones de uso general.
ASP
Active Server Pages (ASP) es una tecnología de Microsoft del tipo "lado del servidor", para
páginas Web generadas dinámicamente.
BCL
La Biblioteca de clases de base (Base Class Library), es una biblioteca estándar disponible
para todos los lenguajes usados en el Framework NET. Este incluye el BCL para un gran
número de funciones comunes, como son lectura y escritura de archivos, representación
gráfica, interacción con la Base de Datos, y de manipulación de documentos XML,
haciendo la tarea del programador más fácil.
Bugs
Un defecto de software (computer bug en inglés), es el resultado de un fallo o deficiencia,
durante el proceso de creación de programas de ordenador o computadora (software).
Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software.
| Glosario
72
CGI
Interfaz de entrada común (en inglés Common Gateway Interface, abreviado CGI), es una
importante tecnología de la World Wide Web, que permite a un cliente (explorador Web),
solicitar datos de un programa ejecutado en un servidor Web. CGI especifica un estándar
para transferir datos entre el cliente y el programa. Es un mecanismo de comunicación
entre el servidor Web y una aplicación externa, cuyo resultado final de la ejecución son
objetos MIME.
COM
Component Object Model (COM), es una plataforma de Microsoft para componentes de
software introducida por dicha empresa en 1993. Esta plataforma es utilizada para
permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier
lenguaje de programación que soporte dicha tecnología. Esencialmente COM es una
manera de implementar objetos neutrales con respecto al lenguaje, de manera que
pueden ser usados en entornos distintos de aquel en que fueron creados, a través de
fronteras entre máquinas. Para componentes bien creados, COM permite la reutilización
de objetos sin conocimiento de su implementación interna, porque fuerza a los
implementadores de componentes a proveer interfaces bien definidos que están
separados de la implementación.
DHTML
El HTML Dinámico o DHTML (del inglés Dynamic HTML) designa el conjunto de técnicas
que permiten crear sitios Web interactivos, utilizando una combinación de lenguaje HTML
estático, un lenguaje interpretado en el lado del cliente (como JavaScript), el lenguaje de
hojas de estilo en cascada (CSS) y la jerarquía de objetos de un DOM.
ECMA (European Computer Manufacturers Association)
ECMA es una organización internacional basada en membresías de estándares para la
comunicación y la información. La organización fue fundada en 1961 para estandarizar los
sistemas computarizados en Europa. La membresía está abierta a las empresas que
producen, comercializan o desarrollan sistemas computarizados o de comunicación en
Europa.
| Glosario
73
Framework
Un Framework, en el desarrollo de software, es una estructura de soporte definida, en la
cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede
incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software,
para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
HTTP
El protocolo de transferencia de hipertexto (HTTP, HyperText Transfer Protocol), es el
protocolo usado en cada transacción de la Web (WWW). HTTP define la sintaxis y la
semántica que utilizan los elementos software de la arquitectura Web (clientes,
servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue
el esquema petición-respuesta entre un cliente y un servidor.
JSON
JSON, acrónimo de "JavaScript Object Notation", es un formato ligero para el intercambio
de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no
requiere el uso de XML. La simplicidad de JSON ha dado lugar a la generalización de su
uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de
JSON sobre XML, como formato de intercambio de datos en este contexto, es que es
mucho más sencillo escribir un analizador semántico de JSON. En JavaScript, JSON puede
ser analizado trivialmente usando el procedimiento eval(), lo cual ha sido fundamental
para la aceptación de JSON por parte de la comunidad de desarrolladores Ajax, debido a la
ubicuidad de JavaScript en casi cualquier navegador Web.
Modelo E/R
Un diagrama o modelo entidad-relación (a veces denominado por su siglas, E-R "Entity
relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el
modelado de datos de un sistema de información. Estos modelos expresan entidades
relevantes para un sistema de información, sus inter-relaciones y propiedades.
MSIL
Common Intermediate Language, es el lenguaje de programación legible por humanos de
más bajo nivel en el Common Language Infrastructure y en él .NET Framework. Los
lenguajes del .NET Framework compilan a CIL, el cual a su vez es ensamblado en bytecode.
| Glosario
74
Open Source
Código abierto (en inglés open source), es el término con el que se conoce al software
distribuido y desarrollado libremente. Fue utilizado por primera vez en 1998 por algunos
usuarios de la comunidad del software libre, tratando de usarlo como reemplazo al
ambiguo nombre original en inglés del software libre (free software).
PERL
Perl es un lenguaje de programación que toma características del lenguaje C, del lenguaje
shell, AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.
Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue
ampliamente adoptado por su destreza en el procesado de texto.
Plugin
Un Complemento (o plug-in en inglés), es una aplicación, que se relaciona con otra para
aportarle una función nueva y generalmente muy especifica. Esta aplicación adicional es
ejecutada por la aplicación principal e interactúan por medio de la API.
SGML
SGML son las siglas de Standard Generalized Markup Language o "Lenguaje de Marcación
Generalizado". Consiste en un sistema para la organización y etiquetado de documentos.
La Organización Internacional de Estándares (ISO) ha normalizado este lenguaje en 1986.
SimpleXML
SimpleXML es una extensión de PHP que permite al usuario fácilmente manipular o usar
datos en XML. PHP5 es requerido.
SOAP
SOAP (siglas de Simple Object Access Protocol), es un protocolo estándar que define cómo
dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de
datos XML. Es uno de los protocolos utilizados en los servicios Web.
Streaming
Streaming es un término que se refiere a ver u oír un archivo directamente en una página
Web, sin necesidad de descargarlo antes al ordenador. Se podría describir como "hacer
clic y obtener". En términos más complejos podría decirse que describe una estrategia
sobre demanda para la distribución de contenido multimedia a través del Internet.
| Glosario
75
TCP/IP
La familia de protocolos de Internet es un conjunto de protocolos de red en la que se basa
Internet y que permiten la transmisión de datos entre redes de computadoras. En
ocasiones se le denomina conjunto de protocolos TCP/IP, en referencia a los dos
protocolos más importantes que la componen: Protocolo de Control de Transmisión (TCP)
y Protocolo de Internet (IP), que fueron los dos primeros en definirse, y que son los más
utilizados de la familia. Existen tantos protocolos en este conjunto, que llegan a ser más
de 100 diferentes, entre ellos se encuentra HTTP (HyperText Transfer Protocol), ARP
(Address Resolution Protocol), FTP (File Transfer Protocol) , SMTP (Simple Mail Transfer
Protocol) , POP (Post Office Protocol), TELNET, entre otros.
XMLHttpRequest
XMLHttpRequest (XHR), es una interfaz empleada para realizar peticiones HTTP y HTTPS a
servidores WEB. Para los datos transferidos se usa cualquier codificación basada en texto,
incluyendo: texto plano, XML, JSON, HTML y codificaciones particulares específicas. El uso
más popular de esta interfaz es proporcionar contenido dinámico, y actualizaciones
asíncronas en páginas Web mediante tecnologías construidas sobre ella, como por
ejemplo AJAX.
XSLT
XSLT o Transformaciones XSL es un estándar de la organización W3C, que presenta una
forma de transformar documentos XML en otros, e incluso a formatos que no son XML.
Las hojas de estilo XSLT realizan la transformación del documento, utilizando una o varias
reglas de plantilla. Estas reglas de plantilla unidas al documento fuente a transformar,
alimentan un procesador de XSLT, el que realiza las transformaciones deseadas, poniendo
el resultado en un archivo de salida, o como en el caso de una página Web, las hace
directamente en un dispositivo de presentación, tal como el monitor del usuario.
| Glosario
76
Bibliografía
Berners-Lee, T. (s.f.). World Wide Web Consortium. Obtenido de
http://www.w3.org/People/Berners-Lee/
Garrett, J. J. (s.f.). Ajax: A New Approach to Web Applications. Obtenido de
http://www.adaptivepath.com/ideas/essays/archives/000385.php
López, C. P. (2008). MySQL para Windows y Linux. México D.F.: Alfaomega.
Marc Gibert Ginestá, Á. P. (2005). Ingeniería del Software en entornos de SL. Cataluya,España:
Eureca Media.
Orós, J. C. (2006). Diseño de páginas Web con XHTML, JavaScript y CSS. México D.F.: alfaomega.
php.net. (s.f.). Manual PHP. Obtenido de http://de.php.net/manual/es/introduction.php
Rubio, F. J. Creacion de sitios web con PHP. Mc Graw Hill.
w3c, D. (s.f.). Divulgacion, World Wide Web Consortium. Obtenido de
http://www.w3c.es/Divulgacion/Guiasbreves/XHTML
| <Bibliografía
77
Apéndice 1. Código Fuente
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Academia de Computacion</title>
<link rel="shortcut icon" href="images/logos/favicon/favicon.ico" />
<!-Hojas de Estilo
-->
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>
<link rel="stylesheet" type="text/css" href="ext/resources/css/xthemegray.css" id="theme"/>
<link rel="stylesheet" type="text/css" href="index.css"/>
</head>
<body>
<!-Loading
-->
<? include("flash/loading.html") ?>
<!-Archivos Externos Javascript -->
<!--[if lt IE 7.]>
<script defer type="text/javascript" src="js/pngfix.js"></script>
<![endif]-->
<script type="text/javascript" src="ext/adapter/ext/ext-base.js">
</script>
<script type="text/javascript" src="ext/ext-all.js"></script>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript" src="js/functions.js"></script>
<!-- Imagen en Top -->
<div id="top">
<img src="images/logos/Academia_Principal2.png"/>
<p><a onclick="cambiaTheme()" href="#">Bienvenido</a>
<span id="barraNombre"></span></p>
</div>
<!-- Elementos de Menus -->
<div id="menuCurricula" class="myMenu">
<p><a onclick="openWindow('xhtml/mapa.html')" href="#">
Mapa Curricular
</a></p>
<p><a onclick="abrirVentana('xhtml/horarios.php',this)"
href="#" id="btn0" title="Horarios" >Horarios</a></p>
</div>
<div id="menuProyectos" class="myMenu">
<p><a onclick="abrirTab('xhtml/proyectos.html','Proyectos')"
href="#">Proyecto Terminal</a></p>
</div>
<div class="myMenu" id="menuMaterial">
<p><a href="#videos" onclick="openWindow('xhtml/videos.php')">
Videos
</a></p>
</div>
<div class="myMenu" id="menuLinks">
<p><a href="http://www.ipn.mx" class="external" >IPN</a></p>
<p><a href="http://www.esimez.ipn.mx" class="external">ESIMEZ</a></p>
<p><a href="http://www.sigue.esimez.ipn.mx" class="external">
SIGUE
</a></p>
<p><a href="http://www.virtual.esimez.ipn.mx/virtual/"
class="external">Esime Virtual</a></p>
| Apéndice 1. Código Fuente
78
<p><a href="http://www.ce.esimez.ipn.mx/" class="external">
Control Escolar</a></p>
</div>
<div id="tabs"></div>
<!-<?php
Imangenes Flotantes
-->
include("xhtml/flotantes.php");
?>
<!-- Parte central de la página -->
<div id="centro">
<img src="images/logos/centro.png" alt="Academia de Esime" />
<br />
<p>Profesor inicie sesión <a href="profesor.php" class="external" >
aqui </a>. Registro de Profesores
<a href="admin/registro/registra.php" class="external" >aqui</a> </p>
<p>Administrador inicie sesión <a href="administrator.php"
class="external" >aqui</a></p>
<br />
<?php echo $banner_central['texto'] ?>
</div>
</body>
</html>
index.js
/**
* Definición de la interfaz Ajax del sitio Principal
*/
/**
* Función Ajax que se ejecuta cuando Ext-js esta listo
*/
Ext.onReady(function(){
//Definición de los Elementos de Menu
var menulink = new Ext.Panel({
title: 'Links',
contentEl: 'menuLinks'
});
var menulink2 = new Ext.Panel({
title: 'Profesores',
contentEl: 'menuPermalink'
});
var menulink3 = new Ext.Panel({
title: 'Desarrolladores',
contentEl: 'menuDesarrolladores'
});
var item1 = new Ext.Panel({
title: 'Curricula',
contentEl: 'menuCurricula'
});
var item2 = new Ext.Panel({
title: 'Proyectos',
contentEl: 'menuProyectos'
| Apéndice 1. Código Fuente
79
});
var item3 = new Ext.Panel({
title: 'Materias',
autoScroll: true,
autoLoad: {
url: 'xhtml/materias.html'
}
})
var item4 = new Ext.Panel({
title: 'Sitios de Profesores',
autoLoad:{
url: 'php/links.php'
}
});
var item5 = new Ext.Panel({
title: 'Material de Apoyo',
contentEl: 'menuMaterial'
});
var item6 = new Ext.Panel({
title: 'Informacion de Profesores',
autoLoad: {
url: 'php/infoprof.php'
}
});
var item7 = new Ext.Panel({
title: 'Alumnos',
autoLoad: {
url: 'xhtml/signalumno.php',
scripts: true
}
});
//Definición del Menu Principal Tipo Accordion
var accordion = new Ext.Panel({
region: 'west',
margins: '110 0 0 100',
title: 'Menu Principal',
split: true,
collapsible: false,
width: 190,
layout: 'accordion',
layoutConfig: {
animate: true,
hideCollapseTool: true
},
defaults: {
bodyStyle: 'background-image: url(multiflex/navbg.jpg);'
},
items: [item1, item2, item7, item3, item4, item6, item5]
});
//Definición del Menu Auxiliar tipo Accordion
var accordion2 = new Ext.Panel({
region: 'east',
width: 170,
minSize: 175,
maxSize: 400,
| Apéndice 1. Código Fuente
80
collapsible: true,
collapsed: true,
hideCollapseTool: false,
title: 'Otros',
titleCollapse: false,
margins: '110 100 0 0',
cmargins:'110 100 0 0',
layout: 'accordion',
layoutConfig: {
animate: true
},
defaults: {
bodyStyle: 'background-image: url(multiflex/navbg.jpg);'
},
items: [ menulink, menulink2, menulink3 ]
});
//Definimos un tipo de vista para todos los elementos
var vieport = new Ext.Viewport({
layout: 'border',
items: [accordion, accordion2, centro]
});
//Efectos Realizados cuando se carga toda la página
Ext.get('loading2').remove();
Ext.get('loading-mask2').fadeOut({
endOpacity: 0.3,
remove: true,
duration: 0.3
});
});
index.css
@import url(css/loading.css);
/*
Estilos principales de la página
*/
html, body {
font-size: 10px;
margin: 0;
padding: 0;
border: 0 none;
overflow: hidden;
height: 100%;
}
/*
formato de las etiquetas <A></A>
*/
a{
text-decoration:none;
color: rgb(16, 64, 128);
}
| Apéndice 1. Código Fuente
81
/*
Región de Encabezado de la página
*/
#top {
text-align: center;
background-image: url(images/background/top-bg2.png);
background-repeat: repeat-x;
height: 110px;
padding: 0px;
}
#top img {
margin: 0px;
padding: 0px;
}
#top p{
text-align: left;
margin: 2px;
}
#top p a , #top p span{
font-size: 135%;
color: #FFF;
font-weight: bold;
}
/*
Región del Centro de la página
*/
#centro {
padding: 4px;
font-family: "Lucida Sans";
color: #555555;
height: 97%;
background: #FFF url(images/gradients/guinda2.png) 0 0 repeat-x;
text-align: center;
}
/*
Formato de los Titulos en los sitios de profesores
*/
.tit1{
font-size:13px;
text-align:center;
color:#15428b;
padding:10px 0px 15px 0px;
}
/*
Formato de los Subtitulos en los sitios de profesores
*/
.subtit1{
font-size:12px;
color:#15428b;
padding: 5px 5px 5px 5px;
}
/*
Estilos relacionados los menus del sitio principal
*/
.myMenu {
padding: 4px;
margin: 4px;
}
| Apéndice 1. Código Fuente
82
.myMenu p {
line-height: 215%;
}
.myMenu p a{
display: block;
min-height: 1.7em;
height: auto;
line-height: 1.7em;
border-bottom-width:1px;
border-bottom-style:solid;
border-bottom-color: black;
border-left-width: 6px;
border-left-style: solid;
border-left-color: transparent;
text-decoration: none;
color: rgb(70, 122, 167);
padding:2px;
}
.myMenu p a:hover{
background-color: rgb(238, 238, 238);
border-bottom-color: black;
border-left-color: black;
color: black;
}
/*
Formato asignado para los elementos del sitio personal
*/
.elemento{
padding: 10px;
margin: 10px;
background-color: #FFF;
opacity: 0.8;
filter: alpha( opacity=80 );
}
.tit{
font-size:130%;
color: #104080;
font-weight: bold;
}
.x-border-layout-ct{
background-color: #FFFFFF !important;
}
functions.js
//Función Ajax que carga una dirección dirurl
//en un contenedor container
function async(container, dirurl){
Ext.get(container).load({
url: dirurl,
scripts: true,
text: "Cargando Elemento..."
});
}
| Apéndice 1. Código Fuente
83
//Función Ajax que permite abrir una dirección dirurl
//en el centro de la página
function abrirCentro(dirurl){
centroItem.show();
Ext.get('centro').load({
url: dirurl,
scripts: true,
text: "Cargando Elemento..."
});
}
//Función Ajax que permite abrir una dirección dirurl
//con un Titulo en forma de Pestañas
function nuevoTab(dirurl, titulo){
centro.add({
title: titulo,
id: titulo + 'Tab',
autoLoad: {
url: dirurl,
scripts: true
},
closable: true
}).show();
}
//Función Ajax que permite abrir una Pestaña
//que es buscada a través del titulo de pestaña
function abrirTab(dirurl, titulo){
var elementoTab = centro.findById(titulo + 'Tab');
if (elementoTab == null)
nuevoTab(dirurl, titulo);
else
elementoTab.show();
}
//centroItem es una instancia de la Clase Panel
//Con elemento id principal llamado centro
var centroItem = new Ext.Panel({
title: 'Principal',
contentEl: 'centro',
closable: false
});
//centro es una instancia de la clase TabPanel
//Esta clase contiene a centroItem
var centro = new Ext.TabPanel({
region: 'center',
contentEl: 'tabs',
margins: '110 5 0 0',
activeTab: 0,
enableTabScroll: true,
defaults: {
autoScroll: true,
bodyStyle: 'background: #FFF url(images/background/centro2.png) 0 0
repeat-x',
closable: false
},
items: [centroItem]
});
| Apéndice 1. Código Fuente
84
//Función Ajax que permite abrir una ventana con dirección url
//y con efecto desde el botón presionado
function abrirVentana(url, boton){
win = new Ext.Window({
// layout: 'fit',
width: 640,
height: 480,
actionClose: 'destroy',
autoScroll: true,
autoLoad: {
url: url,
scripts: true
},
buttons: [{
text: 'Cerrar',
handler: function(){
win.hide();
win.destroy();
}
}]
});
win.setTitle(boton.title);
win.show(boton);
}
//Abre una ventana mediante JavaScript con la dirección url
function openWindow(url){
window.open(url, "", "width=640,height=400,top=0,left=0,ScrollBars = No");
}
function openWindow2(url){
window.open(url, "", "width=600,height=600,top=0,left=0,ScrollBars = No");
}
//Función que nos permite cambiar de hoja de estilo
var theme = true;
function cambiaTheme()
{
if(theme == true)
Ext.util.CSS.swapStyleSheet("theme","");
else
Ext.util.CSS.swapStyleSheet("theme","ext/resources/css/xtheme-gray.css")
theme = !theme;
}
//Función que nos permite cambiar el método onclick a todas las etiquetas A
//con atributo class igual a 'external'
window.onload = function() {
var links = document.getElementsByTagName('a');
for (var i=0;i < links.length;i++) {
if (links[i].className == 'external') {
links[i].onclick = function() {
window.open(this.href);
return false;
};
}
}
};
| Apéndice 1. Código Fuente
85
database-config.php
<?php
//Se crea la conexión con la base de datos MySQL
//Usuario adminCompuICE
//Password esimez
//Servidor localhost
$conexion_mysql = mysql_connect("localhost","adminCompuICE","esimez");
if( !$conexion_mysql )
{
echo "Error conectando a la base de datos."; //Captura algún error
exit();
}
//Selecciona la base de datos de mysql
//Datebase adminComputacionICE
if (!mysql_select_db("academiaComputacionICE",$conexion_mysql))
{
echo "Error seleccionando la base de datos."; //Captura algún error
exit();
}
?>
Database.sql
-- Crea la Base de datos
CREATE DATABASE academiaComputacionICE;
-- Se crea un usuario otorgando permisos para la base de datos
GRANT ALL ON academiaComputacionICE.* TO adminCompuICE IDENTIFIED BY 'esimez';
-- Habilitamos la base de datos
use academiaComputacionICE;
-- Se crea la Tabla profesoresCompuICE
-- Contiene los campos id,profesor, password, nombreCompleto
CREATE TABLE profesoresCompuICE(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
profesor VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
nombreCompleto VARCHAR(128) NOT NULL
);
-- Se crea la tabla sitesWeb
-- Contiene los campos id, profesor, titulo, texto, fecha
CREATE TABLE sitesWeb (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
profesor VARCHAR(20) NOT NULL,
titulo VARCHAR(150),
texto BLOB,
fecha DATE
);
-- Se crea la tabla avisos
-- Contiene los campos id, profesor, titulo, texto, fecha
CREATE TABLE avisos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
profesor VARCHAR(20) NOT NULL,
titulo VARCHAR(150),
texto BLOB,
fecha DATE
);
| Apéndice 1. Código Fuente
86
-- Se crea la tabla banners
-- Contiene los campos id, profesor, titulo, texto, fecha
CREATE TABLE banners (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
profesor VARCHAR(20) NOT NULL,
titulo VARCHAR(150),
texto BLOB,
fecha DATE
);
-- Se crea la tabla wiki
-- Contiene los campos id, materia, titulo, texto, fecha
CREATE TABLE wiki (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
materia VARCHAR(20) NOT NULL,
titulo VARCHAR(150),
texto BLOB,
fecha DATE
);
-- Se crea la tabla infoProfesores
-- Contiene los campos id, nombre, appat, apmat, foto, telefono,
-- extension1, extension2, movil, estancia, horario, email
CREATE TABLE infoProfesores(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
appat VARCHAR(30) NOT NULL,
apmat VARCHAR(30) NOT NULL,
foto VARCHAR(255),
telefono INT,
extension1 INT,
extension2 INT,
movil INT,
estancia VARCHAR(50),
horario VARCHAR(50),
email VARCHAR(50)
);
-- Se crea la tabla evalucionProfesores
-- Contiene los campos profesore_id, estadisticas
CREATE TABLE evaluacionProfesores(
profesor_id INT NOT NULL,
estadisticas BLOB
);
-- Se crea la tabla sugerencias
-- Contiene los campos profesor_id, sug1, sug2
CREATE TABLE sugerencias(
profesor_id INT NOT NULL,
sug1 VARCHAR(255),
sug2 VARCHAR(255)
);
-- Se crea la tabla materiasProfesores
-- Contiene los campos id, mat1-mat15
CREATE TABLE materiasProfesores(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
mat1 VARCHAR(30) NOT NULL,
mat2 VARCHAR(30),
mat3 VARCHAR(30),
mat4 VARCHAR(30),
mat5 VARCHAR(30),
mat6 VARCHAR(30),
| Apéndice 1. Código Fuente
87
mat7 VARCHAR(30),
mat8 VARCHAR(30),
mat9 VARCHAR(30),
mat10 VARCHAR(30),
mat11 VARCHAR(30),
mat12 VARCHAR(30),
mat13 VARCHAR(30),
mat14 VARCHAR(30),
mat15 VARCHAR(30)
);
-- Se crea la tabla proyectosCompuICE
-- Contiene los campos id, AsesorTitular, Tema, Summary
CREATE TABLE `proyectosCompuICE` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`AsesorTitular` VARCHAR( 255 ) NOT NULL ,
`Tema` VARCHAR( 255 ) NOT NULL ,
`Summary` VARCHAR( 255 ) NOT NULL
);
-- Se crea la tabla videos
-- Contiene los campos id, url, titulo, duracion, profesor
CREATE TABLE videos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
url VARCHAR(255) NOT NULL,
titulo VARCHAR(80),
duracion VARCHAR(20),
profesor VARCHAR(120)
);
-- Se crea la tabla claves
-- Contiene los campos id, clave
CREATE TABLE claves (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
clave VARCHAR(20) NOT NULL
);
-- Se crea la tabla alumnos
-- Contiene los campos id, username, password,
-- email, boleta, grupo, fullname
CREATE TABLE alumnos(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(255),
boleta VARCHAR(20),
grupo
VARCHAR(20),
fullname VARCHAR(255)
);
-- Se crea la tabla permalink
-- Contiene los campos id, profesorid, permanlink, titulo
CREATE TABLE permalink(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
profesorid INT NOT NULL,
permanlink VARCHAR(255),
titulo VARCHAR(255)
);
| Apéndice 1. Código Fuente
88
fixtures.sql
-- Inserta los tres Banners, asignadole valores vacios
INSERT INTO `banners` (`id`, `profesor`, `titulo`, `texto`, `fecha`) VALUES
(1, 'admin', 'Banner Lado Izquierdo', '', '2008-06-13'),
(2, 'admin', 'Banner Lado Derecho', '', '2008-06-13'),
(3, 'admin', 'banner Central', '', '2008-07-23');
-- Inserta las claves de acceso para los primeros profesores
INSERT INTO `claves` (`id`, `clave`) VALUES
(1, 'hPOBsbYeni5EPDyS'),
(2, '4rz24mh7j898YhLh'),
(3, 'p9o9mtTBBhfGWuO3'),
(4, 'BzOabrEkJfHGs4Ep'),
(5, 'p2bC774p6l72OqI3'),
(6, 'a3TO3zHszz6VMVcb'),
(7, 'adpSwLYLzdr7i37k'),
(8, 'fhLdoz6384blwKoK'),
(9, 'mxUv6bx2wBMX5ebS'),
(10, '6gB4a68g93475FiL'),
(11, 'Q9bw7Dk9t6ajkqhW'),
(12, '3314s619zCuMWap8'),
(13, 'O1dVw95QOlUU9rg4'),
(15, '1zbcrwa692OJj7Xd'),
(16, '5MlMV4hZ2k5Ojs3K'),
(17, '3tD1y79ys1XapznA'),
(18, '3oig4N4l1B43tN7a'),
(19, 'eJy2JtCgqe1w8vTn'),
(20, 'jO2fyS125biA92j1');
session-class.php
<?php
/**
* Clase Session que nos permite manejar la sesión de
* los profesores, administradores y alumnos
*/
class Session {
/**
* Método que inicia la sesión
*/
public function start()
{
session_start();
}
/**
* Pregunta si es Profesor
* Retorna un Bool
*/
public function isProfesor()
{
return isset($_SESSION['profesor']);
}
| Apéndice 1. Código Fuente
89
/**
* Pregunta si es Administrador
* Retorna un Bool
*/
public function isAdministrator()
{
return isset($_SESSION['admin']);
}
/**
* Devuelve el nombre del profesor
*/
public function getProfesor()
{
return $_SESSION['profesor'];
}
/**
* Devuelve el nombre del administrador
*/
public function getAdministrator()
{
return $_SESSION['admin'];
}
/**
* Redirecciona a un mensaje de error
* si es que no se ha autenticado el usuario
*/
public function prohibida()
{
header("Location: /academia/error");
}
/**
* Destruye la sesión
*/
public function destroy()
{
session_start();
$_SESSION = array();
session_destroy();
}
/**
* Redirecciona a una dirección especifica
*/
public function redirect($url)
{
Header("Location: ".$url);
}
/**
* Registra a un profesor
*/
public function profesor($profesor)
{
$_SESSION["profesor"] = $profesor;
}
/**
* Registra el uso de una materia
*/
public function materia($mat)
{
$_SESSION["materia"] = $mat;
$_SESSION["matTitle"] = $this->getMateriaByClave($mat);
}
| Apéndice 1. Código Fuente
90
/**
* Obtiene el uso de una materia
*/
public function getMateria()
{
return $_SESSION["materia"];
}
/**
* Obtiene el titulo de la materia actual
*/
public function getMateriaTitle()
{
return $_SESSION["matTitle"];
}
/**
* Registra al administrador
*/
public function admin($profesor)
{
$_SESSION["admin"] = $profesor;
}
/**
* Manda un error si el inicio de sesión falla
*/
public function errorLogin()
{
echo "Usuario o Password incorrecto <a
href='../login.php'>Reitentar</a>";
}
public function errorLoginAdmin()
{
echo "Usuario o Password incorrecto <a
href='../logadmin.php'>Reitentar</a>";
}
/**
* Autentica al Profesor
*/
public function autenticaProfesor($username,$password)
{
$consulta = mysql_query("SELECT id, profesor,password FROM
profesoresCompuICE WHERE profesor = '$username'");
$reg = mysql_fetch_array($consulta);
if($reg['password'] != $password){
$this->errorLogin();
return false;
}else{
$this->profesor($reg['profesor']);
$this->setId( $reg['id'] );
return true;
}
}
/**
* Registra el id para el profesor
*/
public function setId( $id )
{
$_SESSION['profId'] = $id;
}
| Apéndice 1. Código Fuente
91
/**
* Obtiene el id para el profesor
*/
public function getId()
{
return $_SESSION['profId'];
}
/**
* Obtiene las materias que imparte el profesor
*/
public function getMaterias()
{
$id = $this->getId();
$consulta = mysql_query("SELECT
mat1,mat2,mat3,mat4,mat5,mat6,mat7,mat8,mat9,mat10,mat11,mat12,mat13,mat14,mat15
FROM materiasProfesores WHERE id = '$id'");
$reg = mysql_fetch_array($consulta, MYSQL_NUM);
foreach($reg as $materia)
if(isset($materia) && !empty($materia) )
$mat[] = $materia;
return $mat;
}
/**
* Obtiene una a materia a partir de una clave
*/
public function getMateriaByClave($clave)
{
switch($clave){
case 'fundprog': return "Fundamentos de Programacion"; break;
case 'poo': return "Programacion Orientada a Objetos"; break;
case 'ebd': return "Estructuras de Bases de Datos"; break;
case 'an': return "Analisis Numerico"; break;
case 'cd': return "Circuitos Digitales"; break;
case 'micro': return "Microprocesadores"; break;
case 'is': return "Ingenieria de Software"; break;
case 'li': return "Lenguajes de Internet"; break;
case 'lan': return "Redes LAN"; break;
case 'str': return "Sistemas en Tiempo Real"; break;
case 'aie': return "Agentes Inteligentes Expertos"; break;
case 'arc': return "Aplicaciones de Redes de Computadoras";
break;
case 'vc': return "Vision por Computadora"; break;
case 'ac': return "Arquitectura de Computadoras"; break;
case 'dsp': return "Desarrollo Prospectivo de Proyectos"; break;
default: return false;
}
}
/**
* Autentica al Administrador
*/
public function autenticaAdmin($username,$password)
{
if($username == "admin")
{
$consulta = mysql_query("SELECT profesor,password FROM
profesoresCompuICE WHERE profesor = '$username'");
$reg = mysql_fetch_array($consulta);
if($reg['password'] == $password)
{
$this->admin($reg['profesor']);
return true;
}else{
$this->errorLoginAdmin();
| Apéndice 1. Código Fuente
92
return false;
}
}else{
$this->errorLoginAdmin();
return false;
}
}
/**
* Pregunta si es una materia
* retorna un bool
*/
public function isMateria($mat)
{
if($this->getMateriaByClave($mat)==false)
return false;
else
return true;
}
}
//Crea una instancia de la clase
$session = new Session();
?>
crud-class.php
<?php
class crud
{
// Almacena la tabla que se utiliza en la base de datos
private $table;
//Se almacena la consulta a la base de datos
private $consulta;
function setTable($t)
{
$this->table = $t;
}
//borra Registro mediante $id, $profesor
function del($id, $profesor)
{
mysql_query("DELETE from $this->table WHERE id='$id' AND
profesor='$profesor' ");
}
//Agregar un Nuevo Registro
function add($profesor, $titulo, $texto )
{
$fecha = $this->now();
$Sql="INSERT INTO $this->table (profesor,titulo,texto,fecha) VALUES
('$profesor','$titulo','$texto','$fecha')";
mysql_query($Sql);
}
Obtiene la fecha en este momento
function now()
{
return date("Y-m-d",time());
}
| Apéndice 1. Código Fuente
93
//Cierra la conexión con la base de datos
function end()
{
mysql_close();
}
//Incluye algún archivo de configuración
function inc($conf)
{
include($conf);
}
//Selecciona todos los datos de una Tabla definida por $this->table
function all($profesor)
{
$this->consulta = mysql_query("select id,profesor,texto,titulo from
$this->table WHERE profesor='$profesor' order by id");
}
//Genera un Bloque para administrar cada elemento de la base de datos
function blockEdit($profesor)
{
$this->all($profesor);
while($reg = mysql_fetch_array($this->consulta)){
?>
<div class="elemento">
<a href="borrar.php?id=<?=$reg['id']?>" >Borrar</a>
<a href="modificar.php?id=<?=$reg['id']?>" >Modificar</a>
<p class="tit"><?=$reg['titulo']?></p>
<?=$reg['texto']?>
</div>
<?
}
$this->free();
}
//Genera un bloque para visualizar el contenido de un elemento de la
base de datos
function block($profesor)
{
$this->all($profesor);
while($reg = mysql_fetch_array($this->consulta)){
?>
<div class="elemento">
<p class="tit"><?=$reg['titulo']?></p>
<?=$reg['texto']?>
</div>
<?
}
$this->free();
}
//Actualiza un elemento de la tabla
function update($titulo,$texto, $id)
{
$Sql="UPDATE $this->table SET titulo = '$titulo', texto='$texto'
WHERE id='$id'";
mysql_query($Sql);
}
//Libera la memoria consumida de la consulta SQL
function free()
{
mysql_free_result($this->consulta);
}
}
//Creo una instancia de la Clase
$crud = new crud();
?>
| Apéndice 1. Código Fuente
94
pwd-class.php
<?php
/**
* Clase que nos permite generar claves aleatorias
* para el acceso de registro de profesores
*/
class CreatePwd {
/**
* Método que nos permite crear claves AlfaNumericas
*/
function mixed($length){
$pwd = "";
for($x=0;$x<$length;$x++){
$rnd = $this->randomize(3);
if($rnd!=""){
$pwd .= $rnd;
}
else{
$rnd = $this->randomize(5);
if($rnd!=""){
$pwd .= chr(mt_rand(65,90));
}
else{
$pwd .= chr(mt_rand(97,122));
}
}
}
return $pwd;
}
/**
* Método que permite generar números aleatorios
*/
function randomize($limit){
$var = mt_rand(0,9);
if($var<$limit){
return mt_rand(0,9);
}
return;
}
}
?>
| Apéndice 1. Código Fuente
95
registra.php
<?php
/**
* Script que nos permite agregar un profesor a la base de datos
*/
//Inicio Session
session_start();
if( isset($_SESSION['registro']) && $_SESSION['registro'] == "Correcto" ){
//Obtengo los valores llenados del formulario de registro
$nombre = $_POST['nombre'];
$appat = $_POST['appat'];
$apmat = $_POST['apmat'];
$telefono = $_POST['telefono'];
$extension1 = $_POST['ext1'];
$extension2 = $_POST['ext2'];
$movil = $_POST['movil'];
$estancia = $_POST['estancia'];
$horario = $_POST['horario'];
$email = $_POST['email'];
$materias = $_POST['mat'];
$username = $_POST['username'];
$password = $_POST['password'];
$clave = $_SESSION['clave'];
//Incluye la configuración de la base de datos
include("../php/config/database-config.php");
//Inserta los valores en la tabla profesoresCompuICE
$sqlProf = "INSERT INTO profesoresCompuICE(profesor,password,nombreCompleto)
VALUES( ";
$sqlProf .= " '$username', '$password', '$appat $nombre' )";
mysql_query($sqlProf);
$consultadID = mysql_query("SELECT * FROM profesoresCompuICE WHERE
profesor='$username' ");
$row = mysql_fetch_array($consultadID);
$id = $row['id'];
//Inserta los valores en la tabla infoProfesores
$sql = "INSERT INTO infoProfesores(";
$sql.= "id,nombre,appat,apmat,telefono ,extension1,extension2,movil,estancia,
horario,email) VALUES(";
$sql.= "
'$id','$nombre','$appat','$apmat',$telefono,$extension1,$extension2,";
$sql.= "$movil,'$estancia','$horario','$email')";
mysql_query($sql,$conexion_mysql);
//inserta los valores en la tabla materiasProfesores
$sqlmat = "INSERT INTO
materiasProfesores(id,mat1,mat2,mat3,mat4,mat5,mat6,mat7,mat8,mat9,mat10,mat11,ma
t12,mat13,mat14,mat15) values(";
$sqlmat .= " '$id' ,'$materias[0]', '$materias[1]', '$materias[2]',
'$materias[3]', '$materias[4]', '$materias[5]', ";
$sqlmat .= " '$materias[6]', '$materias[7]', '$materias[8]', '$materias[9]',
'$materias[10]', '$materias[11]', '$materias[12]', '$materias[13]',
'$materias[14]' )";
mysql_query($sqlmat);
//Borra la clave de registro utilizada por el profesor
$sqlBorrarClave= "DELETE FROM claves WHERE clave='$clave'";
mysql_query($sqlBorrarClave);
| Apéndice 1. Código Fuente
96
//Reenvía a la página de inicio
header("Location: inicio.php");
} else{
header("Location: registro.php");
}
?>
savexml.php
<?php
/**
* Script que permite generar el Archivo en formato XML
* de los proyectos de tesis disponibles en la base de datos
*/
//Incluye el archivo de configuración de la base de datos
include("../php/config/database-config.php");
//Selecciono todas la filas de la tabla
$consulta = mysql_query("select * from proyectosCompuICE order by
id",$conexion_mysql);
//Creo instanci de la clase XMLWriter
$writer = new XMLWriter();
//Define la ruta del archivo
$writer->openURI("../../xml/proyectos.xml");
//Define la version de XML y la Codificaci�span>
$writer->startDocument("1.0","UTF-8");
//Define elemento Raiz llamado ITEMS
$writer->startElement("Items");
//Agrego cada una de las filas de la tabla definida como ITEM
while($reg = mysql_fetch_array($consulta)){
$writer->startElement("Item");
//----------------------------$writer->startElement("AsesorTitular");
$writer->text(utf8_encode( $reg['AsesorTitular'] ));
$writer->endElement();
$writer->startElement("Tema");
$writer->text(utf8_encode($reg['Tema']));
$writer->endElement();
$writer->startElement("Summary");
$writer->text(utf8_encode($reg['Summary']));
$writer->endElement();
//---------------------------$writer->endElement();
}
//Cierro Documento
$writer->endDocument();
//Guardo Cambios
$writer->flush();
//Cierro conexión con la base de datos
mysql_close($conexion_mysql);
//Redirecciono a la vista principal
header("Location: list.php");
?>
| Apéndice 1. Código Fuente
97
creapdf.php
<?php
//Incluye la configuración de los documentos de PDF
include("config/pdfconf.php");
//Incluye la configuración de la base de datos
include("../admin/php/config/database-config.php");
//Genero la consulta, Selecciono todo
$consulta = mysql_query("select * from proyectosCompuICE order by
asesorTitular",$conexion_mysql);
$htmlcontent = "<table border='1'> ";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
//Ciclo para vaciar todos los datos en la tabla
while( $reg = mysql_fetch_array($consulta))
{
$htmlcontent = "<tr> ";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = "<td width='190px'>";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = utf8_encode( $reg['AsesorTitular']) ;
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = "</td>";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = "<td width='540px' bgcolor='#F1F1F1'>";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = utf8_encode($reg['Tema']);
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = "</td>";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
$htmlcontent = "</tr> ";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
}
$htmlcontent = " </table> ";
$pdf->writeHTML( $htmlcontent , false, 0, false, 0);
//Genero el archivo PDF
$pdf->Output("proyectos.pdf", "I", "I");
?>
| Apéndice 1. Código Fuente
98
proyectos.xml
<?xml version="1.0" encoding="UTF-8"?>
<Items>
<Item>
<AsesorTitular>
Salvador Saucedo Flores
</AsesorTitular>
<Tema>
Síntesis de interfases digitales con lenguajes descriptivos de
hardware
</Tema>
<Summary>
VHDL
</Summary>
</Item>
</Items>
configurar.php
<?php
//Incluye la Clase Session
include("libs/session-class.php");
//Incluye la configuración de la base de datos
include("config/database-config.php");
//Inicio Session
$session->start();
if ( $session->isProfesor() ):
//Obtengo las variables de la Sesión del Profesor
$profesor = $session->getProfesor();
$profesorid = $session->getId();
$materias = $session->getMaterias();
//Incluye las Plantillas
include("../template/top.php");
include("../template/menu.php");
//Genera la consulta SQL
$consulta = mysql_query("select * from permalink WHERE
profesorid='$profesorid' ",$conexion_mysql);
//Los resultados de la consulta se transforma en un array
$reg = mysql_fetch_array($consulta);
if( empty($reg) )
{
$operacion="insert";
$reg['titulo']='';
$reg['permanlink']='';
}
else
{
$operacion = "update";
| Apéndice 1. Código Fuente
99
}
?>
<div class="main">
<div class="main-content">
<h1 class="pagetitle">Sitio Personal</h1>
<h1 class="block">Modificar Enlace Permanente</h1>
<div class="column1-unit">
<br/>
<form method="POST" action="confpermalink.php">
Titulo: <input type="text" name="titulo" id="titulo" size="30"
value="<?=$reg['titulo']?>" />
<br/>
Enlace Permanente<input type="text" id="permanlink"
name="permanlink" value="<?=$reg['permanlink']?>">
<br/>
<input type="hidden" name="profesorid" id="profesorid"
value="<?=$profesorid?>">
<input type="hidden" name="operacion" id="operacion"
value="<?=$operacion?>">
<input type="submit" name="save" value="Modificar" />
</form>
</div><hr class="clear-contentunit" />
</div>
</div>
<?php
//incluye el pie de página
include("../template/foot.php");
else:
$session->prohibida();
endif;
?>
| Apéndice 1. Código Fuente
100
Apéndice 2. Manual de Operación
Este manual esta diseñado para cualquier persona, sin importar su grado de estudios o
conocimientos de programación, por medio del cual podrá manejar el portal Web de la
Academia de Computación, de una manera fácil y sencilla. A continuación se explicará el
modo de operar de este Portal Web, partiendo del sitio del Administrador, pasando por el
sitio de Profesores y por ultimo el sitio Principal.
Sitio del Administrador
Para tener acceso a dicho sitio se debe proporcionar el Nombre de Usuario y la
contraseña de Administrador, los cuales serán proporcionados por los diseñadores de la
página Web.
El sitio del administrador cuenta con las siguientes opciones:
Avisos.
Banners.
Claves de registro.
E-mail
Proyectos de tesis
A continuación se explica cada una de ellas:
Avisos
En esta pestaña es donde se agregan o editan los avisos, que posteriormente serán
visualizados en la página principal (al dar clic en el icono de avisos) ubicado en la parte
superior derecha de la misma.
Las opciones que hay en la pestaña antes mencionada son: Agregar, Mostrar y Editar.
Agregar
Primeramente para agregar algún aviso, se le debe de asignar un Título, posteriormente se
publica el aviso deseado en el área de contenido, el cual puede ser manipulado con el
editor de texto, dicho editor tiene las mismas funcionalidades que los editores más
comunes en la Web, como lo son por ejemplo: el editor de texto de Hotmail ó Gmail para
el envío de correo electrónico. Algunas de las operaciones más usuales que se pueden
realizar en este editor son:
| Apéndice 2. Manual de Operación
101
Dar formato al texto (cambiándole el tipo de letra, color, justificar, etc.).
Insertar una imagen (dando clic en el icono
), indicando la URL
correspondiente de la imagen deseada, con ayuda del botón Examinar y
finalmente dando clic en el botón Insertar.
Insertar un hipervínculo (dando clic en el icono
), indicando la URL
correspondiente del archivo a enlazar, con ayuda del botón Examinar y finalmente
dando clic en el botón Insertar.
Mostrar
En esta opción se puede hacer una previsualización, de cómo se mostrará el aviso en la
pagina principal.
Borrar
Como su nombre lo dice, esta opción nos sirve para borrar todo el contenido del mensaje
editado anteriormente.
Banners
En esta pestaña se cuenta con las opciones de Editar y Mostrar, las cuales se explican a
continuación:
Editar
Aquí es donde se pueden modificar los Banners o Anuncios, que aparecen en la página
principal, los cuales se localizan en el lado izquierdo, derecho y en el centro de la misma.
Si se quiere modificar cada uno de los banners antes mencionados solo se debe hacer clic
en la opción modificar, una vez en dicha opción se debe de asignar un Título al Banner y
posteriormente, en el editor de texto se inserta la imagen que se desee mostrar,
indicando la Ruta o URL donde se encuentra dicho archivo.
| Apéndice 2. Manual de Operación
102
Mostrar
En esta opción se puede realizar una vista previa de cómo se mostrarán los Banners en la
pagina principal del portal Web.
Claves de registro
En esta pestaña se cuenta con las opciones de Generar y Mostrar Claves Disponibles, las
cuales se explican a continuación:
Generar
En esta opción es donde el Administrador puede generar claves como le sean requeridas,
las cuales serán asignadas a los profesores de la Academia de Computación para poder
efectuar el proceso de registro dentro del Portal Web.
Esto se realiza de una manera muy sencilla, ya que las claves se generan
automáticamente, solamente hay que indicar el número de las mismas que se deseen
generar, esto dentro del campo Número de Claves y posteriormente dando clic en el
botón Generar.
Mostrar Claves Disponibles
Dando clic en esta opción, se pueden visualizar las claves que están disponibles en ese
momento; esto para llevar un mejor control de las mismas.
E-mail
En esta sección el Administrador podrá enviar correos electrónicos, como se explica a
continuación:
Hay que asignarle un título al mensaje, posteriormente se selecciona a quien se desea
enviar dicho mensaje, ya sea solamente a profesores, solamente a alumnos ó en su caso a
ambos.
| Apéndice 2. Manual de Operación
103
Una vez redactado el mensaje se puede editar el formato del mismo, adjuntar archivos o
imágenes; siguiendo los pasos antes mencionados, y finalmente se da clic en el botón
Enviar.
Cabe mencionar que estos correos electrónicos solamente serán enviados a las
direcciones de E-mail que fueron ingresadas al momento de realizar el registro, tanto de
profesores como de alumnos.
Proyecto de Tesis
En esta pestaña el Administrador podrá dar de alta los proyectos de la Academia de
Computación, en al cual se encuentra la opción de Ingresar Nuevo.
Ingresar nuevo
En esta opción se pueden ingresar los proyectos nuevos que son publicados cada semestre
por los asesores. Esto se realiza colocando el nombre del asesor titular del proyecto, el
tema y la descripción del mismo, cada uno en los campos correspondientes; una vez
llenados los campos mencionados anteriormente, damos clic en el botón Agregar.
Una vez publicados estos Proyectos de Tesis, se pueden visualizar en la página Principal,
dentro del menú Proyectos, ubicado en la parte izquierda de la misma, o en su caso, se
pueden descargar en formato PDF, haciendo clic en Descargar (ubicado en la parte
inferior derecha, una vez que se haya dado clic en el menú Proyectos).
Sitio del Profesor
En este sitio se tienen las siguientes opciones:
Sitio personal.
Videos.
Materias
Perfil.
Evaluación.
A continuación se explica a detalle el modo de uso de cada una de las opciones
mencionadas anteriormente:
| Apéndice 2. Manual de Operación
104
Sitio Personal
Esta pestaña cuenta con las opciones de Agregar, Editar Sitio, Mostrar Sitio y Enlace
Permanente.
Agregar
En esta opción el profesor puede crear su sitio personal, colocando mensajes para sus
alumnos, material de apoyo como documentos, prácticas, exámenes, etc.
Primero se coloca un título, el cual aparecerá en el sitio del profesor, posteriormente en el
campo de contenido, se ingresa todo lo necesario para crear el sitio, esto depende de
cada profesor, ya que puede agregar contenido a su gusto.
Una vez ingresado el contenido que el profesor considere necesario para su sitio personal,
se le puede dar formato al texto, agregar hipervínculos, adjuntar imágenes, subir archivos
para que puedan ser descargados por los alumnos, publicar mensajes, etc.
Por ejemplo para subir un archivo y que pueda ser descargado posteriormente por los
alumnos se siguen los siguientes pasos:
1. Se escribe un texto, el cual va a ser el título del archivo a descargar.
2. Se selecciona el texto.
3. Ahora insertamos el hipervínculo, dando clic en el icono
, y posteriormente
indicamos la URL correspondiente del archivo a enlazar, con ayuda del botón
Examinar y finalmente se da clic en el botón Insertar.
Para insertar una imagen se siguen los mismos, pero se tiene que dar clic en el icono
del editor de texto.
,
Mostrar Sitio
Aquí se puede generar una vista previa de cómo se va a mostrar el sitio del profesor, una
vez que se han guardado los cambios.
| Apéndice 2. Manual de Operación
105
Editar Sitio
En esta opción se puede modificar o borrar todo el contenido que fue creado en la opción
Agregar.
Enlace Permanente
En esta opción el profesor puede crear un enlace permanente, solo tiene que colocar el
título del enlace y el nombre que identificará a dicho enlace, una vez concluida esta
operación se tiene que dar clic en el botón Modificar y listo, el enlace será creado.
Éste aparecerá en la página Principal en la barra de enlaces (ubicado en la parte derecha
de la misma).
O si bien lo prefiere el profesor, puede dar la dirección del enlace a los alumnos, esto para
ingresar de una forma más fácil y rápida a su sitio, sin tener que pasar primero por la
página principal de la Academia de Computación; con esto, el alumno puede escribir
únicamente la dirección del enlace en la barra de direcciones del explorador y listo, estará
dentro del sitio personal del profesor.
Ejemplo de cómo generar el enlace permanente:
1.- Agregamos un título (el que desee el profesor).
2.- Posteriormente se introduce un nombre (el que se va a mostrar en el enlace).
Ver la siguiente imagen:
3.- Una vez realizada esta operación, se tiene que dar clic en el botón Modificar,
para que se genere automáticamente el enlace:
| Apéndice 2. Manual de Operación
106
Videos
En esta sección el profesor podrá subir videos académicos o relacionados a sus diferentes
materias que imparte, para que posteriormente puedan ser visualizados por los alumnos
(ubicados en el menú de la parte izquierda de la página Principal, en la sección de
Material de Apoyo, en el área de Videos).
Para poder subir estos videos, el profesor tiene que indicar la ruta ó URL donde se
encuentra tal archivo, esto se realiza dando clic en el botón Explorador, una vez
seleccionada la ruta del archivo, se tiene que ingresar un nombre en el campo de Título, al
igual que se tiene la opción de indicar una duración aproximada del video; después de
llenar los campos correspondientes, para finalizar hay que dar clic en el botón Agregar
Video.
Materias
En esta pestaña el profesor podrá editar el sitio de cada materia que imparte, aquí solo
aparecen las materias que haya especificado a la hora de que realizo el proceso de
registro. Al dar clic en la materia aparecen las opciones de Editar, Borrar y Mostrar, las
cuales ya se explicaron anteriormente.
Perfil
En esta sección el profesor puede visualizar y editar sus datos personales, los cuales
fueron ingresados a la hora de registrarse, si requiere modificar alguno de ellos solo debe
hacer clic en Editar y podrá cambiar los datos que desee, también se tiene la opción de
subir la foto del profesor, esto se hace dando clic en Explorador, para indicar la ruta en
donde se encuentra el archivo.
Evaluación
En esta pestaña el profesor puede observar los resultados de la evaluación realizada por
sus alumnos, así como los comentarios que se le hacen. Para ver el resultado de la
evaluación por medio de gráficas porcentuales, simplemente hay que dar clic en la sección
Evaluación, así también para visualizar los comentarios realizados por sus alumnos, se
tiene que dar clic en la sección Comentarios.
| Apéndice 2. Manual de Operación
107
Sitio Principal
En el menú principal se encuentran las siguientes secciones:
Curricula.
Proyectos.
Alumnos.
Materias.
Sitios de profesores.
Información de profesores.
Material de apoyo.
A continuación se explicará cada una de las secciones antes mencionadas:
Curricula
En esta sección se pueden consultar los horarios de todos los grupos desde primero hasta
noveno semestre, así como los mapas curriculares de todas las materias impartidas por la
Academia de Computación, teniendo la opción de descargar todo el programa sintético en
formato PDF.
Proyectos
Aquí se podrán visualizar todos los proyectos de titulación que están disponibles, además
de observar, quien es el asesor titular de cada proyecto, la descripción del mismo y el
tema de dicho proyecto. Cabe mencionar que todos estos proyectos expuestos en esta
sección son editados por el Administrador del Portal Web.
Alumnos
Esta sección cuenta con la opción de registrarse como alumno, aquí el alumno tendrá que
proporcionar su nombre de usuario, su contraseña, nombre completo, grupo, boleta, y su
dirección de correo electrónico.
Una vez registrado, tiene que ingresar su nombre de usuario y contraseña para poder
tener acceso a la evaluación de sus profesores; para poder llevar a acabo esta evaluación,
el alumno tiene que proporcionar su grupo, materia y nombre del profesor que le haya
impartido clases, una vez realizado este proceso, puede ser llenado el formulario, el cual
| Apéndice 2. Manual de Operación
108
contiene una serie de preguntas respecto al desempeño del profesor durante su clase, así
como la realización de comentarios y sugerencias.
Para concluir con esta evaluación, simplemente hay que dar clic en el botón Enviar.
Materias
En esta sección se pueden observar los sitios de cada una de las materias impartidas por
la Academia de Computación, las cuales son editadas por los profesores que estén
registrados dentro del Portal Web.
Sitios de Profesores
Aquí es donde se pueden apreciar los sitios personales de cada profesor (esto es dentro
de la misma página Principal, ya que si se quiere ingresar directamente al sitio del
profesor sin tener que pasar por esta pagina Principal, hay que escribir el enlace
permanente del profesor en la barra de direcciones del explorador, o bien, dando clic en
el menú de enlaces que se encuentra en la parte derecha de la pagina Principal y
posteriormente se selecciona el enlace del sito del profesor al que deseamos ingresar).
Información de Profesores
En esta sección se encuentran los datos de cada profesor, como por ejemplo el cubículo
donde se encuentra, el horario de atención a alumnos, correo electrónico, etc.
Material de Apoyo
En esta sección se podrán observar los videos publicados por los profesores de la
Academia de Computación.
| Apéndice 2. Manual de Operación
109
Descargar