Información general
Descripción
Código: NOR_CMS
Versión actual: v01r00
Norma para establecer las directrices que deben seguir los sitios web y portales basados en gestores de contenidos (CMS) en la Junta de Andalucía, garantizando calidad, seguridad, accesibilidad y coherencia en su diseño y evolución.
Ámbito de aplicación de la norma
Esta norma se aplica tanto a nuevos desarrollos como a actuaciones de evolución y mantenimiento que impliquen la implantación, configuración o modificación de un CMS (núcleo, módulos/plugins, temas/plantillas, integraciones y flujos editoriales) en sitios web, portales y aplicaciones de la Junta de Andalucía.
Por tanto, todo sistema que:
- se encuentre operativo o en desarrollo y utilice un CMS para la edición y publicación de contenidos en un sitio web o portal corporativo, DEBE aplicar las directrices de esta norma.
- incluya la creación, instalación o modificación del núcleo del CMS, módulos/plugins, temas/plantillas o integraciones asociadas, DEBE aplicar las directrices de esta norma.
- sea de uso interno (intranet/extranet) y esté basado en un CMS, se RECOMIENDA que aplique esta norma en la medida de lo posible.
- utilice un CMS como repositorio de contenidos para otros canales (por ejemplo, consumo vía APIs/headless), se RECOMIENDA que aplique esta norma en los apartados que correspondan (diseño, construcción, observabilidad, seguridad y pruebas).
Diseño
Principio de modularidad
DIR_01 Modularidad
OBLIGATORIO Un CMS tiene que estar estructurado de manera modular, con un conjunto de componentes, cada uno con una funcionalidad especifica. Esta separación permite que los módulos se puedan desarrollar, mantener y evolucionar de forma autónoma reduciendo así la complejidad global del sistema.
La modularidad favorece la reutilización, la escalabilidad y la interoperabilidad, de esta manera los cambios aplicados a un módulo no afectan al funcionamiento del CMS, siempre que se respeten las interfaces establecidas.
Dos ejemplos de módulos son:
- Metatag un módulo contribuido que añade funcionalidades para mejorar la indexación de los contenidos publicados.
- Terra_news un módulo personalizado que define y da de alta el tipo de contenido Noticia según los requisitos definidos por la Agencia.
Consistencia de la Interfaz de Usuario
DIR_02 Sistema de diseño para sitios web públicos
OBLIGATORIO Se tiene que adoptar el sistema de diseño de la Junta de Andalucía para el desarrollo de sitios internet y portales dirigido a terceros.
Es fundamental garantizar la coherencia visual y funcional en los sitios web públicos mediante el uso del sistema de diseño compartido, que incluye guías de estilo, componentes y patrones de interacción. Esto implica respetar las directrices definidas para tipografía, colores y espaciado, así como asegurar que cualquier cambio en el sistema de diseño se propague de forma uniforme en todas las plataformas basadas en CMS.
Para mantener esta consistencia, se recomienda realizar auditorías periódicas que verifiquen el cumplimiento de las guías y detectar posibles desviaciones. Además, cualquier adaptación o personalización debe documentarse y justificarse, siguiendo un proceso aprobado por la Oficina de Arquitectura o el equipo responsable, con el fin de preservar la uniformidad y la calidad en la experiencia del usuario.
DIR_03 Sistema de diseño para sitios web internos e intranet
RECOMENDADO Todos los nuevos sitios tienen que cumplir con el sistema de diseño. Para aquellos sitios de uso interno de la Junta de Andalucía (intranet o extranet), aunque la adopción del sistema de diseño no es obligatoria, es altamente recomendable su cumplimento allí donde sea posible.
DIR_04 Reutilización de componentes
RECOMENDADO Los componentes de la interfaz de usuario se podrán reutilizar en el desarrollo de un sitio web basado en CMS para garantizar consistencia y coherencia visual.
- Utilizar componentes de UI provenientes de una librería común proporcionada y gobernada por la Agencia o el equipo asignado responsable. Esto asegura que los elementos visuales y patrones de interacción sean consistentes en todas las vistas, evitando duplicar esfuerzos y manteniendo una experiencia de usuario uniforme.
- Diseñar los componentes de manera que permitan su fácil integración en cualquier sitio web basado en CMS, con opciones de personalización limitadas para garantizar que la coherencia visual se mantenga en toda la aplicación.
- Cualquier nuevo componente que se quiera desarrollar tiene que ser evaluado para su inclusión en la librería de componentes compartidos de la Agencia. Los equipos de desarrollo pueden proponer nuevos componentes a la Agencia, quienes revisarán su viabilidad y coherencia con el sistema.
DIR_05 Coherencia en la experiencia de uso
OBLIGATORIO La interfaz de usuario de un sitio web basado en el uso de un CMS será coherente en todas las plataformas y dispositivos, asegurando una experiencia uniforme para todos los usuarios:
- Aplicar el diseño responsivo establecido en el sistema de diseño para garantizar que el sitio se adapte correctamente a diferentes tamaños de pantalla y dispositivos, manteniendo la coherencia en la experiencia del usuario.
- Seguir patrones de navegación y disposición consistentes en todas las vistas del sitio web, independientemente del dispositivo o plataforma, para evitar confusión y mejorar la usabilidad.
- Realizar pruebas de usabilidad en múltiples dispositivos y navegadores para verificar que la experiencia del usuario sea satisfactoria y consistente en todos los contextos de uso.
- Documentar las adaptaciones específicas para diferentes plataformas en el sistema de diseño, asegurando que los desarrolladores comprendan cómo implementar interfaces coherentes en diversas condiciones.
Optimización del rendimiento
DIR_06 Tiempo de carga y uso de recursos
OBLIGATORIO Se tiene que garantizar que cada sitio web cumpla el objetivo de minimizar los tiempos de carga inicial y mejorar la eficiencia de los recursos. Se tienen que usar técnicas de minimización y compresión de archivos (CSS, JavaScript, imágenes), implementar sistemas de carga diferida del contenido para imágenes, scripts y otros recursos no criticos.
Si procede, integrar sistemas externos de caché (Redis, Varnish) e optimizar la base de datos.
Accesibilidad
DIR_07 Accesibilidad
OBLIGATORIO Cumplir con las Directrices de Accesibilidad para el Contenido Web (WCAG) y con las políticas establecidas en la Normativa de Accesibilidad de la Junta de Andalucía.
Hay que asegurar que todas las funcionalidades y contenidos sean accesibles para todos los usuarios, incluidas las personas con discapacidades, siguiendo los lineamientos definidos en la normas de accesibilidad.
Según indicado en el BOE-A-2018-12699, esta norma aplica a todos los sitios web, tanto dirigidos a la ciudadanía que a uso interno de la organización (intranet y extranet).
En el artículo 3 indica como única excepción aquellos sitios publicados antes del 23 de septiembre del 2019, hasta que dichos sitios no sean objeto de una revisión sustancial.
Construcción
Selección de Tecnología
DIR_08 Tecnología
OBLIGATORIO A la hora de desarrollar un nuevo sitio web apoyándose en un CMS será necesario alinearse con el stack tecnológico de la arquitectura de referencia para gestores de contenido.
- Utilizar preferiblemente tecnologías especificadas en el stack tecnológico aprobado por la Agencia.
- Usar versiones respaldadas y actualizadas conforme a las directrices establecidas por la Agencia. Esto para garantizar estabilidad, seguridad y calidad de los entornos de trabajo.
- Los equipos de desarrollo se tendrán que encargar de verificar periódicamente que están utilizando la última versión del CMS elegido.
- Mantener coherencia tecnológica entre los sitios desarrollados usando CMS, limitándose al uso de tecnologías aprobadas por la Agencia.
Calidad del código
DIR_09 Estándares de calidad
OBLIGATORIO El código que se escribe para los CMS debe seguir los estándares definidos por las líneas guía del CMS adoptado y las líneas guía definidas por parte de la Agencia para garantizar mantenibilidad y seguridad.
- Cumplir con los estándares de codificación definidos en las guías oficiales del CMS elegido.
Usar herramientas para el análisis estático del código. - Desarrollar y ejecutar pruebas unitarias y funcionales e integrarla en los pipelines de CI/CD antes de la integración.
- Documentar el código mediante comentarios claros y consistentes siguiendo los estándares.
- El código debe evitar vulnerabilidades conocidas y periódicamente se deben pasar auditorías con herramientas específicas.
- El código tiene que ser eficiente y optimizado, evitar consultas innecesarias, operaciones costosas y se tienen que aplicar buenas prácticas relacionadas con el uso de caché.
DIR_10 Análisis de la calidad
OBLIGATORIO el código tiene que ser analizado continuamente para asegurar la calidad y la seguridad.
- Utilizar herramientas de análisis estático de código que identifiquen vulnerabilidades, malas prácticas y posibles errores antes de que el código sea desplegado. Esto asegura que el código cumpla con los estándares de calidad y seguridad establecidos.
- Integrar pruebas automatizadas que cubran un alto porcentaje del código, incluyendo pruebas unitarias, de integración y de regresión, asegurando que el código sea robusto y libre de errores conocidos.
- Realizar revisiones de calidad del código antes de cada despliegue importante, asegurando que no se introduzcan nuevas vulnerabilidades o errores en producción.
Interoperabilidad
DIR_11 Estándares de interoperabilidad
RECOMENDADO debe garantizar la capacidad de intercambiar, procesar y reutilizar información entre diferentes aplicaciones, servicios y plataformas.
- Usar estándares de datos abiertos para el intercambio de información (REST, JSON, XML, GraphQL, XML, RDF) y evitar formatos propietarios que pueden limitar la integración entre sistemas.
- Separar el backend y el frontend facilitando la interoperabilidad con aplicación externas usando APIs para exponer la funcionalidad.
- Cumplir con las normas técnicas de interoperabilidad.
- La comunicación entre sistemas debe realizarse mediante canales seguros, aplicando controles de acceso y trazabilidad.
- Documentar y versionar las APIs de los servicios expuestos de forma clara y accesible.
Observabilidad
Logging
DIR_12 Registro de eventos y errores
OBLIGATORIO Registrar eventos y errores en sitios web desarrollados con CMS es necesario para facilitar el análisis, diagnóstico y resolución de posibles problemas:
- Registrar eventos clave y errores en un sistema de logging centralizado que permita la correlación y el análisis posterior. Los logs deben incluir información detallada como el timestamp, el contexto del error, y el stack trace.
- Implementar políticas de retención de logs que equilibren la necesidad de almacenamiento con la necesidad de mantener un historial adecuado para análisis forenses y auditorías.
- Utilizar un formato estructurado para los logs (por ejemplo, JSON) que facilite la búsqueda, el filtrado y el análisis automatizado de la información registrada.
- Integrar el logging con herramientas de análisis de logs que permitan la detección de patrones y la generación de alertas basadas en la ocurrencia de eventos específicos.
DIR_13 Logs compartidos
OBLIGATORIO los logs deben ser accesibles y usables por parte de los equipos de desarrollo garantizando una gestión segura de la información registrada.
- Almacenar los logs en una plataforma accesible y segura, donde los equipos de desarrollo, operaciones y seguridad puedan acceder para realizar análisis y depuración.
- Implementar políticas de control de acceso que aseguren que solo las personas autorizadas puedan ver y manipular los logs, protegiendo la información sensible y cumpliendo con las regulaciones de privacidad.
- Configurar los niveles de logging adecuados a cada entorno, prohibiendo el uso de niveles DEBUG o TRACE en producción, salvo en casos puntuales y temporalmente acotados para la depuración de errores.
- Usar herramientas de visualización de logs que faciliten la comprensión de los datos y la identificación rápida de problemas, como Open Telemetry.
- Revisar regularmente los logs para identificar posibles áreas de mejora en la arquitectura o en los procesos operativos.
Seguridad
DIR_14 Security by design
OBLIGATORIO Cualquier componente del CMS debe incorporar medidas de seguridad. Aplicando múltiples capas de protección y aplicando el principio de mínimos privilegios para los usuarios.
DIR_15 Autenticación y control de acceso
OBLIGATORIO Definir roles y permisos de forma granular, registrar todos los accesos y los cambios relevantes. Implementar sistemas de autenticación seguros para usuarios con privilegios elevados, como, por ejemplo, autenticación con el LDAP Corporativo.
DIR_16 Actualización y mantenimiento
OBLIGATORIO Mantener actualizado el núcleo del CMS y de todos los módulos y plugins contribuidos, aplicar parches de seguridad cuando disponibles y eliminar componentes obsoletos o no usados.
DIR_17 Cifrado y comunicaciones seguras
OBLIGATORIO Usar siempre HTTPS en todo el sitio, cifrar los datos en tránsito y configurar certificados válidos y actualizados.
DIR_18 Backups y recuperación
OBLIGATORIO Realizar copias de seguridad periódica tanto de la base de datos que del código y almacenarlos en ubicaciones seguras. Verificar periódicamente que la restauración de las copias de backup funcione correctamente.
Pruebas
DIR_19 Pruebas unitarias e integración
OBLIGATORIO Cada componente funcional o módulo del CMS debe contar con pruebas que validen su comportamiento y funcionamiento adecuado. Se debe también validar la interacción entre módulos y plugins.
DIR_20 Pruebas funcionales y de aceptación
OBLIGATORIO se deben validar los flujos de trabajo de los usuarios (interacción con páginas, creación de contenido, login, navegación, …) y se pueden automatizar mediante herramientas específicas.
DIR_21 Pruebas de carga y rendimiento
OBLIGATORIO Es obligatorio evaluar el comportamiento del CMS bajo condiciones de tráfico elevado mediante herramientas específicas.
DIR_22 Pruebas de seguridad
OBLIGATORIO se deben realizar escaneos automatizados y pruebas manuales para detectar posibles vulnerabilidades en el funcionamiento del CMS (XSS, inyección SQL).
DIR_23 Pruebas de accesibilidad
OBLIGATORIO se debe verificar y garantizar el cumplimento de las normas de accesibilidad definidas por la ADA.
Arquitectura de la Información
DIR_24 Organización estructural del contenido
OBLIGATORIO Se tienen que seguir las pautas definidas en el Portal del Desarrollador para una redacción adecuada y coherente del contenido, tal y como se indica en la Guía para escribir interfaces y en las plantillas para la redacción del contenido ( ).
DIR_25 Usabilidad y experiencia de usuario
OBLIGATORIO La arquitectura de la información debe facilitar una navegación intuitiva, con menús claros, rutas consistentes y agrupaciones temáticas. Se tiene que aplicar el principio de mínimo esfuerzo cognitivo para que los usuarios puedan encontrar lo que buscan de la forma más rápida y sencilla.
DIR_26 Accesibilidad de la información
OBLIGATORIO La información que se gestiona debe ser compatible con tecnologías de asistencia y tiene que cumplir con las reglas definidas en el WCAG.
DIR_27 SEO técnico y semántico
OBLIGATORIO las urls deben ser amigables y reflejar la estructura y organización del contenido. Se tienen que aplicar reglas para el marcado semántico y se debe evitar el contenido duplicado.
DIR_28 Escalabilidad editorial
RECOMENDADO Se tiene que prever y permitir la creación de nuevos tipos de contenido. Los nuevos tipos de contenido tienen que seguir la estructura lógica existente y seguir las buenas prácticas para el desarrollo.
DIR_29 Adaptación al flujo editorial
RECOMENDADO Por cada tipo de contenido definido es aconsejable contemplar la adopción del flujo editorial basado en roles y permisos para la edición y publicación del contenido según como definido por la Agencia.