descargar 1.78 Mb.
|
: es la característica mediante la cual una clase hereda los atributos y operaciones de otra clase, así como si cada uno de esos atributos y operaciones hubieran sido definidos por la primera clase. Método: es un algoritmo asociado a un objeto (o a la clase de un objeto), el cual, mediante la recepción de un mensaje desencadena su ejecución. Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Otras herramientas utilizadas35 PHP es el acrónimo de Hipertext Preprocesor. Es un lenguaje de programación del lado del servidor gratuito e independiente de plataforma, rápido, con una gran librería de funciones y mucha documentación. PHP fue creado originalmente en 1994 por Rasmus Lerdorf, pero como PHP está desarrollado en política de código abierto, a lo largo de su historia ha tenido muchas contribuciones de otros desarrolladores. PHP logra una mezcla muy útil entre el código HTML utilizado en las páginas Web y un lenguaje de alto nivel, para dotar a las páginas Web de Dinamismo haciéndolas capaces de procesar y manejar grandes cantidades de información de una manera eficiente y sencilla. HTML o lenguaje etiquetado de hipertexto. Es un lenguaje que maneja ciertas etiquetas para definir y representar como se verán los diferentes componentes utilizados en las páginas Web, no es un lenguaje de programación como tal, solo ayuda a que ciertas características sean introducidas dentro del documento de una forma ordenada y sencilla para que el navegador Web pueda interpretarlas correctamente. HTML536 Hablar de HTML5 como lo más nuevo que le pasó a Internet está erróneo. La tecnología ya nos está acompañando desde hace bastante tiempo. Lo que sí es importante destacar es el Momento HTML5 que estamos viviendo, una época de transición tecnológica donde nuevas tecnologías están conectándose y definiendo la web que ya no es exclusiva de tu computador. HTML5 es más que un estándar, es hablar de CSS3, es hablar de Javascript, es hablar de muchos APIs y nuevas características del ecosistema de navegadores de escritorio y móviles. Pero también me gusta pensar en HTML5 como pensar en tantos nuevos frameworks y entornos que apoyan y redefinen a Javascript (CoffeeScript, Node.js), es pensar en frameworks de CSS (LESS, Saas, etc.) y es pensar en cómo Python con Django, Ruby on Rails o Sinatra, Scala, Haskell, PHP con Zend o Symfony2 nos invitan a hacer las cosas diferentes, nos inspiran a que todos los días estudiemos mucho más e innovemos con tecnología. JAVASCRIPT Para procesar la información en el servidor Web se debe utilizar un lenguaje del lado del servidor en este caso PHP, pero hay procesos que se pueden realizar en el cliente como validaciones, y en general cualquier tipo de interacción con los campos que componen el formulario, para esto la herramienta más adecuada con la que se cuenta es sin lugar a dudas JAVASCRIPT que es un lenguaje del lado del cliente, que no solo permite validar los datos del formulario antes de ser enviados al servidor, sino interactuar con cada uno de los campos que lo componen y así modificar sus propiedades haciendo más útiles sus funciones. CSS. Cascading Style Sheets (hojas de estilo en cascada) son hojas de estilo que han representado un avance importante para los diseños de páginas web, ya que es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML. Existe tres tipos de estilos: externos, internos y en línea. Una hoja de estilo externo es una hoja que esta almacenada en un archivo diferente de donde se encuentra el código HTML de la página web. El estilo interno por el contrario tiene su código guardado en el mismo archivo del código HTML y el estilo de hoja en línea es en el cual tenemos el código dentro de la etiqueta HTML. Estos dos últimos métodos no son los mejores ni los más usados. 3.2 MARCO CONCEPTUAL En una sociedad que se encuentra en constante cambio y donde un concepto, idea ó tecnología sufren modificaciones permanentes orientadas a la mejora de la calidad de vida, mantenerse informado de estos avances teóricos o prácticos se hace una tarea más difícil, no sólo por la complejidad de la información, sino también porque los medios para acceder a dicha información resiente, son muy escasos y en algunos casos reservados por lo que se requiere de unas fuentes de información muy amplias, de gran fidelidad y que estén constantemente actualizadas; pero acceder a estas fuentes con las características antes mencionadas se requiere en la mayoría de los casos de una inversión económica importante, inversión que no es suficiente así esta sea en cursos, diplomados, seminarios o cualquier otro medio de aprendizaje magistral, si este tipo de aprendizaje no está acompañado de procesos autónomos de investigación y aplicación de los conocimientos adquiridos, no será posible ver reflejada dicha inversión económica, puesto que los conocimientos adquiridos serán momentáneos e insuficientes. Aprendizaje Autónomo es la forma más eficiente de adquirir conocimiento, “La enseñanza es una situación provisional que tiene por objetivo hacer al estudiante autosuficiente” Jerome Bruner (1966), esto plantea cómo a través de un aprendizaje autónomo el proceso de conocimiento deja de ser pasivo, donde el individuo toma un papel de consulta y actualización, a ser un proceso donde es él quien toma un rol activo, realiza la investigación y producto de ésta adquiere nuevos conocimientos. Brockett y Hiemtra (1993) señalan “ la autodirección en el aprendizaje es una combinación de fuerzas tanto interiores como exteriores de la persona que subrayan la aceptación por parte del estudiante de una responsabilidad cada vez mayor respecto a las decisiones asociadas al proceso de aprendizaje”, de las dos anteriores citas, se concluye que los conocimientos adquiridos como producto de investigaciones por iniciativa propia permanecen más en la mente de la persona y a su vez tienen una mayor solidez, que aquellos conocimientos trasmitidos por terceros. El proceso de aprendizaje es una actividad individual que se desarrolla en un contexto social y cultural. Es el resultado de procesos cognitivos individuales mediante los cuales se asimilan e interiorizan nuevas informaciones (hechos, conceptos, procedimientos y valores), se construyen nuevas representaciones mentales significativas y funcionales (conocimientos), que luego se pueden aplicar en situaciones diferentes a los contextos donde se aprendieron. Aprender no solamente consiste en memorizar información, es necesario también otras operaciones cognitivas que implican: conocer, comprender, aplicar, analizar, sintetizar y valorar. En cualquier caso, el aprendizaje siempre conlleva un cambio en la estructura física del cerebro y con ello de su organización funcional37. El avance de la ciencia de la computación y la ingeniería de sistemas tiene hoy un alcance prácticamente total en el mundo, no se concibe un proceso o actividad en la cual no pueda estar apoyada por un sistema de cómputo o herramienta Software, este es el caso del aprendizaje. Desde la construcción del ENIAC (1943) hasta la quinta generación de computadores, los equipos de escritorio y sistemas informáticos han prestado servicios de apoyo en labores repetitivas o de cálculos matemáticos de alta complejidad, hasta realizar tareas de toma de decisiones y comportamientos inteligentes, todo esto con el fin de descargar al hombre de acciones poco productivas y enfocarlo en procesos de mayor raciocinio. Por tal motivo se han desarrollado herramientas como sistemas informáticos de aprendizaje, diccionarios, bibliotecas virtuales y el uso de Internet para consulta de información de todo tipo, estas utilidades vistas como apoyo en el proceso de aprendizaje; pero ya existen sistemas completos con la finalidad de enfocar y apoyar al aprendiz en un proceso de Aprendizaje Autónomo, sistemas como los CBT(Computer Based Trainning) actualmente llamados sistemas e-Learning38, sistemas basados en evaluación de conocimiento y aprendizaje adquiridos a través de los medios de comunicación electrónicos y/o tecnológicos, estos sistemas realizan un seguimiento al aprendizaje autónomo que del individuo, acompañándolo paso a paso y realizando evaluaciones al mismo. Pero en el aprendizaje de un lenguaje de programación con el uso de las herramientas descritas no es suficiente. Aprender a programar no solo requiere conocer las herramientas, opciones, utilidades y entornos de desarrollo del lenguaje deseado, sino que se requiere adquirir inicialmente una destreza lógica para poder expresar una solución en la computadora; para este fin se recurre a la lógica y proposiciones matemáticas, las cuales desarrollan las destrezas necesarias, las cuales se adquieren a través de la práctica y múltiples ejercicios que dependen únicamente de la iniciativa y esfuerzo de la persona que desee aprender a programar. Por esta razón se han desarrollado herramientas didácticas como simuladores, juegos, tutoriales, video tutoriales y en algunos casos manuales informáticos, todos estos orientados al apoyo de la enseñanza. Este tipo de herramientas se basan en modelos pedagógicos que pretenden educar al aprendiz mediante la utilización del computador. Para que el proceso de aprendizaje de la programación de computadores sea más eficiente es necesario que el estudiante realice prácticas donde desarrolle software a través de la programación en un lenguaje determinado, para esto el tutor debe contar con una herramienta que le permita evaluar el código desarrollado, es decir, que lo compile, éste proceso consiste en una “traducción que convierte un programa fuente escrito en un lenguaje de alto nivel a un programa objeto en código máquina y listo por tanto para ejecutarse en el ordenador, con poca o ninguna preparación adicional”39. Para el desarrollo de un compilador sintáctico es necesario comprender algunos conceptos que permitan un diseño preciso del mismo. A continuación se hace un breve resumen de conceptos y pasos para el diseño de un compilador sintáctico así como el uso de otras herramientas que hacen parte del desarrollo del sistema tutor. “Los compiladores son programas de computadoras que traducen de un lenguaje a otro. Un compilador toma como su entrada un programa escrito en un lenguaje fuente y produce un programa equivalente escrito en su lenguaje objeto. Por lo regular, el lenguaje fuente es un lenguaje de alto nivel, tal como lo es C, mientras que el lenguaje objetivo es código objeto (también llamado en ocasiones código de máquina) para la máquina objetivo, es decir, código escrito en las instrucciones de máquina correspondientes a la computadora en la cual se ejecutará.”40 Figura 3. Proceso de compilación. Compilador Programa fuente Programa objetivo Fuente Inédita Una de las partes principales de un compilador es el lenguaje, el cual se define como un “lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas”41. Los lenguajes de programación se determinan según el nivel de abstracción, la forma de ejecución y el paradigma de programación que poseen cada uno de ellos. Según el nivel de abstracción estos pueden ser: Lenguajes de bajo nivel los cuales son totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Los lenguajes de medio nivel (como es el caso del lenguaje C) tienen ciertas características que los acercan a los lenguajes de bajo nivel pero tienen, al mismo tiempo, ciertas cualidades que los hacen un lenguaje más cercano al humano o de alto nivel. Y por último se tienen los lenguajes de alto nivel los cuales son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática. Otra forma de clasificar los lenguajes es según la forma de ejecución, de acuerdo a esta clasificación se obtienen dos tipos de lenguajes. Los lenguajes compilados, los cuales se generan cuando un programa que se escribe en un lenguaje de alto nivel tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Los lenguajes interpretados también hacen parte de esta clasificación y son aquellos que se generan después de que un compilador haya traducido un lenguaje de alto nivel a un lenguaje maquina y este es almacenado para ejecutarlo en un futuro42. El compilador requiere también de una gramática, la cual es considerada como la ciencia que estudia los elementos de una lengua y sus combinaciones. El concepto proviene del término latino gramática y hace referencia, por otra parte, al arte de hablar y escribir una lengua de forma correcta, por lo tanto, es el conjunto de reglas y principios que gobiernan el uso de un lenguaje determinado (cada lenguaje tiene su propia gramática)43. Pero para el proceso de compilación debe existir un tipo de gramática especial, llamada gramática formal, esta es un conjunto de reglas para reescribir cadenas de caracteres, junto con un símbolo inicial desde el cual debe comenzar la reescritura. Por lo tanto, una gramática formal generalmente se piensa como una generadora de lenguajes. Sin embargo, a veces también puede ser usada como la base para un “reconocedor” (una función que determina si una cadena cualquiera pertenece a un lenguaje o es gramaticalmente incorrecta)44. “Existen diferentes tipos de compiladores los cuales se enunciaran a continuación:
Es un compilador escrito en el mismo lenguaje que compila (o parecido). Normalmente, cuando se extiende entre muchas máquinas diferentes el uso de un compilador, y éste se desea mejorar, el nuevo compilador se escribe utilizando el lenguaje del antiguo, de manera que pueda ser compilado por todas esas máquinas diferentes, y dé como resultado un compilador más potente de este mismo lenguaje.
Un descompilador realiza una labor de traducción inversa, esto es, pasa de un código máquina al equivalente en el lenguaje que lo generó. Cada descompilador trabaja con un lenguaje de alto nivel concreto. La descompilación suele ser una labor casi imposible, porque al código máquina generado casi siempre se le aplica una optimización en una fase posterior, de manera que un mismo código máquina ha podido ser generado a partir de varios códigos fuentes. Es por esta razón que en la actualidad sólo existen descompiladores de aquellos lenguajes en los que existe una relación biyectiva entre el código destino y el código fuente.
Este es uno de los conceptos más importantes con los que vamos a trabajar. Un metacompilador es un compilador de compiladores. Se trata de un programa que acepta como entrada la descripción de un lenguaje y produce el compilador de dicho lenguaje. Hoy en día no existen metacompiladores completos, pero sí parciales en los que se acepta como entrada una gramática de un lenguaje y se genera un autómata que reconoce cualquier sentencia del lenguaje. A este autómata podemos añadirle código para completar el resto del compilador. Entre los metacompiladores mas conocidos se encuentran: Lex, YACC, FLex, JavaCC, JLex, JFlex, CUP, etc”45. El proceso de compilación cuenta con tres fases, las cuales son: Análisis léxico, análisis sintáctico y análisis semántico. A continuación se enuncian: Análisis léxico: constituye la primera fase del proceso de compilación, en esta fase se lee el programa fuente de izquierda a derecha y se agrupa en componentes léxicos, que son secuencias de caracteres que tienen un significado46. Análisis sintáctico: En esta fase cada uno de los caracteres o componentes léxicos encontrados se agrupan jerárquicamente en frases gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es sintácticamente correcto (obedece a la gramática del lenguaje)47. Análisis semántico: La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores semánticos y reúne la información sobre los tipos para la fase posterior de generación de código. En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para identificar los operadores y operandos de expresiones y proposiciones48. En vista que el sistema tutor está diseñado y desarrollado para funcionar en un ambiente web es necesario definir que es un sistema distribuido, un concepto muy acertado es el de la universidad Escuela de administración, finanzas y tecnología (EAFIT), la cual define un sistema distribuido como aquel en el que los componentes (tanto de Hardware como de Software) localizados en computadores, conectados en red, comunican y coordinan sus acciones únicamente mediante el paso de mensajes49. 3.3 ANÁLISIS DE LAS FUENTES Como fuentes primarias están los estudiantes de segundo semestre de ingeniería y profesores de la universidad Antonio Nariño consultados; esta información recolectada permitió Sustentar la descripción y formulación del problema, justificación y objetivos. Las fuentes secundarias como tesis, papers, revistas, páginas web del autor y artículos recolectados fueron la base para la construcción de los antecedentes, alcances y limitaciones, marco teórico y conceptual. 3.4 VARIABLES INDEPENDIENTE. Sistema tutor en ambiente web. DEPENDIENTE. La adquisición y/o refuerzo de la competencia propositiva en los estudiantes de ingeniería de segundo semestre de la Universidad Antonio Nariño. 3.5 FORMULACIÓN DE HIPÓTESIS Si se implementa un sistema tutor en ambiente web para los estudiantes de ingeniería de segundo semestre de la universidad Antonio Nariño en la materia programación de computadores en lenguaje c, se reforzará la competencia propositiva en el área de programación.
En este capítulo se desarrolla el proyecto en su parte ingenieril de acuerdo a los estudios e investigaciones realizadas en los capítulos anteriores. La metodología a utilizar es RUP, ya que cumple y se ajusta a los requerimientos del proyecto. A continuación se explican las fases de esta metodología y su aplicación en el desarrollo del sistema tutor en ambiente web.
El objetivo preferente en la fase inicial es alcanzar un acuerdo entre todos los interesados respecto a los objetivos del ciclo vital para el proyecto. Objetivos Los principales objetivos de la fase inicial son:
Actividades esenciales Las actividades esenciales de la fase inicial son:
“Esta disciplina tiene como objetivos comprender la estructura y la dinámica de la organización, comprender problemas actuales e identificar posibles mejoras, comprender los procesos de negocio. Utiliza el Modelo de CU del Negocio para describir los procesos del negocio y los clientes, el Modelo de Objetos del Negocio para describir cada CU del Negocio con los Trabajadores, además utilizan los Diagramas de Actividad y de Clases”51.
La Universidad Antonio Nariño (UAN), nace el 07 de marzo de 1976 en las antiguas instalaciones de la Escuela de Medicina de la Universidad Javeriana, ubicadas en la Calle 20 Sur No. 13 –61 de la ciudad de Bogotá. La decisión de iniciar actividades en la zona Sur de Bogotá, responde en primer lugar, a la falta de un centro universitario en dicho sector y en segundo término, a que la política de cobertura educativa de entonces, no preveía la ampliación o creación de universidades estatales y programas de pregrado. Por ende, fueron muchos los jóvenes que no podían ser admitidos, y en su mayoría eran habitantes del sur de la capital. Fue así como la UAN, tomó la decisión de liderar el impacto educativo y cultural en dicha área, y estructuró su oferta académica con cuatro programas inicialmente: Administración de Empresas, Contaduría Pública, Licenciaturas en Matemáticas y Física, y en Química y Biología. Esto significó que para finales de 1977, con la asistencia de representantes del gobierno y el ICFES, la sede Sur de la UAN, se inaugurara oficialmente, tras haber sido aprobados los programas con su correspondiente infraestructura física y académica. De tal modo, las clases iniciaron el 2 de febrero de 1978. La Universidad adelanta programas de pregrado y de postgrado, en las modalidades de educación presencial y a distancia, en horarios diurnos y nocturnos, en diferentes sedes de la Capital de la República y en departamentos como Boyacá, Santander, Antioquia, Tolima, Huila, Cesar, Valle y Quindío. El proceso de crecimiento académico de la UAN, no sólo se ha complementado con la construcción de instalaciones propias, diseñadas y proyectadas como campus universitario, y la asignación de recursos físicos y financieros necesarios, como son laboratorios, audiovisuales, biblioteca y centros de cómputo. También ha contribuido la apreciación constante, constructiva y crítica de los propios procesos desde dentro (autoevaluación, autorregulación), y desde fuera (vigilancia por parte del Estado), en la tarea de mejoramiento continuo tanto en aquellos aspectos que constituyen las mayores fortalezas de la Universidad como en aquellos que requieren redirigirse.
La Universidad Antonio Nariño como institución de educación superior en claro compromiso con el país se ha propuesto la misión:
Posicionarse como una de las mejores universidades del país, con pensamiento crítico, autónomo y global, acreditada nacional e internacionalmente, que al estar a la vanguardia del conocimiento, contribuye a la competitividad nacional en ciencias, artes y tecnología, es el reto de la Universidad Antonio Nariño.
|