005.74-G934s-Capitulo II

Anuncio
16
CAPITULO II
Marco Teórico
En la actualidad el desarrollo de sistemas informáticos se encuentra muy
ligado a la capacidad de las instituciones de implementar soluciones factibles en
todos los aspectos sean estas de carácter técnico, operativo y económico.
Siempre las empresas o instituciones ven el beneficio que se puede tener al
implementar
soluciones
informáticas
para
solventar
sus
problemas
o
necesidades, es por ello que generalmente se busca utilizar tecnologías que
proporcionen beneficios a las instituciones y que ofrezcan ser escalables con
gran facilidad.
En las aplicaciones desarrolladas a nivel institucional existe la necesidad
de contar con la infraestructura física necesaria para sacarle el mayor provecho
al software desarrollado, en la cual la implementación de una red solventa
muchos de los problemas que pueden surgir si no estuviesen interconectadas
las terminales que sirven como punto de acceso al sistema. El desarrollo con
tecnologías del lado del servidor ofrece a los usuarios acceder al sistema
mediante los navegadores Web que acostumbran utilizar.
Las herramientas utilizadas en el desarrollo de sistemas pueden ser
variadas, sean estas de pago o gratuitas, sin embargo, lenguajes de
programación y herramientas gratuitas, proporcionan bondades que ni los
mismos productos de pago ofrecen, es por ello que el uso de herramientas
gratuitas va en aumento, considerando que los costos disminuyen con el uso de
estos. La utilización de un lenguaje orientado a objetos permite que el desarrollo
de sistemas se realice de una forma mas práctica, permitiendo que a largo
plazo el mantenimiento de este tipo de aplicaciones sea menos complicado,
facilitando la reutilización de código. Esto junto a la utilización de una
arquitectura que permita integrarse con los recursos con que se cuenta y que
17
satisfaga los requerimientos de los usuarios lleva a pensar que el desarrollo de
sistemas utilizando una arquitectura multi-nivel como es la utilizada en
aplicaciones Web, es una solución con beneficio a corto, mediano y largo plazo.
2.1 ENTORNO DE PROGRAMACIÓN WEB.
Hoy en día las redes informáticas dan respuesta a múltiples necesidades de
las organizaciones. Entre Internet, red de redes de alcance mundial, y la más
simple de las redes domésticas, existe todo un amplio abanico de posibilidades
de implementación, entre las que se encuentran las intranets.
Una intranet podría llegar a considerarse como un espacio propio y
particular de la compañía u organización. Nacieron como simples herramientas
de distribución de la información para llegar a convertirse en pocos años en
herramientas de gestión de la información.
La creación de una intranet va más allá de instalar físicamente una red
de área local, o el simple hecho de informatizar algunos procesos. No se
debería confundir una intranet con una simple herramienta de gestión que
integra a los distintos departamentos y sus equipos.
La intranet se configura como una red propia de una organización (o
incluso más de una red) que permite acceder a información de la compañía
utilizando los protocolos de comunicación propios de la tecnología de Internet,
en concreto el protocolo TCP/IP (Transmission Control Protocol/Internet
Protocol) y http (Hypertext Transfer Protocol).
Sólo el personal de la organización (empresas, centros educativos,...)
podrán acceder a la información que se considere como exclusiva de la intranet,
evitando el uso de la intranet al público en general. Así, los usuarios de las
intranets son, por su propia definición, usuarios de la misma organización o
18
relacionados con ella. El hecho de que las intranets utilicen la interfaz propia de
Internet reduce el tiempo de aprendizaje de sus usuarios, y simplifica la
instalación de aplicaciones. Permiten la automatización de ciertas tareas y una
reducción de costes por el hecho de manejar información de forma digital,
evitando el uso de soportes en formato papel.
2.1.1 IMPLEMENTACIÓN Y DISEÑO DE UNA INTRANET.
Un buen diseño de una intranet ya desde una primera fase de
implementación puede hacer ahorrar muchos costes a la empresa. La intranet
debe adaptarse a la empresa: así, es clave un buen diseño estratégico de la
misma, para que no resulte ineficaz y sea convenientemente amortizada por los
usuarios a los que va dirigida. Bien planificada, la intranet puede resultar una
muy buena herramienta para la empresa. Además, las redes internas son
evidentemente dinámicas, y por lo tanto deberán ser ajustables a las nuevas
necesidades que vayan surgiendo dentro de la organización.
Aspectos como por ejemplo elevar el nivel de satisfacción de los usuarios
de una organización (directivos, empleados,...), ya que se están utilizando
herramientas de trabajo en equipo que potencian el grado de integración en la
organización, pueden ser un buen motivo, entre otros, para llegar a tomar la
decisión de implementar una intranet.
Es de destacar que para sacarle el máximo provecho a una intranet, es
necesario contar dentro de la organización con aplicativos que sean funcionales
para la red, actualmente existe una tendencia a que las aplicaciones a nivel
interno sean desarrolladas en entornos Web.
2.1.2 APLICACIONES WEB.
Las aplicaciones Web generan dinámicamente una serie de páginas en
un formato estándar, soportado por navegadores Web comunes como HTML
19
(HyperText Markup Language) o XHTML. Se utilizan lenguajes interpretados del
lado del cliente, tales como JavaScript, para añadir elementos dinámicos a la
interfaz de usuario. Generalmente cada página Web individual es enviada al
cliente como un documento estático, pero la secuencia de páginas provee de
una experiencia interactiva.
Para tener esta idea más clara debemos hacer énfasis en el concepto de
una aplicación Web y este se define así: “Un sistema informático que los
usuarios utilizan accediendo a un servidor Web a través de Internet o de una
Intranet”.
Ahora bien las interfaces Web tienen ciertas limitantes en la funcionalidad
del cliente. Métodos comunes en las aplicaciones de escritorio como dibujar en
la pantalla o arrastrar-y-soltar no están soportadas por las tecnologías Web
estándar.
Los
desarrolladores
Web
comúnmente
utilizan
lenguajes
interpretados del lado del cliente para añadir más funcionalidad, especialmente
para crear una experiencia interactiva que no requiera recargar la página cada
vez. Recientemente se han desarrollado tecnologías para coordinar estos
lenguajes con tecnologías del lado del servidor.
Otra aproximación es utilizar los programas Java applets o Macromedia
Flash para producir parte o toda la interfaz de usuario. Como casi todos los
browsers incluyen soporte para estas tecnologías, usualmente por medio de
plug-in, aplicaciones basadas en Java o Flash pueden ser implementadas con
aproximadamente la misma facilidad. Como hacen caso omiso de las
configuraciones de los browsers estas tecnologías permiten más control sobre
la interfaz, aunque incompatibilidad entre implementaciones de Flash o Java
puedan traer nuevas complicaciones. Por las similitudes con una arquitectura
cliente-servidor, con un cliente un poco especializado, hay disputas sobre si
llamar a estos sistemas aplicaciones Web; un término alternativo es “aplicación
enriquecida de Internet”.
20
Una ventaja significativa en la construcción de aplicaciones Web que
soporten las características de los browsers estándar es que deberían funcionar
igual independientemente de la versión del sistema operativo instalado en el
cliente. En vez de crear clientes para Windows, Mac OS X, GNU/Linux, y otros
sistemas operativos, la aplicación es escrita una vez y es mostrada casi en
todos lados. Sin embargo, aplicaciones inconsistentes de HTML, CSS y otras
especificaciones de browsers pueden causar problemas en el desarrollo y
soporte de aplicaciones Web.
Por mencionar otras ventajas de las aplicaciones Web se tiene que:
•
Son más fáciles de actualizar.
•
Proporcionan acceso inmediato a la aplicación.
•
Requieren menos memoria.
•
Menor cantidad de errores y fallas.
•
Permiten múltiples usuarios al mismo tiempo.
Para el caso de las aplicaciones Web la interacción con el usuario se
realiza mediante formularios. Un formulario se puede definir como un diálogo
que forma parte de una página Web. Este diálogo está construido por un
conjunto de elementos como:
•
Campos de texto de una o varias líneas.
•
Checkboxes (opciones no excluyentes).
•
Radio buttons (opciones múltiples excluyentes).
•
Pull-down menus.
•
Botones.
Para la validación de formularios y el manejo de los datos que puedan
contener, existen numerosos lenguajes de programación utilizados para el
desarrollo de aplicaciones Web, entre los que destacan:
•
Java, con sus tecnologías Java Servlets y JavaServer Pages (JSP).
•
PHP.
21
•
ASP/ASP.NET, que no es un lenguaje de programación sino una
arquitectura de desarrollo web en la que se puede usar por debajo distintos
lenguajes (por ejemplo VB.NET o C# para ASP.NET, o VBScript/JScript para
ASP).
•
Perl.
•
Ruby.
•
Python.
En cuanto a las herramientas de software a utilizar, hoy en día están
adquiriendo especial relevancia las herramientas de código libre. Las ventajas
de utilizar servidores con código abierto como Apache son indudables y junto a
Java se están convirtiendo en programas muy utilizados en estos entornos, por
sus presentaciones y rendimientos equiparables o superiores a las de productos
comerciales, y lo mejor de todo es que se reducen los costos de licenciamiento
ya que no requieren pago por la utilización de estos.
2.2 TECNOLOGIA OPEN SOURCE.
Open Source, podría traducirse como 'código fuente abierto': un
programa que ofrece al usuario la posibilidad de entrar en sus líneas de código
para poder estudiarlo o modificarlo. Pero no sólo hace referencia al libre acceso
al código fuente. Las condiciones de distribución de un programa Open Source
deben cumplir una serie de criterios. La intención de la 'Definición de Open
Source' es establecer que esos criterios contengan la esencia de lo que los
programadores quieren que signifique: que aseguren que los programas
distribuidos con 'licencia Open Source' estarán disponibles para su continua
revisión y mejora para que alcancen niveles de fiabilidad que no pueda
conseguir ningún programa comercial 'cerrado'.
A la idea esencial del Open Source, ofrecer programas con acceso al
código fuente, van unidas una serie de conceptos:
22
•
FLEXIBILIDAD. Si el código fuente está disponible, los desarrolladores
pueden modificar los programas a su antojo. Además, se produce un flujo
constante de ideas que mejora la calidad de los programas.
•
FIABILIDAD Y SEGURIDAD. Con varios programadores a la vez escrutando
el mismo trabajo, los errores se detectan y corrigen antes, por lo que el
producto resultante es más fiable y eficaz que el comercial.
•
RAPIDEZ DE DESARROLLO. Las actualizaciones y ajustes se realizan a
través de una comunicación constante vía Internet.
•
RELACIÓN CON EL USUARIO. El programador se acerca mucho más a las
necesidades reales de los clientes, y puede crear un producto específico
para él.
Su contraparte el Software libre, es el software que, una vez obtenido,
puede ser usado, copiado y redistribuido libremente. El software libre suele
estar disponible gratuitamente, pero no hay que asociar software libre a
software gratuito, o a precio del coste de la distribución a través de otros
medios; sin embargo no es obligatorio que sea así y, aunque conserve su
carácter de libre, puede ser vendido comercialmente.
Aunque en la práctica el software Open Source y el software libre
comparten las mismas licencias, la FSF (Free Software Foundation) opina que
el movimiento Open Source es filosóficamente diferente del movimiento del
software libre. Esto debido a que existe confusión entre ambos, ya que se
puede decir que de forma general todo software Open Source puede ser
distribuido libremente y se puede modificar, sin embargo, no se pude decir lo
mismo del Software libre ya que este se puede distribuir pero no se pude
acceder al código fuente para modificarlo.
En la actualidad existe un sin número de software que es de gran
utilidad para los desarrolladores de sistemas que pueden ser de tipo Open
23
Source o Software libre, las cuales son de mucha ayuda a la hora de elaborar
las aplicaciones. Estas herramientas abarcan los distintos campos de la
informática
tales
como
son:
SGBD,
Servidores
WEB,
Lenguajes
de
programación, IDEs, Sistemas Operativos, Software de aplicación, entre otros.
2.2.1 SISTEMAS DE GESTIÓN DE BASES DE DATOS.
Los Sistemas de gestión de base de datos son un tipo de software muy
específico, dedicados a servir de interfaz entre la base de datos, el usuario y las
aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos,
de un lenguaje de manipulación de datos y de un lenguaje de consulta.
De forma sencilla, un sistema de gestión de bases de datos se puede
definir como una colección de datos interrelacionados y un conjunto de
programas para acceder a esos datos. Existen dos grandes modelos de
sistemas de gestión de bases de datos:
• Sistemas de Gestión de Bases de Datos Relacionales (SGBDR)
Las bases de datos que generan se construyen con información muy
estructurada (datos) acerca de una organización o empresa determinada.
Cuando un usuario realiza una consulta en una base de datos relacional, el
sistema presenta como resultado la respuesta exacta a lo que se busca. A este
tipo de bases de datos se les denomina bases de datos relacionales, y a los
sistemas que las gestionan, Sistemas de Gestión de Bases de Datos
Relacionales (SGBDR).
Ejemplos de bases de datos relacionales son las bases de datos de
cuentas y clientes de un banco o las bases de datos de productos creadas por
los centros comerciales o las librerías para llevar un control de sus ventas.
Entre los sistemas de gestión de bases de datos relacionales tenemos:
MySQL, Oracle, Access, Dbase, Informix, entre otros.
24
• Sistemas de Gestión de Bases de Datos Documentales (SGBDD) o Sistemas
de Recuperación de Información (SRI)
Las bases de datos que generan se construyen con información no
estructurada tipo texto (documentos) sobre uno o varios temas. Cuando un
usuario realiza una consulta en una base de datos documental, el sistema
presenta como resultado, no una respuesta exacta, sino documentos útiles para
satisfacer la pregunta del usuario. A este tipo de bases de datos se les
denomina bases de datos documentales, y a los sistemas que las gestionan,
Sistemas de Gestión de Bases de Datos Documentales (SGBDD) o Sistemas
de Recuperación de Información (SRI).
Ejemplos de bases de datos documentales son las bases de datos
bibliográficas, bases de datos de prensa, bases de datos de informes de una
empresa.
Ejemplos de sistemas de gestión de bases de datos documentales son
Knosys, Inmagic, ISIS, BRS, entre otros.
MÓDULOS DE UN SISTEMA DE GESTIÓN DE BASE DE DATOS.
La gestión de los datos supone tanto la definición de estructuras para el
almacenamiento de la información como la provisión de mecanismos para la
gestión de la información que se almacena.
Un sistema de base de datos se divide en módulos que tratan cada una
de las responsabilidades del sistema general, entre los que podemos destacar:
1. Modelo de datos.
2. Lenguaje de definición de datos.
3. Lenguaje de manipulación de los datos.
25
1. Modelo de datos.
La descripción de la estructura de una base de datos es el modelo de
datos, una colección de herramientas conceptuales para describir datos,
relación de datos, semánticas de datos y restricciones de datos.
Modelo: instrumento que se aplica a una parcela del mundo real (un universo
del discurso) para obtener una estructura de datos a la que se denomina
esquema.
Modelo de datos: conjunto de conceptos, reglas y convenciones que permiten
describir los
datos del universo del discurso. Definir cuál es el universo del
discurso es el primer paso en la concepción de una base de datos.
Los modelos de datos tienen su objetivo específico entre los que destacan:
Formalización: el modelo de datos permite definir formalmente las estructuras
permitidas y las restricciones para representar los datos de un sistema de
información.
Diseño: el modelo es uno de los elementos básicos (junto con los lenguajes, la
documentación, etc.) para el desarrollo de una metodología de diseño de bases
de datos. De lo que se trata es de representar el universo del discurso. Todo
universo de un discurso tiene propiedades de dos tipos:
•
Estáticas: que no se modifican en el tiempo (las estructuras).
•
Dinámicas: que varían con el transcurso del tiempo (los datos o valores que
se almacenan en las estructuras).
Los sistemas de bases de datos disponen de unos lenguajes: conjunto
de instrucciones que de acuerdo a una sintaxis ayudan a realizar las distintas
funciones que ha de cumplir un SGBD.
26
Si atendemos al tipo de función distinguimos: lenguajes de definición y
lenguajes de manipulación.
Si atendemos al tipo de usuarios: lenguajes orientados a informáticos y
lenguajes orientados a usuarios finales.
El usuario final no necesita normalmente tanta potencia, por ello se le da
un lenguaje de manipulación con sintaxis sencilla, a veces por medio de menús.
La estructura y sintaxis de todos esos tipos de lenguajes dependen de cada
SGBD, pero en los SGBD relacionales, SQL es un estándar muy extendido.
2. El lenguaje de definición de datos (DDL).
Se almacena en un diccionario o directorio de datos. Un directorio o
diccionario de datos es un archivo que contiene metadatos, es decir, "datos
sobre datos".
Es un conjunto de instrucciones que operan de acuerdo a una sintaxis y
que permiten al administrador de la base definir los datos con facilidad y
precisión, especificando sus distintas estructuras.
•
Lenguaje de definición de la estructura lógica: permite asignar nombre a los
campos, a los registros, estableciendo sus longitudes y características, así
como sus relaciones, restricciones, etc.
•
Lenguaje para la definición de la estructura interna.
•
Lenguaje de definición de estructuras externas: El SGBD debe poner a
disposición de los usuarios medios que les permitan recuperar o actualizar
los datos contenidos en la base, de acuerdo con la visión lógica o estructura
externa (vista) que precise cada aplicación.
3. El lenguaje de manipulación de datos (DML).
Sirve para recuperar datos, insertarlos, suprimirlos o modificarlos. Son un
conjunto de instrucciones que operan de acuerdo a una sintaxis y que permiten
a los usuarios la posibilidad de referirse a determinados conjuntos de datos que
27
cumplan ciertas condiciones (criterio de selección), como que un atributo tenga
un determinado valor, o que un conjunto de atributos y valores satisfagan cierta
expresión lógica. Además del criterio de selección, es preciso indicar la
estructura externa que se desea actualizar o recuperar.
Un ejemplo práctico y muy utilizado es el gestor de bases de datos
MySQL, que es un sistema de gestión de bases de datos relacional, licenciado
bajo la GPL de la GNU. Su diseño multihilo le permite soportar una gran carga
de forma muy eficiente. MySQL fue creada por la empresa sueca MySQL AB,
que mantiene el copyright del código fuente del servidor SQL, así como también
de la marca.
Aunque MySQL es software libre, MySQL AB distribuye una versión
comercial de MySQL, que no se diferencia de la versión libre más que en el
soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un
software propietario, ya que de no ser así, se vulneraría la licencia GPL.
Con miles de implementaciones a escala mundial y clientes de la talla de
Facebook, Google, Nokia, Baidu o China Mobile, con más de 100 millones de
copias de MySQL descargadas y distribuidas, y diariamente se producen otras
50.000 descargas adicionales, MySQL probablemente es el gestor más usado
en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta
gran aceptación es debida, en parte, a que existen infinidad de librerías y otras
herramientas que permiten su uso a través de gran cantidad de lenguajes de
programación, además de su fácil instalación y configuración.
Características de MySQL.
Las principales características de este gestor de bases de datos son las
siguientes:
•
Aprovecha la potencia de sistemas multiprocesador, gracias a su
implementación multihilo.
28
•
Soporta gran cantidad de tipos de datos para las columnas.
•
Dispone de API's en gran cantidad de lenguajes (C, C++, Java, PHP, etc).
•
Gran portabilidad entre sistemas.
•
Soporta hasta 32 índices por tabla.
•
Gestión de usuarios y passwords, manteniendo un muy buen nivel de
seguridad en los datos.
2.2.2 LENGUAJES DE PROGRAMACIÓN.
Consiste en un conjunto de reglas sintácticas y semánticas que definen
su estructura y el significado de sus elementos, respectivamente.
Un lenguaje de programación permite a un programador especificar de
manera precisa: sobre qué datos una computadora debe operar, cómo deben
ser estos almacenados y transmitidos y qué acciones debe tomar bajo una
variada gama de circunstancias.
Clasificación de los lenguajes de programación.
Los lenguajes de programación se determinan según el nivel de
abstracción, según la forma de ejecución y según el paradigma de
programación que poseen cada uno de ellos y esos pueden ser:
Según el nivel de abstracción:
•
Lenguajes de bajo nivel.
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al
funcionamiento de una computadora. El lenguaje de más bajo nivel es, por
excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que
al programar en ensamblador se trabajan con los registros de memoria de la
computadora de forma directa.
29
•
Lenguajes de medio nivel.
Hay lenguajes de programación que son considerados por algunos expertos
como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas
características que los acercan a los lenguajes de bajo nivel pero teniendo, al
mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al
humano y, por tanto, de alto nivel.
•
Lenguajes de alto nivel.
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están
formados por elementos de lenguajes naturales, como el inglés. En BASIC, el
lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10
THEN STOP" pueden utilizarse para pedir a la computadora que pare si
CONTADOR es igual a 10. 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.
Según la forma de ejecución:
•
Lenguajes compilados.
Naturalmente, un programa que se escribe en un lenguaje de alto nivel también
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. Se requiere
una corrida de compilación antes de procesar los datos de un problema.
Los compiladores son aquellos cuya función es traducir un programa escrito en
un determinado lenguaje a un idioma que la computadora entienda (lenguaje
máquina con código binario).
30
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual
Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya
errores, sino hasta que luego de haber compilado el programa, ya no aparecen
errores en el código.
•
Lenguajes interpretados.
Se puede también utilizar una alternativa diferente de los compiladores para
traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar
en forma permanente el código objeto que se produce durante la corrida de
compilación para utilizarlo en una corrida de producción futura, el programador
sólo carga el programa fuente en la computadora junto con los datos que se van
a procesar. A continuación, un programa intérprete, almacenado en el sistema
operativo del disco, o incluido de manera permanente dentro de la máquina,
convierte cada proposición del programa fuente en lenguaje de máquina
conforme vaya siendo necesario durante el proceso de los datos. No se graba
el código objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y
traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo
de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser
interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea
más lento en tiempo de ejecución (porque se va revisando el código en tiempo
de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que
estar compilando a cada momento el código completo).
El intérprete elimina la necesidad de realizar una corrida de compilación
después de cada modificación del programa cuando se quiere agregar
funciones o corregir errores; pero es obvio que un programa objeto compilado
con antelación deberá ejecutarse con mucha mayor rapidez que uno que se
debe interpretar a cada paso durante una corrida de producción.
31
Según el paradigma de programación.
•
Imperativo: describe la programación como una secuencia instrucciones o
comandos que cambian el estado de un programa. El código máquina en
general está basado en el paradigma imperativo. Su contrario es el
paradigma declarativo. En este paradigma se incluye el paradigma
procedimental (procedural) entre otros.
•
Declarativo: No se basa en el cómo se hace algo (cómo se logra un objetivo
paso a paso), sino que describe (declara) cómo es algo. En otras palabras,
se enfoca en describir las propiedades de la solución buscada, dejando
indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar
esa solución. Es más complicado de implementar que el paradigma
imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución
de determinados problemas.
•
Estructurado: la programación se divide en bloques (procedimientos y
funciones) que pueden o no comunicarse entre sí. Además la programación
se controla con secuencia, selección e iteración. Permite reutilizar código
programado y otorga una mejor compresión de la programación. Es
contrario al paradigma inestructurado, de poco uso, que no tiene ninguna
estructura, es simplemente un “bloque”, como por ejemplo, los archivos
batch (.bat).
•
Funcional: este paradigma concibe a la computación como la evaluación de
funciones matemáticas y evita declarar y cambiar datos. En otras palabras,
hace hincapié en la aplicación de las funciones y composición entre ellas,
más que en los cambios de estados y la ejecución secuencial de comandos
(como lo hace el paradigma procedimental). Permite resolver ciertos
problemas de forma elegante y los lenguajes puramente funcionales evitan
los efectos secundarios comunes en otro tipo de programaciones.
32
•
Lógico: se basa en la definición de reglas lógicas para luego, a través de un
motor de inferencias lógicas, responder preguntas planteadas al sistema y
así resolver los problemas, por ejemplo Prolog.
•
Orientados a Objetos: En la Programación Orientada a Objetos (POO u
OOP según siglas en inglés) se definen los programas en términos de
"clases de objetos", objetos que son entidades que combinan estado (es
decir, datos) comportamiento (esto es, procedimientos o métodos) e
identidad (propiedad del objeto que lo diferencia del resto). La programación
orientada a objetos expresa un programa como un conjunto de estos
objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer
los programas módulos más fáciles de escribir, mantener y reutilizar. Un
ejemplo de lenguaje orientado a objetos que tiene una gran aceptación a
nivel mundial por sus diversas características es JAVA que en cualquier
entorno en el que se utilice, ya sean grandes empresas, aplicaciones
domésticas, educacionales, siempre se ve como uno de los lenguajes más
potentes del mercado.
Java.
La tecnología Java se creó como una herramienta de programación en
una pequeña operación secreta y anónima denominada "The Green Project" en
Sun Microsystems en el año 1991. El equipo secreto ("Green Team"),
compuesto por trece personas y dirigido por James Gosling, se encerró en una
oficina desconocida de Sand Hill Road en Menlo Park, interrumpió todas las
comunicaciones regulares con Sun y trabajó sin descanso durante 18 meses.
Intentaban anticiparse y prepararse para el futuro de la informática. Su
conclusión inicial fue que al menos en parte se tendería hacia la convergencia
de los dispositivos digitales y los ordenadores.
33
El resultado fue un lenguaje de programación que no dependía de los
dispositivos denominado "Oak". Para demostrar cómo podía contribuir este
nuevo lenguaje al futuro de los dispositivos digitales, el equipo desarrolló un
controlador de dispositivos de mano para uso doméstico destinado al sector de
la televisión digital por cable. Por desgracia, la idea resultó ser demasiado
avanzada para el momento y el sector de la televisión digital por cable no
estaba listo para el gran avance que la tecnología Java les ofrecía.
Poco tiempo después Internet estaba listo para la tecnología Java y, justo
a tiempo para su presentación en público en 1995, el equipo pudo anunciar que
el navegador Netscape Navigator incorporaría la tecnología Java.
Java ha atraído a cerca de 4 millones de desarrolladores de software, se
utiliza en los principales sectores de la industria de todo el mundo y está
presente en un gran número de dispositivos, ordenadores y redes de cualquier
tecnología de programación.
La versatilidad y eficiencia, la portabilidad de su plataforma y la seguridad
que aporta, la han convertido a Java en la tecnología ideal para su aplicación a
redes, de manera que hoy en día, más de 2.500 millones de dispositivos utilizan
la tecnología Java, por ejemplo:
•
Más de 700 millones de ordenadores.
•
708 millones de teléfonos móviles y otros dispositivos de mano.
•
1000 millones de tarjetas inteligentes.
•
Sintonizadores, impresoras, Web cams, juegos, sistemas de navegación
para automóviles, terminales de lotería, dispositivos médicos, cajeros de
pago, etc.
Hoy en día, se puede encontrar la tecnología Java en redes y
dispositivos que comprenden desde Internet y superordenadores científicos
hasta portátiles y teléfonos móviles; desde simuladores de mercado en Wall
34
Street hasta juegos de uso doméstico y tarjetas de crédito: Java está en todas
partes.
La tecnología Java, una tecnología madura, extremadamente eficaz y
sorprendentemente versátil, se ha convertido en un recurso inestimable ya que
permite a los desarrolladores:
•
Desarrollar software en una plataforma y ejecutarlo en prácticamente
cualquier otra plataforma.
•
Crear programas para que funcionen en un navegador Web y en
servicios Web.
•
Desarrollar aplicaciones para servidores como foros en línea, tiendas,
encuestas, procesamiento de formularios HTML, etc.
•
Combinar aplicaciones o servicios basados en la tecnología Java para
crear servicios o aplicaciones totalmente personalizados.
•
Desarrollar potentes y eficientes aplicaciones para teléfonos móviles,
procesadores remotos, productos de consumo de bajo coste y
prácticamente cualquier dispositivo digital.
La Máquina Virtual Java es el núcleo del lenguaje de programación Java.
De hecho, es imposible ejecutar un programa Java sin ejecutar alguna
implantación de la JVM. En la JVM se encuentra el motor que en realidad
ejecuta el programa Java y es la clave de muchas de las características
principales de Java, como la portabilidad, la eficiencia y la seguridad.
Siempre que se corre un programa Java, las instrucciones que lo
componen no son ejecutadas directamente por el hardware sobre el que
subyace, sino que son pasadas a un elemento de software intermedio, que es el
encargado de que las instrucciones sean ejecutadas por el hardware. Es decir,
el código Java no se ejecuta directamente sobre un procesador físico, sino
sobre un procesador virtual Java.
35
En la figura 2.1 puede observarse la capa de software que implementa la
máquina virtual Java. Esta capa de software oculta los detalles inherentes a la
plataforma, a las aplicaciones Java que se ejecuten sobre ella.
Debido a que la plataforma Java fue diseñada pensando en que se
implementaría sobre una amplia gama de sistemas operativos y de
procesadores, se incluyeron dos capas de software para aumentar su
portabilidad. La primera dependiente de la plataforma es llamada adaptador,
mientras que la segunda, que es independiente de la plataforma, se le llama
interfaz de portabilidad. De esta manera, la única parte que se tiene que escribir
para una plataforma nueva, es el adaptador. El sistema operativo proporciona
los servicios de manejo de ventanas, red, sistema de archivos, etcétera.
CAPA DE SOFTWARE QUE IMPLEMENTA LA MÁQUINA VIRTUAL JAVA.
Applets y Aplicaciones
API Java Base
Extensión Estándar al API Java
Clases Java de
Clases Java Base
Extensión Estándar
Maquina Virtual Java
Interfaz de portabilidad
Adaptador
Adaptador
JavaOS
SO (Windows, Linux,
Navegador
OS2,
etc.)
SO (Unix, etc.)
Hardware
Hardware
Hardware
Figura 2.1
2.2.3 SERVIDOR WEB.
Es un programa que implementa el protocolo HTTP (hypertext transfer
protocol). Este protocolo está diseñado para transferir lo que llamamos
hipertextos, páginas Web o páginas HTML (hypertext markup language): textos
36
complejos con enlaces, figuras, formularios, botones y objetos incrustados
como animaciones o reproductores de música.
Sin embargo, el hecho de que HTTP y HTML estén íntimamente ligados
no debe dar lugar a confundir ambos términos. HTML es un formato de archivo
y HTTP es un protocolo.
Cabe destacar el hecho de que la palabra servidor identifica tanto al
programa como a la máquina en la que dicho programa se ejecuta. Existe, por
tanto, cierta ambigüedad en el término, aunque no será difícil diferenciar a cuál
de los dos referirse en cada caso.
Un servidor Web se encarga de mantenerse a la espera de peticiones
HTTP llevada a cabo por un cliente HTTP que llamado navegador. El
navegador realiza una petición al servidor y éste le responde con el contenido
que el cliente solicita.
Servidor Web Apache.
Apache es un servidor Web de código abierto. Su desarrollo comenzó en
febrero de 1995, por Rob McCool, en una tentativa de mejorar el servidor
existente en el NCSA. La primera versión apareció en enero de 1996, el Apache
1.0. Hacia el 2000, el servidor Web Apache era el más extendido en el mundo.
El nombre «Apache» es un acrónimo de «a patchy server» -un servidor de
remiendos-, es decir un servidor construido con código preexistente y piezas y
parches de código. Es la auténtica «kill app» del software libre en el ámbito de
los servidores y el ejemplo de software libre de mayor éxito, por delante incluso
del kernel Linux. Desde hace años, más del 60% de los servidores web de
Internet emplean Apache.
37
Características del Servidor Apache.
•
Nuevos módulos Apache API.: se utiliza un nuevo conjunto de interfaces de
aplicación (APIs).
•
Filtrado: Los módulos pueden actuar como filtros de contenido.
•
Soporte para IPv6: Se tiene soporte para la nueva generación de las
direcciones IP.
•
Directivas simplificadas: Se han eliminado una serie de directivas
complicadas y otras se han simplificado.
•
Respuestas a errores en diversos idiomas: Cuando usa documentos Server
Side Include (SSI), las páginas de errores personalizables se pueden
entregar en diversos idiomas
•
Soporte a múltiples protocolos.
Para que una aplicación Web desarrollada con Java sea funcional, es
necesario disponer de
un contenedor de servlets para que se puedan
interpretar y ejecutar las aplicaciones del lado del servidor, ya que es el motor
que permite la funcionalidad de este tipo de aplicaciones. Uno de los más
utilizados es Tomcat.
Tomcat: es un contenedor de Servlets con un entorno JSP. Un contenedor de
Servlets es un shell de ejecución que maneja e invoca servlets por cuenta del
usuario.
Podemos dividir los contenedores de Servlets en:
1. Contenedores de Servlets Stand-alone (Independientes)
Estos son una parte integral del servidor web. Este es el caso cuando
usando un servidor web basado en Java, por ejemplo, el contenedor de
servlets es parte de JavaWebServer (actualmente sustituido por iPlanet).
Este el modo por defecto usado por Tomcat.
38
2. Contenedores de Servlets dentro-de-Proceso.
El contenedor Servlet es una combinación de un plugin para el servidor web
y una implementación de contenedor Java. El plugin del servidor web abre
una JVM (Máquina Virtual Java) dentro del espacio de direcciones del
servidor web y permite que el contenedor Java se ejecute en él. Si una cierta
petición debería ejecutar un servlet, el plugin toma el control sobre la
petición y lo pasa al contenedor Java (usando JNI). Un contenedor de este
tipo es adecuado para servidores multi-thread de un sólo proceso y
proporciona un buen rendimiento pero está limitado en escalabilidad
3. Contenedores de Servlets fuera-de-proceso.
El contenedor Servlet es una combinación de un plugin para el servidor web
y una implementación de contenedor Java que se ejecuta en una JVM fuera
del servidor web. El plugin del servidor web y el JVM del contenedor Java se
comunican usando algún mecanismo IPC (normalmente sockets TCP/IP). Si
una cierta petición debería ejecutar un servlet, el plugin toma el control sobre
la petición y lo pasa al contenedor Java (usando IPCs). El tiempo de
respuesta en este tipo de contenedores no es tan bueno como el anterior,
pero
obtiene
mejores
rendimientos
en
otras
cosas
(escalabilidad,
estabilidad, etc.).
Tomcat puede utilizarse como un contenedor solitario (principalmente
para desarrollo y depuración) o como plugin para un servidor web existente
(actualmente se soportan los servidores Apache, IIS y Netscape). Esto significa
que siempre que despleguemos Tomcat tendremos que decidir cómo usarlo.
2.2.4 ENTORNOS INTEGRADOS DE DESARROLLO (IDE).
El entorno de desarrollo integrado o en inglés Integrated Development
Environment, es un programa compuesto por un conjunto de herramientas para
un programador. Un IDE es un entorno de programación que ha sido
39
empaquetado como un programa de aplicación, es decir, consiste en un editor
de código, un compilador, un depurador y un constructor de interfaz gráfica GUI
y otras herramientas de utilidad para el programador.
Los IDEs pueden ser aplicaciones por si solas o pueden ser parte de
aplicaciones existentes. El leguaje Visual Basic por ejemplo puede ser usado
dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir
sentencias Visual Basic en forma de macros para Word.
Los IDEs proveen un marco de trabajo amigable para la mayoría de los
lenguajes de programación tales como C++, JAVA, C#, Visual Basic, Object
Pascal, Velneo y otros. En algunos lenguajes, un IDE puede funcionar como un
sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de
programación en forma interactiva, sin necesidad de trabajo orientado a
archivos de texto, como es el caso de Smalltalk u Objective-C.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de
programación. Este es el caso de Eclipse, que mediante plugins se le puede
añadir soporte de lenguajes adicionales.
Componentes de un IDE.
•
Un editor de texto.
•
Un compilador.
•
Un intérprete.
•
Herramientas de automatización.
•
Un depurador.
•
Posibilidad de ofrecer un sistema de control de versiones.
•
Factibilidad para ayudar en la construcción de interfaces gráficas de
usuarios.
40
La historia de la programación ha evolucionado paralelamente a la de los
editores de texto. Cuando los programas se almacenaban en tarjetas
perforadas, la tarea de traducción del pseudo-código al lenguaje de “huecos y
no-huecos” que la máquina entendía consumía la mayor parte del tiempo de
producción. Los lenguajes, compiladores y entornos han cambiado muchísimo
desde entonces. Lo cierto es que cuando hay que desenmarañar el código de
un programa para llevar a buen puerto un proyecto, es importante que las
herramientas que utilizamos no nos impongan límites artificiales y nos permitan
automatizar tareas repetitivas, por lo que nos conviene conocer las alternativas
con las que contamos. Hoy día existen técnicas pensadas para perfeccionar la
programación como disciplina y típicamente integradas en los IDEs.
Algunos editores señalan o colorean la sintaxis del lenguaje de
programación, indexan el código automáticamente, completan los paréntesis y
los corchetes y permiten compilar desde el mismo editor. Pero eso es todo. No
escriben código, no están integrados con el compilador ni cuentan con un
servidor de aplicaciones. Tampoco cuentan con herramientas gráficas de
desarrollo. Los IDEs suministrarán todo esto y además te facilitarán la
depuración el código, el control de versiones y la gestión de los archivos que
vienen a componer un proyecto software.
Existe diversidad de opiniones en cuanto a si es mejor emplear un “editor
inteligente” o un entorno de desarrollo con docenas de herramientas. Algunas
personas prefieren los editores, ya que piensan que cuesta mucho aprender a
manejar un IDE, que generan código poco eficiente o que les fuerza e emplear
un determinado estilo de programación. Otras prefieren los IDEs a la
programación “de verde sobre negro” y comparan el no querer usarlos con la
situación de programadores de “ensamblador” que rechazan emplear lenguajes
de más alto nivel. Ambos grupos tienen parte de razón. Para elegir la alternativa
que mejor nos convenga para cada proyecto, lenguaje o circunstancia
particular, lo mejor es informarse adecuadamente.
41
Los IDEs son entornos, pues constituyen un lugar que envuelve al
programador como un taller envuelve a un artesano. Son integrados o
integradores, pues incorporan una serie de herramientas y utilidades de
programación en un mismo espacio, y están creados para el desarrollo pues
ayudan a construir software y ellos mismos son una forma de software más
desarrollada y compleja que un compilador convencional.
La construcción de un programa siempre va a consistir en la escritura de
un listado de código que debe ser correcto, mantenible y modificable. Gracias a
los IDEs podremos reutilizar, desde un repositorio, componentes software ya
desarrollados y emplear funciones de auto-completado de código. Por ejemplo,
cuando se escriben los primeros caracteres de una función definida en otra
parte de nuestro programa, se nos sugerirán los argumentos que podremos
emplear, evitándonos buscar la función y ahorrándonos errores y tecleo al
construir un programa. Un IDE nos permitirá además emplear gran cantidad de
opciones del compilador de forma integrada, desde el mismo entorno, con lo
que se evitan cambios de contexto. Se facilita asimismo la documentabilidad de
un proyecto software, muy importante a la hora de ampliar, modificar y
mantener un programa.
El estilo de Programación Orientada a Objetos es uno de los que más se
beneficia del empleo de un IDE, gracias a las paletas de atributos de objeto que
suelen incluir casi todos los IDEs, potenciando además características clave
como la encapsulación y la herencia. La Programación Visual tal y como hoy
existe no habría podido llegar a lo que es sin las herramientas gráficas que
suministran los IDEs modernos.
Todas estas ventajas, aplicadas a gran escala sobre un equipo de
programadores formados a lo largo de una serie de proyectos software,
incrementan el rendimiento y la productividad en modo apreciable.
42
Entre los grandes actores del mercado de los IDEs, hemos de mencionar
a Borland, empresa que con sus entornos JBuilder, C++Builder y Delphi Builder
ha ido perfeccionando la tecnología de los IDEs mediante su comercialización.
Borland no deja de ser una casa de software privativo, razón por la cual existen
una serie de iniciativas más abiertas a las que la comunidad Open Source suele
ser más adepta, entre las cuales podemos destacar VIDE para Java y la
comunidad Eclipse.org. Pero entre las mejores opciones para desarrollo en
Java se encuentra Eclipse que ofrece una serie de ventajas sobre otros IDEs
para la plataforma Java.
Eclipse.
Eclipse comenzó como un proyecto de IBM Canadá. Fue desarrollado
por OTI (Object Technology International) como reemplazo de VisualAge
también desarrollado por OTI. En Noviembre del 2001, se formó un consorcio
para el desarrollo futuro de Eclipse como código abierto. En 2003, la fundación
independiente de IBM fue creada.
Arquitectura.
La base para Eclipse es la Plataforma de cliente enriquecido (del Inglés Rich
Client Platform RCP). Los siguientes componentes constituyen la plataforma de
cliente enriquecido:
1. Plataforma principal - inicio de Eclipse, ejecución de plugins.
2. OSGi - una plataforma para bundling estándar.
3. El Standard Widget Toolkit (SWT) - Un widget toolkit portable.
4. JFace - manejo de archivos, manejo de texto, editores de texto.
5. El Workbench de Eclipse - vistas, editores, perspectivas, asistentes.
Los widgets de Eclipse están implementados por una herramienta de widget
para Java llamada SWT, a diferencia de la mayoría de las aplicaciones Java,
que usan las opciones estándar Abstract Window Toolkit (AWT) o Swing. La
43
interfaz de usuario de Eclipse también tiene una capa GUI intermedia llamada
JFace, la cual simplifica la construcción de aplicaciones basada en SWT.
El entorno integrado de desarrollo (IDE) de Eclipse emplea módulos (en
inglés plugin) para proporcionar toda su funcionalidad al frente de la plataforma
de cliente rico, a diferencia de otros entornos monolíticos donde las
funcionalidades están todas incluidas, las necesite el usuario o no. Este
mecanismo de módulos es una plataforma ligera para componentes de
software. Adicionalmente a permitirle a Eclipse extenderse usando otros
lenguajes de programación como son C/C++ y Phyton, permite a Eclipse
trabajar con lenguajes para procesado de texto como LaTeX, aplicaciones en
red como Telnet y Sistemas de gestión de base de datos. La arquitectura plugin
permite escribir cualquier extensión deseada en el ambiente, como seria
Gestión de la configuración. Se provee soporte para Java y CVS en el SDK de
Eclipse. Y no tiene porque ser usado únicamente para soportar otros lenguajes
de programación.
La definición que da el proyecto Eclipse acerca de su software es: “una
especie de herramienta universal, un IDE abierto y extensible para todo y nada
en particular”.
En cuanto a las aplicaciones clientes, eclipse provee al programador con
frameworks muy ricos para el desarrollo de aplicaciones gráficas, definición y
manipulación de modelos de software, aplicaciones web, etc. Por ejemplo, GEF
(Graphic Editing Framework - Framework para la edición gráfica) es un plugin
de eclipse para el desarrollo de editores visuales que pueden ir desde
procesadores de texto wysiwyg hasta editores de diagramas UML, interfaces
gráficas para el usuario (GUI), etc. Dado que los editores realizados con GEF
“viven” dentro de eclipse, además de poder ser usados conjuntamente con otros
plugins, hacen uso de su interfaz gráfica personalizable y profesional.
44
El SDK de Eclipse incluye las herramientas de desarrollo de Java,
ofreciendo un IDE con un compilador de Java interno y un modelo completo de
los archivos fuente de Java. Esto permite técnicas avanzadas de refactorización
y análisis de código. El IDE también hace uso de un espacio de trabajo, en este
caso un grupo de metadata en un espacio para archivos plano, permitiendo
modificaciones externas a los archivos en tanto se refresque el espacio de
trabajo correspondiente.
2.2.5 FRAMEWORKS.
Un framework es una estructura de soporte definida 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 de
scripting entre otros softwares para ayudar a desarrollar y unir los diferentes
componentes de un proyecto.
Es un conjunto de clases creadas para apoyar la escritura de código en
un contexto de terminado. Un framework de persistencia es, por lo tanto, una
librería de clases que facilita la tarea del programador al permitirle guardar
objetos en bases de datos relacionales de manera lógica y eficiente, de otra
manera tocaría hacerlo manualmente, y este es, potencialmente, un proceso
tedioso, repetitivo y propenso a errores.
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. Un framework de persistencia de
gran aceptación en el ambiente es Hibernate, ya que ofrece facilidad en su uso,
funcionando perfectamente con JAVA y por sobretodo es una herramienta Open
Source.
45
Los frameworks se clasifican en función de la forma en que se instancian en:
•
Frameworks de caja blanca: Para su instanciación, el desarrollador con
reutilización necesita conocer su estructura interna. Al utilizarlos, el
mecanismo predominante es la herencia, mediante la que se hacen
concretas las propiedades abstractas de las clases del framework.
•
Frameworks de caja negra: Para su instanciación no es preciso conocer la
forma en que están construidos. El desarrollador con reutilización
personaliza los puntos calientes mediante la instanciación con parámetros
actuales y la composición.
Los frameworks también se clasifican en función del tipo de problema a que van
dirigidos en:
•
Frameworks de aplicación: Encapsulan una capa de funcionalidad horizontal
que se puede aplicar en la construcción de una gran variedad de programas.
Los frameworks que implementan las interfaces graficas de usuario
representan su paradigma.
•
Frameworks de soporte: Proporcionan servicios básicos a nivel de sistema.
•
Frameworks de dominio: Aplicables a un dominio de aplicación o línea de
producto, implementan una capa de funcionalidad vertical. Estos frameworks
deberán ser los más numerosos, y su evolución deberá también ser la mas
rápida, pues deben adaptarse a las áreas de negocio para las que están
diseñados.
Hibernate:
Hibernate es una herramienta de Mapeo objeto-relacional para la
plataforma Java (y disponible también para .Net) que facilita el mapeo de
atributos entre una base de datos relacional tradicional y el modelo de objetos
de una aplicación, mediante archivos declarativos (XML) que permiten
establecer estas relaciones.
46
Hibernate es software libre, distribuido bajo los términos de la LGPL
(Licencia Pública General Menor de GNU).
Hibernate fue una iniciativa de un grupo de desarrolladores dispersos
alrededor del mundo conducidos por Gavin King. Tiempo después, J Boss Inc.
(empresa comprada por Red Hat) contrató a los principales desarrolladores de
Hibernate y trabajó con ellos en brindar soporte al proyecto.
La rama actual de desarrollo de Hibernate es la 3.x, la cual incorpora
nuevas características, como una nueva arquitectura, filtros definidos por el
usuario, y opcionalmente el uso de anotaciones para definir la correspondencia
en lugar (o conjuntamente con) los archivos XML. Hibernate 3 también guarda
cercanía con la especificación EJB 3.0 (aunque apareciera antes de la
publicación de dicha especificación por la Java Community Process) y actúa
como la espina dorsal de la implementación de EJB 3.0 en JBoss.
Hibernate se adapta al proceso de desarrollo de software, sin importar si
se parte de una base de datos en blanco o de una ya existente.
La característica principal de Hibernate es el mapeo de clases en Java a
tablas de una base de datos (y de tipos de datos de Java hacia tipos de datos
de SQL), ofreciendo también consulta de datos y facilidades de recuperación.
Hibernate genera las sentencias SQL y libera al desarrollador del manejo
manual de los datos que resultan de la ejecución de dichas sentencias,
manteniendo la portabilidad entre todas las bases de datos con un ligero
incremento en el tiempo de ejecución. Hibernate para Java puede ser utilizado
en aplicaciones Java independientes o bajo aplicaciones Java EE haciendo uso
de servlets o EJB beans de sesión.
La implementación de las herramientas mencionadas lleva a pensar que
es necesario tener claro como hacer encajar los requerimientos y concretizarlos
47
en un producto final que refleje el cumplimiento de estos, para ello se cuentan
como se mencionó anteriormente con lenguajes de programación para el Web
que son orientados a objetos, pero para utilizarlos de la mejor forma es
necesario tener claros ciertos conceptos básicos del modelado orientado a
objetos.
2.3 MODELADO ORIENTADO A OBJETOS (MOO).
En el contexto del desarrollo de sistemas de software con orientación a
objetos, el MOO es la construcción de modelos de un sistema por medio de la
identificación y especificación de un conjunto de objetos relacionados, que se
comportan y colaboran entre sí de acuerdo a los requerimientos establecidos
para el sistema de objetos.
La definición anterior ya sugiere la distinción, dentro del proceso de
MOO, de tres dimensiones o perspectivas relativamente ortogonales para
describir un sistema de objetos:
•
Dimensión estructural de los objetos: Se centra en las propiedades estáticas
o pasivas de los sistemas. Está relacionada con la estructura estática del
sistema de objetos.
•
Dimensión dinámica del comportamiento: Se centra en las propiedades
activas y describe el comportamiento individual y la colaboración entre los
objetos que constituyen el sistema.
•
Dimensión
funcional
de
los
requerimientos:
Son
consideradas
las
propiedades relativas a la función de transformación del sistema de objetos,
es decir, los procesos de conversión de entradas en salidas.
El Modelado y Diseño Orientado a Objetos se funda en pensar acerca de
problemas a resolver empleando modelos que se han organizado tomando
como base conceptos del mundo real.
48
La programación del modelo orientado a objetos se basa en ciertos
conceptos básicos descritos a continuación:
•
Objetos.
Un objeto es una agrupación de código, compuesta de propiedades y
métodos, que pueden ser manipulados como una entidad independiente. Las
propiedades definen los datos o información del objeto, permitiendo consultar o
modificar su estado; mientras que los métodos son las rutinas que definen su
comportamiento.
Un objeto es una pieza que se ocupa de desempeñar un trabajo concreto
dentro de una estructura organizativa de nivel superior, formada por múltiples
objetos, cada uno de los cuales ejerce la tarea particular para la que ha sido
diseñado.
Todo objeto del mundo real tiene 2 componentes: características y
comportamiento. Por ejemplo, los automóviles tienen características (marca,
modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar,
retroceder, llenar combustible, cambiar llantas, etc.).
Los Objetos de Software, al igual que los objetos del mundo real, también
tienen características y comportamientos. Un objeto de software mantiene sus
características en una o más "variables", e implementa su comportamiento con
"métodos". Un método es una función o subrutina asociada a un objeto.
•
Clases.
Una clase no es otra cosa que el conjunto de especificaciones o normas
que definen cómo va a ser creado un objeto de un tipo determinado; algo
parecido a un manual de instrucciones conteniendo las indicaciones para crear
el objeto.
49
Los términos objeto y clase son utilizados en POO (Programación
Orientada a Objetos), con gran confusión y en contextos muy similares, por lo
que para intentar aclarar en lo posible ambos conceptos, diremos que una clase
constituye la representación abstracta de algo, mientras que un objeto
constituye la representación concreta de lo que una clase define.
La clase determina el conjunto de puntos clave que ha de cumplir un
objeto para ser considerado perteneciente a dicha clase o categoría, ya que no
es obligatorio que dos objetos creados a partir de la misma clase sean
exactamente iguales, basta con que cumplan las especificaciones clave de la
clase.
Exponiendo ahora las anteriores definiciones mediante un ejemplo
preciso: un molde para crear figuras de cerámica y las figuras obtenidas a partir
del molde. En este caso, el molde representaría la clase Figura, y cada una de
las figuras creadas a partir del molde, sería un objeto Figura. Cada objeto
Figura tendrá una serie de propiedades comunes: tamaño y peso iguales; y
otras propiedades particulares: un color distinto para cada figura.
Aunque objetos distintos de una misma clase pueden tener ciertas
propiedades diferentes, deben tener el mismo comportamiento o métodos. Para
explicar mejor esta circunstancia, tomemos el ejemplo de la clase Coche;
podemos crear dos coches con diferentes características (color, tamaño,
potencia, etc.), pero cuando aplicamos sobre ellos los métodos Arrancar,
Acelerar o Frenar, ambos se comportan o responden de la misma manera.
Ahora bien el proceso por el cual se obtiene un objeto a partir de las
especificaciones de una clase se conoce como instanciación de objetos. Por
ejemplo cuando se fabrican celulares, los fabricantes aprovechan el hecho de
que los celulares comparten esas características comunes y construyen
modelos o plantillas comunes, para que a partir de esas se puedan crear
50
muchos equipos celulares del mismo modelo. A ese modelo o plantilla le
llamamos clase, y a los equipos que sacamos a partir de ella la llamamos
objetos.
Figura 2.2
2.3.1
CARACTERÍSTICAS
BÁSICAS
DE
UN
SISTEMA
ORIENTADO A OBJETOS.
Para que un lenguaje o sistema sea considerado orientado a objetos,
debe cumplir las características de los siguientes apartados.
Abstracción.
La abstracción es aquella característica que nos permite identificar un
objeto a través de sus aspectos conceptuales.
Las propiedades de los objetos de una misma clase, pueden hacerlos tan
distintos que sea difícil reconocer que pertenecen a una clase idéntica. No
obstante, nosotros reconocemos a qué clase pertenecen, identificando además,
si se trata de la misma clase para ambos. Ello es posible gracias a la
abstracción.
51
Tomando como ejemplo dos objetos coche, uno deportivo y otro familiar;
su aspecto exterior es muy diferente, sin embargo, cuando pensamos en
cualquiera de ellos, sabemos que ambos pertenecen a la clase Coche, porque
realizamos una abstracción o identificación mental de los elementos comunes
que ambos tienen (ruedas, volante, motor, puertas, etc.).
Del mismo modo que se hace al identificar objetos reales, la abstracción
nos ayuda a la hora de desarrollar una aplicación, permitiéndonos identificar los
objetos que van a formar parte de nuestro programa, sin necesidad de disponer
aún de su implementación; nos basta con reconocer los aspectos conceptuales
que cada objeto debe resolver.
Por ejemplo, cuando se aborda el desarrollo de un programa de gestión
orientado a objetos, realizamos una abstracción de los objetos que
necesitaríamos para resolver los procesos del programa: un objeto Empleado,
para gestionar al personal de la empresa; un objeto Factura, para gestionar las
ventas realizadas de productos; un objeto Usuario, para verificar las personas
que utilizan la aplicación, etc.
Encapsulación.
La encapsulación establece la separación entre el interfaz del objeto y su
implementación, aportándonos dos ventajas fundamentales. Por una parte
proporciona seguridad al código de la clase, evitando accesos y modificaciones
no deseadas; una clase bien encapsulada no debe permitir la modificación
directa de una variable, ni ejecutar métodos que sean de uso interno para la
clase.
Por otro lado la encapsulación simplifica la utilización de los objetos, ya
que un programador que use un objeto, si este está bien diseñado y su código
correctamente escrito, no necesitará conocer los detalles de su implementación,
se limitará a utilizarlo.
52
Tomando un ejemplo real, cuando nosotros utilizamos un objeto Coche,
al presionar el acelerador, no necesitamos conocer la mecánica interna que
hace moverse al coche, sabemos que el método Acelerar del coche es lo que
tenemos que utilizar para desplazarnos, y simplemente lo usamos.
Pasando a un ejemplo en programación, si estamos creando un
programa de gestión y nos proporcionan un objeto Cliente que tiene el método
Alta, y sirve para añadir nuevos clientes a la base de datos, no precisamos
conocer el código que contiene dicho método, simplemente lo ejecutamos y
damos de alta a los clientes en nuestra aplicación.
Polimorfismo.
El polimorfismo determina que el mismo nombre de método, realizará
diferentes acciones según el objeto sobre el que sea aplicado. Al igual que
sucedía en la encapsulación, el programador que haga uso del objeto, no
necesita conocer los detalles de implementación de los métodos, se limita a
utilizarlos.
Pasando a un ejemplo real, tomamos dos objetos: Pelota y VasoCristal;
si ejecutamos sobre ambos el método Tirar, el resultado en ambos casos será
muy diferente; mientras que el objeto Pelota rebotará al llegar al suelo, el objeto
VasoCristal se romperá.
En un ejemplo aplicado a la programación, supongamos que disponemos
de los objetos Ventana y Fichero; si ejecutamos sobre ambos el método Abrir,
el resultado en Ventana será la visualización de una ventana en el monitor del
usuario; mientras que en el objeto Fichero, se tomará un fichero en el equipo
del usuario y se dejará listo para realizar sobre él operaciones de lectura o
escritura.
53
Herencia.
Se trata de la característica más importante de la POO, y establece que
partiendo de una clase a la que denominamos clase base, padre o superclase,
creamos una nueva clase denominada clase derivada, hija, o subclase. En esta
clase derivada dispondremos de todo el código de la clase base, más el nuevo
código propio de la clase hija, que escribamos para extender sus
funcionalidades. A su vez podemos tomar una clase derivada, creando una
nueva subclase a partir de ella.
Existen dos tipos de herencia: simple y múltiple. La herencia simple es
aquella en la que creamos una clase derivada a partir de una sola clase base,
mientras que la herencia múltiple nos permite crear una clase derivada a partir
de varias clases base. Como ejemplo real de herencia, podemos usar la clase
Coche como clase base; en ella reconocemos una serie de propiedades como
Motor, Ruedas, Volante, etc., y unos métodos como Arrancar, Acelerar, Frenar,
etc. Como clase derivada creamos CocheDeportivo, en la cuál, además de
todas las características mencionadas para la clase Coche, encontramos
propiedades y comportamiento específicos como ABS, Turbo, etc.
Un ejemplo basado en programación consistiría en disponer de la ya
conocida clase Empleado. Esta clase se ocupa, como ya sabemos, de las
operaciones de alta de empleados, pago de nóminas, etc.; pero en un momento
dado, surge la necesidad de realizar pagos a empleados que no trabajan en la
central de la empresa, ya que se trata de comerciales que pasan la mayor parte
del tiempo desplazándose. Para realizar dichos pagos usaremos Internet,
necesitando el número de tarjeta de crédito y la dirección e-mail del empleado.
Resolveremos esta situación creando la clase derivada Caber Empleado, que
hereda de la clase Empleado, en la que sólo tendríamos que añadir las nuevas
propiedades y métodos para las transacciones electrónicas, puesto que las
operaciones tradicionales ya las tendríamos disponibles por el mero hecho de
haber heredado de Empleado.
54
2.4 ARQUITECTURA DE APLICACIONES WEB.
En los primeros tiempos de la computación cliente-servidor, cada aplicación
tenía su propio programa cliente y su interfaz de usuario, estos tenían que ser
instalados separadamente en cada estación de trabajo de los usuarios. Una
mejora al servidor, como parte de la aplicación, requería típicamente una
mejora de los clientes instalados en cada una de las estaciones de trabajo,
añadiendo un costo de soporte técnico y disminuyendo la eficiencia del
personal.
Los sistemas típicos cliente/servidor pertenecen a la categoría de las
aplicaciones de dos niveles. Requiere una interfaz de usuario que se instala y
corre en una PC o estación de trabajo; y que envía solicitudes a un servidor
para ejecutar operaciones complejas. Por ejemplo, una estación de trabajo
utilizada como cliente puede correr una aplicación de interfaz de usuario que
interroga a un servidor central de bases de datos. En este tipo de aplicaciones
el peso del cálculo recae en el cliente, mientras que el servidor hace la parte
menos pesada, y eso que los clientes suelen ser máquinas menos potentes que
los servidores.
Al hablar del desarrollo de aplicaciones Web resulta adecuado
presentarlas dentro de las aplicaciones multinivel. La arquitectura de las
aplicaciones Web suelen presentar un esquema de tres niveles (ver figura 2.3).
El primer nivel consiste en la capa de presentación que incluye no sólo el
navegador, sino también el servidor Web que es el responsable de dar a los
datos un formato adecuado. El segundo nivel está referido habitualmente a
algún tipo de programa o script. Finalmente, el tercer nivel proporciona al
segundo los datos necesarios para su ejecución.
Una aplicación Web típica recogerá datos del usuario (primer nivel), los
enviará al servidor, que ejecutará un programa (segundo y tercer nivel) y cuyo
55
resultado será formateado y presentado al usuario en el navegador (primer nivel
otra vez).
ESQUEMA DE TRES NIVELES PARA APLICACIONES WEB.
Figura. 2.3
Ventajas de la Arquitectura Cliente/Servidor:
•
El desarrollo de aplicaciones en un ambiente de dos capas es mucho más
rápido que en ambientes anteriores, pero no es necesariamente más rápido
que con el nuevo ambiente de tres capas.
•
Las herramientas para el desarrollo con dos capas son robustas y
evaluadas. Las técnicas de prototipo se emplean fácilmente.
•
Las soluciones de dos capas trabajan bien en ambientes no dinámicos
estables, pero no se ejecutan bien en organizaciones rápidamente
cambiantes.
Desventajas:
•
Los ambientes de dos capas requieren control excesivo de las versiones y
demandan esfuerzo de distribución de la aplicación cuando se les hacen
cambios. Esto se debe al hecho de que la mayoría de la aplicación lógica
existe en la estación de trabajo del cliente.
56
•
La seguridad del sistema en un diseño de dos capas es compleja y a
menudo requiere administración de las bases de datos; esto es debido al
número de dispositivos con acceso directo al ambiente de esas bases de
datos.
•
Las herramientas del cliente y de la base de datos, utilizadas en diseños de
dos capas, constantemente están cambiando. La dependencia a largo plazo
de cualquier herramienta, puede complicar el escalamiento futuro o las
implementaciones.
Ventajas de la Arquitectura Web:
•
Las llamadas de la interfaz del usuario en la estación de trabajo, al servidor
de capa intermedia, son más flexibles que en el diseño de dos capas, ya que
la estación sólo necesita transferir parámetros a la capa intermedia.
•
Con la arquitectura de tres capas, la interfaz del cliente no es requerida para
comprender o comunicarse con el receptor de los datos. Por lo tanto, esa
estructura de los datos puede ser modificada sin cambiar la interfaz del
usuario en la PC.
•
El código de la capa intermedia puede ser reutilizado por múltiples
aplicaciones si está diseñado en formato modular. Esto puede reducir los
esfuerzos de desarrollo y mantenimiento, así como los costos de migración.
•
La separación de roles en tres capas, hace más fácil reemplazar o modificar
una capa sin afectar a los módulos restantes.
•
Separando la aplicación de la base de datos, hace más fácil utilizar nuevas
tecnologías de agrupamiento y balance de cargas.
•
Separando la interfaz del usuario de la aplicación, libera de gran
procesamiento a la estación de trabajo y permite que las actualizaciones de
la aplicación sean centralizadas en el servidor de aplicaciones.
57
Desventajas:
•
Los ambientes de tres capas pueden incrementar el tráfico en la red y
requerir más balance de carga y tolerancia a las fallas.
•
Los exploradores actuales no son todos iguales. La estandarización entre
diferentes
proveedores
ha
sido
lenta
en
desarrollarse.
Muchas
organizaciones son forzadas a escoger uno en lugar de otro, mientras que
cada uno ofrece sus propias y distintas ventajas.
La arquitectura MVC y Model 2.
La arquitectura Model-View-Controller (MVC) surgió como patrón
arquitectónico para el desarrollo de interfaces gráficos de usuario en entornos
Smalltalk. Su concepto se basaba en separar el modelo de datos de la
aplicación de su representación de cara al usuario y de la interacción de éste
con la aplicación, mediante la división de la aplicación en tres partes
fundamentales:
•
El modelo, que contiene la lógica de negocio de la aplicación.
•
La vista, que muestra al usuario la información que éste necesita.
•
El controlador, que recibe e interpreta la interacción del usuario, actuando
sobre modelo y vista de manera adecuada para provocar cambios de estado
en la representación interna de los datos, así como en su visualización.
Sun Microsystems, creadora de la plataforma Java, acuñó el término
Model 2 para referirse al modelo arquitectural recomendado para las
aplicaciones Web desarrolladas sobre J2EE.
La mencionada arquitectura consiste en el desarrollo de una aplicación
según el patrón Model-View-Controller, pero especificando que el controlador
debe estar formado por un único servlet, que centralice el control de todas las
peticiones al sistema, y que basándose en la URL de la petición HTTP y en el
estado actual del sistema, derive la gestión y control de la petición a una
58
determinada acción de entre las registradas en la capa controlador. Esta
centralización del controlador en un único punto de acceso se conoce como
patrón front controller.
Las ventajas que este patrón ofrece provienen de la capacidad de
gestionar en un único punto la aplicación de filtros a las peticiones, las
comprobaciones de seguridad, la realización de logs, etc.
La aplicación del patrón MVC ha demostrado ser muy apropiada para las
aplicaciones Web y especialmente adaptarse bien a las tecnologías
proporcionadas por la plataforma J2EE, de manera que:
•
El modelo, conteniendo lógica de negocio, sería modelado por un conjunto
de clases Java, existiendo dos claras alternativas de implementación,
utilizando objetos java tradicionales llamados POJOs (Plain Old Java
Objects) o bien utilizando EJB (Enterprise JavaBeans) en sistemas con unas
mayores necesidades de concurrencia o distribución.
•
La vista proporcionará una serie de páginas web dinámicamente al cliente,
siendo para él simples páginas HTML. Existen múltiples frameworks que
generan estas páginas web a partir de distintos formatos, siendo el más
extendido el de páginas JSP (JavaServer Pages), que mediante un conjunto
de tags XML proporcionan un interfaz sencillo y adecuado a clases Java y
objetos proporcionados por el servidor de aplicaciones. Esto permite que
sean sencillas de desarrollar por personas con conocimientos de HTML.
Entre estos tags tienen mención especial la librería estándar JSTL
(JavaServer Pages Standard Tag Library) que proporciona una gran
funcionalidad y versatilidad.
•
El controlador en la plataforma J2EE se desarrolla mediante servlets, que
hacen de intermediarios entre la vista y el modelo, más versátiles que los
JSP para esta función al estar escritos como clases Java normales, evitando
59
mezclar código visual (HTML, XML...) con código Java. Para facilitar la
implementación de estos servlets también existe una serie de frameworks
que proporcionan soporte a los desarrolladores, entre los que cabe destacar
Struts, que con una amplia comunidad de usuarios se ha convertido en el
estándar de facto en este rol.
Con todo lo anterior, el funcionamiento de una aplicación Web J2EE que
utilice el patrón arquitectural MVC se puede descomponer en una serie de
pasos:
1. El usuario realiza una acción en su navegador, que llega al servidor
mediante una petición HTTP y es recibida por un servlet (controlador). Esa
petición es interpretada y se transforma en la ejecución de código java que
delegará al modelo la ejecución de una acción de éste.
2. El modelo recibe las peticiones del controlador, a través de un interfaz o
fachada que encapsulará y ocultará la complejidad del modelo al
controlador. El resultado de esa petición será devuelto al controlador.
3. El controlador recibe del modelo el resultado, y en función de éste,
selecciona la vista que será mostrada al usuario, y le proporcionará los
datos recibidos del modelo y otros datos necesarios para su transformación
a HTML. Una vez hecho esto el control pasa a la vista para la realización de
esa transformación.
4. En la vista se realiza la transformación tras recibir los datos del controlador,
elaborando la respuesta HTML adecuada para que el usuario la visualice.
60
Esta arquitectura de aplicaciones otorga varias ventajas clave al
desarrollo de aplicaciones Web, destacando:
•
Al separar de manera clara la lógica de negocio (modelo) de la vista permite
la reusabilidad del modelo, de modo que la misma implementación de la
lógica de negocio que maneja una aplicación pueda ser usado en otras
aplicaciones, sean éstas Web o no.
•
Permite una sencilla división de roles, dejando que sean diseñadores
gráficos sin conocimientos de programación o desarrollo de aplicaciones los
que se encarguen de la realización de la capa vista, sin necesidad de
mezclar código Java entre el código visual que desarrollen (tan sólo
utilizando algunos tags, no muy diferentes de los usados en el código
HTML).
2.5 MÉTODO DEL CICLO DE VIDA DE LOS SISTEMAS.
Un ciclo de vida para un proyecto se compone de fases sucesivas
compuestas por tareas planificables. Según el modelo de ciclo de vida, la
sucesión de fases puede ampliarse con bucles de realimentación, de manera
que lo que conceptualmente se considera una misma fase se pueda ejecutar
más de una vez a lo largo de un proyecto, recibiendo en cada pasada de
ejecución aportaciones de los resultados intermedios que se van produciendo.
El modelo en espiral para la ingeniería del software ha sido desarrollado
para cubrir las mejores características tanto del ciclo de vida clásico, como de la
creación de prototipos, añadiendo al mismo tiempo un nuevo elemento: el
análisis de riesgo, que falta en esos paradigmas. El modelo, representado
mediante la espiral de la Figura 2.4 define cuatro actividades principales,
representadas por los cuatro cuadrantes de la figura:
61
Figura 2.4
1. Planeación
y
análisis:
determinación
de
objetivos,
alternativas
y
restricciones.
2. Diseño: análisis de alternativas e identificación/resolución de riesgos.
3. Implementación: desarrollo del producto de “siguiente nivel”
4. Evaluación: valoración de los resultados de la implementación.
Un aspecto intrigante del modelo en espiral se hace evidente cuando
consideramos la dimensión radial representada en la Figura 2.4 Con cada
iteración alrededor de la espiral (comenzando en el centro y siguiendo hacia el
exterior), se construyen sucesivas versiones del software, cada vez más
completas. Durante la primera vuelta alrededor de la espiral se definen los
objetivos, las alternativas y las restricciones, y se analizan e identifican los
riesgos. Si el diseño indica que hay una incertidumbre en los requisitos, se
puede usar la creación de prototipos en el cuadrante de ingeniería para dar
asistencia tanto al encargado del desarrollo como al cliente. Se pueden usar
simulaciones y otros modelos para definir más el problema y refinar los
requisitos.
62
El cliente evalúa el trabajo de implementación (cuadrante de evaluación)
y sugiere modificaciones. En base a los comentarios del cliente se produce la
siguiente fase de planificación y de análisis de riesgo. En cada bucle alrededor
de la espiral, la culminación del análisis de riesgo resulta en una decisión de
“seguir o no seguir”. Si los riesgos son demasiado grandes, se puede dar por
terminado el proyecto.
Sin embargo, en la mayoría de los casos, se sigue avanzando alrededor
del camino de la espiral, y ese camino lleva a los desarrolladores hacia fuera,
hacia un modelo más completo del sistema, y al final, al propio sistema
operacional. Cada vuelta alrededor de la espiral requiere ingeniería (cuadrante
inferior derecho), que se puede llevar a cabo mediante el enfoque del ciclo de
vida clásico o de la creación de prototipos. Debe tenerse en cuenta que el
número de actividades de desarrollo que ocurren en el cuadrante inferior
derecho aumenta al alejarse del centro de la espiral.
El paradigma del modelo en espiral para la ingeniería del software es
actualmente el enfoque más realista para el desarrollo de software y de
sistemas a gran escala. Utiliza un enfoque “evolutivo” para la ingeniería del
software, permitiendo al desarrollador y al cliente entender y reaccionar a los
riesgos en reducción del riesgo, pero lo que es más importante, permite a quien
lo desarrolla aplicar el enfoque de creación de prototipos en cualquier etapa de
la evolución del producto. Mantiene el enfoque sistemático correspondiente a
los pasos sugeridos por el ciclo de vida clásico, pero incorporándola dentro de
un marco de trabajo interactivo que refleja de forma más realista el mundo real.
El modelo en espiral demanda una consideración directa de riesgos técnicos en
todas las etapas del proyecto y, si se aplica adecuadamente, debe reducir los
riesgos antes de que se conviertan en problemáticos.
63
Al igual que otros paradigmas, el modelo en espiral no es la panacea.
Puede ser difícil convencer a grandes clientes (particularmente en situaciones
bajo contrato) de que el enfoque evolutivo es controlable. Requiere una
considerable habilidad para la valoración del riesgo, y cuenta con esta habilidad
para el éxito. Si no se descubre un riesgo importante, indudablemente surgirán
problemas. Por último, el modelo en sí mismo es relativamente nuevo y no se
ha usado tanto como el ciclo de vida o la creación de prototipos. Pasarán unos
cuantos años antes de que se pueda determinar con absoluta certeza la
eficacia de este importante nuevo paradigma.
Planeación y análisis.
•
Investigación preliminar.
Recibe este nombre la investigación que obtiene su información de la
actividad intencional realizada por el investigador y que se encuentra dirigida a
modificar la realidad con el propósito de crear el fenómeno mismo que se
indaga, y así poder observarlo. Es donde se recopilara la información que hace
referencia a la institución que se le desarrollará el software y la necesidad que
ésta tiene del mismo.
•
Determinación de requerimientos.
El analista conversa con varias personas para reunir detalles
relacionados con los procesos de la empresa. Se emplean cuestionarios para
obtener información cuando no es posible entrevistar en forma personal a los
miembros de la organización. Las investigaciones detalladas requieren el
estudio de manuales y reportes, observaciones condiciones reales con el de
comprender el proceso en su totalidad.
Diseño.
El diseño es el primer paso en la fase de desarrollo de cualquier producto
o sistema de ingeniería. El objetivo del diseñador es producir un modelo o
64
representación de una entidad que se construirá posteriormente. El proceso
combina iterativamente la intuición y los criterios basados en la experiencia, un
conjunto principios para guiar la evolución del modelo, y un conjunto de criterios
que permiten juzgar la calidad. Para poder desarrollar el sistema es necesario
ocupar
distintas
herramientas
de
desarrollo
tales
como
leguajes
de
programación, gestores de base de datos y herramientas de modelado.
•
Diseño lógico.
Los analistas de sistemas comienza el proceso de diseño identificando
los reportes y demás salidas que debe producir el sistema. Los diseñadores
hacen un bosquejo del formato que esperan que aparezca cuando el sistema
este terminado. Los diseñadores son los responsables de dar a los
programadores las especificaciones de software completas y claras.
La etapa de diseño lógico proporcionará los detalles que establecen la
forma en la que el sistema cumplirá con los requerimientos identificados durante
la fase de análisis
•
Diseño físico.
Hasta esta etapa del diseño lo que se ha hecho es modelar los
requerimientos de la aplicación por medio de sus especificaciones funcionales
hasta encontrar distintos aspectos de cómo trabaja la aplicación por fuera.
Ahora es necesario considerar como la aplicación trabaja por dentro, o más
precisamente como las tecnologías y arquitecturas que se han elegido van a
impactar en el diseño.
Implementación y evaluación.
La implantación es el proceso de verificar e instalar nuevo equipo
entrenar a los usuarios, instalar la aplicación y construir todos los archivos de
datos necesarios para utilizarla. Las organizaciones cambian con el paso del
tiempo, por lo tanto debe darse mantenimiento a las aplicaciones; realizar
65
cambios y modificaciones en el software, archivos o procedimientos para
satisfacer las nuevas necesidades de los usuarios. La implantación es un
proceso en constante evolución. La evaluación de un sistema se lleva a cabo
para identificar puntos débiles y fuertes. La evaluación ocurre a lo largo de
cualquiera de las siguientes dimensiones: evaluación operacional, impacto
organizacional, opinión de los administradores y desempeño del desarrollo.
2.6 CONCEPTUALIZACIONES SOBRE METODOLOGÍA DE LA
INVESTIGACIÓN.
Es necesario tener claro una definición de metodología para poderla
aplicar correctamente. Para el caso, metodología se define como un proceso
que, mediante la aplicación del método científico, trata de obtener información
relevante y fidedigna, para entender, verificar, corregir o aplicar el conocimiento.
Formulación del problema.
Formular
un
problema
es
caracterizarlo,
definirlo,
enmarcarlo
teóricamente, sugerir propuestas de solución para ser demostradas, establecer
unas fuentes de información y unos métodos para recoger y procesar dicha
información. La caracterización o definición del problema nos conduce otorgarle
un título, en el cual de la manera más clara y denotativa indiquemos los
elementos que le son esenciales.
Fase exploratoria:
Ninguna investigación parte de cero, de ahí que, cuando se comienzan
un proyecto, deba consultarse informarse sobre lo ya investigado sobre el tema
y realizar un primer contacto con el problema a estudiar. Existe una tarea de
búsqueda de referencias, consulta bibliográfica y acercamiento preliminar a la
realidad objeto de estudio. Esto es lo que suele denominarse fase exploratoria,
cuyo propósito es de permitir al investigador familiarizarse e interiorizarse con
66
parte de los conocimientos existentes dentro del campo ámbito que es objeto de
investigación.
•
Fuentes primarias.
Una fuente primaria es aquella que provee un testimonio o evidencia
directa sobre el tema de investigación. Las fuentes primarias son escritas
durante el tiempo que se está estudiando o por la persona directamente
envuelta en el evento. La naturaleza y valor de la fuente no puede ser
determinado sin referencia al tema o pregunta que se está tratando de
contestar. Las fuentes primarias ofrecen un punto de vista desde adentro del
evento en particular o periodo de tiempo que se está estudiando.
•
Fuentes secundarias.
Estas fuentes se ocuparán para interpretar y analizar las fuentes
primarias.
Las fuentes secundarias están distanciadas de las fuentes
primarias. Los tipos de fuentes secundarias que se utilizarán serán las
documentales, incluyendo libros, tesis, monografías y material en medios
electrónicos.
Diseño de la investigación.
•
Población.
Constituye la totalidad de un grupo de elementos u objetos que se quiere
investigar, es el conjunto de todos los casos que concuerdan con lo que se
pretende investigar.
•
Delimitación de la población.
Se delimita como población sujeta a estudio a todas aquellas personas
que tengan interacción con el sistema, y que sean beneficiados con la
implementación del mismo.
67
•
Muestra.
La muestra es un subconjunto de la población
o una parte
representativa, y puede ser de diferentes tipos dependiendo de la forma que
seleccione a la población, tales como: muestra probabilística, muestra aleatoria
simple, muestra estratificada, muestra por cuotas o proporcionales, muestra no
probabilística, muestra intencionada.
Técnicas e instrumentos de investigación.
•
Técnica documental.
Este tipo de investigación es la que se realiza, como su nombre lo indica,
apoyándose en fuentes de carácter documental, esto es, en documentos de
cualquier especie. Esta técnica permite la recopilación de información para la
elaboración del marco teórico del trabajo de investigación.
•
Técnica de Observación.
Es el procedimiento empírico por excelencia, el más antiguo; consiste
básicamente en utilizar los sentidos para observar los hechos, realidades
sociales y a las personas en su contexto cotidiano. Para que dicha observación
tenga validez es necesario que sea intencionada e ilustrada.
Para poder aplicar la técnica, se tendrá que observar detenidamente los
distintos procesos manuales que se realizan actualmente y tomar notas
detalladas de los aspectos más relevantes de cada uno, la experiencia que
posee cada integrante del grupo de investigación será de gran importancia para
poder captar los más mínimos detalles.
•
Entrevista.
La entrevista consiste en una conversación entre dos o más personas,
sobre un tema determinado de acuerdo a ciertos esquemas o pautas
determinadas.
68
Se utiliza este método de investigación para tener un mayor
acercamiento con los potenciales usuarios del sistema y de esta forma recopilar
los datos necesarios para poder desarrollar el sistema. La entrevista
generalmente es aplicada de forma individual a la persona de interés y puede
ser de forma dirigida.
•
Cuestionario.
Es un proceso estructurado de recopilación de información a través de la
complementación de una serie de preguntas.
Con el cuestionario a diferencia de la entrevista se puede abarcar un
mayor número de sujetos de estudios y de esta forma poder conseguir un
mayor número de opiniones sobre lo que esperan del sistema y las necesidades
que este tiene que solventar.
Descargar