Ingeniería Web: Las Aplicaciones Web También Requieren Ingeniería

Publicado en

Hace ya por lo menos diez años, la Web irrumpió en nuestras vidas. Son ya muy lejanos aquellos tiempos en los que la web, no era mas que un repositorio de páginas estáticas que servían como carta de presentación a las empresas, y personas. Hoy en día, la web es escencialmente una plataforma para todo tipo de aplicaciones, con todo tipo de propósitos: desde tiendas virtuales hasta redes sociales.

Desde su inicio, nos hemos dado cuenta que el desarrollo web tiene características particulares. Por ejemplo: requiere un énfasis especial en la usabilidad, el desempeño, la seguridad y la soportabilidad. Adicionalmente, con la web, han surgido nuevas tecnologías que la habilitan (HTML, JavaScript, XML, ASP, PHP, JSP, JSF, RoR, y la lista continúa...). Esta situación de encontrarnos con una plataforma con características especiales y nuevas tecnologías, sirvió de pretexto para que muchos desarrolladores web dijeran: “aquí no aplica la ingeniería de software”, y se lanzaran a desarrollar aplicaciones como Dios les dio a entender.

De hecho, Roger Pressmann en su libro: “Software Engineering: A Practitioner’s Approach”, que es una de las biblias de la ingeniería de software, comenta lo siguiente:

“Cualquier producto o sistema importante es merecedor de recibir una ingeniería. Esto significa que hay que entender el problema, diseñar una solución viable, implementarla de una manera sólida y comprobarla en profundidad. Probablemente también se deberían controlar los cambios a medida que el trabajo vaya avanzando, y disponer de mecanismos para asegurar la calidad del resultado final. Muchos de los que desarrollan en web no opinan lo mismo; ellos piensan que su mundo es realmente diferente, y que los enfoques de ingeniería de software convencionales no aplican para ellos”.

Es de esta necesidad de una estrategia sistemática, pero que tome en cuenta las características especiales del web, que surge la denominada: Ingeniería Web. San Murugesan la define como la aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo exitoso de aplicaciones web de alta calidad.

¿Qué particularidades tiene el desarrollo web?
Se reconoce que las aplicaciones web tienen sus particularidades, y por ello deben recibir especial atención en algunos puntos, pero esto no significa que deban ignorar por completo la ingeniería. Entre las particularidades más significativas podemos listar:
•Residente en red. Una aplicación web reside en una red, y debe dar servicio a una comunidad diversa de clientes.
•Inmediatez. Se refiere al corto tiempo que normalmente tienen los proyectos web para terminar, o por lo menos, lanzar una versión inicial.
•Evolución continua. A diferencia del software de aplicaciones convencional, que evoluciona a través de versiones planeadas y cronológicamente espaciadas, las aplicaciones web están en constante evolución, y se actualizan gradualmente.
•Seguridad. Dado que no controlamos con certeza quién puede acceder a nuestra aplicación; la seguridad y confidencialidad de la información requieren un énfasis especial.
•Estética. Es bien sabido que la primera impresión jamás se olvida, por lo que nuestro sitio debe ser atractivo, ergonómico y usable.
•Medible. Mediante la cuantificación de resultados, podemos conocer la cantidad de usuarios que tenemos, así como sus patrones de comportamiento.

Atributos de calidad en la web
¿Cómo saber que nuestro sitio web es de calidad? No existe una receta mágica que nos dé una respuesta a esta pregunta. Sin embargo, el uso de metodologías, buenas prácticas y la experiencia, son un gran escalón para acercarnos en lo posible a lo que los usuarios definen como calidad. La figura 1 presenta un árbol de requisitos de calidad para aplicaciones web, que fue sugerido por L. Olsina en 1999:

Figura 1. Requisitos de calidad para aplicaciones web

El proceso de ingeniería web
Como ya vimos, las aplicaciones web tienen sus particularidades, y por lo tanto, requieren de un proceso que las tome en cuenta. Es así que, una de las principales características que se debe cumplir para ingeniería web, es que sea iterativo e incremental. Esto como respuesta a la continua evolución de las aplicaciones web, así como el corto tiempo en el que normalmente se requiere que sean implementadas.

En su libro anteriormente mencionado, Pressman sugiere un proceso de ingeniería web compuesto por las siguientes fases:
•Planteamiento y formulación. Identificamos los objetivos de nuestra aplicación, y delimitamos el alcance de la primera iteración.
•Planificación. Una vez planteado el problema, podremos estimar costos, riesgos y esfuerzo durante el desarrollo. Recordemos que en la planeación iterativa solamente se detalla la iteración actual, y las iteraciones subsecuentes sólo se plantean de forma general.
•Análisis. Durante esta etapa establecemos los requerimientos técnicos, gráficos, y de contenido, que incorporaremos en la iteración.
•Ingeniería. La actividad de ingeniería incorpora dos grupos de tareas que se realizan en paralelo: el diseño del contenido y la producción, se enfocan en el diseño, producción y adquisición del contenido de texto, gráfico y video que se vayan a integrar en la aplicación. Estas tareas son realizadas por personal no técnico. Por otro lado, están el diseño arquitectónico, de navegación e interfaz, el cual lidia con los aspectos técnicos.
•Generación de páginas y pruebas. Se prueba que el contenido dinámico se genere correctamente, utilizando las plantillas, interfaces y contenidos diseñados en la fase de ingeniería. Posteriormente se realizan las pruebas pertinentes, que dependerán del tipo de aplicación y requerimientos no funcionales (por ejemplo, pruebas de desempeño, etcétera).
•Evaluación del cliente. Al final de cada iteración se debe realizar una evaluación con el cliente, para validar el avance y determinar los cambios o mejoras –en caso de ser necesarios–, que se aplicarán en las siguientes iteraciones.

Figura 2. Modelo del Proceso IWEB

No reinventar la rueda
Una regla de oro en el desarrollo de cualquier tipo de aplicación es: “no reinventar la rueda”. Tal vez algo que agregaríamos al proceso sugerido por Pressmann, sería incorporar actividades específicas para evaluar cuáles de los componentes que ya existen se pueden reutilizar. Esto es porqué en el ambiente web existen muchos frameworks y engines que se pueden adaptar fácilmente a nuestras necesidades. Por ejemplo: prácticamente todos los websites y portales modernos utilizan un CMS (Content Management System). Así que antes de lanzarnos a desarrollar desde cero, echemos un vistazo a los elementos existentes tanto dentro como fuera de nuestra organización.

Conclusiones
La ingeniería web se ha convertido en una necesidad para el desarrollo de aplicaciones web de alta calidad. Es imprescindible comentar las características particulares con las que estos sistemas cuentan, como son la inmediatez y la evolución; ya que de esta manera podemos notar la diferencia entre una aplicación común de software y una Webapp.

El manejo del principio de ingeniería nos evita enfrentar un caos durante nuestro proceso del IWEB, recalcando que nuestra actividad como ingenieros es la formulación, planificación, análisis y diseño; lo que nos conlleva a que cada integrante del equipo multidisciplinario implicado, desempeñe su labor individual y fundamental para el cumplimiento de los objetivos generales.

Referencias
•San Murugesan, Athula Ginige. Web Engineering: Introduction and Perspectives. Capítulo 1 del libro, “Web Engineering: Principles and Techniques”. Idea Group Publishing, 2005.
•Roger Pressman. “Software Engineering: A practitioner’s perspective”. McGraw-Hill, 2004
•Luis Olsina. “Specifying Quality Characteristics and Attributes for Websites.” Proceedings of 1st Workshop on Web Engineering. ACM, 1995

Bio

 

Lacendi Nolasco Calderón es Ingeniero en Desarrollo de Software egresado de la Universidad Madero. Ha sido ponente en Congresos de Software y Cien- cias de la Tierra en Puebla y Puerto Vallarta, y organizador del Congreso “Tendencias y Aplicaciones en los Sistemas de Software”. Actualmente se especializa en proyectos de ingeniería web.

Noé Huerta Ramírez es Ingeniero en Desarrollo de Software, egresado de la Universidad Madero. Noé se desempeña como consultor independiente, y ha trabajado en diversos proyectos orientados a la ingeniería web, principalmente implantando soluciones basadas en software libre.