Preguntas MDAS
|
|
Título del Test:
![]() Preguntas MDAS Descripción: Preguntas para examen tipo test de MDAS |



| Comentarios |
|---|
NO HAY REGISTROS |
|
¿Qué es la 'especialización' dentro del proceso de abstracción en el diseño software?. La separación de una abstracción en sus componentes. Un objeto derivado que define propiedades más precisas que el objeto base. La creación de instancias a partir de una clase. Un objeto de una clase que tiene un propósito dado. ¿En qué consiste el refinamiento sucesivo en el diseño software?. Añadir información redundante a los módulos. Combinar distintos módulos en uno más general. Descomposición descendente con jerarquía de detalles creciente que divide los problemas grandes en pequeños. Ocultar la información interna de los módulos al resto del sistema. ¿Qué establece la ocultación de la información como principio de diseño?. Que toda la información de un módulo debe ser accesible por el resto. Que es una decisión de diseño establecer qué información dentro de un módulo se oculta al resto. Que los módulos deben compartir la máxima cantidad de datos posible. Que la información solo debe ocultarse en los módulos de infraestructura. ¿Qué característica define a un módulo en el contexto de la modularidad?. Debe ser complejo, con múltiples responsabilidades y alto acoplamiento. Es cualquier parte autónoma, simple, auto-contenida y cohesionada por un sistema mayor. Debe comunicarse con todos los demás módulos del sistema. Es un componente que solo puede usarse en un único contexto. Respecto a la comunicación entre módulos, ¿cuál es la recomendación correcta?. Deben intercambiar la mayor cantidad de información posible para ser más eficientes. Todos los módulos deben estar interconectados entre sí. Se debe restringir el número de canales de comunicación y los módulos deben intercambiar la menor información posible. Cada módulo debe exponer todas sus propiedades como información pública. ¿Cuál es la diferencia entre un patrón de diseño y un patrón arquitectónico?. Los patrones de diseño se aplican a problemas recurrentes del diseño software, mientras que los patrones arquitectónicos son conjuntos de decisiones aplicables a problemas recurrentes que son parametrizables. Los patrones de diseño son código acabado, mientras que los patrones arquitectónicos son plantillas. No existe diferencia entre ellos, son el mismo concepto. Los patrones arquitectónicos solo se aplican a hardware. ¿Qué es un estilo arquitectónico?. Un conjunto de decisiones arquitectónicas aplicables a un contexto de desarrollo que restringen las decisiones de diseño específicas. El código fuente que implementa la arquitectura del sistema. Un diagrama de bloques que representa los componentes del sistema. Una interfaz que define los servicios que ofrece un componente. Según la definición de Garlan y Perry (1995), ¿qué es la arquitectura software?. La descripción de los elementos para construir sistemas y sus interacciones. La estructura de los componentes de un programa o sistema, sus interrelaciones y los principios y reglas que gobiernan su diseño y evolución. La estructura o estructuras de un sistema incluyendo sus propiedades observables. El diseño de más alto nivel de la estructura de un sistema. ¿Qué es un 'componente' en el contexto de la arquitectura software?. Un mecanismo abstracto que media en la comunicación entre módulos. Un documento que describe los requisitos del sistema. Una unidad abstracta que encapsula un estado y una funcionalidad, que interactúa a través de interfaces. Una herramienta de gestión de proyectos software. ¿Qué es un 'conector' en arquitectura software?. Una unidad abstracta que encapsula funcionalidad. Un mecanismo abstracto que media en la comunicación, coordinación o cooperación entre componentes. Una interfaz que define los servicios de un componente. Un subsistema que implementa lógica de negocio. ¿Cuál de los siguientes NO es un objetivo de la arquitectura software?. Identificar los principales módulos. Identificar funcionalidades y responsabilidades de cada módulo. Implementar directamente el código de cada componente. Definir interacciones entre módulos. Según Bosch, si la seguridad es crítica en un sistema, ¿cómo debería diseñarse la arquitectura?. Con componentes redundantes para ser reemplazados sin detener el sistema. Con componentes independientes de grado fino de fácil modificación. De modo que las operaciones de seguridad se concentren en un único subsistema. Con poca comunicación entre los subsistemas usando componentes de grano grueso. Según Bosch, si el rendimiento es crítico, ¿qué tipo de componentes deberían predominar?. Componentes de grano fino con alta comunicación entre subsistemas. Componentes de grano grueso con poca comunicación entre subsistemas. Componentes redundantes y distribuidos. Componentes organizados en capas con protocolos estrictos. ¿Son útiles los diagramas de bloques para el diseñador software?. Sí, porque representan con detalle las relaciones entre componentes. No, porque no representan relaciones entre los componentes ni las propiedades visibles de los componentes. Sí, porque permiten implementar directamente el código. No, porque son demasiado complejos para entenderlos. ¿Qué vista arquitectónica describe los nodos en los que se ejecutan los componentes?. Vista de componentes y conectores. Vista de módulos. Vista de despliegue. Vista de proceso. ¿Cuál de los siguientes dominios de derivación de componentes tiene conexión con el modelo de negocio?. Dominio de infraestructura. Dominio de interfaz. Dominio de aplicación. Dominio de control. ¿Qué papel juega un 'componente de control' en la arquitectura?. Implementa una función completa o parcial requerida por el cliente. Es responsable de funciones que soportan el procesamiento en el dominio del problema. Coordina la invocación de los demás componentes. Procesa datos obtenidos a partir del contexto del sistema. En el ATAM (Architecture Trade-Off Analysis Method), ¿cuál es el primer paso?. Evaluar atributos de calidad de forma aislada. Describir los patrones y estilos. Recopilar escenarios. Criticar arquitecturas candidatas. ¿Qué porcentaje aproximado del esfuerzo de un desarrollo suele ir destinado a infraestructura que no ofrece valor directo, según el paradigma CBSE?. 10%. 50%. 30%. 70%. ¿Cuál es la mayor preocupación de la orientación a objetos según el paradigma CBSE?. La reutilización de componentes en distintos contextos. La representación adecuada del dominio. El despliegue independiente de módulos. La composición de unidades independientes. Según la definición de Clemens Szyperski, ¿qué es un componente software?. Un objeto reutilizable con herencia múltiple. Una unidad de composición con una interfaz especificada contractualmente y únicamente con dependencias contextuales explícitas. Un módulo que implementa toda la lógica de negocio de un sistema. Una clase que puede instanciarse en distintos contextos sin modificación. ¿Qué permite que un componente software sea reutilizable en distintos contextos?. Que esté acoplado fuertemente con otros módulos del sistema. Que dependa exclusivamente de una plataforma concreta. Que pueda ser desplegado independientemente y esté sujeto a criterios de composición con terceros. Que implemente directamente la base de datos del sistema. ¿Qué es un 'wrapper' en el contexto de la reutilización de componentes?. Un nuevo componente desarrollado desde cero para reemplazar al anterior. Un adaptador que permite reutilizar un componente cuando no es posible usarlo directamente. Un tipo de interfaz que expone todos los métodos internos de un componente. Una herramienta de despliegue de componentes en entornos distribuidos. En el modelo de Cheesman & Daniels, ¿qué representa la 'Component Specification'?. El código escrito en algún lenguaje de programación. Los nombres y parámetros de los procedimientos. Lo que hace el componente. La librería de objetos compartidos. ¿En cuántas fases se divide el proceso de desarrollo de Cheesman y Daniels?. Dos: identificación e interacción. Cuatro: concepción, elaboración, construcción y transición. Tres fases: identificación, interacción y especificación de componentes. Cinco: análisis, diseño, implementación, prueba y entrega. ¿Cuántas fases tiene el proceso RUP (Rational Unified Process)?. Tres: análisis, diseño e implementación. Cuatro: concepción, elaboración, construcción y transición. Cinco: iniciación, planificación, ejecución, control y cierre. Dos: desarrollo y producción. ¿Cuál es el resultado del proceso de 'abastecimiento' en CBSE?. La especificación formal de los componentes del sistema. La aplicación funcionando tras el aprovisionamiento y ensamblado. El documento de arquitectura del sistema. El conjunto de casos de prueba de integración. ¿Qué es el 'ensamblado' en el proceso CBSE?. La fase de búsqueda y adquisición de componentes desarrollados por terceros. El proceso por el que los componentes se integran entre sí con otros elementos software en un sistema en funcionamiento. La etapa de pruebas unitarias de cada componente. El suministro de la implementación de los componentes. En la realización de componentes, ¿qué relación existe entre una interfaz y un tipo de interfaz?. Herencia: la interfaz hereda del tipo de interfaz. Realización: la interfaz realiza un tipo de interfaz. Composición: el tipo de interfaz contiene a la interfaz. Dependencia: el tipo de interfaz depende de la interfaz. ¿Para qué se utiliza el lenguaje OCL en UML Components?. Para generar código automáticamente a partir de los diagramas. Para escribir restricciones sobre los componentes. Para modelar la arquitectura de datos del sistema. Para definir los casos de uso del sistema. ¿Qué patrón de diseño se utiliza habitualmente para la creación de objetos en las plataformas de componentes?. Patrón Singleton. Patrón Observador. Patrón Factoría. Patrón Estrategia. ¿Qué es el 'gap análisis' en el contexto de la compra de componentes?. El análisis de las capas de la arquitectura del sistema. La diferencia entre lo que se busca y lo que el componente comercial ofrece. El estudio de las dependencias entre los componentes del sistema. El análisis de la comunicación entre los subsistemas. ¿Qué significa 'rigidez' como síntoma de pudrición del software?. La incapacidad de reutilizar el software en otros proyectos. La tendencia del software a romperse en muchas partes con un único cambio. La tendencia del software a requerir muchos cambios en módulos dependientes ante un simple cambio. La dificultad para preservar el diseño frente a la vía rápida. ¿Qué es la 'fragilidad' en el contexto de la pudrición del software?. La tendencia a romperse en muchas partes cuando hay un único cambio, incluso en áreas no relacionadas. La incapacidad de reutilizar el software por muchas dependencias. La dificultad de cambiar el software por muchos módulos afectados. La tendencia a generar deuda técnica al añadir líneas de código. ¿Cuál es la causa principal de la pudrición del software?. El uso de lenguajes de programación no estándar. Una inapropiada gestión de dependencias entre los módulos o el cambio en los requisitos del diseño inicial. La falta de documentación técnica del proyecto. El exceso de pruebas automatizadas en el sistema. ¿Cuál de las siguientes NO es una forma de prevenir la pudrición del software?. Refactorización del código. Aplicar principios de diseño y buenas prácticas. Aumentar el número de líneas de código por función. Revisión de código periódica. ¿Qué es el 'código limpio'?. El código sin comentarios y con nombres de variables cortos. El código que se puede entender con facilidad por todo el equipo y que es legible y mejorable por un desarrollador distinto al original. El código que no utiliza estructuras condicionales complejas. El código generado automáticamente por herramientas CASE. ¿Qué establece la regla del 'Boy Scout' en el desarrollo de código limpio?. Que siempre debes añadir nuevas líneas de código al editar. Que cuando editas código, no solo añadas líneas, sino que chequees, refactorices y elimines code smells. Que el código debe seguir estrictamente los estándares de codificación. Que cada función debe ser implementada por un único desarrollador. ¿Qué característica deben tener los nombres de las clases y objetos según las reglas de nombres del código limpio?. Deben ser verbos o frases verbales. Deben ser abreviaturas descriptivas. Deben ser sustantivos o frases nominales. Deben incluir prefijos que indiquen su tipo. Respecto a los comentarios en el código limpio, ¿cuál es la recomendación principal?. Siempre añadir comentarios al cierre de los bloques para mejorar la legibilidad. Siempre explicar en el propio código; el mejor comentario es el propio código. Comentar todo el código desactualizado antes de eliminarlo. Añadir comentarios redundantes para asegurar la comprensión. Según las reglas de estructura del código fuente, ¿cuál es el orden correcto de los elementos en una clase?. Métodos públicos, variables de instancia, métodos privados, métodos protegidos. Variables de instancia, métodos públicos, métodos protegidos, métodos privados. Métodos privados, métodos protegidos, métodos públicos, variables de instancia. Variables de instancia, métodos privados, métodos protegidos, métodos públicos. ¿Qué establece la Ley de Demeter (LoD)?. Una clase debe conocer todas las dependencias del sistema. Una clase solo debería conocer sus dependencias directas y cada unidad solo debería hablar a sus amigos. Un módulo debe depender de las implementaciones concretas, no de las abstracciones. Los módulos deben compartir el mayor número de interfaces posible. ¿Cuál es el número ideal de parámetros en una función según las reglas de funciones del código limpio?. 3 parámetros. 5 parámetros. 0 parámetros. 2 parámetros. ¿Por qué se prefiere el polimorfismo frente al uso de if/else o switch/case según los principios de diseño?. Porque el polimorfismo genera código más corto. Porque el switch/case, por definición, rompe el principio de responsabilidad única al manejar N casos. Porque el polimorfismo es más eficiente en tiempo de ejecución. Porque el if/else no puede implementarse en lenguajes orientados a objetos. ¿Qué es la inyección de dependencias (DI)?. Un patrón en el que una clase construye directamente todos sus objetos dependientes. Un patrón en el que una clase contenedora suministra ('inyecta') objetos ('servicio') a una clase ('cliente'). Una técnica para eliminar todas las dependencias de un sistema. Un mecanismo para detectar errores en tiempo de compilación. ¿Cuál de las siguientes NO es una forma de inyección de dependencias?. Inyección de constructor. Inyección en setter. Inyección de interfaz. Inyección de herencia. ¿Cuál es el enunciado del principio SRP (Single Responsibility Principle)?. Las entidades software deben estar abiertas para su extensión y cerradas para su modificación. Los objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el funcionamiento. Una clase/objeto/módulo debe tener una única responsabilidad y solo los cambios en su especificación deben afectarle. Se debe depender de abstracciones, no de concreciones. ¿Qué establece el principio OCP (Open-Closed Principle)?. Las clases deben tener una única responsabilidad. Los objetos deben ser reemplazables por instancias de sus subtipos. Las entidades software deben estar abiertas para su extensión y cerradas para su modificación. Los módulos de mayor nivel no deben depender de módulos de bajo nivel. ¿Cómo se puede implementar el principio OCP (Open-Closed Principle)?. Modificando el código fuente existente en cada nueva funcionalidad. Mediante el uso de herencia o de interfaces abstractas. Eliminando todas las interfaces del sistema. Haciendo que todas las clases sean finales y no extensibles. ¿Qué establece el principio LSP (Liskov Substitution Principle)?. Muchas interfaces específicas son mejores que una interfaz general. Las entidades software deben estar cerradas para su modificación. Los objetos de un programa deberían ser reemplazables por instancias de sus subtipos sin alterar el correcto funcionamiento. Se debe depender de abstracciones, no de concreciones. ¿Qué implica una violación del principio LSP?. Que una clase tiene más de una responsabilidad. Que un subtipo de un supertipo hace algo no esperado por el cliente del supertipo. Que una interfaz agrupa demasiada funcionalidad no relacionada. Que un módulo depende de una implementación concreta en lugar de una abstracción. ¿Cuál es el fundamento del principio ISP (Interface Segregation Principle)?. Usar una única interfaz general para toda la funcionalidad del sistema. Muchas interfaces específicas son mejores que una interfaz general, evitando que una clase implemente interfaces no deseadas. Las interfaces deben ser lo más genéricas posibles para maximizar su reutilización. Una clase solo puede implementar una única interfaz. ¿Qué establece el principio DIP (Dependency Inversion Principle)?. Las clases de bajo nivel deben controlar las de alto nivel. Se debe depender de abstracciones, no de concreciones, y los módulos de mayor nivel no deben depender de los de bajo nivel. Las dependencias deben ser siempre bidireccionales. Los módulos de bajo nivel deben conocer los de alto nivel. ¿Qué es un 'code smell' según Kent Beck?. Un error de compilación en el código fuente. Un indicativo superficial que se corresponde con un problema de fondo en el sistema. Un comentario redundante en el código. Una variable con un nombre poco descriptivo. ¿En qué contexto se desarrollaron originalmente los principios SOLID?. Aplicados originalmente a sistemas orientados a objetos, posteriormente adoptados en metodologías ágiles. Fueron desarrollados para sistemas distribuidos y arquitecturas de microservicios. Se crearon específicamente para el desarrollo de bases de datos relacionales. Fueron diseñados para el desarrollo de sistemas embebidos. ¿Qué es un estilo arquitectónico y qué contiene su definición?. Un conjunto de componentes, conectores, restricciones y modelos semánticos. Solo un conjunto de componentes y sus interfaces. Una lista de patrones de diseño aplicables al sistema. Un documento de arquitectura con diagramas UML. ¿Cuándo se aplica la arquitectura de flujo de datos?. Cuando los datos de entrada son transformados mediante componentes manipulativos en datos de salida. Cuando el sistema necesita un repositorio central compartido por todos los subsistemas. Cuando los componentes son procesos independientes que operan en paralelo. Cuando el sistema se organiza en capas que prestan servicios a las superiores. En el modelo de tuberías y filtros, ¿qué función tiene un 'filtro'?. Transmite los datos entre los distintos componentes del sistema. Recibe datos de entrada, los transforma en datos de salida y es independiente. Coordina la invocación de los demás componentes del pipeline. Almacena los datos de forma temporal durante el procesamiento. ¿Cuál es una desventaja del modelo de tuberías y filtros?. Los filtros no pueden colocarse en paralelo. Dificulta la modularidad y extensibilidad del sistema. Fuerza a un procesamiento lineal de los datos, no apto para muchos sistemas interactivos. Los filtros no son reutilizables entre distintas aplicaciones. ¿Qué caracteriza a las arquitecturas centradas en datos?. La comunicación entre componentes es siempre directa y punto a punto. Los datos compartidos se ubican en un repositorio central y la comunicación nunca es directa. Cada componente mantiene su propia copia de los datos. Los datos solo pueden ser accedidos por el componente que los crea. ¿Qué diferencia al modelo centrado en pizarra del modelo centrado en repositorio?. El modelo centrado en repositorio notifica a los componentes cuando cambian los datos, mientras que la pizarra es pasiva. El repositorio activo (pizarra) notifica a los componentes cuando cambian los datos, mientras que el repositorio pasivo actúa como almacén. En el modelo de pizarra los componentes acceden directamente entre sí. No hay diferencia, ambos modelos funcionan de manera idéntica. ¿Cuáles son los tres tipos de componentes del modelo centrado en pizarra?. Clientes, servidores y middleware. Filtros, tuberías y repositorios. Fuentes de conocimiento, pizarra y módulo de control. Componentes de control, dominio e infraestructura. ¿Cuál es una ventaja de las arquitecturas centradas en datos?. Facilita la distribución del repositorio en varias máquinas. Cada subsistema puede utilizar su propio modelo de datos independiente. Compartición eficiente de grandes cantidades de datos e independencia entre subsistemas. Genera un bajo volumen de información y es fácil hacer evolucionar el sistema. ¿Cómo se caracteriza la arquitectura en capas?. Cada capa se comunica directamente con todas las demás. Modela la interacción entre los subsistemas organizándolos en capas donde cada una presta servicios a la superior y actúa como cliente de la inferior. Los componentes son procesos independientes sin jerarquía definida. La comunicación entre capas siempre se realiza a través de un repositorio central. ¿Cuál es una desventaja de la arquitectura en capas?. No es cambiable ni portable entre plataformas. Las capas no pueden ser reemplazadas individualmente. Es difícil de estructurar y el rendimiento puede verse afectado. No permite la reutilización de las capas internas. ¿Cuáles son los componentes principales del modelo cliente-servidor?. Filtros, tuberías y repositorios. Conjunto de servidores, conjunto de clientes y una red. Pizarra, fuentes de conocimiento y módulo de control. Capas de presentación, lógica y datos. ¿Cómo funciona la comunicación en el modelo cliente-servidor?. Los clientes y servidores se comunican directamente sin red. Un cliente realiza una petición y espera hasta recibir la respuesta (petición-respuesta). Los servidores inician la comunicación enviando datos a los clientes. La comunicación es siempre asíncrona y no bloqueante. ¿Qué elimina la arquitectura de objetos distribuidos respecto al modelo cliente-servidor?. La necesidad de una red de comunicaciones. El uso de interfaces en los componentes. La distinción entre cliente y servidor, considerando el sistema como un conjunto de objetos distribuidos. La necesidad de middleware para la comunicación. ¿Qué papel desempeña el middleware en la arquitectura de objetos distribuidos?. Almacena los datos del sistema de forma centralizada. Actúa como 'bus de software' que permite la comunicación de objetos en el sistema. Implementa la lógica de negocio del sistema. Gestiona las interfaces de usuario de los clientes. ¿Cuál es una característica clave de las arquitecturas peer-to-peer (P2P)?. Son centralizadas y distinguen claramente entre clientes y servidores. Son descentralizadas y los cálculos se pueden realizar en cualquier nodo sin distinguir entre clientes y servidores. Requieren de un servidor central para todas las comunicaciones. Son adecuadas solo para sistemas con baja carga computacional. En las arquitecturas P2P descentralizadas, ¿qué función tienen los nodos?. Actúan como servidores centrales para facilitar las comunicaciones. Solo almacenan datos sin participar en el enrutamiento. Son interruptores de comunicaciones, encaminando datos y señales de control. Solo pueden conectarse a un nodo-puente predefinido. ¿Cuál es la diferencia entre arquitecturas P2P descentralizadas y semicentralizadas?. En la descentralizada hay un servidor central, mientras que en la semicentralizada no. En la semicentralizada uno o varios nodos actúan como servidores para facilitar las comunicaciones entre los demás nodos. En la descentralizada los nodos deben estar siempre conectados, mientras que en la semicentralizada pueden desconectarse. No hay diferencia práctica entre ambas arquitecturas. ¿Qué es una Arquitectura Orientada a Servicios (SOA)?. Una arquitectura en la que todos los componentes se comunican directamente sin intermediarios. Una colección de servicios que se intercomunican, siendo los Servicios Web la tecnología de conexión más utilizada. Un conjunto de objetos distribuidos que comparten un único repositorio de datos. Una arquitectura exclusivamente basada en el patrón cliente-servidor. ¿Qué es un servicio en el contexto de SOA?. Un módulo que depende del contexto y estado de otros servicios. Una función bien definida, auto-contenida y que no depende del contexto o estado de otros servicios. Una base de datos compartida por todos los componentes del sistema. Un componente que solo puede ser utilizado dentro de la misma organización. ¿Cuál de los siguientes estándares NO está asociado a SOA y los servicios web?. SOAP. WSDL. UDDI. OSGi. ¿Qué es un sistema 'localmente heterogéneo' en términos de arquitectura?. Un sistema que sigue un determinado estilo pero que en determinadas partes presenta patrones de otros estilos. Un sistema donde la arquitectura interna de cada componente sigue estilos distintos. Un sistema donde varios estilos se aplican simultáneamente para describir su arquitectura. Un sistema que combina hardware de distintos fabricantes. ¿Cuántas capas tiene la arquitectura C/S de tres capas y cuáles son?. Dos capas: presentación y datos. Cuatro capas: presentación, negocio, datos y seguridad. Tres capas: presentación, lógica de la aplicación y administración de datos. Tres capas: cliente, servidor y middleware. ¿Para qué tipo de aplicaciones es más adecuada la arquitectura C/S de dos capas con clientes gruesos?. Para aplicaciones de gran escala donde los datos son volátiles. Para aplicaciones con procesamiento de datos intenso y funcionalidades estables. Para sistemas heredados donde no es práctico separar la lógica de app y los datos. Para aplicaciones con poca administración de datos pero computacionalmente intensas. ¿Cuándo se recomienda usar una arquitectura C/S de tres capas o n-capas?. Para aplicaciones con poca carga de usuarios y datos estables. Para sistemas pequeños con funcionalidades muy concretas. Para aplicaciones de gran escala, donde los datos son volátiles o se integran datos de diversas fuentes. Para sistemas heredados con lógica de app acoplada a los datos. ¿Cuál es el propósito del patrón Adapter?. Agrupar objetos individuales y compuestos para acceder a su funcionalidad de manera uniforme. Reducir la diversidad de opciones de un conjunto de clases complejo. Permitir que un cliente utilice un servicio a través de una interfaz cuando el método implementado tiene una signatura diferente. Abstraer operaciones a partir de métodos concretos de varias clases similares. ¿Cuándo se aplica el patrón Facade?. Cuando se necesita adaptar una interfaz existente a otra diferente. Cuando se quiere reducir la diversidad de opciones en un conjunto de clases complejo, proporcionando las opciones más habituales. Cuando se necesita combinar objetos individuales y agrupados de forma uniforme. Cuando se detecta la existencia de varias clases con métodos similares sin jerarquía. ¿Cuál es el propósito del patrón Composite?. Adaptar la interfaz de una clase a la que el cliente espera. Proporcionar una interfaz simplificada a un conjunto complejo de clases. Permitir agrupar objetos individuales y compuestos para acceder a su funcionalidad de manera uniforme. Abstraer las operaciones comunes de varias clases independientes. ¿Cuándo se aplica el patrón Bridge?. Cuando se necesita una interfaz simplificada para un conjunto de clases. Cuando se detecta la existencia de varias clases con métodos similares sin jerarquía entre ellas, y no se pueden modificar. Cuando un cliente necesita usar un servicio con una signatura diferente a la esperada. Cuando se quiere agrupar objetos individuales y compuestos de forma uniforme. ¿Qué es la 'instanciación' dentro del proceso de abstracción en el diseño software?. La separación de una abstracción en sus componentes. La creación de instancias a partir de una clase. Un objeto derivado que define propiedades más precisas. Un objeto de una clase que tiene un propósito dado. ¿Qué es un 'marco arquitectónico de empresa'?. Un conjunto de componentes y conectores específicos para el dominio empresarial. Un marco en el que se define cómo organizar la estructura, vistas y objetos asociados a una arquitectura de empresa. Ejemplo: Zachman. Un estilo arquitectónico aplicado exclusivamente a sistemas de información empresariales. Un modelo de datos para la gestión de la información corporativa. ¿Cuál de los siguientes es un ejemplo de estándar de entorno de componentes?. UML y OCL. SOAP y WSDL. CORBA de OMG, JavaBeans de Oracle y COM de Microsoft. Git y Maven. ¿Qué es la 'computación grid'?. Una arquitectura P2P semicentralizada con nodos-puente. Una tecnología para compartir recursos entre grandes redes distribuidas de forma controlada. Un tipo de middleware para la comunicación de objetos distribuidos. Un modelo de servicios web basado en SOAP y WSDL. ¿Qué significa que la arquitectura software tiene un 'impacto en el proceso de ingeniería del software posterior'?. Que determina qué lenguaje de programación debe usarse. Que sus decisiones de diseño condicionan el desarrollo, mantenimiento y evolución del sistema. Que genera automáticamente el código de implementación del sistema. Que define los casos de prueba del sistema. ¿Qué implica la 'inmovilidad' como síntoma de pudrición del software?. Que el software necesita muchos cambios ante modificaciones simples. Que el software se rompe en muchas partes con un único cambio. La incapacidad de reutilizar el software en otros proyectos por sus muchas dependencias y mala modularidad. La dificultad de preservar el diseño frente a los cambios. ¿Qué tipo de 'viscosidad' ocurre cuando el entorno de desarrollo es lento e ineficiente?. Viscosidad de diseño. Viscosidad de entorno. Viscosidad de módulo. Viscosidad estructural. ¿Qué son los 'parámetros de bandera' (flag arguments) y por qué deben evitarse?. Son parámetros que devuelven múltiples valores; se evitan porque complican la firma de la función. Son argumentos que indican a la función de qué manera tiene que proceder; se evitan porque hacen que la función haga más de una cosa. Son constantes que reemplazan a los números mágicos; se evitan por ser redundantes. Son parámetros de entrada y salida simultáneamente; se evitan por ser confusos. ¿Qué es un DTO (Data Transfer Object)?. Una clase con lógica de negocio compleja y variables privadas. Una clase con variables accesibles y sin operaciones. Un patrón de diseño para la creación de objetos complejos. Un mecanismo de transferencia de datos entre capas a través de interfaces. Según las reglas de funciones del código limpio, ¿cuál es la longitud recomendada de una función?. Unas 100 líneas de largo. Unas 50 líneas de largo. Unas 20 líneas de largo. Sin límite, siempre que esté bien documentada. ¿Por qué se prefiere el uso de excepciones a la devolución de códigos de error en el código limpio?. Porque las excepciones son más eficientes en tiempo de ejecución. Porque permiten separar el código de manejo de errores del flujo normal de la lógica. Porque los códigos de error no pueden ser capturados en bloques try-catch. Porque las excepciones son más fáciles de documentar. ¿Qué propiedad deben tener los 'value objects' (objetos de valor) para evitar errores de solapamiento (aliasing bugs)?. Deben ser mutables para poder actualizarse fácilmente. Deben ser inmutables. Deben implementar múltiples interfaces. Deben ser accesibles por todos los módulos del sistema. ¿Qué significa 'Keep it simple stupid' (KISS) en el desarrollo de código limpio?. Que el código debe ser tan simple que cualquier usuario pueda entenderlo. Que se debe reducir la complejidad tanto como sea posible. Que el código debe tener el mínimo número de líneas posible. Que se deben evitar todos los patrones de diseño. ¿Qué afirma la definición de Clements y Kazman (2003) sobre la arquitectura software?. Es la estructura de los componentes de un programa y los principios que gobiernan su evolución. Es la descripción de los elementos para construir sistemas y sus interacciones. Es la estructura o estructuras de un sistema, incluyendo sus componentes software, propiedades observables y relaciones entre ellos. Es el diseño de más alto nivel de la estructura de un sistema. ¿Cuál es la diferencia entre la 'arquitectura global de un sistema' y la 'arquitectura software'?. Son conceptos equivalentes sin diferencias. La arquitectura global describe la organización del sistema incluyendo relaciones con el entorno y principios de evolución, es más abstracta y conceptual. La arquitectura global solo contempla el hardware del sistema. La arquitectura software es más abstracta que la arquitectura global. ¿Qué es la 'arquitectura de empresa'?. El conjunto de servidores y clientes que forman la infraestructura TI de una empresa. Proceso de traducir una visión y estrategia de negocio en cambios efectivos mediante la creación, comunicación y mejora de requisitos, principios y modelos. El estilo arquitectónico que utilizan las grandes corporaciones para sus sistemas. El conjunto de componentes hardware y software de una organización. ¿De qué depende el estilo y la estructura de una arquitectura software según el diseño arquitectónico?. Del lenguaje de programación elegido para el proyecto. Del número de desarrolladores en el equipo. De los requerimientos no funcionales del sistema. Del presupuesto disponible para el proyecto. ¿Qué son los 'sistemas pares' en el contexto del análisis de diseño arquitectónico?. Sistemas que completan alguna funcionalidad del sistema destino. Sistemas de los que el sistema destino es parte de un nivel más elevado. Sistemas que interactúan de igual a igual con el sistema destino. Entidades que interactúan con el sistema destino. En el contexto de CBSE, ¿qué porcentaje aproximado de proyectos debe tratar con el problema del software ya existente (legacy systems)?. 50%. 80%. 30%. 60%. ¿Cuáles son las formas de integrar sistemas legacy (ya existentes) según CBSE?. Sustitución completa y migración parcial. Invasiva (reingeniería) y no invasiva (wrappers, patrones de diseño, integración de apps). Refactorización y redespliegue. Encapsulación y modularización. ¿Qué establece el principio ISP sobre la arquitectura basada en capas?. La arquitectura en capas viola el principio ISP por obligar a interfaces generales. El principio ISP es el fundamento de la arquitectura basada en capas. El principio ISP solo aplica a microservicios, no a arquitecturas en capas. La arquitectura en capas impide la aplicación del principio ISP. Según las reglas de comprensibilidad del código limpio, ¿qué significa 'encapsular las condiciones frontera'?. Evitar el uso de condiciones en los bucles. Usar condicionales siempre en positivo. Escribir el procesamiento de las condiciones frontera en un solo sitio. Eliminar todas las condiciones del código. ¿Qué es la 'descomposición funcional' en el contexto de la modularidad?. La creación de instancias de clases abstractas. La ocultación de la información interna de los módulos. Dividir los sistemas en subsistemas hasta que sean manejables como unidades individuales. La comunicación directa entre todos los módulos del sistema. ¿Qué ventaja principal ofrece la arquitectura de objetos distribuidos respecto a los modelos C/S clásicos?. Es más sencilla de diseñar y tiene estándares universales. Puede retrasar las decisiones sobre el suministro de servicios, es abierta, flexible y escalable. Elimina la necesidad de planificar la escalabilidad. Garantiza la seguridad de todas las comunicaciones entre objetos. ¿Cuál de las siguientes afirmaciones sobre el principio LSP es correcta?. Una subclase puede imponer más restricciones que la superclase. Una subclase debería aceptar los mismos valores de parámetros de entrada que la superclase. El principio LSP no se aplica a jerarquías de herencia. Una subclase puede devolver valores de retorno que incumplan las reglas de la superclase. ¿Por qué es desaconsejable el uso de notaciones no estándar (como subrayados) en el código?. Porque aumentan la velocidad de compilación del código. Porque las convenciones estándares favorecen la legibilidad y comprensión por todo el equipo. Porque son más difíciles de procesar por los compiladores. Porque generan errores en las herramientas de control de versiones. ¿Qué diferencia hay entre la fase de 'aprovisionamiento' y la de 'ensamblado' en CBSE?. El aprovisionamiento integra los componentes y el ensamblado los busca. El aprovisionamiento suministra la implementación de los componentes buscándolos o desarrollándolos; el ensamblado los integra entre sí en un sistema en funcionamiento. Son la misma fase con distinto nombre. El aprovisionamiento solo aplica a legacy systems y el ensamblado a componentes nuevos. ¿Cuál es la afirmación correcta sobre el principio DIP aplicado a clases?. CharCopier debe conocer los detalles de implementación de Keyboard y Printer. Keyboard y Printer son abstracciones y CharCopier es el detalle. Ambos son abstracciones de alto nivel; Keyboard y Printer son el detalle (bajo nivel) y CharCopier no conoce sus detalles. CharCopier debe depender directamente de Keyboard y Printer sin usar interfaces. ¿Qué establece la regla 'separa el código multihilo' en las reglas de diseño del código limpio?. Que el código multihilo debe mezclarse con la lógica de negocio para mayor eficiencia. Que el control de múltiples hilos se hace en clases dedicadas, separadas del resto. Que el código paralelo debe evitarse siempre que sea posible. Que los hilos deben gestionar directamente el acceso a la base de datos. ¿En qué tipo de sistema son especialmente útiles las arquitecturas centradas en bases de datos?. Sistemas embebidos con recursos limitados. Sistemas de tiempo real con baja latencia. Apps de computación distribuida que requieren mayor fiabilidad, rendimiento y escalabilidad. Sistemas de procesamiento por lotes secuenciales. ¿Qué significa que el proceso de análisis de diseño arquitectónico es 'iterativo pero ordenado'?. Que se realiza una sola vez al inicio del proyecto. Que puede repetirse en distintas fases manteniendo un orden lógico en las actividades. Que es completamente aleatorio y sin estructura definida. Que cada iteración elimina los resultados de la anterior. ¿Qué son los 'sistemas superordinados' en el análisis de diseño arquitectónico?. Sistemas que interactúan de igual a igual con el sistema destino. El sistema destino es parte de algún nivel más elevado. Sistemas que completan alguna funcionalidad del sistema destino. Entidades que interactúan con el sistema destino como actores. ¿Por qué el ISP afirma que interfaces más pequeñas son mejores?. Porque las interfaces grandes son imposibles de implementar. Porque las interfaces más pequeñas son más fáciles de codificar y cuantas menos clases las compartan, menor es el número de cambios para modificarlas. Porque las interfaces grandes siempre violan el principio SRP. Porque las interfaces pequeñas son más eficientes en tiempo de ejecución. ¿Cuándo se habla de 'sistemas jerárquicamente heterogéneos'?. Cuando el sistema sigue un único estilo pero con excepciones puntuales. Cuando la arquitectura interna de los componentes de un sistema sigue estilos arquitectónicos distintos. Cuando varios estilos se aplican simultáneamente para describir la arquitectura. Cuando el sistema combina hardware de distintas generaciones. ¿Qué relación existe entre la arquitectura software y la arquitectura de datos?. Son completamente independientes y no se influyen mutuamente. La arquitectura de los datos depende de la arquitectura software. La arquitectura del software depende de la arquitectura de los datos. Ambas se diseñan simultáneamente sin influencia mutua. ¿Cuál es la ventaja de usar 'nombres que puedan buscarse' en el código limpio?. Mejoran el rendimiento del compilador. Facilitan encontrar dónde se usan en el código, especialmente en grandes bases de código. Reducen el número de líneas de código necesarias. Permiten generar documentación automática. ¿Cuál es la desventaja principal de las arquitecturas P2P en general?. Son demasiado centralizadas y tienen un único punto de fallo. No pueden utilizarse en entornos corporativos. Son difíciles para determinar la responsabilidad, controlar la seguridad y la gestión del sistema. No permiten la distribución de los cálculos entre nodos. ¿Qué es la 'deuda técnica' en el contexto del desarrollo de software?. El coste económico de las licencias de software utilizadas. La acumulación de problemas en el código derivada de no refactorizar y solo añadir líneas. El número de bugs pendientes de corregir en el sistema. El tiempo invertido en documentar el código fuente. ¿Qué establece la regla de código limpio sobre el uso de métodos estáticos vs. no estáticos?. Se prefieren los métodos estáticos para maximizar la eficiencia. Se prefieren los métodos no estáticos frente a los estáticos. Ambos tipos son equivalentes y pueden usarse indistintamente. Los métodos estáticos son obligatorios en las clases base. ¿Cómo debe tratarse la 'dependencia lógica' según las reglas de comprensibilidad?. La dependencia debería ser lógica, no física, para mayor flexibilidad. Si un módulo depende de otro, esa dependencia debería ser física, no solo lógica; el módulo dependiente debe pedir explícitamente toda la información necesaria. Las dependencias lógicas deben eliminarse completamente. Las dependencias lógicas son preferibles a las físicas para desacoplar el sistema. En el modelo de tuberías y filtros, ¿qué es una 'tubería'?. Un componente que transforma los datos de entrada en datos de salida. El componente que coordina la ejecución de los filtros. El mecanismo que transmite los datos entre filtros. Un repositorio temporal donde los filtros almacenan sus resultados. ¿Cuál de las siguientes características hace que el modelo de repositorio (centrado en datos) sea difícil de evolucionar?. Que cada subsistema tiene su propio modelo de datos independiente. Que genera un gran volumen de información y los subsistemas deben ser coherentes con el modelo del repositorio. Que la comunicación entre subsistemas es siempre directa. Que no permite integrar herramientas compatibles con el modelo de datos. ¿Qué se entiende por 'error estructural' en el contexto de la arquitectura software?. Un error fácil de localizar y corregir sin afectar al resto del sistema. Un error producido por una mala estructura arquitectónica, más difícil de corregir que un error no estructural. Un error de sintaxis en el código fuente. Un fallo en la base de datos del sistema. ¿Qué ventaja ofrece el modelo cliente-servidor al ser la mayoría de sistemas distribuidos?. Que no requiere ningún tipo de red para funcionar. Que los clientes pueden comunicarse directamente entre sí sin pasar por el servidor. Que permite a los clientes acceder a los servicios de los servidores a través de una red. Que elimina la distinción entre cliente y servidor. ¿Cuál es el propósito de definir 'pre- y post-condiciones' en el diseño de componentes?. Describir la interfaz gráfica del componente. Describir el estado inicial y resultante de los objetos tras ejecutar las operaciones. Definir los parámetros de configuración del componente. Establecer los permisos de acceso a los métodos del componente. En el principio OCP, ¿qué significa que una entidad esté 'cerrada para su modificación'?. Que no puede ser instanciada por otras clases. Que la extensión de comportamiento debe realizarse sin modificar el código fuente existente. Que la clase es final y no puede tener subclases. Que sus atributos son todos privados y no accesibles. ¿Qué caracteriza a los componentes de 'grano fino' frente a los de 'grano grueso'?. Los de grano fino son más grandes y tienen mayor funcionalidad encapsulada. Los de grano fino son independientes y de fácil modificación, mientras que los de grano grueso minimizan la comunicación entre subsistemas. Los de grano grueso son más fáciles de mantener individualmente. No existe diferencia práctica entre ambos tipos. ¿Qué debe hacer el módulo de control en el modelo centrado en pizarra?. Almacenar los datos compartidos entre los componentes del sistema. Extraer información específica de distintas fuentes de conocimiento. Mantener y controlar el flujo de actividad para resolver el problema global, organizando y estructurando la información. Notificar a los subsistemas cuando están disponibles ciertos datos. ¿Qué aspecto del principio SRP está directamente relacionado con los conceptos de encapsulación y cohesión?. Que una clase debe implementar múltiples interfaces para maximizar la cohesión. Que una clase debe tener una única responsabilidad, lo que favorece la encapsulación y la cohesión. Que las responsabilidades deben distribuirse entre varias clases sin relación. Que la encapsulación y la cohesión son conceptos opuestos al SRP. ¿Cuándo se recomienda la arquitectura de flujo de datos de tipo 'modelo secuencial por lotes'?. Cuando las transformaciones son procesos independientes que se ejecutan en paralelo. Cuando el flujo de datos es una simple línea de transformadores secuenciales. Cuando los datos necesitan ser procesados de forma interactiva. Cuando los componentes deben notificar cambios al repositorio central. ¿En qué se diferencia la 'arquitectura de empresa' de la 'arquitectura software'?. La arquitectura software se centra en la estructura técnica del sistema, mientras que la arquitectura de empresa traduce visión y estrategia de negocio en cambios efectivos organizacionales. Son conceptos equivalentes pero con distinto nivel de detalle. La arquitectura de empresa solo contempla el hardware corporativo. La arquitectura software es más amplia y engloba a la arquitectura de empresa. |





