Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Sección 4.6 de 4.8 · Intermedio · 20 min de lectura

arc42 y otras plantillas de documentación

Videolección

5 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

Una vez que sabes qué documentar, necesitas un lugar donde ponerlo. En esta lección aprenderás arc42, una plantilla gratuita y muy usada para las descripciones de arquitectura, y cómo usarla de forma ligera.

Piensa en el manual de un vehículo. Todos los manuales tienen una sección sobre los neumáticos, otra sobre los testigos de advertencia y otra sobre el mantenimiento. Así sabes dónde buscar, sea cual sea el vehículo en el que estés. Una plantilla de documentación hace lo mismo para la arquitectura de software. Y no tienes que completar todas las secciones. Un sistema pequeño puede necesitar solo cuatro o cinco breves.

arc42 es una plantilla gratuita, creada por Gernot Starke y Peter Hruschka y usada en la práctica desde 2005. Se publica bajo una licencia Creative Commons y está especialmente extendida en los países de habla alemana. No es, deliberadamente, ni un método ni una notación. No te dice cómo diseñar ni qué estilo de diagrama usar. Es un conjunto de doce cajones etiquetados: para cada tipo de información, dice dónde ponerla.

Aquí tienes las doce secciones, agrupadas según la pregunta que responden. Las secciones uno a tres fijan los objetivos y los límites: para qué sirve el sistema, qué limita la solución y dónde termina el sistema. La sección cuatro, la estrategia de solución, enuncia las pocas ideas fundamentales que dan forma a todo lo demás. Las secciones ocho y nueve contienen los conceptos transversales y las decisiones que se aplican a toda la solución. Los registros de decisiones van en la sección nueve. Las secciones cinco a siete muestran la estructura desde tres ángulos: los bloques de construcción, cómo cooperan en tiempo de ejecución y dónde se despliegan. Y las secciones diez a doce hacen explícitos los requisitos de calidad, los riesgos y la deuda técnica, y el vocabulario. Las secciones sombreadas son el núcleo incluso de una descripción mínima: objetivos, contexto, estrategia y los bloques de construcción de nivel superior. Las indicaciones de arc42 añaden de tres a cinco escenarios de calidad y los conceptos clave.

La forma más común de fracasar con arc42 es tratarla como un formulario: doce encabezados, cada uno lleno de algo, y un resultado largo, genérico y que nunca se lee. Sus propias indicaciones dicen que todas las secciones son opcionales. Si una sección no hace falta, dilo en una línea, para que los lectores sepan que el hueco es intencionado. Enlaza en lugar de copiar. Los requisitos viven en el backlog, las decisiones en la carpeta de registros de decisiones y el despliegue en el código de infraestructura. Las copias se desincronizan. Y prefiere diagramas con tablas breves a páginas de prosa. Combina bien con C4: un diagrama de contexto en la sección tres y un diagrama de contenedores como primer nivel de los bloques de construcción en la sección cinco.

Aquí tienes una descripción arc42-lite de una página de la plataforma de reparto de comida. La sección uno enumera los objetivos de calidad por orden de prioridad. Primero, ningún pedido se pierde ni se cobra dos veces. Segundo, una confirmación rápida en las horas pico. Las restricciones son breves: los datos de tarjeta nunca tocan los sistemas de la plataforma, y los datos personales se quedan en regiones de la UE. La estrategia de solución vincula cada elección fundamental con un objetivo, como los eventos de pedido asíncronos a través de un intermediario gestionado, y cita el registro de decisiones. Los bloques de construcción son el diagrama de contenedores de C4, con un segundo nivel solo para pedidos, el servicio más arriesgado. El despliegue simplemente apunta al repositorio de infraestructura, que es la fuente de verdad. La sección de decisiones enumera los registros de lectura obligada, y los riesgos tienen responsables. No se copia nada, así que nada puede desincronizarse. Y un lector puede trazar cada decisión importante hasta un objetivo.

Existen otras plantillas. La plantilla Views and Beyond del Software Engineering Institute es más exhaustiva: documenta todas las vistas de la misma manera, con una correspondencia explícita entre ellas. Conviene a sistemas grandes, de larga vida o especificados por contrato. IEEE 1016 especifica las descripciones del diseño de software, que se usan en contratos de defensa y aeroespaciales. Está más cerca del diseño detallado y está inactiva desde 2020, aunque todavía se cita. La norma de la Sección cuatro punto dos, ISO/IEC/IEEE 42010, no prescribe ninguna plantilla. Pide contenido: partes interesadas, inquietudes, puntos de vista, vistas, correspondencias y justificación. arc42 sin más a menudo carece de un vínculo explícito entre cada inquietud y su vista, pero las carencias son pequeñas. Una breve tabla de puntos de vista y algunas tablas de correspondencia las cubren.

Atención a tres errores. Completar todas las secciones porque existen: una línea que explique por qué una sección está vacía es mejor que una página de relleno. Una vista de bloques de construcción con decenas de cajas en el primer nivel. Debería caber en una pantalla. Y escribir la descripción una vez y nunca más. Mantenla bajo control de versiones, revísala con los cambios significativos y muestra una fecha de última revisión.

La sección completa explica qué va en cada una de las doce secciones, para sistemas pequeños y grandes. A continuación, en la Sección cuatro punto siete, abordaremos el problema que derrota a la mayor parte de la documentación: quedarse desactualizada. Nos vemos allí.

Lo que necesitas saber

Qué es arc42

arc42 es una plantilla gratuita para describir y comunicar la arquitectura de software, creada por Gernot Starke y Peter Hruschka y usada en la práctica desde 2005. Se publica bajo una licencia Creative Commons Attribution-ShareAlike (Reconocimiento-CompartirIgual), en más de una docena de idiomas y en formatos como AsciiDoc, Markdown y Word, con una versión simple y otra con texto de ayuda integrado. Está especialmente extendida en los países de habla alemana y en la formación de iSAQB, pero se usa en todo el mundo.

arc42 no es, deliberadamente, ni un método ni una notación. No te dice cómo diseñar ni prescribe UML, C4 ni ningún otro estilo de diagrama. Es un conjunto de doce cajones etiquetados: para cada tipo de información arquitectónica, dice dónde ponerla, para que todo lector sepa dónde buscar y todo autor sepa qué falta. Sus autores dejan claro que todas las secciones son opcionales; un sistema pequeño puede completar cuatro secciones en unas pocas páginas, y uno grande puede completar las doce en muchas.

La plantilla se basa en ideas vistas antes en este capítulo. Sus tres vistas (bloques de construcción, tiempo de ejecución y despliegue) se corresponden de cerca con las categorías de módulos, de componentes y conectores y de asignación del SEI, y con las vistas de desarrollo, de procesos y física de Kruchten de vistas y puntos de vista. Su sección de decisiones es donde van los registros de decisiones de arquitectura, y su sección de calidad es donde van los escenarios de atributos de calidad del Capítulo 2.

Las doce secciones

El diagrama agrupa las secciones según la pregunta que responden. Las secciones 1 a 3 fijan los objetivos y los límites: para qué sirve el sistema, qué limita la solución y dónde termina el sistema. La sección 4 enuncia las ideas fundamentales de la solución, y las secciones 8 y 9 contienen los principios y las decisiones que se aplican a toda ella. Las secciones 5 a 7 muestran la estructura desde tres ángulos. Las secciones 10 a 12 hacen explícitos la calidad, el riesgo y el vocabulario.

La estructura de arc42

Las doce secciones de arc42 agrupadas en objetivos y límites, principios de la solución, vistas estructurales, y calidad, riesgo y terminología, con resaltadas las secciones centrales de una descripción mínimaObjetivos y límites1Introduccióny objetivos2Restricciones3Contextoy alcanceSolución: principios4Estrategiasolución8Conceptostransv.9Decisionesde arquit.Estructura en vistas5Bloquesvista6Ejecuciónvista7DesplieguevistaCalidad, riesgo, léxico10Calidad:requisitos11Riesgos ydeuda técnica12GlosarioSombreado: el núcleo de toda descripción mínima (objetivos, contexto, estrategia ybloques de nivel 1); las FAQ de arc42 añaden de 3 a 5 escenarios de calidad y conceptos clave (8).
Las doce secciones de arc42 agrupadas por finalidad; las secciones resaltadas son el núcleo incluso de una descripción mínima.

Qué va en cada sección, y cuánto

SecciónQué va en ellaSistema pequeño (un equipo)Sistema grande (muchos equipos)
1. Introducción y objetivosUn breve resumen de los requisitos, los tres a cinco objetivos de calidad principales por orden de prioridad y una tabla de partes interesadas con las expectativas de cada grupo.Media página: propósito, tres objetivos de calidad, cinco o seis partes interesadas.Dos o tres páginas, que enlacen con los documentos de requisitos en lugar de copiarlos.
2. RestriccionesTodo lo que limite la libertad de diseño: normativa, tecnologías impuestas, reglas organizativas, plazos, presupuesto, convenciones.Una lista de viñetas.Una tabla agrupada en restricciones técnicas, organizativas y legales, cada una con su origen.
3. Contexto y alcanceEl sistema como caja negra: los usuarios y los sistemas vecinos, lo que fluye entre ellos (contexto de negocio) y los canales y protocolos usados (contexto técnico).Un diagrama de contexto (a menudo un diagrama de contexto del sistema de C4) y una tabla breve de interfaces externas.Diagramas de contexto de negocio y técnico, más una tabla de interfaces con responsables y contratos.
4. Estrategia de soluciónLas pocas decisiones y enfoques fundamentales que dan forma a todo lo demás: el estilo de descomposición, las tecnologías clave, cómo se logran los principales objetivos de calidad.Unas pocas viñetas, cada una vinculada a un objetivo de calidad.Una o dos páginas; una tabla que relaciona cada objetivo de calidad con el enfoque que lo sirve.
5. Vista de bloques de construcciónLa descomposición estática en bloques de construcción (subsistemas, servicios, componentes, módulos), refinada nivel a nivel, cada uno con sus responsabilidades e interfaces. Suele ser la sección más extensa.Solo el nivel 1: un diagrama (sirve un diagrama de contenedores de C4) y una frase por bloque.Nivel 1 para todo el sistema; niveles 2 y 3 solo para las partes complejas o arriesgadas.
6. Vista de tiempo de ejecuciónCómo cooperan los bloques de construcción en escenarios importantes: casos de uso clave, arranque, gestión de errores, failover.Uno o dos diagramas de secuencia para los flujos más importantes.Los escenarios críticos y los sorprendentes; nunca todos los casos de uso.
7. Vista de despliegueLa infraestructura técnica: entornos, nodos, redes y qué bloques de construcción se ejecutan en cada sitio.Un diagrama o una breve lista de servicios alojados.Diagramas por entorno y región, enlazados con la infraestructura como código que los define.
8. Conceptos transversalesConceptos que se aplican a muchos bloques de construcción: modelo de dominio, seguridad, gestión de errores, logging y observabilidad, persistencia, internacionalización, pruebas.Un párrafo breve para cada uno de los dos o tres conceptos que importan.Una página o más por concepto, a menudo a cargo de un equipo de plataforma o de un equipo facilitador.
9. Decisiones de arquitecturaLas decisiones importantes con sus razones, salvo que se registren en otro lugar.Un enlace a la carpeta de ADR.Un enlace a la bitácora de decisiones, quizá con las cinco o seis decisiones que todo recién llegado debe conocer.
10. Requisitos de calidadUn árbol de calidad (el árbol de utilidad del Capítulo 2) y escenarios de calidad concretos que refinan los objetivos de calidad de la sección 1.De tres a cinco escenarios.Un árbol de utilidad con escenarios priorizados, vinculados a funciones de aptitud.
11. Riesgos y deuda técnicaLos riesgos técnicos y la deuda conocidos, idealmente priorizados, con planes de mitigación.Una lista breve, revisada cada trimestre.Un enlace al registro de deuda, más los riesgos principales con sus responsables.
12. GlosarioLos términos importantes del dominio y técnicos, con definiciones que todos aceptan.Unos diez términos.Un glosario compartido, a veces por contexto delimitado.

Usar arc42 de forma ligera

La forma más común de fracasar con arc42 es tratarla como un formulario que hay que rellenar: se crean doce encabezados, cada uno se llena con algo, y el resultado es largo, genérico y nunca se lee. Las propias indicaciones de la plantilla apuntan en la dirección contraria. Las FAQ de arc42 dicen que no hay una regla general para el mínimo, porque depende de la criticidad, el tamaño, la complejidad y el riesgo, pero sugieren que incluso una descripción mínima debería contener de tres a cinco requisitos de calidad centrales en forma de escenarios, el contexto y las interfaces externas, una breve estrategia de solución, la vista de bloques de construcción de nivel 1 y los conceptos transversales más importantes.

Cuatro hábitos mantienen arc42 ligera. Elimina las secciones vacías o márcalas de forma deliberada (Despliegue: una única plataforma gestionada; ver el repositorio de infraestructura), para que el lector sepa que el hueco es intencionado. Enlaza en lugar de copiar: los requisitos viven en el backlog, las decisiones en la carpeta de ADR, el despliegue en la infraestructura como código; arc42 apunta a ellos. Prefiere diagramas con tablas breves de elementos a páginas de prosa. Escribe para las preguntas del próximo lector, no por exhaustividad: si nadie va a preguntar por el comportamiento en tiempo de ejecución de las pantallas de administración, no lo describas.

arc42 se combina bien con el modelo C4. Una combinación habitual es un diagrama de contexto del sistema de C4 en la sección 3, un diagrama de contenedores como nivel 1 de la vista de bloques de construcción en la sección 5, con diagramas de componentes como nivel 2, y un diagrama de despliegue de C4 en la sección 7. Si se mantienen como diagramas como código en el mismo repositorio que el texto de arc42, toda la descripción puede versionarse y revisarse como el código.

Ejemplo práctico: arc42-lite para la plataforma de reparto de comida

La página de abajo es una descripción arc42-lite completa de la plataforma de reparto de comida que se usa a lo largo de este capítulo. Cabe en una página impresa más el diagrama de contexto y, aun así, responde a las preguntas que haría primero un nuevo ingeniero, un responsable de operaciones o un auditor, y señala dónde está el detalle.

Sección 3: contexto de negocio

Contexto de negocio de la plataforma de reparto de comida: la usan clientes, personal de restaurantes y repartidores; depende de un proveedor de pagos, servicios push y un proveedor de mapaslímite de sistemaPlataforma derepartoClienteapp móvilRestauranteapp tabletaRepartid.app móvilpide y sigueaceptaentregaProveedor de pagospagos con tarj.Servicios pushAPNs, FCMProveedor mapasrutas, ETApagosnotificacionesconsulta rutas
El contexto de la plataforma: tres grupos de usuarios a la izquierda y tres servicios externos a la derecha, cada flecha etiquetada con lo que se intercambia; los canales y los protocolos pertenecen al contexto técnico.

Ejemplo práctico

Ejemplo práctico: una descripción arc42-lite de una página

Plataforma de reparto de comida, descripción de arquitectura, versión revisada el 2026-10-01 por el arquitecto principal. Las secciones que no aportarían nada se indican como tales en lugar de dejarse vacías.

1. ObjetivosPermitir a los clientes pedir en restaurantes locales y seguir la entrega en tiempo real. Objetivos de calidad por orden de prioridad: (1) ningún pedido se pierde ni se cobra dos veces; (2) p99 de la confirmación de pedidos por debajo de 1.5 s a 120 pedidos/s; (3) se puede añadir un nuevo consumidor de los datos de pedidos sin cambiar el servicio de pedidos. Partes interesadas: clientes, restaurantes, repartidores, operaciones, finanzas, el delegado de protección de datos, el proveedor de pagos.
2. RestriccionesLos datos de tarjeta nunca tocan nuestros sistemas (campos de tarjeta alojados por el proveedor de pagos, para limitar el alcance de PCI DSS). Los datos personales del Reino Unido y de la UE se quedan en regiones de la UE. Cinco squads; el código del lado del servidor, solo en Java, Go o TypeScript.
3. ContextoVer el diagrama de contexto. Interfaces externas: API REST y webhooks del proveedor de pagos; APNs y FCM para las notificaciones push; proveedor de mapas para rutas y ETA. Los responsables y los contratos de las interfaces se enumeran en docs/interfaces.md.
4. Estrategia de soluciónServicios separados para pedidos, despacho de repartidores y notificaciones (objetivo 3); eventos de pedido asíncronos a través de un intermediario gestionado con una bandeja de salida transaccional (objetivos 1 y 2, ADR-0012); PostgreSQL gestionado para los pedidos (objetivo 1, ADR-0007); claves de idempotencia en cada llamada de pago (objetivo 1).
5. Bloques de construcciónEl nivel 1 es el diagrama de contenedores de C4 en docs/diagrams/containers.dsl: tres apps cliente, API gateway, servicios de pedidos, de despacho de repartidores y de notificaciones, base de datos de pedidos y el topic de eventos de pedido en el intermediario gestionado. El nivel 2 solo existe para pedidos, el servicio más arriesgado.
6. EjecuciónDos escenarios: hacer y pagar un pedido (diagrama de secuencia) y timeout del proveedor de pagos (muestra el reintento con clave de idempotencia y el estado pendiente).
7. DespliegueUn proveedor de nube, dos regiones de la UE, Kubernetes gestionado y bases de datos gestionadas; definido en el repositorio de infraestructura, que es la fuente de verdad.
8. ConceptosModelo de dominio (estados del ciclo de vida del pedido); idempotencia y reintentos; observabilidad (ID de traza transportados en cada evento); tratamiento y conservación de los datos personales.
9. DecisionesVer la bitácora de decisiones en docs/decisions/. Registros de lectura obligada: ADR-0004, ADR-0007, ADR-0012.
10. CalidadEscenarios QS-1 a QS-5 en docs/quality.md, cada uno con una medida de la respuesta; QS-3 (latencia de confirmación) y QS-1 (ningún pedido perdido) tienen funciones de aptitud automatizadas.
11. Riesgos y deudaUn único proveedor del intermediario (dependencia del proveedor, aceptada en el ADR-0012); el despacho de repartidores todavía lee directamente la base de datos de pedidos (deuda, eliminación prevista para el T1); límites de tasa del proveedor de mapas en las horas pico (riesgo, responsable: squad de despacho).
12. GlosarioPedido, carrito, aceptación, recogida, entrega, despacho, ETA, bandeja de salida (outbox), clave de idempotencia: definidos en docs/glossary.md.

Cada sección está completada brevemente o apunta a una única fuente de verdad; no se copia nada, así que nada puede desincronizarse.

Los objetivos de calidad de la sección 1 impulsan la estrategia de la sección 4, que cita las decisiones de la sección 9: un lector puede trazar cada decisión importante hasta un objetivo.

Otras plantillas

La plantilla Views and Beyond del SEI. El Software Engineering Institute publica una plantilla de documentación que sigue Documenting Software Architectures: Views and Beyond, de Paul Clements y sus colegas. Su nivel superior tiene seis partes: una hoja de ruta y una visión general de la documentación, los antecedentes de la arquitectura, las vistas, la correspondencia entre vistas, los materiales de referencia y un glosario con siglas. Cada vista se documenta de la misma manera, con una presentación principal, un catálogo de elementos, un diagrama de contexto, una guía de variabilidad y la justificación (descritos en el recuadro "Para profundizar" de la Sección 4.2). Es más exhaustiva que arc42 y conviene a sistemas grandes, de larga vida o especificados por contrato, en los que cada vista debe estar completa y con referencias cruzadas; su correspondencia entre vistas es un punto fuerte que arc42 deja implícito.

IEEE 1016. IEEE Std 1016-2009, Software Design Descriptions, especifica el contenido y la organización de una descripción del diseño de software (SDD), el documento de diseño detallado que tradicionalmente se exige en defensa, en la industria aeroespacial y en otros proyectos regidos por contrato. Tomó de IEEE 1471 (el predecesor de 42010) los conceptos de parte interesada, inquietud, punto de vista y vista, y enumera puntos de vista de diseño como contexto, composición, lógico, dependencia, información, interfaz, interacción, dinámica de estados, algoritmo y recursos. IEEE la pasó al estado inactive-reserved (inactiva reservada) en 2020, pero todavía se cita en contratos y en la docencia, y programas más antiguos siguen entregando SDD con su forma. Está más cerca del diseño detallado que de la arquitectura.

Los documentos de diseño y los RFC, que usan muchas organizaciones de ingeniería, son otro tipo de plantilla: una propuesta para un cambio concreto en lugar de una descripción de todo un sistema. Se tratan dos secciones más adelante, en comunicar la arquitectura.

Conformidad con ISO/IEC/IEEE 42010

ISO/IEC/IEEE 42010:2022 establece requisitos para las descripciones de arquitectura y para los marcos de descripción de arquitectura (ADF): convenciones establecidas, como arc42 o el enfoque Views and Beyond, para producir descripciones en una comunidad determinada. No prescribe una plantilla, una notación ni un proceso. Una descripción es conforme cuando contiene la información que exige la norma, sea cual sea la plantilla que la organice.

En términos generales, eso significa identificar el sistema descrito y su entorno, identificar las partes interesadas y sus inquietudes, indicar qué puntos de vista se usan y qué inquietudes enmarca cada uno, proporcionar vistas que sigan esos puntos de vista, registrar las correspondencias (cómo se relacionan los elementos de distintas vistas) y registrar la justificación de las decisiones clave. arc42 no afirma ser conforme de serie, y las descripciones arc42 sin más a menudo carecen de un vínculo explícito entre cada inquietud y la vista que la aborda. Las carencias son pequeñas y fáciles de cubrir, como muestra la tabla. La mayoría de los equipos no necesitan una conformidad formal; los de sectores regulados o vinculados por contrato a veces sí, y es tranquilizador que una plantilla ligera pueda cumplir la norma con unos pocos añadidos.

Cómo hacer que una descripción arc42 sea conforme con 42010

Lo que pide 42010Dónde lo tiene arc42Qué añadir
Las partes interesadas y sus inquietudesTabla de partes interesadas de la sección 1.3; objetivos de calidad en 1.2 y 10Enumera las inquietudes de forma explícita por parte interesada, no solo las expectativas.
Puntos de vista, cada uno con las inquietudes concretas que enmarcaImplícitos en las secciones 3, 5, 6 y 7Una tabla breve que nombre cada punto de vista, las inquietudes que enmarca y su notación (por ejemplo, diagramas de contenedores de C4).
Vistas que siguen los puntos de vistaSecciones 3, 5, 6 y 7Nada, si cada vista indica qué punto de vista sigue.
Correspondencias entre vistasEn parte en la sección 7 (qué se ejecuta dónde)Tablas de correspondencia, por ejemplo, de bloque de construcción a nodo de despliegue, o de bloque de construcción a equipo responsable.
Justificación de las decisiones claveSecciones 4 y 9 (ADR)Vincula cada decisión con las inquietudes que aborda.

Comprueba lo que has entendido

¿Qué sección de arc42 suele convertirse en la más extensa y cómo evitas que crezca sin control?

La sección 5, la vista de bloques de construcción. Limita el nivel 1 a un diagrama que quepa en una pantalla y refina a los niveles 2 y 3 solo los bloques de construcción complejos o arriesgados.

¿Dónde aparecen los objetivos de calidad en arc42 y en qué se diferencian las secciones 1 y 10?

La sección 1 enumera los tres a cinco objetivos de calidad principales por orden de prioridad para orientar; la sección 10 los refina, junto con cualquier otra cualidad, en un árbol de calidad y escenarios concretos y comprobables.

Tu equipo ya guarda los ADR en el repositorio. ¿Qué debería contener la sección 9 de arc42?

Un enlace a la bitácora de decisiones, quizá con una breve lista de las decisiones que todo recién llegado debe leer, en lugar de una copia de los registros.

¿Usar arc42 hace que una descripción de arquitectura sea conforme con ISO/IEC/IEEE 42010?

No automáticamente. La conformidad depende del contenido: las partes interesadas, las inquietudes, los puntos de vista, las vistas, las correspondencias y la justificación deben ser explícitos, lo que normalmente requiere unos pocos añadidos pequeños a arc42.

Siguiente · 4.7Diagramas como códigoEscribir diagramas como texto con PlantUML, Mermaid, Structurizr DSL y D2, las herramientas de dibujo frente a las de modelado, la generación de la documentación en el pipeline y los hábitos que la mantienen fiel a la realidad.Continuar →

Fuentes y lecturas recomendadas

¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.

Pregunta: “Tenemos un documento de arquitectura de 60 páginas que nadie lee. ¿Cómo lo reestructuraría en una descripción arc42 ligera y qué podría eliminar sin riesgo?”