Mostrando entradas con la etiqueta ingeniería. Mostrar todas las entradas
Mostrando entradas con la etiqueta ingeniería. Mostrar todas las entradas

miércoles, 24 de marzo de 2010

Manejo de Requisitos de Software

El manejo de requisitos es una tarea fundamental en el desarrollo de cualquier producto y el software no es la excepción. Un maestro me decía: "si el cliente quiere un zapato que tenga un agujero en el talón y que por ese agujero le entre aire acondicionado, eso es lo que tienes que darle"; sin embargo no es una cuestión tan sencilla porque llenar las expectativas y necesidades de los clientes o usuarios no es tan simple. Esto se debe a que hay una gran diferencia entre 1) lo que el cliente dice, 2) lo que el cliente espera y 3) lo que el cliente necesita.

La gestión de requisitos o ingeniería de requerimientos no es simplemente proveer al cliente lo este pida. Es toda una disciplina y comprende todas las tareas relacionadas con la determinación de las necesidades o de las condiciones a satisface.

Se suele desestimar la necesidad de tener claramente definidos los requerimientos de un software, ya sea porque se considera que el proyecto no es complejo o porque se considera algo tedioso este proceso. En realidad los pliegos de requisitos constituyen la base contractual de cualquier proyecto, dado que tanto el cliente como el contratado deben saber cuales son los resultados esperados y lo que el producto debe brindarle al cliente.

El proceso de gestión de requerimientos implica construirlos, revisarlos y validarlos, tomado en cuenta tanto las necesidades del cliente como del producto mismo. En general el proceso de gestión de requisitos abarca lo siguiente:
  1. Desarrollo de requisitos del cliente
    • Elicitación(Obtención) de necesidades
    • Desarrollar las necesidades del cliente
  2. Desarrollo de requisitos del producto
    • Establecer requisitos del producto y producto-componente
    • Asignar requisitos de producto-componente
    • Identificar requisitos de interface
  3. Analizar y Validar los requisitos
    • Establecer conceptos operacionales y escenarios
    • Establecer una definición de la funcionalidad requerida
    • Analizar los requisitos
    • Analizar los requisitos para alcanzar un equilibrio
    • Validar los requisitos con métodos exaustivos.
La validación de los requisitos es muy importante dado porque garantiza que los requerimientos especificados son correctos. El porceso de validación continua un en las etapas de desarrollo del producto, se hace necesario valida continuamente si el producto que se contruye se corresponde con los requisitos. Si se deja de lado la especificación de requisitos en las etapas d desarrollo no habra servido de mucho y no se puede garantiza que el producto tenga la calidad requerida por el cliente.

Finalmente hay que resaltar que los requisitos no son algo estático y que pueden variar en el tiempo debido a las evaluaciones realizadas o bien por decisiones del cliente, de forma que deben registrarse los cambios que se realizan sobre la especificación.

Ver una ampliación de este tema en:

El trabajo del analista - Estandares y referencias de documentación

Relacionada con:

Tecnologías de la Información y Diseño de Sistemas: Código PHP usando ArgoUML

jueves, 16 de julio de 2009

UWE el camino a la orientación a objetos en la web


UML-Based Web Engineering (UWE) es una conjunto de herramientas para modelar aplicaciones web. UWE incluye una expansión del lenguaje UML y nuevos diagramas para modelar algunos aspectos específicos del las aplicaciones web. Integra conceptos de UML y la metodología OOHDM (Modelo de Diseño Hipermedia Orientado a Objetos). Me ha parecido interesante abordar este modelo como una herramienta de gran utilidad dado que esta basada en UML y además cuenta con todo el poder expresivo necesario para el desarrollo de aplicaciones web.

La mayoría de los que nos dedicamos a desarrollo web hemos sentido que las herramientas y el uml convencional quedaba cortos de expresividad ante conceptos que necesitábamos representar y debíamos recurrir a otras herramientas para modelar el comportamiento de nuestras aplicaciones web, si es que realizábamos algún tipo de modelado.

Para los que hayan trabajado anteriormente con la metodología OOHDM trabajar con UWE les resultara alga muy familiar porque muchos de los conceptos son análogos. En la página que tiene el enlace a UWE (http://uwe.pst.ifi.lmu.de/teachingTutorialSpanish.html), encontraran mucho material para estudiar, varios tutoriales, la especificación del modelo que es una extensión del UML y muchos artículos y publicaciones de expertos que ayudan ha entender como se relacionan los modelos de UWE y sus diagramas con los diagramas ya conocidos de UML.


En el ambito del desarrollo web no es usual modelar mucho las aplicaciones. Quizá es una de las razones por las que que los desarrollos se tornan mas complejos de lo pensado. La mayoría de los proyectos complejos ya sean estos basados en web o de otro tipo, el cliente espera ver resultados rápidamente, de modo que se suele desestimar la importancia del buen análisis y modelado. Esta es una muy mala práctica, tomando en cuenta que muchas de la aplicaciones que se desarrollan hoy día y que interactuan en la red son sistemas de complejidad media o alta con la salvedad que opera sobre una plataforma web.

La utilización de UWE en nuestros proyectos, no solo forma parte de las buenas practicas de desarrollo. También provee la documentación necesaria para dar soporte a las aplicaciones desarrolladas y facilita la implementación de las soluciones desarrolladas. UWE nos permite crear un modelo conceptual con todo el poder expresivo de UML, un modelo de navegación claro y un modelo abstracto de la interfaz de usuario.

Se podrían señalar muchas razones para que el uso de herramientas de representación adecuadas dos de ellas sin embargo pueden ser significativas a mediano plazo. 1) Los lenguajes de programación web estan evolucionando hacia la orientación a objetos, los lenguajes más utilizados PHP y ASP ya estan en ese camino, otros como Java, Python y C# son ya orientados a objetos. 2) Las aplicaciones, programas y servicios están cada ves mas integradas o encaminadas a la web. Pese a esto muchos programadores, desarrolladores y analistas aun no actualizan sus "cajas de herramientas". Esta tendencia ponte frente a nosotros la necesidad de utilizar las herramientas de que disponemos para construir aplicaciones web con calidad.