¿Cuál es la primera ley de la arquitectura del software?
Todo en arquitectura es una solución de compromiso
¿Cuál es la segunda ley de la arquitectura de software?
El por qué es más importante que el cómo
La mayoría de decisiones de la arquitectura del software vienen determinadas por
Los atributos de calidad o requisitos no funcionales
Las restricciones…
Es bueno conocerlas porque limitan alternativas a considerar
Los stakeholders…
Son personas interesadas en el proyecto
Un sistema greenfield…
Es un proyecto nuevo
¿Existe arquitectura de software ágil?
Sí, cuando la arquitectura puede reaccionar a cambios en el entorno
Etimológicamente, arquitecto viene de…
Creador jefe
La “building block view” de Arc42…
Puede contener varios diagramas de cajas negras y blancas combinadas
La mayoría de decisiones de arquitectura del software vienen determinadas por…
Los atributos de calidad o requisitos no funcionales
¿Quién dijo que los pilares de una buena arquitectura eran Utilidad, durabilidad y elegancia?
Vitruvio en 15 al 30 a. de C.
Big design Up-front
Es un problema al generar demasiados documentos o diagramas innecesarios
Los requisitos funcionales
Son una entrada que el arquitecto de software puede considerar
ISO-25010 contiene…
Una lista de posibles atributos de calidad
Una representación del sistema respecto a ciertas preocupaciones…
Es una vista
Es posible utilizar bocetos para documentar una vista?
Sí, pero se recomienda que se registren, aunque sea con una foto
Un ADL es un…
Lenguaje de descripción de arquitecturas
¿Cuál de las siguientes NO es una propuesta para la documentación de arquitecturas software?
Modelo 5+1 de Kruchten
Los sistemas brownfield…
Son proyectos que consisten en cambiar sistemas ya existentes
¿Cuántos diagramas de contexto se suelen incluír en Arc42?
Dos: el de negocio que es obligatorio y el técnico que es opcional
¿Cómo se definen los requisitos de calidad?
Mediante escenarios de calidad
En Arc42…
Las 3 primeras secciones describen el problema, las 8 siguientes la solución
La primera sección de Arc42…
Consta de repaso de requisitos, objetivos de calidad y stakeholders
La segunda sección de Arc42…
Describe las restricciones
La vista de despliegue en Arc42…
Contiene un mapeo de los bloques de construcción software e infraestructura
En Arc42…
Hay una sección específica para riesgos y deuda técnica
Un buen arquitecto de software intenta…
Mover cosas que no sabe que no sabe a cosas que sabe que no sabe
En general, un buen arquitecto de software tiene…
Más amplitud técnica que profundidad
Según Google, los 3 pilares de una buena interacción social son:
Humildad, confianza y respeto
El factor del autobús es…
Número de personas que si son atropelladas por un autobús, el proyecto fracasa
Un arquitecto de software efectivo debe encontrar un balance entre…
Friki de control y arquitecto de sillón
Según la ley de Conway, las organizaciones que diseñan sistemas…
producen diseños que son copias de las estructuras de estas organizaciones
La maniobra inversa de conway consiste en…
Evolucionar equipos para promover la arquitectura deseada
La pérdida por proceso es…
Diferencia entre potencial de grupo y productividad actual del equipo
Se produce ignorancia colectiva cuando
Todos están públicamente de acuerdo en algo pero privadamente no
La difusión de responsabilidad puede hacer que
Exista confusión sobre quién es responsable de qué
Las preocupaciones de los stakeholders
Pueden ser contradictorias
Los atributos de calidad
Cualifican la funcionalidad
Un taller de atributos de calidad
Es una reunión con stakeholders para identificar atributos de calidad
Una técnica para representar atributos de calidad es
Un diagrama MindMap
¿Cuál de las siguientes frases es correcta?
Muchos atributos de calidad tienen significados vagos
La calidad de un sistema es
El grado en que un sistema satisface unas necesidades
Un escenario de calidad define
Un estímulo y respuesta medible a dicho estímulo
Los escenarios de calidad pueden clasificarse en…
Escenarios de uso, de cambio o moficación y de fallo
Los escenarios de calidad deben…
Priorizarse de acuerdo a la importancia para el éxito y la dificultad
En ISO-25010, la calidad…
Se divide en 2 dimensiones: Calidad de producto y calidad en uso
MTBF y MTBR
Son tiempo medio entre fallos y tiempo medio de recuperación
La complejidad ciclomática de McCabe…
Es una métrica de la complejidad de un código
En arquitecturas del software evolutivas…
Puede definirse la función de encaje que mide atributos de calidad
Las métricas de software
Son medidas objetivas de ciertos aspectos de calidad
ATAM (Architecture Trade-off Analysis Method)
Es una técnica para evaluar arquitecturas usando atributos de calidad
CBAM (Cost Benefit Analysis Method)
Cuantifica costes y beneficios de estrategias arquitectónicas
Las tácticas en arquitectura del software…
Dependen del atributo de calidad
Se recomienda que los registros de decisiones arquitectónicas sean
Inmutables
ADD es una…
Metodología para crear una arquitectura basada en atributos de calidad
Algo malo que podría ocurrir pero que todavía no ha ocurrido es…
Un riesgo
Una deuda técnica…
Puede ser de varios tipos: código, diseño, implementación...
Para mitigar el deterioro arquitectónico puede utilizarse…
Código arquitectónicamente evidente
Una diferencia entre estilo y patrón arquitectónico es…
Que los estilos suelen ser independientes entre sí y los patrones no
COTS (Commercial Off The Self)
Se refiere a software comercial ya existente
BDD
Realiza pruebas de aceptación con historias de usuario
La recomendación FIRST se refiere a…
Que las pruebas sean Fast, Independent, Repeatable, Self-Checking y Timely
La integración continua
Automatiza la ejecución de las pruebas en entornos externos
La gestión de configuraciones de software
Permite observar la evolución del software
¿Cuál es la CCD en el esquema de módulos de la figura?
Nota: El CCD es la suma de dependencias de todos los componentes (cada componente depende de sí mismo)
8
¿Cuál es la CCD en el esquema de módulos de la figura?
13
¿Cuál de los siguientes es un sistema de control de versiones distribuido?
git
Utilizando versionado semántico, al pasar de la versión 1.2.3 a 1.3.0
Se espera una nueva funcionalidad compatible con la anterior
En git, el nombre del primer repositorio remoto que se clona es…
origin
¿Cuál es el comando que permite cambiar de una rama a otra en git?
checkout
¿Cuál de los siguientes NO es un sistema de automatización de la construcción?
groovy
Los ficheros de configuración usados en Maven…
Son ficheros XML
Las dependencias de paquetes en npm se declaran en…
Fichero package.json
La diferencia entre “npm install paquete” y “npm install -g paquete”
El primero instala dependencias en carpeta node_modules y el segundo lo hace de forma global
Integration hell se produce cuando…
Se espera mucho tiempo sin integrar código de diferentes desarrolladores
La inercia en el estilo Big ball of mud hace que…
Unos pocos desarrolladores "de prestigio" sepan mantener el sistema
¿Tiene algún atributo de calidad positivo el estilo big ball of mud?
Sí, el time-to-market y el bajo coste inicial
La S de SOLID indica que…
No debe haber más de un motivo para cambiar un módulo
El principio de Liskov indica que…
Los subtipos deben respetar el contrato de los supertipos
Según el principio de segregación de interfaces
Los clientes no deberían depender de métodos que no utilicen
Según el principio de inversión de dependencia
Los módulos de alto nivel no dependen de módulos de bajo nivel
Se recomienda…
Alta cohesividad y bajo acoplamiento
En la métrica LCOM
Cuanto menor sea, mejor, porque hay más cohesividad
Dada una clase como la de la figura, ¿cuál sería el valor de LCOM?
1
Según los principios de cohesividad de Robert Martin, REP se refiere a
Equivalencia entre unidad de reutilización y de release
Según los principios de cohesividad de Robert Martin, CCP se refiere a
Juntar en un módulo las unidades que cambian por la misma razón
Según diagrama de tensión de cohesividad de componentes, un fallo de CRP supone…
Demasiadas releases innecesarias
Según el principio de acoplamiento SDP de Robert Martin
Un componente debería depender de componentes más estables
Según el diagrama de módulos de la figura, la inestabilidad de B y C son…
==I(B)=0.5, I(C)=0==
Según la figura del principio de abstracciones estables, la zona de inutilidad
Son módulos abstractos e inestables
El conacimiento entre 2 elementos puede hacer que
Un cambio en uno obliga a un cambio en otro para mantener el sistema correcto
El principio de Robustez de Postel recomienda que
Un módulo sea liberal en lo que acepta y conservador en lo que envía
La ley de Demeter recomienda…
Que un módulo invoque elementos de módulos cercanos
La variante laxa del estilo de capas
Indica que la capa N puede acceder a elementos de las capas 1 a N -1
Un ejemplo de “crosscutting concern” es
Logging
En Domain Driven Design se pone gran énfasis en identificar
Un lenguaje ubicuo entre expertos de dominio y desarrolladores
Una restricción en Domain Driven Design es
Que los Objetos valor sean inmutables
¿Cuál de los siguientes estilos son similares?
Estilo hexagonal y arquitectura limpia
En la propuesta naked objects
La aplicación se genera automáticamente a partir de objetos de dominio
En el estilo hexagonal
La base de datos y frameworks está en el exterior
Una ventaja del estilo batch es
Bajo acoplamiento
En el estilo pipes and filters
Se admite la ejecución concurrente de hilos
Backpressure ocurre cuando
Los consumidores reciben más datos de los que pueden procesar
¿Cuál es una de las ventajas de pipes and filters con una interfaz uniforme?
Reconfigurabilidad
Uno de los beneficios de Master-slave es
Computación paralela
Una ventaja de MVC
Facilidad para crear nuevas vistas y controladores
En PAC
Se utiliza una jerarquía de agentes
¿Cuál puede ser un reto a resolver en el estilo Datos compartidos?
Punto de fallo único
En el estilo Blackboard se utilizan
Fuentes de conocimiento que resuelven parcialmente un problema
Una de las ventajas de los sistemas basados en reglas es
La utilización de conocimiento declarativo de expertos de dominio
Una restricción del estilo cliente-servidor es
Los clientes se comunican con el servidor, no al revés
En la variante cliente-servidor sin estado
Ante la misma petición se devuelve siempre la misma respuesta
En Event-driven architecture
Un evento es algo que ha sucedido
Publish-subscribe es una variante de
Modelos basados en eventos
Una ventaja de los modelos de actores es
Paralelismo
CQRS separa el interfaz en
Comandos que realizan acciones y consultas que leen datos
Event sourcing captura los cambios de estado mediante
Eventos inmutables
Una ventaja de Event sourcing es que
Si aparecen errores se puede reconstruir la Base de datos
Una ventaja de utilizar plugins es
La adaptación del sistema a recursos impredecibles en el futuro
Un problema del estilo Microkernel es
Punto de fallo único
Reflection permite
Realizar cambios al sistema sin detener la ejecución
¿Cuál de las siguientes NO es una ventaja de los DSLs?
Rendimiento
Código móvil
Es código que se transfiere de una máquina a otra para que lo ejecute
Habitualmente, código bajo demanda
Es código que se transmite del servidor al cliente
Los agentes móviles consisten en
Código y datos que se envía de una máquina a otra para su ejecución
¿Cuál de las siguientes NO es una falacia de la computación distribuida?
La invocación a un procedimiento remoto puede pasar parámetros
Hub and spoke
Es una topología de mensajería con un bróker central
Una consecuencia del patrón Bróker es
Separación de incumbencias
Una consecuencia de Peer-to-peer es
Evita el single point of failure
¿Cuál de las siguientes NO es una ventaja de SOA?
Seguridad
En WS-*
Se proponía UDDI como páginas amarillas para publicar servicios web
En REST, la operación DELETE
Es idempotente pero no segura
HATEOAS
Incluye URIs en respuestas con más opciones del estado de la aplicación
En las arquitecturas basadas en servicios
Existen varios frameworks disponibles para facilitar el time-to-market
En la propuesta de microservicios
Cada microservicio gestiona su propia base de datos
Un microservicio trabaja
Con un dominio acotado
El deterioro estructural de microservicios puede aparecer al utilizar
Demasiadas librerías compartidas entre microservicios
En la propuesta Serverless
Se persigue escalabilidad automática
¿Cuál de las siguientes NO es una ventaja de Serverless?
Vendor lock-in
Los tipos de la función map y reduce en MapReduce son: