26/03/2013

ESTRATEGIA DE COMPOSICIÓN Y ORGANIZACIÓN DE UN EQUIPO DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES WEB

Trabajo de investigación realizado para la asignatura de Entornos de Desarrollo del ciclo Diseño de Aplicaciones Web cursado en el IES Camp de Morvedre (Sagunto)


ESTRATEGIA DE COMPOSICIÓN Y ORGANIZACIÓN DE UN EQUIPO DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES WEB

1.- INTRODUCCIÓN
2. ESTRUCTURAS DE ORGANIZACIÓN DE EQUIPOS DE TRABAJO
3. FORMACIÓN DE EQUIPOS DE TRABAJO
4. ETAPAS Y MODELOS DE DESARROLLO DE SOFTWARE
5. ROLES DE UN EQUIPO DE TRABAJO DE DESARROLLO DE SOFTWARE
6. CONCLUSIÓN.
7. REFERENCIAS



1.- INTRODUCCIÓN
El desarrollo de software y, por extensión, el de aplicaciones web es una actividad que requiere del cumplimiento de diversas facetas y del conocimiento de distintas tareas tanto relacionadas con la informática como no. Para la consecución de un proyecto de desarrollo de software deben conjugarse aspectos que abarcan la gestión, la dirección, la comunicación, la creatividad así como aspectos comerciales además de los puramente relacionados con el software como la programación o el diseño de aplicaciones. Todo ello sumado, por regla general, a una cantidad significativa de horas de trabajo, por lo que, ante esta exigencia, en la mayoría de casos se hace casi imprescindible para la consecución de objetivos realizar el trabajo de desarrollo de software en equipo.
Por tanto, excepto en proyectos de poca entidad o de características especiales, será necesario conformar un equipo de trabajo en el cual se distribuyan las distintas tareas, lo que exigirá un nivel importante de coordinación de los trabajos para lo que será necesario partir de una estructura de grupo sólida que permita la resolución de conflictos e incidencias de manera eficiente y con unos roles bien definidos y para los que se haya realizado una clara asignación de responsabilidades.
La consecución de objetivos dependerá en gran medida del trabajo de cada miembro del equipo pero también de la relación entre ellos y el cómo esté organizado el funcionamiento interno del grupo. Un equipo de trabajo formado por personas capacitadas puede fracasar si no se realiza un esquema de trabajo adecuado y un reparto de roles que se adapte a las exigencias del proyecto. Para ello a continuación se tratará de exponer las opciones de organización más comunes así como algunas directrices orientativas para la formación de equipos de trabajo eficientes.


2. ESTRUCTURAS DE ORGANIZACIÓN DE EQUIPOS DE TRABAJO
En las labores de investigación y desarrollo se han definido teóricamente cuatro modelos de organización de grupos o equipos de trabajo: modelo jerárquico, modelo adaptativo, modelo libre y modelo sincrónico. Y como resultado de su combinación puede considerarse un quinto modelo, el abierto, del que hablaremos más adelante.

Modelo Jerárquico: Es la estructura de esquema más simple y a su vez más antigua, basada en el principio de autoridad lineal según el cual los niveles superiores son obedecidos por sus respectivos niveles inferiores. Generalmente corresponde a una estructura piramidal, con una figura de autoridad que se sitúa en el nivel superior y que realiza las tareas de supervisión y toma de decisiones finales.
Es un modelo que se caracteriza por:
- Estructura estable y con roles bien definidos para cada nivel.
- Control estricto mediante el establecimiento de procedimientos de trabajo basados en directivas.
- Las decisiones de un nivel superior se convierten en directivas a cumplir por los niveles inferiores.
- La comunicación de la información está canalizada a través de las líneas jerárquicas que unen los distintos niveles.
- Los resultados son predecibles y programables.
Promueve los siguientes valores:
- Lealtad al grupo y a sus intereses, las actitudes críticas e independientes suelen ser tomadas como síntoma de deslealtad y no son bien aceptadas.
Puede presentar algunos inconvenientes como:
- Falta de flexibilidad a la hora de adaptarse a necesidades diversas.
- Lentitud de reacción ante los cambios.
- No es un modelo dado a la innovación.
- No saca todo el provecho de los individuos.
Ejemplos prácticos de este tipo de modelo:
- Ejército.
- Sistema burocrático estatal.
- Organización eclesiástica.

Modelo Libre: Puede considerarse el opuesto al jerárquico ya que donde aquél aplica el control y la subordinación de los niveles con sus superiores éste apuesta por la libertad de toma de decisiones de los miembros del grupo.
Sus características principales son:
- Los miembros que forman esta estructura tienen autonomía para la toma de decisiones.
- Se basa en la iniciativa independiente de los individuos.
- Busca promover el cambio y la innovación a través de la creatividad.
Promueve los siguientes valores:
- Creatividad, la libertad del individuo para crear es más importante que la estructura que rige el grupo.
Este modelo puede presentar inconvenientes como:
- Impredecibilidad e inestabilidad, no es posible prever la consecución de objetivos o establecer un plazo exacto para ello.
- Gestión poco eficiente de los recursos.
- Dependencia de una organización de mayor envergadura que las albergue. Debido a lo incierto de sus resultados es complicado que una estructura así pueda ser independiente de otra de mayor estabilidad.
Algunos ejemplos de este tipo de organización pueden ser:
- Grupos universitarios.
- Grupos de creativos de publicidad.
- Grupos de guionistas de TV.

Modelo Adaptativo: promueve también la independencia individual pero basándose en la colaboración de los miembros a través de la negociación y la discusión.
Se caracteriza por:
- La coordinación de iniciativas individuales, la colaboración se basa en la discusión y la negociación.
- Promover distintos puntos de vista.
- La información fluye con facilidad entre los miembros.
- Inclusión de las contribuciones de todos los miembros con lo que éstos se sienten incentivados al sentir los proyectos como propios.
- Los roles y responsabilidades son flexibles y se adaptan a cada tipo de situación.
- Búsqueda del consenso en la toma de decisiones.
- Se obtienen notables resultados en la resolución de problemas complejos.
Promueve valores de:
- Colaboración entre los miembros.
- Igualdad entre miembros.
- Diálogo y consenso.
- Implicación en un objetivo común y propio de todos los miembros del equipo.
Puede presentar inconvenientes como:
- Caer en debates estériles y perder el foco del problema y con ello la perspectiva del objetivo final.
- Ante este tipo de situaciones recurrir de manera sistemática a la toma de decisiones por votación y sin buscar el consenso, lo cual lleva a la segregación de minorías que pierden el sentir el proyecto como propio, resintiéndose con ello la calidad final del producto.
Ejemplos prácticos de este modelo pueden ser:
- Juntas vecinales.
- Comisiones directivas de clubes.

Modelo Sincrónico: Puede considerarse opuesto al adaptativo en el sentido en el que no se considera la discusión o el diálogo como una opción de funcionamiento sistemático ya que todos los miembros del modelo sincrónico presentan una cultura común, algo que los une y los alinea en la voluntad de conseguir un objetivo compartido.
Este modelo se caracteriza por:
- Basarse en un acuerdo tácito de sus miembros.
- Una coordinación basada en un espíritu común sobreentendido resultado de una convivencia armónica durante años o por la huella que dejó en el grupo una fuerte personalidad.
- Existe un entendimiento común de la tarea que se lleva a cabo.
- Entre un miembro emisor y otro receptor puede establecerse una comunicación prediciendo el mensaje aunque no exista un canal de conexión entre ambos.
- Es sumamente eficiente llevando a cabo procedimientos preestablecidos.
Su principal inconveniente es:
- No es adecuado para responder a requerimientos cambiantes.
Como ejemplos prácticos podemos encontrar:
- Ciertos grupos familiares.
- Comunidades monacales.

En el desarrollo tecnológico la consecución de objetivos requiere una parte importante de trabajo rutinario o programable combinado con la necesidad de aportar innovación para la resolución de problemas. Por todo ello, de los modelos de organización expuestos, el que más se aproxima a las características requeridas por el desarrollo de software sería el Adaptativo aunque precisamente su principal inconveniente, el ser un modelo dado a la pérdida de enfoque del objetivo y al estancamiento en problemas menores, es un rasgo común en el desarrollo tecnológico.
Por tanto para el desarrollo de software la solución será la flexibilidad de equipos basados en la combinación de los diferentes modelos clásicos, dando como resultado un Modelo de Estructura Abierta. En él se aplicarán técnicas de cada uno de los modelos para conseguir adaptarse a las características requeridas. Del modelo adaptativo se tomará la base general, manteniendo un trabajo individual pero coordinado mediante la comunicación abierta, la negociación y la discusión; del modelo jerárquico se adoptará el control mediante procedimientos de trabajo programados y finalmente y de manera puntual se contemplarán incursiones en el modelo libre como respuesta a necesidades que requieran de un alto grado de creación e innovación para ser satisfechas. En este Modelo Abierto se promoverán las sesiones presenciales de resolución de problemas así como una asignación de roles no necesariamente fija pudiendo éstos ir rotando entre los miembros del equipo o modificándose según nuevas necesidades.


3. FORMACIÓN DE EQUIPOS DE TRABAJO
Un Equipo de Trabajo es un conjunto de personas reunidas por la autoridad formal de una organización para transformar recursos iniciales en bienes y servicios. Como se decía en la introducción, en el desarrollo de software, como en cualquier otra labor compleja, un equipo de trabajo puede alcanzar objetivos que una sola persona individualmente no podría. Al mismo tiempo el trabajo en grupo implica una planificación y una coordinación de trabajos de las cuales dependerá el resultado final tanto como de la calidad del trabajo de cada uno de los miembros del equipo.
Así pues para la formación del equipo de trabajo deberá contemplarse una primera fase de selección de los miembros, que se llevará a cabo según los criterios que se consideren oportunos, y una segunda de creación del equipo en sí mismo.
Creación del Equipo: Una vez seleccionadas las personas que formarán el equipo debe dedicarse especial atención a la formación inicial del mismo: hay que conseguir convertir a los individuos escogidos en un grupo capaz de trabajar conjuntamente. Para ello se deben sentar las bases de funcionamiento del equipo, se debe transmitir a los miembros un enfoque claro de objetivos y un esquema con la asignación de roles de cada uno, sus respectivas responsabilidades y cuáles serán los principios de interacción entre ellos. Según el tipo de equipo y la envergadura del proyecto para esta primera definición de las claves de funcionamiento podrá recurrirse desde una charla informal o una reunión hasta una convención o retiro de unos días.

La construcción del equipo deberá realizarse teniendo en cuenta la cultura del grupo y el tipo de estructura de organización que se quiere obtener. Así pues para un equipo con estructura jerárquica se deben establecer líneas claras de autoridad, objetivos bien delimitados, una clara asignación de tareas y la búsqueda de directivas simples y concretas. Para uno de estructura libre se buscará definir más una orientación del trabajo que unas reglas, permitiendo flexibilidad en la conformación del equipo así como una asignación natural de roles y haciendo énfasis en la acción individual como forma de contribuir al grupo. En un equipo de estructura adaptativa se buscará incentivar la comunicación fluida dentro del equipo así como fomentar la participación de todos los miembros en la mayor cantidad de aspectos posibles, tratando de implicar a las distintas partes en un objetivo común. Si el equipo fuese de estructura sincrónica deberá buscarse un alto grado de compromiso e identificación de una cultura común y se le dará más importancia al aprendizaje y asimilación de una serie de procesos coordinados que a un sistema de comunicación fluida.

Liderazgo o Management: Como norma general la tarea básica del manager será la de fijar objetivos y criterios claros, transmitirlos con entusiasmo y reforzar el grupo en las facetas menos fuertes de éste. Pero de la misma forma que para la formación del equipo, el tipo de estructura determinará en mayor o menor medida el perfil del manager o líder. Así en un modelo jerárquico se requerirá un líder decidido, que transmita autoridad y directrices claras pero que tenga la capacidad de escuchar a sus subordinados. En un modelo libre se buscará un líder que oriente y enfoque los trabajos sin necesidad de dar órdenes y que mantenga la libertad y la independencia del grupo de cara a la organización mayor al que éste pertenece. En el modelo adaptativo debería priorizarse un líder que se encargara de mantener el objetivo focalizado y que fuera un buen moderador para encauzar las discusiones internas al mismo tiempo que transmite confianza al grupo. En el modelo sincrónico es donde el líder tal vez requiera de unas características más marcadas y más ligadas a la personalidad ya que debe jugar un papel visionario con el cual se identifiquen los miembros del equipo, actuando a la vez como unión entre ellos para evitar el aislamiento y siendo capaz de identificar las necesidades realimentando al grupo con los mensajes apropiados. Además de todo esto en un grupo de modelo abierto el manager deberá actuar como cabeza visible en un equipo de miembros sin jerarquía fija y será completamente responsable de cara al exterior. Para evitar caer en debates improductivos deberá tener la última palabra en la toma de decisiones.

Trabajo en Equipo: En el trabajo en equipo un factor importante es el de la experiencia. Los equipos más eficaces se van formando con el tiempo, un grupo que lleva trabajando un periodo de tiempo será significativamente más eficaz que uno recién formado debido a que ya se ha asimilado un mecanismo de trabajo común y se evitan fallos de descoordinación tan habituales en el comienzo de cualquier labor compartida. Para que un equipo de trabajo adquiera esa experiencia será necesario tener en cuenta varios factores:
- Resolución de conflictos: es común que en todo equipo surjan problemas entre los miembros debido a desacuerdos. Será importante solucionar estas desavenencias de la manera más armonizada posible y en caso de que no se resuelvan deberá entrar en juego la intervención de un superior (el manager) y contemplar, como último recurso, la salida de miembros del equipo.
- Tratamiento de la presión: otro de los grandes problemas que aparecen durante el trabajo en equipo es la incapacidad de soportar la presión ejercida por exigencias de las capacidades personales muchas veces relacionadas con el cumplimiento de plazos. El exceso de presión es un claro inconveniente a la hora de conseguir realizar un trabajo de manera eficaz por lo que es importante trazar inicialmente un plan en el que se establezcan plazos realistas y que permita a los miembros del equipo tener una visión global de la evolución y del ritmo de los trabajos.
- Búsqueda del consenso: en el trabajo en equipo el consenso es la mejor manera para tomar decisiones. La decisión por mayoría como sistema lleva a resultados mediocres. El objetivo será encontrar una respuesta razonable que todos los miembros apoyen o acepten evitando que haya miembros que muestren una oposición frontal a la decisión tomada. La votación por mayoría segrega minorías que pierden apego por el proyecto, lo cual repercute negativamente en el resultado final. Para poder recurrir al consenso como sistema de toma de decisiones debe tenerse en cuenta que requiere tiempo, participación activa, habilidades de comunicación y mentes abiertas.
- Tamaño del equipo: un equipo puede estar formado por un número diverso de miembros pero siempre lo más recomendable será buscar equipos relativamente pequeños, aunque sin sobrecargar de trabajo a sus miembros, que permitan una relación firme entre sus integrantes. Dicho esto el tamaño de un equipo siempre irá inevitablemente unido a la envergadura del proyecto a realizar pero un equipo numeroso siempre será más difícil de coordinar y de conseguir que funcione de manera armónica.
- Propiedades de un equipo eficaz: además de todo lo anterior para conseguir que un equipo funcione de manera eficaz se requerirá que exista una cohesión entre los miembros, una unión fuerte entre ellos en la que destaque el respeto, la tolerancia y la colaboración; unas metas que motiven a los integrantes del grupo, que sean claras y específicas y que se perciban como alcanzables; también es importante realizar un seguimiento de los resultados que se van obteniendo y ver el progreso hacia las metas propuestas.
Motivación como sistema de productividad: a la hora de asegurar la productividad en un entorno de trabajo el factor motivacional suele dar mejores resultados que el impositivo. La creatividad y la productividad son factores que van ligados a la motivación así como a la confianza y a un nivel de presión bien mesurada. Las imposiciones suelen ser entendidas como demostraciones de falta de confianza lo cual implica desmotivación. En el desarrollo de software los profesionales requieren un alto grado de pericia, creatividad y concentración y para ello en muy necesario sentirse motivado. Así pues deberán tenerse en cuenta factores que están directamente relacionados con la mejora de la motivación como son:
- Interés por el proyecto: del que ya se ha hablado anteriormente, sentir el proyecto como propio.
- La formación y el conocimiento recibido: sentirse capacitado para realizar la tarea encomendada.
- Ambiente de trabajo: tratado en el apartado anterior.
- Salario percibido: aunque es complicado hay que tratar de ser justos y evidenciar las injusticias en este aspecto.
- Responsabilidad y confianza recibida: Dar responsabilidad a alguien denota confianza y por lo tanto es una compensación y una muestra de recompensa por un trabajo previo bien hecho.
- Flexibilidad horaria: en la construcción de software el número de decisiones por unidad de tiempo es elevado y para tomar esas decisiones de manera eficiente debe tenerse un nivel de concentración para lo cual aunque se tenga un horario base sí es importante flexibilizar su cumplimiento.
- Evolución profesional: es importante generar perspectivas de crecimiento profesional, mantener cierto grado de ilusión por una progresión.
Resumiendo todo lo expuesto en este punto se podría decir que el trabajo en equipo se resume en la regla de las “cinco C”:
Confianza: La confianza de los miembros del equipo facilita el flujo de información veraz para la optimización de toma de decisiones. Cada persona debe confiar en el buen hacer del resto de sus compañeros. Esta confianza además le llevará a anteponer el éxito del equipo frente al propio lucimiento personal.
Complementariedad: Cada miembro o grupo de miembros del equipo domina una faceta del trabajo y cada uno de estos conocimientos son básicos para la consecución de los objetivos.
Coordinación: El trabajo en equipo implica un grupo de personas trabajando de manera coordinada. El grupo debe trabajar, con un manager o líder a la cabeza, de forma organizada.
Comunicación: El trabajo en equipo exige una comunicación abierta entre sus miembros, esencial para poder coordinar las distintas actuaciones individuales.
Compromiso: Cada miembro se compromete a poner todos sus conocimientos y empeño en sacar el trabajo adelante. Cada componente del equipo es responsable de un cometido y sólo solo si todos cumplen su función será posible la consecución de los objetivos marcados.


4. ETAPAS Y MODELOS DE DESARROLLO DE SOFTWARE
A la hora de conformar un equipo de desarrollo también será necesario tener en cuenta tanto las etapas contempladas en la teoría de la Ingeniería de Software como los diversos modelos de desarrollo para una correcta elección de los miembros, de la organización del grupo y de los plazos y objetivos del proyecto así como de la definición de los roles.


Etapas del desarrollo de software:

- Análisis de requerimientos: el primer paso para crear un producto de software es establecer los requisitos y requerimientos que debe cumplir el mismo. El correcto análisis de requerimientos es básico para conseguir que el programa o la aplicación cumplan con las expectativas del cliente. La dificultad de esta fase reside en saber plasmar y reconocer esos requerimientos a través de las indicaciones facilitadas por el cliente, así como reconocer los no esenciales, completar los que no lo estén o añadir los que serán necesarios de manera indirecta.

- Especificación: una vez se han definido los requerimientos la siguiente fase consistirá en especificar los requisitos del sistema y realizar una clasificación, priorización y una estimación de plazos de ejecución.

- Arquitectura: consistirá en el diseño de los componentes de una aplicación que debe permitir visualizar la interacción entre entidades y permitir su validación. El diseño describirá cómo se construirá la aplicación de software.

- Programación: se trata de convertir el diseño en código de lenguaje de programación. La complejidad y duración de esta etapa estará relacionada con la dificultad del diseño y a los lenguajes de programación que se usen.

- Prueba: consiste en comprobar que el software realiza correctamente las tareas indicadas en la fase de especificación.

- Documentación: engloba todo lo relacionado con la documentación del propio desarrollo del software y de la gestión del proyecto (modelaciones, diagramas, pruebas, manuales de usuario, manuales técnicos) con el objetivo de realizar correcciones en el futuro así como mejorar la usabilidad, realizar el mantenimiento o una futura ampliación del sistema.

- Mantenimiento: fase final dedicada a mantener y mejorar el software corrigiendo los errores que se vayan descubriendo e incorporando nuevos requisitos. Es una fase que puede ocupar más espacio de tiempo incluso que el desarrollo inicial y se estima que más del 60% del tiempo de ciclo de vida de un proyecto se dedica a su mantenimiento.



Modelos de desarrollo:

- En Cascada: ordena rigurosamente las etapas del proceso de desarrollo de manera que el inicio de cada etapa debe estar precedido por la finalización de la anterior. Se estructura en Análisis de Requisitos, Diseño (del sistema y del programa), Codificación, Verificación y Mantenimiento aunque pueden añadirse o eliminarse fases según el tipo de proyecto.

- De Prototipos: consiste en construir un modelo en poco tiempo, usando pocos recursos y centrándose en los aspectos del software que serán visibles para el cliente. Una vez realizado el prototipo se le muestra al cliente que lo evalúa e indica los aspectos a cambiar o mejorar de manera que se va refinando el producto hasta que éste satisface las necesidades del cliente.

- En Espiral: es un modelo en el que se valora el riesgo que aparece a la hora de desarrollar software para lo cual primeramente se estudian las posibles alternativas de desarrollo, se opta por la opción de riesgo más asumible y se hace un ciclo de la espiral. Para las mejoras que el cliente quiera ir incluyendo se repetiría en ciclo evaluando nuevamente el riesgo y las alternativas para elegir la opción más adecuada y realizándose otro ciclo de la espiral. Se repetirán dichos ciclos hasta que el producto satisfaga las exigencias del cliente.

- Por Etapas: parecido al modelo de prototipos ya que se van mostrando al cliente los estados sucesivos del software pero se diferencia de aquel en que las especificaciones no son conocidas al detalle al inicio del proyecto sino que se van desarrollando simultáneamente con las diferentes versiones.

- Iterativo y creciente: se comienza con una implementación simple de los requerimientos del sistema e iterativamente se va mejorando la secuencia evolutiva en las sucesivas versiones hasta que el sistema quede completamente implementado. En cada iteración se realizan cambios en el diseño y se agregan nuevas funcionalidades y capacidades. Requiere un importante grado de implicación por parte del cliente durante todo el proceso de desarrollo.

- En “V”: representa, en forma de V, las relaciones temporales entre las distintas fases del ciclo de desarrollo de un proyecto, estructurando estas en cuatro niveles, que comienzan en la parte superior con el inicio del proyecto y la fase de especificaciones, continúa con una fase funcional, una fase de diseño y llega al cuarto nivel en la fase de codificación. A partir de ahí se recorre el camino ascendente partiendo de ese cuarto nivel con las fases de test de los niveles antes enumerados hasta finalizar en el nivel 1 con el fin del proyecto. Por su robustez es un modelo de desarrollo especialmente indicado para proyectos de poca envergadura.

- RUP (Rational Unified Process): basado en un proceso cambiante y adaptativo a las necesidades del cliente y para el que es muy importante la interacción con éste. Se basa en la implementación de un ciclo en espiral pero con entrega, aunque solo sea internamente, de etapas iteradas de cara al análisis de la calidad del producto.



5. ROLES DE UN EQUIPO DE TRABAJO DE DESARROLLO DE SOFTWARE
Una vez presentados los esquemas de organización de grupos, los conceptos a tener en cuenta para la formación de equipos de trabajo y las etapas y modelos teóricos en el desarrollo de software finalmente pasamos a enumerar, también de manera teórica, los roles que habitualmente es necesario cubrir para la realización de un proyecto de desarrollo.
Administrador de Proyectos
Será el encargado de controlar y administrar los recursos destinados al proyecto, desde recursos humanos, económicos o tecnológicos hasta otros como el espacio físico, etc. Es una figura que debe existir siempre en todo proyecto de desarrollo aunque no se dedique en exclusiva a un único proyecto o la persona que se encargue de este rol se encargue también de otros simultáneamente. El Administrador de Proyectos debe tener una visión clara y global del proyecto y de sus objetivos. Su misión será conseguir el producto proyectado en el plazo previsto, con el menor gasto posible y cumpliendo siempre con los requisitos de calidad definidos. Se relacionará con todo el equipo de trabajo y su comunicación debe ser fluida con cada uno de los miembros del equipo. Otra de sus responsabilidades de peso será el encargarse de ser la cara visible del proyecto ante los clientes. La persona que se encargue de este rol necesita: tener una visión global del proyecto, para lo cual debe apoyarse en la creación de un organigrama del equipo de trabajo, un modelo de ciclo de vida del proyecto, diagramas de Gantt para la planificación y la estimación de la duración de los trabajos y un contrato con el cliente en el que se plasmen las características y requerimientos del software a construir.

Analista
Es la persona que trabajará con el cliente para realizar el análisis de las necesidades y requisitos a cumplir por parte del sistema que se va a construir. Para el éxito del proyecto es imprescindible que dicho análisis sea acertado, por lo que el Analista deberá mantener una comunicación continua con el cliente ayudando a éste a identificar las necesidades. Se deben conseguir plasmar las características del sistema, separando los requisitos esenciales de los que no lo son o completando características que indirectamente vayan a ser necesarias aunque el cliente en un primer momento no sea consciente de ello. Una vez hayan conseguido enumerarse las necesidades a cubrir el Analista debe realizar la especificación de requisitos que debe satisfacer el software, ya en lenguaje más técnico, de cara al equipo de desarrollo. El éxito del proyecto dependerá también de una buena especificación de requisitos. Por tanto un Analista será una persona que posea capacidades de comunicación, sociabilidad y que consiga entender y hacerse entender por el cliente. Además de conocer las técnicas de diseño y programación que se usarán en fases siguientes debe atesorar un grado importante de creatividad para poder ofrecer alternativas de modelos para la arquitectura del sistema a construir.

Diseñador - Arquitecto
Será el encargado de generar, partiendo de los requisitos establecidos por el analista, el diseño del sistema, tanto a nivel arquitectónico como de detalle. Deberá generar, llegado el caso, prototipos rápidos del sistema para la comprobación del cumplimiento de requisitos y conseguir que el producto final se ajuste al diseño definido pero en general su actividad se centrará en la descomposición de subsistemas para la creación de la arquitectura del sistema, definir la administración de acceso a recursos globales, seleccionar métodos de almacenamiento para las estructuras de datos, elegir el lenguaje o los lenguajes de programación a utilizar, etc. Debe ser un rol asignado a una o dos personas cualificadas y capacitadas para la toma de decisiones y con experiencia previa en la construcción de sistemas, con conocimientos adecuados de programación.

Programadores
La persona/as que deben convertir las especificaciones del sistema en código fuente ejecutable basándose en el lenguaje o lenguajes de programación elegidos por el diseñador y en las herramientas de software de apoyo a la programación. Una de sus misiones consistirá en reducir la complejidad del software a construir para conseguir un producto eficiente y reducir los problemas de testeo, aumentar la productividad reduciendo el tiempo de programación y mejorar las labores de mantenimiento en el futuro. El programador, además de conocer diferentes lenguajes y paradigmas de programación, debe estar familiarizado con las técnicas de diseño utilizadas por el diseñador así como tener experiencia en bases de datos.

Mantenimiento
Una vez validado el programa o la aplicación se entra en la última fase del ciclo de vida del desarrollo y que, como se mencionó en apartados anteriores, puede ser la fase que más se extienda en el tiempo, por lo que económicamente representa una parte importantísima del proyecto. Será un grave error subestimar y más aún ignorar el tiempo que el mantenimiento del software va a requerir. Dentro de las labores de mantenimiento entrarán la adaptación del sistema a cambios, o la realización de mejoras pedidas por los usuarios, o la ampliación de los usos de la aplicación o simplemente la subsanación de errores que vayan detectándose a lo largo del tiempo de uso del programa. Debido a esta importancia como fase en el proceso de desarrollo se ha destacado el Mantenimiento como rol independiente pero por la naturaleza de las tareas a abarcar lo más lógico sería, en proyectos de pequeña o mediana importancia, que de él se encargaran uno o varios de los propios miembros del equipo de desarrollo que ya están familiarizados con el programa creado y que en buena lógica invertirán menos tiempo en el arreglo de fallos o la introducción de cambios que un nuevo técnico que deba estudiar la documentación del proyecto y conocer el sistema para poder realizar los trabajos de mantenimiento.
A parte de todos los roles mencionados existen otro tipo de actividades que podrían dar lugar a nuevos roles pero que se podrían considerar como complementarias a las tareas de los roles ya descritos. El testeo, la comprobación sistemática del correcto funcionamiento en cada una de las fases del producto, será una actividad que se sobrentiende va implícita en cada una de las asignaciones de responsabilidad de los roles así como el control de calidad en las fases o las tareas de documentación de la historia del proyecto. Todas ellas deberían considerarse como una parte más del trabajo de cada uno de los integrantes del equipo, siempre que la entidad del proyecto no exija la dedicación de personas en exclusiva para estas tareas.

Otros expertos consideran necesaria la inclusión de otros roles como el de Comercial que capte clientes y vigile que todo el proceso sea rentable, Programadores específicos para Bases de Datos o Programadores front-end centrados en la usabilidad de las interfaces web, pero en este estudio nos hemos centrado en los que consideramos más básicos y genéricos sin pretender, eso sí, negar la existencia de otras posibilidades que serán totalmente válidas.


6. CONCLUSIÓN
Una vez realizado el recorrido por los modelos de organización de equipos de trabajo, de haber establecido unas recomendaciones para su conformación, de haber hecho un repaso de los modelos y las etapas de desarrollo de software y de haber enumerado unos roles básicos que deben ser considerados en todo equipo de desarrollo conviene destacar que para la creación de software debe tratar de potenciarse la flexibilidad por encima de la rigidez de un modelo u otro. Como casi la mayoría de actividades relacionadas de alguna forma con la innovación y la tecnología, en la creación de software se ha de hacer frente a problemas o necesidades dispares, que distan de poder estar normalizadas o estandarizadas, por lo que no puede hablarse de un modelo único para la creación de equipos de trabajo. Debe tratarse siempre de buscar esa flexibilidad que permita adaptarse y presentar siempre la mejor solución a los problemas que se plantean. Pretender ceñirse sistemáticamente a un mismo modelo para cualquier situación puede suponer a menudo la no consecución de los objetivos por una falta de adaptación a las necesidades reales de cada proyecto. Tener en cuenta las bases teóricas como punto de partida para el planteamiento de modos o formas de trabajo puede ser muy beneficioso para partir en la dirección correcta pero debe realizarse siempre un análisis crítico de cada una de las situaciones y no presentar reticencias ante los cambios o las evoluciones de cara a afrontar cada proyecto.


7. REFERENCIAS
[1] Organización de Equipos de Trabajo de Investigación y Desarrollo; Alejandro Clausse, Facultad de Ciencias Exactas de la Universidad Nacional del Centro, Argentina.
[2] Organización como Empresa, Ministerio de Educación, Bolivia, 2002.
[3] Apuntes de Taller de Ingeniería de Software, Capítulo 4: Roles en el desarrollo de software; David Fuller Padilla, 2003.
[4] Análisis y Gestión del Desarrollo de Software, Trabajo en Equipo y sus Técnicas; David Rodríguez Hernández.
[5] Equipos de Trabajo Efectivos; Mario Morales V., 1995.
[6] Entrada “Metodología de desarrollo de software” del Blog de Jose A. Rodríguez, Septiembre 2008: http://www.iiia.csic.es/udt/es/blog/jrodriguez/2008/metodologia-desarrollo-sotware-modelo-en-v-o-cuatro-niveles
[7] Entrada “Motivación o Imposición” del Blog de Miguel Sierra, Febrero 2010: http://geeks.ms/blogs/msierra/archive/2010/02/08/191-motivaci-243-n-o-imposici-243-n.aspx
[8] Ingeniería del Software, Artículo Wikipedia:
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software

21/03/2013

ADSL Pepephone, Paso 1: Contratación

El viaje al ADSL de Pepephone comienza como es lógico con la contratación del servicio a través de su web (www.pepephone.com). Parto de un contrato de ADSL + voz con Orange (permanencia ya terminada) por el que pago actualmente (fuera ya de la promoción inicial que duró durante el año de permanencia) 49,55€ (IVA incluido) para el cual se me suministró un router Live Box que no tengo ni idea de si podré aprovechar para recibir el ADSL de Pepephone.

Como ya dije en la entrada anterior el interés de este seguimiento se basa en que puedo ser un buen ejemplo de usuario "medio", es decir, que no tengo conocimientos de gestión o configuración de redes y por tanto es una buena oportunidad para comprobar si el cambio al ADSL de Pepephone está al alcance de cualquiera o bien solo es recomendable para aquellos usuarios avanzados.

Así pues esta tarde he entrado en la web de Pepephone y he ido siguiendo los pasos de contratación del ADSL. Si alguien está interesado en saber cómo se realiza esta gestión ésto es lo que se va a encontrar, al menos ahora al principio:

Primero evidentemente hay que comprobar la cobertura del ADSL Pepephone para tu vivienda introduciendo tu dirección y número (en caso de que ya tengas línea):




Una vez confirmada la cobertura pasamos ya a la contratación del servicio propiamente dicha:




Como vemos ya se nos informa que vamos a tener un cargo de 35€ (+ iva) por un concepto de "Cuota de Instalación" que es exactamente lo que ya se nos había dicho que ocurriría. De momento todo según lo previsto. Este es un concepto por el cual entiendo que el técnico de Telefónica va a X lugar y realiza X cambio para que ahora la línea la facture Pepephone. También se nos vuelve a insistir en que el router lo tendremos que configurar nosotros. De momento transparencia máxima.

El siguiente paso será rellenar los datos de facturación y servicio. Si ya habéis sido clientes de Pepephone, como es mi caso, vuestro antiguo correo y contraseña siguen activos por lo que no debéis seleccionar la opción de "nuevo cliente".

Finalmente se nos muestra el total de la cuota de instalación, con IVA ya incluido (42,35€):


Muy al estilo de Pepephone se nos advierte que este cargo sólo se hará efectivo en nuestra cuenta una vez el proceso de alta del ADSL haya concluido con éxito y no antes.

Para acabar de confirmar la solicitud elegimos la opción "Finalizar" y si todo ha ido bien a los pocos minutos recibiremos un email de confirmación en el que podremos verificar los datos de contratación.

Y hasta aquí la primera fase de mi portabilidad del ADSL a Pepephone. Ahora el siguiente paso seá ver si Orange contraoferta y hasta dónde.




20/03/2013

ADSL Pepephone

Hoy día 20 de Marzo de 2013 Pepephone por fin ha lanzado su servicio de ADSL y yo soy uno de los muchos usuarios que esperaban, un poco al acecho, que esto ocurriera. He sido cliente de línea móvil de Pepephone (llevo unos meses sin serlo, una buena tarifa de Yoigo y una oferta interesante por un iPhone 5 tienen la culpa) y durante el tiempo que estuve me sentí tan bien tratado que fui reclutando para Pepephone a personas de mi entorno cercano, como cualquier pepephonero hace, dicho sea de paso.

¿Qué tiene Pepephone que no tengan las demás? Como toda empresa que se precie Pepephone está para ganar dinero, eso es así, pero lo que seguramente la diferencia del resto es que Pepephone intenta ganarlo sin tratar de tomarte el pelo. He sido cliente de Amena, Telefónica/Movistar, Orange, Yoigo y no sé si de alguna más y siempre, siempre, la sensación de que si no estás atento te-la-meten-doblada sobrevolaba cada una de las gestiones con ellos. Lo gratificante de Pepephone es que puedes confiar en ellos. al principio da un poco de vértigo pero luego se confirma. Por ejemplo, mientras estuve con ellos cada cierto tiempo me llegaban emails anunciándome que me iban a bajar la tarifa que tenía y que me informaban por cortesía porque yo no tenía que hacer nada, me gustara o no lo iban a hacer. O la época en que decidieron (no sé si actualmente eso sigue en funcionamiento) que si un usuario reportaba una caída en el servicio de datos ese mes no se le cobraría el bono 3G asociado a su tarifa sin siquiera comprobar si el usuario decía la verdad. O bien este otro ejemplo. Busquen otra compañía de servicios que haga ésto, busquen. Soy fan del sentido común (lo que en Pepephone llaman "normalidad") y tratar bien a quien te da de comer y no intentar exprimirlo como un limón me parece de lo más sensato.
El caso es que al fin se lanza el ADSL de Pepephone a través de cobertura Vodafone (igual que en las líneas de móvil) y he estado estudiando la propuesta para ver si me compensaba el cambio.

Actualmente estoy con Orange, terminada ya mi permanencia, y pagando una mensualidad alta por ADSL + llamadas (que apenas usamos) durante ya tres o cuatro meses a la espera de que llegara Pepephone a ver qué ofrecía antes de atarme a otra nueva permanencia.
El ADSL de Pepephone no me parece que destaque por precio especialmente, yo creo que su principal baza es el servicio y ellos lo saben. Son 27,83€ (con IVA) al mes por ADSL sin voz. Orange me va a contraofertar de entrada con un descuento de un 20% en mi actual tarifa, lo cual lo dejará en unos 39,64€ al mes. Puede parecer bastante más alto pero a Pepephone hay que añadirle el coste de instalación (42,35€) y el posible coste de un router, si es que no consigo hacer funcionar alguno de los que tengo. En total unos 32 € al mes si contamos una distribución de estos últimos costes extra durante un año.

Así pues por un lado tengo a Orange, que por menos de 40 € (y que no sean menos cuando contraoferten) me da ADSL y voz + llamadas a móviles + una instalación que ya funciona. Y por otro Pepephone que por unos 32-34€ ( solo 6 o 7 € menos al mes) me da solo ADSL, sin llamadas a fijos, sin llamadas a móviles y con una instalación de funcionamiento incierto y que puede encarecerse en 60,5 € si un técnico tuviera que venir a casa a ponerlo todo en orden.

Situación peliaguda, pero aun así estar con una empresa que te da confianza hace que merezca la pena el riesgo. Una de las cosas precisamente buenas de Pepephone es que no te lían ni te atan con permanencias. Si no te gusta te vas y punto.

Así pues, después de comentarlo en casa, creo que estamos listos para intentar el salto y he pensado que al ser yo un usuario medio (es decir, no entiendo ni papa de redes a pesar de tener una asignatura en el ciclo que estoy cursando que va de eso, tirón de orejas de paso al responsable de dicha asignatura....) puede resultar interesante ir dejando constancia el el blog de las etapas y los pormenores que vayan acaeciendo durante el trayecto. Me imagino que el relato de portabilidades se sucederá en foros especializados pero insisto en que me da la impresión de que se tratará de usuarios más avanzados para los que configurar un router es pan comido o para los que gestionar una LAN no supone problema alguno. No es mi caso, del router apenas sé cómo se conectan los cablecitos y de la LAN sé lo que significan sus siglas y poco más así que puede ser constructivo ver qué vicisitudes pueden ir surgiendo y cómo una empresa emergente cómo Pepephone ha dispuesto, o no, el asesoramiento técnico y si algo tan problemático como el ADSL consigue doblegar la buena fe de una empresa modélica o si por el contrario ésta se mantiene firme en sus principios.

Mañana mismo comenzaré las gestiones y trataré de relatar cuáles son los inconvenientes que van surgiendo por si mi experiencia puede servir a alguien más.
    

19/03/2013

SINDICACIÓN DE CONTENIDOS (RSS Y ATOM)

Trabajo de investigación para la asignatura de Lenguaje de Marcas y Sistemas de Gestión de Información del ciclo de Diseño de Aplicaciones Web cursado en el IES Camp de Morvedre (Sagunto)


PANORÁMICA DE LAS TECNOLOGÍAS DE SINDICACIÓN DE CONTENIDOS

1.- INTRODUCCIÓN: ¿Qué es RSS? Motivos de su aparición y Ámbitos de aplicación.

2. EVOLUCIÓN DE LA SINDICACIÓN DE CONTENIDOS 

3. ATOM FRENTE A RSS 

7. REFERENCIAS 


1.- INTRODUCCIÓN: ¿Qué es RSS? Motivos de su aparición y Ámbitos de aplicación


Ante la creciente proliferación de información y contenidos en Internet en ocasiones los usuarios pueden encontrarse con el problema de la considerable cantidad de tiempo que deben invertir para mantenerse al corriente de todas las novedades o actualizaciones de los sitios web que consideran de interés. A través de un navegador debemos conectarnos a cada una de las webs en busca de nuevos contenidos, con el añadido además de que éstos no existan y hayamos realizado la visita sin resultado. Como respuesta o solución a todo ello apareció la sindicación de contenidos a través del RSS (Rich Site Summary ó Really Simple Sindication) que es un formato de texto basado en XML que permite distribuir contenidos a través de internet de forma automatizada y mediante una suscripción que el usuario realiza a cada uno de los canales que generan información con este formato y que le son de interés. De esta manera, y prescindiendo del navegador, ya no es el usuario el que recorre las webs en busca de nuevos contenidos sino que es el propio sitio web el que distribuye esos contenidos en formato digital a sus suscriptores. En lugar del navegador lo que el usuario ahora utilizará será un Agregador de Feeds o Lector de RSS que se encargará de recorrer automáticamente las webs a las que el usuario se ha suscrito para recopilar y mostrarle todos los nuevos RSS que haya ido encontrando. Ésta presentación de información se realiza en forma de índice o lista de enlaces con un titular y una breve introducción al contenido, el usuario puede consultar el contenido completo que le resulte de interés mediante el enlace directo incluido en el titular. El proceso de sindicación de contenido suele asociarse a blogs o bitácoras pero son cada vez más los servicios de noticias en general los que ofertan contenidos siguiendo este formato, toda información susceptible de ser troceada en “ítems” puede distribuirse por RSS.

En realidad RSS es simplemente un estándar para compartir información, estructurado en formato XML alrededor de un conjunto de etiquetas para indicar titulares y descripción de noticias y que no está pensado para su visualización como el HTML, sino para la interacción entre terminales emisor y receptor. Para que el proceso resulte posible cada sitio web en cuestión debe generar un feed o canal (el archivo RSS) que permanecerá alojado en el servidor como un archivo más de los que conforman el portal y que, una vez esté disponible, otros sistemas (el lector de RSS del receptor) podrán tener acceso a él y así recopilar los nuevos contenidos que éste ofrece. Hoy en día los sitios de creación y mantenimiento de blogs (Blogger, WordPress, etc.) han automatizado la generación de feeds por lo que los usuarios de estos servicios no deben preocuparse de crear éstos archivos ni de alojarlos en servidor alguno ya que son tareas que la propia aplicación web realiza de manera automática generando así la sindicación del contenido.
En definitiva sindicar el contenido de un sitio web, aunque en principio pueda parecer que actúa en contra de la “visibilidad” del sitio en sí, en realidad es una estrategia que ayuda a incrementar y fidelizar clientes, los cuales ya en primera instancia, agradecerán poder tener acceso al contenido de un sitio sin la necesidad de visitarlo.

2. EVOLUCIÓN DE LA SINDICACIÓN DE CONTENIDOS

Como ya se mencionaba en el apartado anterior el RSS es una variedad del formato XML en la que se han definido un conjunto de etiquetas que se utilizan para indicar los titulares y la descripción del contenido al que va asociado dicho titular. Este formato RSS ha sido a lo largo del tiempo objeto de interpretación y definición por distintas organizaciones, lo que ha dado lugar a que se hayan generado distintas versiones del mismo que conviven hoy en día.
La primera versión de RSS fue la RDF Site Summary, creada por Dan Libby y Ramanathan V. Guha cuando trabajaban para la empresa Netscape. Fue publicada en Marzo de 1999 para su uso en el portal “my.netscape.com” y se dio a conocer como RSS 0.9, su nombre definitivo. Tanto la finalidad de esta primera versión (que el portal web se nutriese de titulares obtenidos de webs de terceros) como su formato no eran nada simples por lo que más adelante, en Julio de ese año, Dan Libby produjo una nueva versión, conocida como RSS 0.91, en la que se habían eliminado los elementos RDF de la original e incorporado características del formato de sindicación scriptingNews de Dave Winer. A pesar de ello el proyecto no tuvo el éxito esperado y en Abril de 2001 la empresa abandonó el desarrollo.
En ese momento aparecieron dos entidades dispuestas a retomar el proyecto, el RSS-DEV Working Group, que contaba entre sus miembros con Ramanathan V. Guha, y UserLand Software, fundada por el propio Dave Winer, y que había publicado algunas de las primeras herramientas externas a Netscape y que podían leer y escribir RSS. En Diciembre de 2000 el RSS-DEV Working Group produjo una nueva versión del formato denominada RSS 1.0, un formato más estable y mejor diseñado y que reintrodujo el soporte de elementos RDF y añadió soporte a los XML namespaces (que se encargaban de proveer de unicidad a los nombres de los elementos y atributos en un documento XML). Por su parte, también en Diciembre de 2000, Winer publicaba RSS 0.92, una relectura del anterior RSS 0.91 en el que se añadían pequeñas variaciones y cambios menores a parte de la inclusión de elementos encapsulados que permitían añadir a los feeds RSS archivos de audio, lo que supuso un gran espaldarazo para la expansión de posteriores fenómenos como el podcasting. Winer además fue publicando las subsiguientes versiones 0.93 y 0.94, que junto con la 0.92 presentaban una sintaxis incompleta, no permitían introducir ciertas informaciones de copyright y se saltaban algunas normas del propio XML. Por ello, en Septiembre de 2002, Winer publicó RS 2.0 (Really Simple Syndication), una nueva versión del formato que trataba de corregir las carencias de las versiones anteriores (eliminando el atributo type añadido en la RSS 0.94 o añadiendo soporte a los namespaces entre otros cambios) para llegar de esta forma a ponerse a la altura de la versión RSS 1.0 del RSS-DEV Working Group.
Así pues en el transcurso de apenas 4 años se habían presentado hasta siete versiones distintas para el formato RSS lo cual motivó un creciente deseo de redefinirlo partiendo de cero y ello dio como resultado la aparición, en Junio de 2003, de un nuevo formato de sindicación alternativo denominado Atom. Pero lo cierto es que, más que ayudar a clarificar la situación de confusión existente con las múltiples versiones de RSS, Atom se convirtió en un formato nuevo que con el paso del tiempo se ha visto abocado a tener que convivir con el resto de formatos ya existentes y a los cuales, en un principio, pretendía sustituir. Atom presenta como característica principal la flexibilidad, es capaz de transportar información más compleja permitiendo artículos que incluyan el texto completo otorgando de esta manera un control adicional sobre la cantidad de información a representar en los agregadores. Atom además ofrece la posibilidad de exportar un blog entero, o partes de él, para realizar copias de seguridad o para migración de unos servicios de blog a otros.
Paralelamente a la aparición de Atom el resto de formatos RSS continuaron su evolución, así cabe señalar que en Julio de 2003 Winer y UserLand Software asignaron el copyright del formato RSS 2.0 a uno de los centros de investigación de Harvard. Al mismo tiempo Winer, en colaboración con Brent Simmons y Jon Udell, lanzaron el RSS Advisory Board, un grupo cuya propuesta era mantener y publicar las especificaciones y aclaraciones sobre el formato RSS 2.0. En Diciembre de 2005 los equipos de Microsoft Internet Explorer y Microsoft Outlook anunciaron la adopción del icono que ya usaba el navegador Mozilla Firefox como icono para referirse a los feeds, ejemplo que siguió Opera Software en Febrero de 2006 y que en buena medida propició que dicho icono, un cuadrado naranja con ondas de radio blancas (tal como muestra la imagen) se convirtiera en estándar tanto para los feeds RSS como para los Atom, remplazando así a una gran variedad de iconos y textos que habían sido usados previamente para representar la sindicación de contenidos. En Enero de 2006 Rogers Cadenhead relanzó el RSS Advisory Board sin la participación ya de Dave Winer y con el fin de continuar el desarrollo del formato y resolver ambigüedades.
Por tanto podemos comprobar cómo el formato RSS, en sus distintas versiones, continúa su evolución aunque parece que las que definitivamente presentan más actividad en términos de implementación de mejoras o adopción son RSS 2.0 y Atom, quedando el RSS 1.0 aparentemente algo por detrás.

3. ATOM FRENTE A RSS

Como se ha mencionado ya en el apartado anterior Atom surge como una alternativa a RSS que buscaba un nuevo formato que aclarara las ambigüedades de RSS, que consolidara sus múltiples versiones, que aumentara sus capacidades y que estuviera además auspiciado por una organización de estándares. Como diferencias más notables frente a RSS Atom presenta el uso de campos distintos para el resumen y el contenido, una mejor integración con el estándar XML (incluyendo un esquema, un namespace y siendo más estricto con la normalización) y el ser un

estándar abierto y en evolución (la especificación RSS 2.0, cuyo copyright pertenece a la Universidad de Harvard, tiene su desarrollo parado, no pudiéndose realizar cambios significativos). Puede decirse que Atom es una alternativa más sólida en cuanto a cumplimiento de estándar se refiere pero con un menor nivel de adopción o popularidad.
En cuanto al modelo de contenido RSS 2.0 puede albergar tanto texto plano como HTML, siendo éste un formato poco atractivo visualmente y que ha sido una fuente de problemas para los implementadores, sin modo de indicar cuál de los dos se está suministrando. Además RSS 2.0 no permite el actual XML bien formado lo cual reduce la reutilización del contenido. Atom por su parte sí que posee un mecanismo para indicar explícitamente y sin lugar a dudas el tipo de contenido que se está aportando en la entrada y da soporte a una gran variedad de tipos incluyendo el texto plano, HTML, XHTML (bien formado), XML o Base64 y hace referencias a contenido externo como pueden ser documentos, video, streamings de audio y otros. En términos de contenido parcial RSS 2.0 presenta un elemento “<description>” que es usado comúnmente para contener tanto el texto completo de una entrada como solo la sinopsis y que no existe manera de señalar cuál de los dos contenidos está completo. Atom separa en “<summary>” y “<content>” dichos elementos.
Si hablamos de extracción y agregación la única forma reconocida para RSS 2.0 es como un documento “<rss>” mientras que Atom permite documentos “standalone” que pueden ser transferidos usando cualquier protocolo de red. Atom además tiene soporte para feeds agregados, es decir, permite añadir a las entradas un punto de retorno al feed del que provienen cuando éstas están incluidas dentro de otros feeds.
En el plano de la extensibilidad RSS 2.0 no es un espacio de nombres (namespace) XML pero puede contener elementos de otros espacios de nombres XML. Atom por su lado es un espacio de nombres XML y puede contener elementos o atributos de otros espacios de nombres XML. Existen guías específicas sobre cómo interpretar la extensión de los elementos.
En términos de librerías de software tanto los feeds RSS 2.0 como los Atom son accesibles a través de las librerías de los clientes del estándar HTTP.

Librerías para procesar RSS 2.0:
- FeedParser
- Rome
Librerías para procesar Atom:
- XML::Atom
- XML::Atom::Syndication
- FeedParser
- Rome
- Apache Abdera
Como podemos apreciar Atom soporta las librerías de RSS 2.0 pero no ocurre lo mismo al contrario.
Para la atribución de autores RSS 2.0 ofrece la posibilidad de especificar la dirección de email para un feed mediante las etiquetas “<managingEditor>” y “<webMaster>” y la etiqueta “<author>” para los ítems. Atom posee los elementos “<author>” y “<contributor>” ambos a nivel de feed y entrada, deben contener un nombre y presentan subelementos opcionales para email y URI.
Por otra parte RSS 2.0 se apoya para la gestión de fechas en el uso de la especificación RFC 822 para comunicar información de cuándo los ítems fueron creados y de las últimas actualizaciones y para Atom el grupo responsable del desarrollo optó por las normas de la especificación RFC 3339, un subapartado de la ISO 8601.
Aunque el vocabulario RSS tiene un mecanismo para indicar un lenguaje humano para el feed no existe la forma de especificar un lenguaje para ítems individuales o elementos de texto. Para la identificación del lenguaje usado en los feeds RSS 2.0 tiene su propio elemento “<language>” mientras que Atom por su parte usa el atributo estándar xml:lan. Atom además difiere de RSS en que soporta el uso de los Identificadores de recursos internacionalizados (Internationalized Resource Identifiers) que permiten enlazar a recursos e identificadores únicos a contener caracteres externos a la colección ASCII.

En cuanto a modularidad, como ya veíamos en las librerías de procesado, los elementos del vocabulario RSS no son generalmente reutilizables en otros vocabularios XML mientras que la sintaxis de Atom fue específicamente diseñada para permitir a dichos elementos volver a ser utilizados fuera del contexto de un feed Atom. Es decir, podemos encontrar elementos de Atom siendo usados en feeds RSS 2.0, mientras que al revés no es posible.

Como se ha ido exponiendo Atom parece ser un formato más completo y con unas posibilidades más amplias que RSS pero sin embargo, a pesar de haber sido propuesto como estándar, aprobado por varios organismos como la comunidad IETF y haber sido adoptado por compañías de gran peso como Google, el uso del antiguo y tal vez más familiar RSS ha continuado debido a motivos seguramente relacionados con que su aparición es anterior y que la llegada de Atom se produjo con RSS 2.0 ya muy asentado:
- RSS 2.0 se beneficia de que, ya desde su versión 0.91, lideró el desarrollo de elementos que daban soporte a actividades hoy muy extendidas como el podcasting, habiendo sido adoptado por la comunidad y siendo así el formato preferido para estas prácticas a pesar de que aplicaciones tan populares en ese campo como lo es iTunes dan soporte también a los feeds en Atom 1.0.
- Muchos de los principales sitios de noticias (CNN, New York Times, etc.) publican sus feeds en un único formato, que no es otro que el RSS 2.0, con lo cual no contribuyen a la popularización de Atom.
- “RSS” además se ha ido convirtiendo en el término con el que se denomina genéricamente la sindicación de contenido en cualquiera de sus variantes, ya sea RSS 1.0, RSS 2.0, o Atom, dificultando igualmente el dar a conocer estos otros formatos.
Por tanto como hemos podido comprobar el formato Atom, al ser posterior al RSS y nacer con el objetivo de suplir las carencias de éste, es sin duda un formato más completo, sólido y actual pero que se ha encontrado con que la adopción del RSS 2.0, lo extendido que estaba ya su uso, es un condicionante de más peso a la hora de que los usuarios den prioridad a uno u otro. Así pues Atom es un lenguaje más completo y depurado pero menos extendido y RSS es más incompleto y presenta ambigüedades y limitaciones pero por el contra es más popular y cuenta con una adopción mayor entre la comunidad de usuarios.

4. REFERENCIAS

[1] “Sindicación de contenidos”, Web Universidad de Murcia. (http://www.um.es/actualidad/rss/tut_sindicacion/index.php).
[2] “Bitácoras y sindicación de contenidos: dos herramientas para difundir información”, Jorge Franganillo y Marcos Antonio Catalán.
[3] “¿Qué es RSS, los feeds y la sidicación de contenidos?”, entrada web Cristlab.com (http://www.cristalab.com/blog/que-es-rss-los-feeds-y-la-sindicacion-de-contenidos-c30816l/).
[4] “RSS” artículo Wikipedia (http://en.wikipedia.org/wiki/RSS).
[5] “Atom (standard)” artículo Wikipedia (http://en.wikipedia.org/wiki/Atom_(standard)).
[6] “Herramientas de la web 2.0 para bibliotecarios: Sindicación de contenidos”, Sonia Jiménez Hidalgo; CSIC.
[7] “RSS 2.0 and Atom 1.0 Compared”, Sam Ruby (http://www.intertwingly.net/wiki/pie/Rss20AndAtom10Compared).