Está en la página 1de 31

El contexto actual del desarrollo de aplicaciones Web

El contexto actual del desarrollo de aplicaciones Web M. Cs. Javier Gonzalez Sanchez javiergs@acm.org lunes 17
El contexto actual del desarrollo de aplicaciones Web M. Cs. Javier Gonzalez Sanchez javiergs@acm.org lunes 17
El contexto actual del desarrollo de aplicaciones Web M. Cs. Javier Gonzalez Sanchez javiergs@acm.org lunes 17

M. Cs. Javier Gonzalez Sanchez javiergs@acm.org

lunes 17 de mayo de 2004

Agenda

Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs

1.Ámbito actual de desarrollo

2.Servidores Web

3.Tecnologías cliente vs servidor

4.Los paradigmas de desarrollo

5.Las metodologías de análisis y diseño

6.Conclusiones

Ámbito actual de desarrollo

Ámbito actual de desarrollo q   Aplicaciones tradicionales (standalone) §   §   §   §
Ámbito actual de desarrollo q   Aplicaciones tradicionales (standalone) §   §   §   §

q Aplicaciones tradicionales (standalone)

§

§

§

§

.NET / Java / Visual Basic / C++ / Delphi, etc. Ambiente de desarrollo cerrado Bibliotecas propias ya desarrolladas y difíciles de migrar Capacitaciones explícitas para la empresa necesarias

cerrado Bibliotecas propias ya desarrolladas y difíciles de migrar Capacitaciones explícitas para la empresa necesarias
cerrado Bibliotecas propias ya desarrolladas y difíciles de migrar Capacitaciones explícitas para la empresa necesarias
cerrado Bibliotecas propias ya desarrolladas y difíciles de migrar Capacitaciones explícitas para la empresa necesarias

q Tendencia actual: Aplicaciones Web

Java J2EE http://cisco.netacad.net .NET http://msdn.microsoft.com PHP http://euronews.net

q Porqué?

§Servicio personalizado a clientes y usuario §Aplicaciones y bibliotecas distribuidas §Independencia de plataforma (portabilidad) §Aplicaciones tradicionales pueden utilizar componentes Web §Posibilidad de uso de otras aplicaciones Web externas

Evolución

Evolución 1990 - 1995 e s t á t i c o 1995 – 200x S
Evolución 1990 - 1995 e s t á t i c o 1995 – 200x S

1990 - 1995

Evolución 1990 - 1995 e s t á t i c o 1995 – 200x S

estático

1995 – 200x

Evolución 1990 - 1995 e s t á t i c o 1995 – 200x S

Spaghetti code

200x – …….

– 200x S p a g h e t t i c o d e 200x

Web Orientado a Objetos

Java y C#

Base en componentes

Ingeniería de Software

Etapas de desarrollo

Ingeniería de Software Etapas de desarrollo (1)   Requerimientos: (EL CLIENTE) : Comunicación / Entrevistas à
Ingeniería de Software Etapas de desarrollo (1)   Requerimientos: (EL CLIENTE) : Comunicación / Entrevistas à

(1)Requerimientos: (EL CLIENTE) :

Comunicación / Entrevistas à Visualizar el Contexto à Punto de Validación Herramientas: IEEE SRS, Contexto, UML y otras

(2)Análisis y Diseño (LA CALIDAD) :

¿metodologías? Y ¿herramientas?

Lo indispensable, lo necesario y el extra (si el tiempo lo permite)

(3)Implementación (LOS LENGUAJES) :

programar ¿ con OBJETOS ?

RAD or not RAD

(4)Pruebas :

lo permite) (3)   Implementación (LOS LENGUAJES) : programar ¿ con OBJETOS ? RAD or not
lo permite) (3)   Implementación (LOS LENGUAJES) : programar ¿ con OBJETOS ? RAD or not
lo permite) (3)   Implementación (LOS LENGUAJES) : programar ¿ con OBJETOS ? RAD or not
lo permite) (3)   Implementación (LOS LENGUAJES) : programar ¿ con OBJETOS ? RAD or not

Ingeniería de Software

bueno, bonito y barato

Ingeniería de Software bueno, bonito y barato q   Y todo debe ser hecho con CALIDAD
Ingeniería de Software bueno, bonito y barato q   Y todo debe ser hecho con CALIDAD

q Y todo debe ser hecho con CALIDAD ¿Que es CALIDAD?

q Sin descuidar:

flexibilidad, robustez, portabilidad, reusabilidad, confiabilidad, interfaz amigable, ergonomía y documentación

q Además de (en algunos casos):

concurrente, distribuido y ligado a una o más bases de datos.

q y Lo “bonito” tambien importa …

Ingeniería de Software

La vida real

Ingeniería de Software La vida real Deploy Web / GUI Capa 3 Entity Data link Capa
Ingeniería de Software La vida real Deploy Web / GUI Capa 3 Entity Data link Capa
Deploy Web / GUI Capa 3
Deploy
Web / GUI
Capa 3
Entity Data link Capa 2
Entity
Data link
Capa 2
Base de datos Capa 1
Base de datos
Capa 1

objetos |

relaciones

vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
ser
ser
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
usar
usar
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos
vida real Deploy Web / GUI Capa 3 Entity Data link Capa 2 Base de datos

tener

para el usuario final

para el usuario final ocultar complejidad información independiente de la presentación solución extensible roles de
para el usuario final ocultar complejidad información independiente de la presentación solución extensible roles de

ocultar complejidad información independiente de la presentación solución extensible roles de trabajo

el usuario final ocultar complejidad información independiente de la presentación solución extensible roles de trabajo
el usuario final ocultar complejidad información independiente de la presentación solución extensible roles de trabajo
el usuario final ocultar complejidad información independiente de la presentación solución extensible roles de trabajo

Agenda

Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs

1.Ámbito actual de desarrollo

2.Servidores Web

3.Tecnologías cliente vs servidor

4.Los paradigmas de desarrollo

5.Las metodologías de análisis y diseño

6.Conclusiones

estructura conceptual

estructura conceptual El www se basa en el paradigma cliente / servidor . browser tracert URL
estructura conceptual El www se basa en el paradigma cliente / servidor . browser tracert URL

El www se basa en el paradigma cliente / servidor.

browser tracert

browser

tracert

URL

transacción www
transacción www
URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP

DNS Server

1. DNS

Lookup

Lookup

Lookup
2. TCP connection 3. HTTP request 4. HTTP response
2. TCP connection
3. HTTP request
4. HTTP response
URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP
URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP
URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP

Web Client

URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP
URL transacción www DNS Server 1. DNS Lookup 2. TCP connection 3. HTTP request 4. HTTP

Web Server

HTTP (request / response)

HTTP (request / response) GET /index.html HTTP/1.1 Host: www.gda.ites.mx HTTP/1.1 200 OK Date: Tue, 09 Jan
HTTP (request / response) GET /index.html HTTP/1.1 Host: www.gda.ites.mx HTTP/1.1 200 OK Date: Tue, 09 Jan

GET /index.html HTTP/1.1 Host: www.gda.ites.mx

HTTP/1.1 200 OK Date: Tue, 09 Jan 2001 10:49:14 GMT Server: Apache/1.3.14 (Unix) Last-Modified: Tue, 09 Jan 2001 01:11:02 GMT ETag: "131e-a074-3a5a6526" Accept-Ranges: bytes Content-Length: 41076 Content-Type: text/html

<html>

</html>

Simple client request

Server reply

estructura conceptual

estructura conceptual Web Client I n t e r n e t Web Server Base de
estructura conceptual Web Client I n t e r n e t Web Server Base de
estructura conceptual Web Client I n t e r n e t Web Server Base de
Web Client I n t e r n e t Web Server Base de datos
Web Client I n t e r n e t Web Server Base de datos
Web Client I n t e r n e t Web Server Base de datos

Web Client

Internet

Web Server

Base de datos

HTML

programación
programación

Oracle, MySQL, MS-SQL, Informix, Postgres, etc

Java, PHP, Perl, Python, MS.net, etc

mayo 2004

mayo 2004 http://news.netcraft.com/archives/web server survey.html
mayo 2004 http://news.netcraft.com/archives/web server survey.html
mayo 2004 http://news.netcraft.com/archives/web server survey.html

http://news.netcraft.com/archives/web server survey.html

Agenda

Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs

1.Ámbito actual de desarrollo

2.Servidores Web

3.Tecnologías cliente vs servidor

4.Los paradigmas de desarrollo

5.Las metodologías de análisis y diseño

6.Conclusiones

estructura conceptual

estructura conceptual Web Server Internet Web Client
estructura conceptual Web Server Internet Web Client

Web Server

Web Server Internet Web Client
Internet
Internet
Web Server Internet Web Client
Web Server Internet Web Client
Web Server Internet Web Client
Web Server Internet Web Client

Web Client

Web Server Internet Web Client
Web Server Internet Web Client

Tecnologías tipo cliente

Tecnologías tipo cliente Applets q   Sobrecarga de memoria (JVM) q   Lentitud de ejecución q
Tecnologías tipo cliente Applets q   Sobrecarga de memoria (JVM) q   Lentitud de ejecución q

Applets

q Sobrecarga de memoria (JVM)

q Lentitud de ejecución

q Instalación sutil para el cliente

VBScript

q Lenguaje peligroso?

sutil para el cliente VBScript q   Lenguaje peligroso? JavaScript q   Lenguaje con ciertas limitaciones

JavaScript

q Lenguaje con ciertas limitaciones a causa de la interpretación de navegadores

q Difícil de depurar

Flash

q Opción versátil y fácil de instalar

de la interpretación de navegadores q   Difícil de depurar Flash q   Opción versátil y

Tecnologías tipo servidor

Tecnologías tipo servidor Objetivo principal Dar al cliente servicios personalizados enviando tan solo código HTML con
Tecnologías tipo servidor Objetivo principal Dar al cliente servicios personalizados enviando tan solo código HTML con

Objetivo principal

Dar al cliente servicios personalizados enviando tan solo código HTML con algunos scripts bien formados (JavaScript, etc.)

HTML con algunos scripts bien formados (JavaScript, etc.) q   CGI (Common Gateway Interface) Una de
HTML con algunos scripts bien formados (JavaScript, etc.) q   CGI (Common Gateway Interface) Una de

q CGI (Common Gateway Interface) Una de las primeras tecnologías Uso complicado (TCL, C++, etc.)

q Paginas de servidor Fácil uso Funcionalidades ilimitadas Posible congestionamiento en servidor ( PHP )

q Tecnología:

Sun Java servlet Microsoft .net

ilimitadas Posible congestionamiento en servidor ( PHP ) q   Tecnología: Sun Java servlet Microsoft .net

Agenda

Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs

1.Ámbito actual de desarrollo

2.Servidores Web

3.Tecnologías cliente vs servidor

4.Los paradigmas de desarrollo (objetos)

5.Las metodologías de análisis y diseño

6.Conclusiones

necesidades

necesidades
necesidades
necesidades

programación (Java)

programación (Java) simple, orientado objeto, distribuido, interpretado, robusto, seguro, portable, multiprocesos y
programación (Java) simple, orientado objeto, distribuido, interpretado, robusto, seguro, portable, multiprocesos y

simple, orientado objeto, distribuido, interpretado, robusto, seguro, portable, multiprocesos y dinámico.

Pensado sobre todo para ser portable: J2ME + J2SE + J2EE

Apogeo luego de una pequeña demostración de los applets en 1993

A partir de 1998, luego de impulsar varias tecnologías: JSP/Servlets, 3D, dispositivos móviles …

Desventaja frente al gigante Microsoft …

programación (.net)

programación (.net) programación y ejecución en .NET C# VB.NET MSIL + Loader/ JIT Metadata Verifier C++
programación (.net) programación y ejecución en .NET C# VB.NET MSIL + Loader/ JIT Metadata Verifier C++

programación y ejecución en .NET

C# VB.NET MSIL + Loader/ JIT Metadata Verifier C++ Garbage Collection, Managed Perl Execution Security,
C#
VB.NET
MSIL +
Loader/
JIT
Metadata
Verifier
C++
Garbage
Collection,
Managed
Perl
Execution
Security,
Code
Multithreading,
Compiler
Compiler
Compiler
Java
Java
CLASS- Files
CLASS-
Files
Classloader/ Verifier
Classloader/
Verifier
JIT
JIT
Compiler Java CLASS- Files Classloader/ Verifier JIT Native Code Garbage Collection, Interpreter Security
Native Code
Native
Code
Java CLASS- Files Classloader/ Verifier JIT Native Code Garbage Collection, Interpreter Security Manager
Java CLASS- Files Classloader/ Verifier JIT Native Code Garbage Collection, Interpreter Security Manager
Java CLASS- Files Classloader/ Verifier JIT Native Code Garbage Collection, Interpreter Security Manager
Garbage Collection, Interpreter Security Manager Call-in+Call-out, Multithreading, Hotspot
Garbage
Collection,
Interpreter
Security Manager
Call-in+Call-out,
Multithreading,
Hotspot
Collection, Interpreter Security Manager Call-in+Call-out, Multithreading, Hotspot programación y ejecución en Java

programación y ejecución en Java

C# vs Java

C# vs Java q   no existen diferencias fundamentales q   C# todo es objeto, no
C# vs Java q   no existen diferencias fundamentales q   C# todo es objeto, no

q no existen diferencias fundamentales

q C# todo es objeto, no hay tipos primitivos

q diferencias de sintaxis mínimas

q existen nuevos elementos:

Atributos:

Atributos

Propiedades

Métodos:

Métodos

Eventos

Controladores

q Java ya es un lenguaje maduro que continúa creciendo

q C# es un lenguaje más nuevo… pero con 10 años después, integra las experiencias de muchos programadores

¿por qué Java?

¿por qué Java? Interés académico Más del 70% de los proyectos de investigación de universidades tienen
¿por qué Java? Interés académico Más del 70% de los proyectos de investigación de universidades tienen

Interés académico

Más del 70% de los proyectos de investigación de universidades tienen como lenguaje de implementación a Java

Próximos desarrollos

Nuevo paradigma de programación: Programación Orientada Aspectos. Agentes móviles

Desarrollo de aplicaciones Web:

Mayor parte de software tiene configuración XML Mayor versatilidad en las configuraciones Tecnología generalmente más barata que .NET

Necesario el aprendizaje de un lenguaje, JSP/Servlets, Tomcat, Web Services en Java.

Oracle

Agenda

Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs
Agenda 1.   Ámbito actual de desarrollo 2.   Servidores Web 3.   Tecnologías cliente vs

1.Ámbito actual de desarrollo

2.Servidores Web

3.Tecnologías cliente vs servidor

4.Los paradigmas de desarrollo

5.Las metodologías de análisis y diseño

6.Conclusiones

necesidades

necesidades
necesidades
necesidades

análisis y diseño

análisis y diseño Inception Elaboration Construction Transition Effort ~5 % 20 % 65 % 10% Schedule
análisis y diseño Inception Elaboration Construction Transition Effort ~5 % 20 % 65 % 10% Schedule
Inception Elaboration Construction Transition Effort ~5 % 20 % 65 % 10% Schedule 10 %
Inception
Elaboration
Construction
Transition
Effort
~5 %
20
%
65
%
10%
Schedule
10 %
30
%
50
%
10%