unidad 1.docx

18
1.1 Evolución de las Aplicaciones web La programación web es un término adecuado para describir el proceso general que engloba el diseño y la creación de un sitio web. Hace algunos años, los sitios web no eran mucho más que folletos digitales. Actualmente los sitios son más grandes y complejos. Con la introducción de comercio electrónico y las páginas dinámicas, los sitios ya han dejado atrás los folletos y han pasado a ser auténticas aplicaciones de software. La web 1.0 La Web 1.0 (1991-2003) es la forma más básica que existe, con navegadores de sólo texto bastante rápidos ya que es de sólo lectura. El usuario no puede interactuar con el contenido de la página (nada de comentarios, respuestas, citas, etc), estando totalmente limitado a lo que el Webmaster sube a ésta. Algunos elementos de diseño típicos de un sitio Web 1.0 incluyen: Páginas estáticas en vez de dinámicas por el usuario que la visita 2 El uso de framesets o Marcos. Extensiones propias del HTML como <bilnk> y <marquee>, etiquetas introducidas durante la guerra de navegadores web. Libros de visitas online o guestbooks botones GIF , casi siempre a una resolución típica de 88x31 pixels en tamaño promocionando navegadores web u otros productos. 3 formularios HTML enviados vía email . Un usuario llenaba un formulario y después de hacer clic se enviaba a través de un cliente de correo electrónico, con el problema que en el código se podía observar los detalles del envío del correo electrónico. No se podian adherir comentarios ni nada parecido Todas sus páginas se creaban de forma fija y muy pocas veces se actualizaban. No se trata de una nueva versión, sino de una nueva forma de ver las cosas.

Upload: carliithapolancobolanos

Post on 21-Dec-2015

238 views

Category:

Documents


0 download

TRANSCRIPT

1.1 Evolución de las Aplicaciones web

La programación web es un término adecuado para describir el proceso general que engloba el diseño y la creación de un sitio web.

Hace algunos años, los sitios web no eran mucho más que folletos digitales. Actualmente los sitios son más grandes y complejos. 

Con la introducción de comercio electrónico y las páginas dinámicas, los sitios ya han dejado atrás los folletos y han pasado a ser auténticas aplicaciones de software.

La web 1.0La Web 1.0 (1991-2003) es la forma más básica que existe, con navegadores de sólo texto bastante rápidos ya que es de sólo lectura. El usuario no puede interactuar con el contenido de la página (nada de comentarios, respuestas, citas, etc), estando totalmente limitado a lo que el Webmaster sube a ésta.

Algunos elementos de diseño típicos de un sitio Web 1.0 incluyen:

Páginas estáticas en vez de dinámicas por el usuario que la visita2

El uso de framesets o Marcos.

Extensiones propias del HTML como <bilnk> y <marquee>, etiquetas introducidas durante la guerra de navegadores web.

Libros de visitas online o guestbooks

botones GIF, casi siempre a una resolución típica de 88x31 pixels en tamaño promocionando navegadores web u otros productos.3

formularios HTML enviados vía email. Un usuario llenaba un formulario y después de hacer clic se enviaba a través de un cliente de correo electrónico, con el problema que en el código se podía observar los detalles del envío del correo electrónico.

No se podian adherir comentarios ni nada parecido

Todas sus páginas se creaban de forma fija y muy pocas veces se actualizaban.

No se trata de una nueva versión, sino de una nueva forma de ver las cosas.

La web 2.0

El término Web 2.0 comprende aquellos sitios web que facilitan el compartir información, la interoperabilidad, el diseño centrado en el usuario 1  y lacolaboración en la World Wide Web. Un sitio Web 2.0 permite a los usuarios interactuar y colaborar entre sí como creadores de contenido generado por usuarios en una comunidad virtual, a diferencia de sitios web estáticos donde los usuarios se limitan a la observación pasiva de los contenidos que se han creado para ellos. Ejemplos de la Web 2.0 son las comunidades web, los servicios web, las aplicaciones Web, los servicios de red social, losservicios de alojamiento de videos, las wikis, blogs, mashups y folcsonomías.

Servicios asociados:

Blogs : Un blog es un espacio web personal en el que su autor puede escribir cronológicamente artículos, noticias...(con imágenes y enlaces).

Wikis : Una wiki es un espacio web corporativo, organizado mediante una estructura hipertextual de páginas donde varias personas elaboran contenidos de manera asíncrona. 

Redes sociales : Sitios web donde cada usuario tiene una página donde publica contenidos y se comunica con otros usuarios. Ejemplos: Facebook, Twitter, Tuenti, Hi5, Myspace, etc. 

Entornos para compartir recursos: Entornos que nos permiten almacenar recursos o contenidos en Internet, compartirlos y visualizarlos cuando nos convenga. Existen de diversos tipos, según el contenido que albergan o el uso que se les da:

o Documentos: Google Drive y Office Web Apps (SkyDrive), en los cuales

podemos subir nuestros documentos, compartirlos y modificarlos.

o Videos: Youtube, Vimeo, Dailymotion, Dalealplay... Contienen miles de

vídeos subidos y compartidos por los usuarios.

o Fotos: Picassa, Flickr... Permiten disfrutar y compartir las fotos también

tenemos la oportunidad de organizar las fotos con etiquetas, separándolas por grupos

como si fueran álbumes, podemos seleccionar y guardar aparte las fotos que no

queremos publicar.

o Agregadores de noticias: Digg, Meneame... Noticias de cualquier medio

son agregadas y votadas por los usuarios.

o Almacenamiento online: Dropbox, Google Drive, SkyDrive

o Presentaciones: Prezzi, Slideshare.

o Plataformas educativas

o Aulas virtuales (síncronas)

o Encuestas en línea

La web 3.0

Web 3.0 es una expresión que se utiliza para describir la evolución del uso y la interacción de las personas en internet a través de diferentes formas entre los que se incluyen la transformación de la red en una base de datos, un movimiento social hacia crear contenidos accesibles por múltiples aplicaciones non-browser, el empuje de las tecnologías de inteligencia artificial, la web semántica, la Web Geoespacial o la Web 3D.

Se basa en la idea de añadir metadatos semánticos y ontológicos a la World Wide Web. Esas informaciones adicionales —que describen el contenido, el significado y la relación de los datos— se deben proporcionar de manera formal, para que así sea posible evaluarlas automáticamente por máquinas de procesamiento. El objetivo es mejorar Internet ampliando la interoperabilidad entre los sistemas informáticos usando "agentes inteligentes". Agentes inteligentes son programas en las computadoras que buscan información sin operadores humanos. Con la web 3.0 se busca que los usuarios puedan conectarse desde cualquier lugar, cualquier dispositivo y a cualquier momento.

Entre sus innovaciones destacan:

Bases de datos Inteligencia artificial Web semántica y SOA Evolución al 3D

La web 4.0

las aplicaciones ya no estarán en nuestras PC’s, estarán en la internet y por ende en todos lados. Pasaremos de una red “tonta” a una red

“inteligente” donde el objetivo primordial será el de unir las inteligencias donde tanto las personas como las cosas se comuniquen entre sí para generar la toma de decisiones. Para el 2020 o quizás antes se espera

que haya “agentes” en la Web que conozcan, aprendan y razonen como lo hacemos las personas.La Web Ubicua es un concepto que está aún en

desarrollo, pero me llama curiosamente la atención como se van complementando algunas tecnologías que nos permiten imaginar o

soñar lo que podemos esperar en un futuro no muy lejano. Imagínese recibir información en su celular en la calle por la que camina y que su

propio equipo le haga una reservación en el restaurant de la esquina con solo saber sus gustos.

1.2 Arquitectura de las aplicaciones Web

La arquitectura tradicional de cliente/servidor tamién es conocida como arquitectura de dos

capas. Requiere una interfaz de usuario que se instala y se ejecuta en una PC o estación de

trabajo y envía solicitudes a un servidor para ejecutar operaciones complejas.

Por ejemplo, una estación de trabajo utilizada como cliente puede ejecutar una aplicación de

interfaz de usuario que interroga a un servidor central de ases de datos.

 

Ventajas del Sistema de Dos Capas:

El desarrollo de aplicaciones en un amibente de dos capas funciona adecuadamente, pero no

es necesariamente lo más eficiente. Las herramientas para el desarrollo con dos capas son

robustas y ampliamente evaluadas.

Las técnicas de ingeniería de software de prototipo se emplean fácilmente. Las soluciones de

dos capas trabajan ien en ambientes no dinámicos estales, pero no se ejecutan bien en

organizaciones rápidamente cambiantes.

Desventajas del sistema de dos capas:

Los ambientes de dos capas requieren control excesivo de las versiones y demandan

esfuerzo de distriución de la aplicación cuando se les hacen camios. Esto se dee al hecho de

que la mayoría de la aplicación lógica existe en la estación de trabajo del cliente.

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 deido al número de dispositivos con acceso

directo al amibente 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.

Arquitectura de tres capas

La arquitectura de tres capas es un diseño reciente que introduce una capa intermedia en el

proceso. Cada capa es un proceso separado y bien definido corriendo en plataformas

separadas. En la arquitectura tradicional de tres capas se instala una interfaz de usuario en la

computadora del usuario final (el cliente). La arquitectura asada en Web transforma la interfaz

de búsqueda existente (el explorador de Web), en la interfaz del usuario final.

La arquitectura de las aplicaciones Web suelen presentar un esquema de tres niveles

El primer nivel consiste en la capa de presentación que incluye no sólo el navegador, sino

tamién el servidor web que es el responsale de presentar los datos un formato adecuado.

El segundo nivel está referido haitualmente 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 resultado será formateado y

presentado al usuario en el navegador (primer nivel otra vez).

 

Las diferentes capas suelen ser:

Capa 1: Cliente de aplicación: Navegador Web

Capa 2 : Servidor de Aplicaciones: Apache, Servidor Tomcat con servlet’s

Capa 3 : Servidor de Datos: base de datos, servidor SMTP…

Ventajas de la arquitectura de tres capas:

Las llamadas de la interfaz del usuario en la estación de trabajo, al servidor de capa

intermedia, son más flexiles que en el diseño de dos capas, ya que la estación solo 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.

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.

Desventajas de las Arquitecturas de Tres Capas y asadas en Web

Los ambientes de tres capas pueden incrementar el tráfico en la red y requiere más balance

de carga u 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.

1.3 Tecnologías para el desarrollo de aplicaciones web.

Las fases de un desarrollo web, así como los lenguajes de programación usados, son muy

extensos y variados, y por ello necesitamos herramientas específicas para cada una de ellas.

Conoceremos a continuación las principales herramientas existentes para poder desarrollar

fácilmente un proyecto web.

 

En el desarrollo web tenemos unas herramientas para el diseño, otras para la maquetación,

otras para la programación, y para la depuración. Todas las herramientas que usemos son

muy importantes, desde el Sistema Operativo hasta el comando más insignificante, y por ello

debemos elegir la más adecuada a nuestras necesidades y capacidades.

 

Para desarrollar una web, lo primero que necesitamos es un Sistema Operativo, como es

lógico, y su elección no es tan trivial. Hay que tener en cuenta las aplicaciones de las que

dispone el Sistema Operativo y sus costes.

 

Por ejemplo, tenemos Microsoft Windows, cuyas aplicaciones son muy caras, como

Photoshop, Dreamweaver, Fireworks, ASP .NET… Y por otro lado tenemos GNU/Linux, con

GIMP, Inkscape, Amaya, Aptana, PHP (aunque todos ellos también están disponibles en

Windows).

 

 

Otra característica a tener en cuenta es las facilidades que el Sistema Operativo aporta al

desarrollador, y en este sentido GNU/Linux se lleva de calle a Windows. Y esto es porque

Windows no fue diseñado para los desarrolladores, sino para personas que no tienen muchos

conocimientos sobre informática.

 

Y por el contrario GNU/Linux fue creado por desarrolladores, y para desarrolladores; y por lo

tanto en GNU/Linux podemos encontrar infinidad de herramientas que nos harán la vida

mucho más fácil, que además son libres.

 

Fases de desarrollo de una web

Para elegir las herramientas a utilizar, antes debemos identificar las fases del proceso que

forman el ciclo de vida de un desarrollo web.

Diseño:

El diseño consiste en crear esbozos de la web final mediante una herramienta gráfica, como

Photoshop, GIMP o Inkscape.

Maquetación HTML/CSS:

La maquetación consiste en convertir los esbozos creados en la fase anterior en

plantillas HTML, su respectiva hoja de estilos, y las imágenes usadas. Es posible saltarse la

fase anterior para comenzar directamente con esta fase, dependiendo de si dominamos

herramientas como Photoshop o no.

Programación cliente:

La programación cliente consiste básicamente en Javascript. Una web puede no tener

necesidad de hacer programación cliente, como puede ser una pequeña web corporativa con

poca información estática, o puede que requiera enormes esfuerzos en esta fase, como ocurre

con los proyectos Web 2.0.

Programación servidor:

En esta fase, que se desarrolla junto con la anterior, crearemos la aplicación web en un

lenguaje de servidor, como puede ser PHP, ASP .NET, Python, Perl, etc.

Depuración:

Esta fase enlaza la anterior con la siguiente, y es donde haremos las pruebas unitarias,

aserciones, trazas, etc.

Pruebas en local:

En nuestro servidor local haremos todas las pruebas posibles.

Subir ficheros al hosting:

Una vez nuestra web esté completada y bien testeada en nuestro servidor local (desarrollo), la

subiremos al servidor del hosting elegido (producción). Dependiendo del hosting, podremos

usar FTP, SFTP (SSH), WebDAV, o incluso Subversión.

Pruebas en hosting:

Realizaremos las últimas pruebas en el servidor del hosting para comprobar que el cambio de

servidor no ha afectado a nada. Para evitar problemas, nuestro servidor local debe tener

exactamente la misma configuración que el servidor del hosting.

Herramientas: desarrollo en PHP

A continuación se enumeran las herramientas básicas para el desarrollo de una web en PHP,

en sus diferentes fases de diseño e implementación.

Fases: diseño y maquetación

·        Adobe PhotoShop

·        GIMP:

·        Inkscape

·        Adobe Fireworks

·        Dreamweaver, Aptana, Amaya:

·       

Fase: maquetación

Fases: maquetación, programación cliente

Fase: programación servidor

Con él crearemos fácilmente la aplicación web en PHP. Aunque podremos usar igualmente

cualquier editor. Una muy buena alternativa es Eclipse con el plugin PHP.

Otra aplicación muy útil que está muy ligada a Zend Studio es Zend Platform, un módulo para

Apache que permite depurar una web directamente en el navegador (Internet Explorer o

Firefox), además de otras funciones más complejas, como alertas configurables para que nos

envíe un email por cada error ocurrido en la web, o cuando un script sobrepase un tiempo

determinado de ejecución, por ejemplo.

Fase: prueba local

·        Apache

·        Firefox / Firebug / Web Developer Extension

Fases: pruebas en local, depuración

Con Firebug podremos depurar Javascript, editar HTML y CSS en la misma página para ver

los cambios en tiempo real, consultar los tiempos de carga de la página en conjunto, de las

imágenes, javascripts, hojas de estilo, etc, así como sus tamaños, etc. Y Web Developer nos

ofrece herramientas muy útiles como ver las cookies de la web, ocultar imágenes, cambiar el

tamaño del navegador a resoluciones estándar, etc.

Subir ficheros al servidor del hosting

Una vez hayamos concluido todas las fases anteriores, y nuestro proyecto esté listo,

deberemos subirlo al servidor del hosting.

La herramienta a utilizar dependerá de las opciones que nos ofrezca el hosting, que

desgraciadamente en la mayoría de los casos es solamente el antiguo FTP (FileZilla). En

Dreamweaver y Zend Studio tenemos un cliente FTP y SFTP (SSH), y la tarea consistirá

simplemente en configurar el FTP y copiar y pegar los directorios que queramos subir.

1.4 Planificación de aplicaciones web

A menudo antes de empezar un proyecto no tenemos claro cuál es el objetivo del mismo o qué pretendemos alcanzar por eso esta pequeña lista te puede ayudar a la hora de planificar un proyecto.

Planificar una aplicación web implica pensar y definir muchas cuestiones de importancia:

1. Planificar el futuro

Puede sonar un poco duro que nos tengamos planear el futuro de algo que aún no existe pero es así, que pasa si en un futuro tuviéramos problemas de escalabilidad, y sí tuviéramos que migrar las bases de datos de MySql a Oracle, de una buena planificación depende la dificultad en un futuro de realizar cambios en la plataforma que sostiene nuestra aplicación.

2. Documentación

Documenta todo lo que puedas tu aplicación en especial aquellas partes de la misma que hayan requerido un mayor tiempo de desarrollo, en un futuro cercano te librará de más de un quebradero de cabeza.

3. No empieces por los pequeños detalles

A menudo es más sencillo plantearse el desarrollo de pequeños servicios cómo pueden ser los RSS o una galería de imágenes, pero es fundamental comenzar por lo que vendrá a ser la base de nuestra aplicación, de este modo podremos ir completando nuestra aplicación en un orden lógico, primero los cimientos…

4. Diseño de la interfaz

Esta entrada puede que te ayude en esta parte, es importante conseguir un buen diseño para nuestra interfaz, es importante conseguir un interfaz que se atractivo y útil para la gran mayoría de los usuarios, lo más importante es llegar a conectar con el usuario y la mejor manera es ofrecerle la mayor cantidad de información posible para que se llegue a sentir parte del proyecto pero todo esto muchas veces no lo llegamos a conseguir por una mala elección en la combinación de los colores que se integran en nuestra interfaz.

5. Evita construirte librerías o frameworks innecesarios

Muchas personas siempre sostienen que es mejor que cada desarrollador utilice sus propias librerías, pero la realidad es que en muchas ocasiones esto supone una gran pérdida de tiempo, es mejor buscar una librería o framework que se parezca lo más posible a lo deseado que desarrollarlo por ti mismo.

6. Ten un plan de proyecto

Asegúrate de que cada desarrollador que trabaje en el proyecto sepa qué es lo que debe de hacer y cuándo tiene que hacerlo, teniendo todo esto redactado en un documento te ayudará a identificar problemas.

7. Elige el lenguaje adecuado

Ya sabes que hay numerosas discusiones sobre ¿Cuál es el mejor lenguaje de programación?, la respuesta a menudo es depende de para que quieras utilizarlo, por eso asegúrate de escoger el lenguaje adecuado.

8. Evita las distracciones

Optimiza tu tiempo, cuando estés trabajando que nada te distraiga, ni llamadas telefónicas, ni clientes de mensajerías instantáneas, proponte un buen número de horas al día de trabajo aislado dedicado al proyecto.

9. Sigue un buen control de calidad

Muchas veces nos equivocamos al planificar los tiempos de proyecto y esto lleva a menudo a los desarrolladores a tener que escribir “código sucio”, esta es una buena opción si lo que quieres es una demo de la aplicación funcionando pero ea actitud te traerá problemas en el futuro.

10. Plantéate los pasos a seguir después del desarrollo

Ten en cuenta que está fase de desarrollo algún día deberá acabar, estudia con qué frecuencia se deberá actualizar y que se necesita para que este funcione.