CURSO
CURSO
CURSO
VB asp T-SQL
Ajax PHP
Google chrome
Mozilla Firefox
Entorno de ejecución
SEGUNDO
Servidores
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
Dr. Clemente García Gerardo
• Cliente
Generalmente un navegador es controlado por un usuario para operar la
aplicación Web.
• Firewall
Software controlando la comunicación entre redes seguras (LANs) y redes
inseguras (internet). La comunicación es filtrada por reglas de acceso.
• Proxy
Típicamente es usado para almacenar páginas Web temporales en el cache, sin
embargo los proxy pueden asumir otras funcionalidades tales como
personalizar el contenido a los usuario o dar seguimiento a los usuarios.
• Web Server
Software que maneja varios protocolos Web tales como HTTP, HTTPS para
procesar peticiones de los clientes.
El internet y la WEB
¿ Nosotros estaremos viviendo la era de INTERNET ?
¿La WEB es muy grande?
Sentido típico :
• Número de páginas Web y sitios
• Número de usuarios
• Cantidad de información contenida en la Web
Otro sentido :
• Social
• Cultural
Comparable con la crisis del software a finales de los años 60´s que dio origen a
la disciplina de la ingeniería del software.
Es necesario la Ingeniería Web.
If you want do
something new, you
have to stop doing
something old.
Peter Drucker
¿Pueden usarse las mismas técnicas para el desarrollo de WebApp que son usadas
para el desarrollo de sistemas en general?
?
Ingeniería Web = Ingeniería del Software
Cada una de las actividades del framework es descrita por un conjunto de acciones
de la Ingeniería Web (por ejemplo, el diseño es una acción). Cada una de las
acciones es descrita con tareas de trabajo individual que completan alguna parte
del trabajo implementado por la acción.
Dr. Clemente García Gerardo
Ingeniería WEB
Framework actividad #n
WebE acción n.1 Tareas de trabajo
conjunto de tareas Productos de trabajo
. Puntos de garantía de calidad
Hitos del proyecto
.
.
Tareas de trabajo
WebE acción n.m
Productos de trabajo
conjunto de tareas Puntos de garantía de calidad
Hitos del proyecto
Mejores prácticas
1. Toma el tiempo para entender las necesidades del negocio y objetivos del
producto, incluso si los detalles de la aplicación Web son vagos.
2. Describe como los usuarios podrán interactuar con la aplicación Web utilizando
el enfoque basado en escenarios.
3. Desarrolla un plan del proyecto, incluso si este es muy pequeño.
4. Dedica tiempo a modelar lo que vas a construir.
5. Revisa los modelos para tener consistencia y calidad.
6. Usa herramientas y tecnología que permitan construir el sistema con
componentes reusables como sea posible.
7. No reinventes cuando puedas reusar.
8. No te fíes de los primeros usuarios para depurar la aplicación Web. Diseña
pruebas exhaustivas y aplícalas antes de liberar el sistema.
Planeación:
El número total de incrementos de la WebApp es identificado y un breve plan de
proyecto es creado para el siguiente incremento de la WebApp. Los recursos son
estimados para el incremento, los riesgos son considerados, las tareas son
seleccionadas y programadas. En muchos casos, el producto del trabajo de
planificación consiste de una definición de tareas y una programación de línea del
tiempo para un periodo (usualmente medido en días) proyectado para el desarrollo
del incremento.
Modelado:
Tareas de análisis y diseño de ingeniería de software convencional son adaptadas
para el desarrollo de WebApp. La intención es desarrollar modelos de análisis y
diseño ágiles que definas requerimientos y al mismo tiempo que represente una
WebApp que los satisfaga.
Ingeniería WEB
Construcción:
Herramientas y tecnología de Ingeniería Web son aplicadas para construir las
WebApp que han sido modeladas. Una vez que el incremento ha sido construido,
una serie de pruebas rápidas son realizadas para encontrar errores en el diseño
(errores en contenido, arquitectura, interface y navegación).
Despliegue:
La WebApp es configurada para su ambiente operacional y después es entregada al
usuario final y el periodo de evaluación inicia. La retroalimentación de la evaluación
es presentado al equipo de Ingeniería Web y el incremento es modificado como se
requiera.
Las cinco actividades del framework de la Ingeniería Web son aplicadas usando el
flujo de proceso incremental.
Ingeniería WEB
Primera iteración.
La primera actividad es inicializada: COMINICACIÓN.
La intención es definir el contexto del negocio, establecer el total de requerimientos,
crear un conjunto de escenarios de uso, negociar necesidades en conflicto entre las
partes interesadas y en base a esta información determinar el número de iteraciones
que serán entregadas.
Segunda iteración.
Aunque el tiempo es corto, se comprometió a utilizar el framework proceso de la
Ingeniería Web. La mañana siguiente inicia la actividades de comunicación para el
primer incremento dirigiendo una reunión de una hora con el personal involucrado.
Obtienes todo el contenido necesario para el incremento.
Las notas después de la reunión:
• Logotipo y gráficos necesitan diseño
• Uno o dos párrafos de introducción (misión, palabras de bienvenida a los clientes)
• Barra de navegación básica Dr. Clemente García Gerardo
• Otros temas
Ingeniería WEB
Planeación
El plan para el primer incremento
Desarrolla una línea del tiempo
de la WebApp está completo.
Día 1: Crea un prototipo del WebApp.
Durante los siguientes días se
Recoge y revisa toda la información y gráficas que existan
modela, construye y despliega.
Si es posible, obten retroalimentación del prototipo.
Día 2: Usando el prototipo como guia, inicia la construcción del incremento
Construye la barra de navegación
Diseñar área de contenido
Tan pronto que se realice el despliegue para este
Integrar gráficas, ligas, etc.
incremento, se esta listo para iniciar la siguiente iteración
Validar todas las ligas del framework proceso Web. La actividad de comunicación
durante
Revisar el contenido (completo la segunda iteración identificará requerimientos de
y correcto)
Día 3: Enviar todos los archivos contenido
a un dominioyexistente
funcionalidad
Realizar pruebas de navegación
Despliegue: informar al personal seleccionado que el incremento esta disponible
Día 4: Encuesta al personal involucrado para retroalimentación
Realizar modificaciones basdas en la retroalimentación del personal.
Dr. Clemente García Gerardo
Ingeniería WEB
¿ Qué es el modelado ?
En el contexto del fremawork del proceso de Ingeniería Web, el modelado es un
actividad que crea una (o más) representación conceptual de algún aspecto de
la WebApp que se contruye.
Una representación conceptual engloba una o mas de las siguientes formas:
• Documentos escritos
• Diagramas gráficos
• Escenarios escritos
• etc.
Durante la actividad del modelado, se realizan dos acciones de Ingeniería Web:
• Análisis
• Diseño
• Diseño de contenido
Define el diseño para el contenido que es presentado como parte de la WebApp
• Diseño de navegación
Representa el flujo de navegación
• Diseño de arquitectura
Identifica la estructura global para la WebApp
• Diseño de componentes
Desarrolla la lógica de procesamiento detallado necesario para implementar los
componentes funcionales que implementan una función de WebApp completa
Tipos de requisitos
Organismos de normalización y organizaciones comerciales han desarrollado gran
número de taxonomías para definir y clasificar varios tipos de requisitos. Ejemplos
son Volere (Robertson and Robertson 1999) o IEEE 830-1998. Muchas taxonomías
distinguen entre requerimientos funcional y requerimientos no funcionales.
Dr. Clemente García Gerardo
Ingeniería WEB
Ejemplo, los clientes pueden seleccionar un icono para ver los artículos en el
carrito de compra.
• Casos de uso. Procesar las ventas, gestionar las devoluciones, administrar los
usuarios, abrir y cerrar caja.
• Reglas de negocio. Las devoluciones de los pagos a crédito sólo pueden
efectuarse como abono a la cuenta de crédito de los compradores, no en efectivo.
• Requisitos de conducta. El sistema deberá, detectar fallos de forma
automática, cambiando a procesamiento local sin conexión cuando los servicios no
estén disponibles.
Ejemplo:
• La WebApp podrá soportar por lo menos 2500 usuarios de manera
concurrente.
• El cliente será capaz de ver la información en un gran monitor, por lo que el
texto se debe ver fácilmente a una distancia de 1 metro y evitar colores
asociados con formas comunes de daltonismo.
Una vez identificados los actores, se pueden desarrollar los casos de uso.
Jacobson sugiere varias preguntas que deben contestarse mediante un
caso de uso.
• ¿Quién es el actor primario (o quienes)?
• ¿Cuáles son las metas del actor?
• ¿Cuáles son las condiciones que deben existir antes de comenzar la
historia?
• ¿Cuáles son las tareas o funciones principales que realiza el actor?
• ¿Cuáles excepciones podrían considerarse mientras se describe la
historia?
• ¿Cuáles son las variaciones posibles en la interacción del actor?
• ¿Cuál es la información del sistema que el actor adquirirá, producirá o
cambiará?
• ¿Cuál es la información que el actor desea del sistema?
Actor principal: el que recurre a los servicios del sistema para cumplir un objetivo.
Identificando incrementos
Un método [Fuc98] es crear una pila de tarjetas que contenga un caso de uso por
tarjeta . Se muestra ejemplo en la siguiente figura.
Introducción
Para construir una casa para una mascota (perro) solo necesitas dos manos hábiles,
materiales necesarios y herramientas que permitan comenzar a cortar y martillar
para lograr un resultado atractivo, dependiendo de la creatividad personal.
Fundamentos
Las disciplinas de la ingeniería han utilizado con éxito los modelos para reducir:
• La complejidad.
• Las decisiones de diseño de documentos.
• Facilitar la comunicación dentro de los equipos del proyecto.
En las Ciencias de la Computación desde hace algún tiempo se han usado métodos
de modelado para el desarrollo del software, en este campo, el objeto del
modelado es la aplicación que se desarrollará.
Niveles
Interface de usuario
Lógica de la aplicación
Fases
Análisis
Diseño
Implementación
Aspectos
Hipertexto
Contenido
Fases
Análisis
Diseño
Implementación
Aspectos
Dr. Clemente García Gerardo
Ingeniería WEB
Niveles
Para modelar WebApps, tiene que ser tomado en cuenta características de su
contenido así como su navegación hipertexto no lineal. Los niveles son:
• Presentación, es decir, el diseño de la interfaz de usuario o la página.
Al modelar el nivel de presentación, la atención se centra en una estructura de
presentación uniforme de las páginas para lograr un efecto de reconocimiento
para la aplicación web entre sus usuarios. Aunque el aspecto visual de una
aplicación web es de importancia, los aspectos estéticos no están dentro del
foco principal de modelado.
• Hipertexto, es decir, la estructuración del contenido en nodos y enlaces entre
estos nodos.
• Contenido, es decir, la lógica de la información y las aplicaciones por debajo de la
WebApp.
El objetivo de un modelo de contenido es la definición explícita de la estructura
de información. Comparable a un esquema de base de datos en el modelado
de datos, esto elimina las redundancias.
Aspectos
Fases
Modelado de requisitos
Un ejemplo.
El usuario debe poder realizar búsquedas en la libreta de direcciones y borrar
contactos. Adicionalmente, contactos pueden ser creados y actualizados, cambios
deben ser archivados o pueden ser cancelados.
Modelo de navegación
En un sistema para la web es útil saber como están enlazadas las páginas. Ello
significa que necesitamos un diagrama conteniendo nodos (nodes) y enlaces (links).
Qué es un nodo?
Los nodos son unidades de navegación y están conectados por medio de enlaces.
Los nodos pueden ser presentados en diferentes páginas o en una misma página.
UWE provee diferentes estereotipos, para los nodos «navigationClass» y enlaces
«navigationLink». A partir de la inclusión de los procesos en el modelo
navegacional, se agregan dos elementos más <<processClass>> y enlaces
<<processLink>>.
La <<processClass>>: cuyas instancias se utilizan por el usuario durante la
ejecución del proceso. Cada clase de proceso tiene su correspondencia con un caso
de uso NO estereotipado con la palabra reservada navigation.
El <<processLink>>: que modela la asociación entre una clase navegacional y una
clase de proceso. Indica puntos de inicio de un proceso dentro de la estructura
navegacional. Pueden ser unidireccionales o bidireccionales.
Dr. Clemente García Gerardo
Ingeniería WEB
AddressBook será nuestra página
principal del sitio web. Lo cuál se indica
con el valor de etiqueta {isHome}.
• ContactList. Cada contacto debe ser alcanzable usando un enlace desde la página
principal del sitio web
• (contact)Search. Buscar un contacto
• ContactCreation. Crear un nuevo contacto y visualizarlo
En UWE, puede usarse un «menu», para navegar a diferentes clases.
Asociaciones salientes y
dirigidas para prohibir la
navegación hacia atrás
Cuando un nuevo
contacto se crea es útil
Dr. Clemente García Gerardo visualizarlo.
Ingeniería WEB
Diagrama de presentación
Este modelo nos indica cuales son las clases de navegación y de proceso que
pertenecen a una página Web.
Existen patrones para las distintas actividades que hay que realizar en un
proyecto (análisis, diseño, implementación, etc.)
Existen patrones independientes del dominio y otros específicos a un
dominio concreto
Flujo de control
Vista
Navegador Controlador
Comentarios
• El modelo
¿ tiene algo de código que dependa de la vista o del controlador?
• El control
manipula el modelo y gestiona la vista
• La vista
• Tiene que implementar una interfaz predefinida para la aplicación
• Tiene que configurar a quién le llegan los eventos que se produzcan sobre
sus elementos
• ¿Qué hay que cambiar en el modelo y el control para utilizar la vista textual en
vez de la gráfica?
¿Qué hay que cambiar en el programa principal?
Los patrones de navegación dirigen esos y otros problemas que se relacionan con
la organización del contenido tal como se expresa en la estructura de navegación
de la webapp.
2. Navegación
En lugar de describir la navegación específica, los patrones describen mecanismos
para el acceso y la comprensión de la estructura. A modo de ejemplo, el "patrón
minesweeping " implica presentación dinámica de los resúmenes de contenido.
Este patrón no es adecuado cuando el usuario busca información específica.
3. Estructura de navegación
4. Moverse (getting around)
Active reference
Intención:
Proporcionar una referencia perceptible y permanente sobre el estado actual de la navegación, la
combinación de una herramienta de orientación con una manera fácil de navegar a un conjunto de
nodos relacionados, al mismo o mayor nivel de abstracción.
El problema:
En muchas aplicaciones hipermedia, tenemos que proporcionar al usuario una manera de entender
dónde está y ayudarle a decidir a dónde ir después. Por ejemplo en un museo digital, nos gustaría
que el usuario pueda ver las obras de arte y al mismo tiempo debemos saber en que lugar del museo
es. La solución ingenua habitual incluiría un índice (u otra estructura de acceso) a los elementos que
se pretenda navegar.
Sin embargo, esta solución requerirá al usuario dar marcha atrás desde el nodo actual en el índice
para ver dónde está o moverse a otro nodo, al tiempo que garantiza que su posición actual se resalta
en el índice. Estas operaciones de navegación: mover hacia atrás con el índice y el avance hacia el
objetivo pueden desorientar al usuario.
Solución:
Una buena solución es mantener un objeto de navegación activa y perceptible como un índice para
otros objetos de navegación (ya sean nodos o sub-índices). Este objeto permanece perceptible junto
con objetos de destino, dejando que el usuario pueda explorar los objetos o seleccionar otro objetivo
vinculados. De esta manera, seremos capaces de interactuar tanto con el índice y los nodos de
destino.
Un ejemplo de aplicar esta solución se puede encontrar en el sitio web City.Net (http://www.city.net).
Como podemos ver en la Figura 4, el lector tiene una referencia permanente acerca de dónde se encuentra
mientras él explora las ciudades en el mundo (ver "Ubicación: América del Sur -> Argentina -> Buenos
Aires 'a la izquierda).
WWW.9gag.com, roberto
Refactorización en código
El siguiente programa realiza cálculos utilizando el porcentaje de impuestos que se
maneja en cada estado.
Principio #3. Los errores de las WebApp deben arreglarse primero, entregarse
más tarde.
Bajo la presión del tiempo, algunos desarrolladores de WebApp ofrecen
incrementos de baja calidad con avisos “proceso de construcción“ y advertencias
para el cliente que los errores "se arreglarán en la próxima versión”.
Esto es un error. Hay un dicho en el negocio del software: "Los clientes olvidarán
que usted entregó un producto de alta calidad con días de retraso, pero nunca
olvidarán los problemas que les causó un producto de baja calidad . La WebApp les
recuerda todos los días ".
Despliegue
La WebApp está configurada para su entorno operativo al que se entrega , a los
usuarios finales, y un período de evaluación comienza. La retroalimentación de
la evaluación se presenta al equipo de WebE, y el incremento se modifica según
sea necesario.
En WebApps muy sencillas, puede ser aceptable un solo desarrollador para crear
contenidos locales (por ejemplo, editado en un equipo local sin que el contenido se
aloja en un servidor). El contenido se publica a en el servidor de producción para
un acceso inmediato por parte de los usuarios.
Publica
Para los WebApp complejas (en los que es fundamental que se garantice la calidad
de la aplicación web antes de su liberación), un entorno de desarrollo más
complejo se vuelve apropiada.
Integrar
Publicar
Liberar
Ingeniería WEB
Probando WebApp
Las pruebas de WebApps va más allá de las pruebas de los sistemas de software
tradicionales.
Las WebApp tiene factores que lleva a utilizar requisitos especiales de prueba:
• Los usuarios son grupos heterogéneos (es difícil predecir el número de usuarios).
• La cantidad de plataformas diferentes donde se usa.
La definición implica que los requisitos utilizado como base para la prueba
están completos y disponibles antes de la implementación y prueba. Un
Técnicas de WebApp
fenómeno común en el desarrollo Técnicas
es que los requisitos son a
dinámicas estáticas
menudo incompletos, confusos, y están sujetos a cambios frecuentes.
Típicamente, hay una visiónPruebas
inicial de la funcionalidad
Revisión básica. Esta visión se
implementa para el García
lanzamiento inicial. ComoInspección
resultado, el ciclo de vida de
Dr. Clemente Simulación
Gerardo
desarrollo inicial es seguido …por ciclos para agregar funcionalidad.
Ingeniería WEB
N o t e : While all four definitions are commonly used, one distinction assigns
definition 1 to the word “error,” definition 2 to the word “fault,” definition 3 to
the word “failure,” and definition 4 t o the word “mistake.”
Niveles de pruebas
De acuerdo con las distintas fases de desarrollo en las que se puede producir
resultados verificables, se identificaron niveles de prueba para facilitar la validación
de los resultados.
• Las pruebas unitarias: probar las unidades más pequeñas verificables (clases,
páginas web, etc.), independientemente uno de otro. Las pruebas unitarias se
realiza por el desarrollador durante la implementación.
• Pruebas de integración: Una vez ESPECIFICACIÓN TÉCNICA distintas unidades
que se han integrado
(fueron probadas por separado) evaluar la interacción entre ellas. Las pruebas de
integración se realizan por un probador, un desarrollador, o ambos conjuntamente.
• Pruebas del sistema. probar el sistema completo e integrado. Pruebas del
sistema se realizan normalmente por un equipo de prueba especializado.
• Pruebas de aceptación: evaluar el sistema en cooperación con (bajo el apoyo)
el cliente en un entorno que más se acerca al entorno de producción. Pruebas de
ESPECTATIVAS DEL USUARIO
aceptación usan condiciones reales y los datos reales.
• Pruebas beta: permiten a los usuarios trabajar con las primeras versiones de un
producto con el objetivo de proporcionar retroalimentación temprana.
Un riesgo inherente al realizar los niveles de prueba de forma secuencial según las
fases del proyecto es que los errores debidos a las expectativas del usuario
incomprendidos pueden encontrarse sólo en una etapa tardía, lo que hace que su
eliminación sea muy costosa.
Un proceso de desarrollo iterativo y evolutivo reduce este riesgo, ya que las partes
del sistema más pequeños se ponen a prueba con frecuencia en todos los niveles
de prueba (incluidos los que tienen validación frente a las expectativas de los
usuarios), por lo que los errores se pueden encontrar antes de que puedan tener
un impacto en otras partes del sistema. Esto significa que la secuencia de niveles
de ensayo descrito anteriormente no siempre dictan la secuencia temporal para las
pruebas de proyecto Web, pero se puede realizar varias veces, por ejemplo, una
vez para cada incrementación de funcionalidad.
Pruebas de seguridad
Ataques
conocidos
• Enero 2011: Sony
demanda a modders por
hacer jailbreaking e
ingeniería inversa de la
PS3.
• Abril 2011: PSN recibe
ataques DDoS
(denegación de servicio
distribuido) y SQL
injection los cuales roban
información de tarjetas de
crédito de sus usuarios.
Sony cierra PSN por 24
días. Dr. Clemente García Gerardo
Ingeniería WEB
Los autores del ataque lo encubrieron como una compra en la plataforma online de
Sony, por lo que los sistemas de seguridad no detectaron nada raro, y tras pasar del
servidor web, lograron explotar una vulnerabilidad del servidor de aplicaciones para
instalar software que más tarde fue usado para acceder al servidor de la base de
datos, protegido por un tercer firewall.
24000,000,000 dólares
Costo de prevención
Tipos de amenazas
En cualquier sistema en red, existen tres tipos de amenazas a la seguridad:
1. Amenazas a la confidencialidad del sistema y sus datos: pueden difundir
información a individuos o programas que no están autorizados a tener acceso
a dicha información.
2. Amenazas a la integridad del sistema y sus datos: tales amenazas pueden
dañar o corromper el software o sus datos.
3. Amenazas a la disponibilidad del sistema y sus datos: dichas amenazas pueden
restringir el acceso al software o sus datos a usuarios autorizados.
Seguridad en la codificación
Una vez concluido el diseño, le toca a los desarrolladores el turno de codificar los
distintos componentes de la aplicación.
Es en este punto en donde suelen incorporarse, por error u omisión, distintos tipos
de vulnerabilidades.
Estas vulnerabilidades podríamos dividirlas en dos grandes grupos a saber:
1. vulnerabilidades clásicas .
2. vulnerabilidades funcionales.
Las primeras son bien conocidas y categorizadas. Ejemplo de estas vulnerabilidades
son las presentes en el “OWASP Top 10”, acrónimo de Open Web Application
Security Proyect (proyecto abierto de seguridad de aplicaciones web).
OWASP Top 10 es un documento de alto nivel que se centra sobre las
vulnerabilidades más críticas de las aplicaciones web.
Por ejemplo vulnerabilidades de inyección, Cross Site Scripting (secuencia de
comandos en sitios cruzados), errores en manejo de sesiones, etc., así como
también otras vulnerabilidades no ligadas directamente con las aplicaciones WEB,
como desbordamiento de buffer, denegación de servicio, etc.