martes, 30 de diciembre de 2008

El WorkFlow

El Flujo de Trabajo (WorkFlow en inglés) es el estudio de los aspectos operacionales de una actividad de trabajo: cómo se estructuran las tareas, cómo se realizan, cuál es su orden correlativo, cómo se sincronizan, cómo fluye la información que soporta las tareas y cómo se le hace seguimiento al cumplimiento de las tareas. En definitiva, el análisis de las distintas tareas y actores que participan en los procesos de negocio.

Un WorkFlow presenta la ventaja de automatizar las distintas secuencias de actividades o tareas que se ven implicadas en la realización de un proceso de negocio, incluyendo el seguimiento del estado de cada una de sus etapas y la aportación de las herramientas necesarias para gestionarlo.

Por lo general se distinguen dos tipos de Workflow:
  • Workflow procedimental (también denominado Workflow de producción o Workflow administrativo), que corresponde a procesos de negocios conocidos de la empresa y que está sujeto a procedimientos preestablecidos. En este caso, la dirección del Workflow es más o menos fija.
  • Workflow ad hoc, que se basa en un modelo de trabajo de grupo en el cual los protagonistas participan en la decisión de hacia dónde dirigir el Workflow. Aquí la dirección del Worflow es dinámica.
Los objetivos que cualquier WorkFlow son los siguientes:
  • Reflejar, mecanizar y automatizar los métodos y organización en el sistema de información.
  • Establecer los mecanismos de control y seguimiento de los procedimientos organizativos.
  • Independizar el método y flujo de trabajo de las personas que lo ejecutan.
  • Facilitar la movilidad del personal.
  • Soportar procesos de reingeniería de negocio.
  • Agilizar el proceso de intercambio de información y agilizar la toma de decisiones de una organización, empresa o institución.
(Ejemplo de WorkFlow)

Por otra parte, existe el denominado Motor de Workflow, que es una herramienta que permite dar forma y automatizar los procesos de negocio de la empresa. Con este tipo de herramientas se pueden formalizar las reglas comerciales de la empresa para automatizar el proceso de toma de decisiones, es decir, qué rama de Workflow elegir según el contexto.

La Arquitectura Dirigida por Modelos (MDA)

La Arquitectura Dirigida por Modelos (Model Driven Architecture) es una especificación detallada por el OMG (Object Management Group) que integra diferentes especificaciones y estándares definidos por la misma organización con la finalidad de ofrecer una solución a los problemas relacionados con los cambios en los modelos de negocio, la tecnología y la adaptación de los sistemas de información a los mismos.

MDA nos permite el despliegue de aplicaciones empresariales, diseñadas sin dependencias de plataforma de despliegue y expresado su diseño mediante el uso de UML y otros estándares, potencialmente en cualquier plataforma existente, abierta o propietaria, como Servicios Web, .Net, Corba, J2EE,...

La especificación de las aplicaciones y la funcionalidad de las mismas se expresa en un modelo independiente de la plataforma que permite una abstracción de las características técnicas específicas de las plataformas de despliegue. Mediante transformaciones y trazas aplicadas sobre el modelo independiente de la plataforma, se consigue la generación automática de código específico para la plataforma de despliegue elegida, lo que proporciona finalmente una independencia entre la capa de negocio, y la tecnología empleada. De esta manera es mucho más simple la incorporación de nuevas funcionalidades, o cambios en los procedimientos de negocio sin tener que llevar a cabo los cambios en todos los niveles del proyecto. Simplemente se desarrollan los cambios en el modelo independiente de la plataforma, y éstos se propagarán a la aplicación, consiguiendo por tanto una considerable reducción del esfuerzo en el equipo de desarrollo, en los errores que tienden a producirse en los cambios introducidos en las aplicaciones mediante otros métodos de desarrollo, y por consiguiente, la reducción de costes y aumento de productividad que conlleva, tan demandados tanto la industria de desarrollo de software como el resto de las empresas.

MDA se apoya sobre los siguientes estándares para llevar a cabo su función:
  • UML: empleado para la definición de los modelos independientes de la plataforma y los modelos específicos de las plataformas de destino. Es un estándar para el modelado introducido por el OMG.
  • MOF: establece un marco común de trabajo para las especificaciones del OMG, a la vez que provee de un repositorio de modelos y metamodelos.
  • XMI: define una traza que permite transformar modelos UML en XML para poder ser tratados automáticamente por otras aplicaciones.
  • CWM: define la transformación de los modelos de datos en el modelo de negocio a los esquemas de base de datos.
MDA rompe con el concepto de producción de software artesanal, automatizando las tareas de diseño, desarrollo y en buena parte despliegue de aplicaciones. Gracias a esta automatización, la ingeniería del software puede participar de las ventajas de que gozan otras ingenierías al usar herramientas de soporte a su disciplina.

lunes, 29 de diciembre de 2008

La importancia de... la Gestión de la Capacidad

A lo largo del desarrollo de nuestro proyecto hemos hablado de la gestión de múltiples aspectos, como configuración o calidad, pero hoy nos vamos a centrar en otro que, si bien no tocamos, es harto relevante y puede ser un factor determinante a la hora de conseguir el éxito en un proyecto.

La Gestión de la Capacidad es la encargada de que todos los servicios TI se vean respaldados por una capacidad de proceso y almacenamiento suficiente y correctamente dimensionada. Sin una correcta Gestión de la Capacidad los recursos no se aprovechan adecuadamente y se realizan inversiones innecesarias que acarrean gastos adicionales de mantenimiento y administración. O aún peor, los recursos son insuficientes con la consecuente degradación de la calidad del servicio.

El objetivo primordial de la Gestión de la Capacidad es poner a disposición de clientes, usuarios y el propio departamento TI los recursos informáticos necesarios para desempeñar de una manera eficiente sus tareas y todo ello sin incurrir en costes desproporcionados.

Entre las responsabilidades de la Gestión de la Capacidad se encuentran:
  • Asegurar que se cubren las necesidades de capacidad TI tanto presentes como futuras.
  • Controlar de rendimiento de la infraestructura TI.
  • Desarrollar planes de capacidad asociados a los niveles de servicio acordados.
  • Gestionar y racionalizar la demanda de servicios TI.
La Gestión de la Capacidad intenta evitar situaciones en las que se realizan inversiones innecesarias en tecnologías que no están adecuadas a las necesidades reales del negocio o están sobredimensionadas, o por el contrario, evitar situaciones en las que la productividad se ve mermada por un insuficiente o deficiente uso de las tecnologías existentes.

Los principales beneficios derivados de una correcta Gestión de la Capacidad son:
  • Optimizar el rendimiento de los recursos informáticos.
  • Disponer de la capacidad necesaria en el momento oportuno, evitando así que se pueda resentir la calidad del servicio.
  • Evitar gastos innecesarios producidos por compras de "última hora".
  • Planificar el crecimiento de la infraestructura adecuándolo a las necesidades reales de negocio.
  • Reducir los gastos de mantenimiento y administración asociados a equipos y aplicaciones obsoletos o innecesarios.

La Web Semántica

La Web Semántica es la nueva generación de la Web que intenta representar información tal como puede ser usada por máquinas, no solo para mostrar propósitos, sino para automatización, integración y reusabilidad a través de aplicaciones. Se centra especialmente en su contenido, más allá de su simple estructura sintáctica.

La web semántica trata hacer la Web más entendible para las máquinas. También trata sobre la construcción de una infraestructura apropiada para que agentes inteligentes trabajen alrededor de la web realizando acciones complejas para sus usuarios. Con este fin, los agentes deben recuperar y manipular la información pertinente, lo que requiere una integración de agentes sin fisuras con la Web y el aprovechar totalmente las infraestructuras existentes (tales como el envío de mensajes, seguridad, autenticación, servicios de directorio, etc). Igualmente, la Web Semántica trata de declarar explícitamente el conocimiento embebido en muchas aplicaciones Web, integrando información de un modo inteligente, ofreciendo acceso semántico a internet y extrayendo información de textos. Finalmente, la Web Semántica trata el cómo implementar servicios web fiables e interoperables a gran escala, creando una web de servicios interpretables e interoperables que agentes inteligentes puedan descubrir, ejecutar y componer automáticamente.
El gran problema que presenta la web "tradicional" es que es enorme, posee cantidades ingentes de información, y no es lo suficientemente inteligente para integrar fácilmente las numerosas piezas de información que el usuario realmente necesita. Hoy en día, la mayor parte de la información de la web está representada en lenguaje natural; es por ello que nuestros ordenadores no pueden entender ni interpretar su significado. Los humanos por sí solos pueden procesar sólo una infinitésima fracción de la información disponible en la Web, y se beneficiarían enormemente si pudiesen recurrir a máquinas que ayudasen a procesar y analizar los contenidos de la Web. Desafortunadamente, la web fue desarrollada para consumo humano, no para consumo máquina – aunque todo en la web es inteligible para las máquinas, no lo es entendible. Se necesita la Web semántica para expresar la información de una forma precisa e interpretable por maquina, preparada para que los agentes puedan procesar, compartir, y reutilizarla, así como entender lo que describen los términos. Todo ello permitiría que las aplicaciones Web interoperasen tanto a nivel sintáctico como semántico.

Los principales horizontes hacia los que camina la web semántica son: buscadores semánticos (swoogle, powerset, cognition o hakia), los servicios web semánticos (fusión de los web services con tecnologías semánticas para proveer servicios más eficientes y potentes) o el Speech Mashup (interpretación de la semántica a través de la voz).

miércoles, 24 de diciembre de 2008

¡Feliz Navidad!

Hola a tod@s, desde Evosoft os queremos desear una muy Feliz Navidad, que paséis estos días con vuestros seres queridos y que este nuevo año sea, cuanto menos, tan bueno como éste.

¡¡¡ Feliz Navidad !!!

jueves, 18 de diciembre de 2008

Reflexiones... Luis Puente

¿Cuál considera que es el factor que más influye en el éxito de un proyecto software?
El compromiso.

¿Qué factor cree que es el más crítico, el más complejo de gestionar?
Las destrezas individuales.

Motivación… ¿Cree que un Ingeniero de Software trabaja más y mejor si está motivado o piensa que ha de realizar su trabajo de la mejor manera posible por el simple hecho de ser un profesional y porque le pagan por ello?
Creo en la motivación.

Nuevos horizontes… ¿Hacia dónde va la ingeniería del software? ¿Cuál es el paradigma del futuro?
Existe una tendencia clara a la realización de procesos más abstractos y serán las máquinas las encargadas de convertir esas abstracciones en componentes físicos.

¿Cuál cree que es la cualidad más importante que tiene que poseer un ingeniero de software?
Capacidades de abstracción y síntesis.

¿ESA o Métrica v3?
ESA.

Una vez casi finalizada la asignatura… ¿cuál es la panorámica que tiene del trabajo realizado por los alumnos este año?
En general se ha confirmado el objetivo con el camino. Métrica 3 y sus documentos no son un objetivo en sí mismo.

¿Qué consejo daría a los alumnos que están a punto de terminar la carrera y que se van a incorporar al mercado laboral?
No perder la confianza en que lo que saben es útil y debe aplicarse.

Y la indiscreta… Si tuviera que recomendar una empresa, y sólo una, a un alumno recién licenciado, ¿cuál sería?
Universidad.

Reflexiones... Juan Miguel Gómez

¿Cuál considera que es el factor que más influye en el éxito de un proyecto software?
Planificación de Recursos: tiempo y costes.

¿Qué factor cree que es el más crítico, el más complejo de gestionar?
El factor Riesgo, por cuanto tiene de incertidumbre, y la tupla tiempo-coste.

Motivación… ¿Cree que un Ingeniero de Software trabaja más y mejor si está motivado o piensa que ha de realizar su trabajo de la mejor manera posible por el simple hecho de ser un profesional y porque le pagan por ello?
Son dos cosas diferentes. El profesional que es tiene una ética implícita. El profesional bien motivado es doblemente efectivo.

Nuevos horizontes… ¿Hacia dónde va la ingeniería del software? ¿Cuál es el paradigma del futuro?
Dos líneas:
Semántica: Integración e Interoperabilidad y Desarrollo.
Saas: Proyectos de Software en la “Nube” (Cloud Computing).

¿Cuál cree que es la cualidad más importante que tiene que poseer un ingeniero de software?
Tesón.

¿ESA o Métrica v3?
ESA, no doubt!

Una vez casi finalizada la asignatura… ¿cuál es la panorámica que tiene del trabajo realizado por los alumnos este año?
Excelente, voluntad y esfuerzo, un grupo notable.

¿Qué consejo daría a los alumnos que están a punto de terminar la carrera y que se van a incorporar al mercado laboral?
Diferenciación. Ánimo. Pasión. Recordad dos palabras: SaaS y Cloud Computing.

Y la indiscreta… Si tuviera que recomendar una empresa, y sólo una, a un alumno recién licenciado, ¿cuál sería?
The Sky is the limit.