Ingeniería de Software

En este blog podréis ir viendo el desarrollo día a día de un proyecto software bajo la Métrica v3 del grupo 3 de Ingeniería del Software III (Ingeniería Informática) de la Universidad Carlos III de Madrid.

sábado, 29 de marzo de 2008

Recuperación y Organización de la Información

Estamos realizando la asignatura de Recuperación y Acceso a la Información en la que estamos haciendo una página web acerca de técnicas de clasificación para la organización y recuperación de la información.

Hemos dividido las técnicas en extracción de información con clasificación supervisada y organización de información con clasificación no supervisada así que si queréis más información sobre estos temas solamente teneis que entrar en los enlaces que os hemos dejado.

Un saludo y esperamos que os sea de utilidad.

El blog continua

Buenas, hacía ya un tiempo que no pasábamos por aquí ya que entre los examenes y el inicio del cuatrimestre no teníamos demasiado que añadir.

Al final logramos ganar el concurso de blogs de la clase de Ingeniería del Software III, pero, como ya dijimos anteriormente intentaremos seguir poniendo algunos post si encontramos temas interesantes sobre los que hacerlos y que puedan aportar algo.

Un saludo.

miércoles, 30 de enero de 2008

Sobre auditoría y gestión de la configuración

Después de otra entrada más sobre tipos de tecnologías a utilizar en la fase de diseño, en ésta daremos unos consejos sobre el mantenimiento de la configuración de archivos que componen un proyecto.

El motivo viene precedido por los resultados que nos dio nuestro profesor tras la realización de la auditoría que hizo durante navidades. Los resultados fueron satisfactorios a excepción de una serie de inconsistencias en el nombrado y etiquetado de los archivos. La causa de estos fallos fueron porque nos recomendaba que si utilizabamos una herramienta de gestión de configuración que nos nombrase automáticamente los documentos, en el plan de gestión de configuración incluyesemos esta nomenclatura para no tener problemas a la hora de tener que renombrar los documentos. A raiz de esto, se nos ocurrió hacer una entrada sobre cómo gestionar los documentos.  

La primera solución que puede pensarse para esto es organizar los documentos en un correo electrónico, pero esto es una locura y, dado que el tamaño de la práctica es bastante grande (puede llegar a ocupar cientos de megas), conviene elegir un otro medio para almacenar los documentos del proyecto.  

Nosotros hemos utilizado una alternativa bastante simple, un servidor de subversión (SVN) en el que hemos creado la estructura de carpetas del proyecto, de modo que todos los miembros del equipo podamos trabajar en paralelo sin demasiados inconvenientes, y en caso de que existan conflictos: dos miembros están modificando a la vez un documento, te avisa de forma sencilla y efectiva los cambios que se han estado haciendo.

También existen otras alternativas, como por ejemplo utilizar un servidor FTP como el que proporciona la universidad con el discoweb. Sin embargo, esta tecnología no proporciona los mecanismos de control de versiones y modificación concurrente que sí lo hace el SVN.

Esperamos que este post os haya sido de utilidad (sobre todo para los futuros alumnos de IS 3 del año que viene) y no tengáis problemas a la hora de encontrar una herramienta de gestión de la configuración. Un saludo.

Patrón EJB Session Facade

Hace unos días, en este post, comentábamos que la utilización de los EJBs nos hacía más sencillo el diseño de la aplicación gracias a que, dado que seguíamos el esquema de clases que nos viene dado por esta tecnología no era necesario aplicar otros patrones.

En realidad, existen algunos patrones para utilizar dentro de esta tecnología. Nosotros, en nuestro proyecto, utilizamos uno llamado Session Facade que nos permite dar una fachada de acceso a la parte central de la aplicación hecha en EJBs.

De este modo, utilizamos una arquitectura de 4 capas (similar a la arquitectura Modelo Vista Controlador (tecnología pero añadiendo la capa de acceso a la base de datos y sin permitir comunicación entre la vista y el modelo). A la hora de detallar esta arquitectura utilizamos Session y Entity Beans para la capa de datos (modelo) y de infraestructura (acceso a la base de datos). Para la capa de control utilizamos Session Beans que nos sirven a modo de fachada para utilizar la aplicación. Por último para la capa de Vista utilizamos JSPs (para las interfaces de usuario) y Web Services (para permitir acceso a nuestro sistema desde otras aplicaciones).

Dejamos un diagrama que resume lo que hemos explicado:

Esto se corresponde con un session facade, ya que los session bean de la capa de control solamente hacen de fachada para que los JSPs de la interfaz accedan a los session y entity beans del modelo de datos.

Una de las ventajas de utilizar este patrón nos vino a la hora de controlar los permisos de los usuarios. Cada usuario tiene un rol (administrador, invitado, usuario registrado, etc.) y, para controlar los permisos de cada rol, lo único que tuvimos que hacer es definir las operaciones de cada rol en distintos session beans de la capa de control y despues, desde el deployment descriptor de los EJBs, mapear nuestros roles con dichos session beans. La autenticación se realiza en la capa de interfaz.

Pues eso es todo. Recomendamos que mireis la referencia que os dejamos sobre
el patrón para que completeis la información que os aporta este post y, si aun no lo habeís hecho, podeís consultar la bibliografía que recomendamos sobre EJBs en el primer post en que tratamos este tema y que ya hemos referenciado. Mucha suerte con vuestro diseño.

domingo, 27 de enero de 2008

Autovaloración

El motivo de esta entrada es intentar convencer a los evaluadores (los profesores y el resto de compañeros) para obtener una buena puntuación en sus valoraciones, pues consideramos que el blog se ha realizado cumpliendo los objetivos y criterios a los que estaba sujeto el concurso. 

A continuación, presentamos la opinión personal sobre cómo responde a los criterios citados anteriormente:

ADECUACIÓN A LOS CONTENIDOS DE LA ASIGNATURA:
Es nuestro punto fuerte y el aspecto que más hemos cuidado durante el desarrollo del blog. Nuestra estrategia inicial fue clara: queríamos que el contenido del blog fuese útil para personas interesadas en la IS y en especial, futuros alumnos de IS III. Por eso sólo se escribirían entradas cuyo contenido estuviese relacionado estrictamente con la ingeniería del software, o temas relacionados con otras ramas de la informático pero siempre enfocados desde la IS. El resultado está a la vista: exposición de los conocimientos que hemos aprendido en clase, entrevistas a expertos en la ingeniería del software, temas directamente relacionados pero que se dan en otras asignaturas (como por ejemplo "Desarrollo de Software ágil") y ejemplos de las tecnologías más importantes y que destacan en proyectos de computación distribuida (descripción que hemos realizado sobre los Web Services y EJBs). Sin embargo, esto no es todo; siempre está la excepción que confirma la regla: IT Crowd (pero por lo menos algo tiene que ver la informática... jejeje)    

DISEÑO:
Nuestra idea respecto al diseño era crear un blog cuya estética se viese a simple vista que estuviese cuidada, realizada de forma profesional y ante todo, seria. Esto ha tenido como resultado una elección de colores y contrastes que faciliten la lectura, pero además se han incluido una serie de widgets que han potenciado tanto el diseño como el contenido del blog: calendario de la planificación del proyecto, sistema de etiquetas de las entradas, gestor de noticias RSS relacionadas con la informática, listado de bibliografía y herramienta de previsualización de enlaces externos.
 
ACTUALIZACIÓN:
Como ya se ha dicho en el factor de "adecuación al contenido", nuestra idea era clara al principio: las entradas tenían que estar lo más relacionadas posibles con la ingeniería del software. Esto hizo que en algunas situaciones tuviéramos que buscar información, consultar dudas que nos surgían con el profesor, preguntar a terceros sobre determinados temas, etc., provocando que a veces para escribir una entrada tardáramos una semana o incluso más. De todas formas, nuestra media aproximadamente ha sido algo más de una entrada por semana, creyendo que es un buen datos y más que suficiente (teniendo en cuenta no sólo la carga de la asignatura y de las demás, sino la calidad con la que realizábamos las entradas).

REFERENCIAS EXTERNAS:
Ha sido un aspecto que hemos dedicado especial interés, no sólo por la utilidad de consultar las fuentes de información de las cuales desarrollamos la entrada por parte de los interesados, sino también por la valoración positiva que realiza Google aquellas páginas con una buena política de referencias: que estén relacionadas con el tema y que además tengan un PageRank (valoración de Google sobre una página).

INCOMING LINKS:
Es una medida indirecta para saber cómo de bien está publicado tu sitio en la Web. Como dijimos al principio, realizamos una estrategia para aumentar el posicionamiento en la Web y uno de los apartados era dejar referencias de nuestro blog en sitios de especial interés. En nuestro caso, nos anunciamos en la Wikipedia y en los foros de tecnología e informática de El País. Al final y junto con técnicas de mejora de los metadatos del blog, hemos conseguido aparecer en Google los décimos si se busca por la siguiente cadena: "blogspot ingeniería software", que teniendo en cuenta que blogspot es el principal proveedor de blogs de la Web y el poco tiempo que llevamos con el blog, el resultado es bastante bueno. Para ver el resultado de la estrategia de posicionamiento en base a los incoming link y los metadatos, os adjuntamos los gráficos que hemos ido obteniendo con Google Analytics referentes a los medios que utilizan los lectores para acceder a este blog:





Esto ha sido todo por hoy y hasta la próxima!!