Estándares y Arquitectura de Software

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/69

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 5:19 AM on 6/4/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

70 Terms

1
New cards

Arquitectura de Software

Disciplina que define la estructura, organización y decisiones de diseño de un sistema de software. Ventajas: comunicación con participantes, análisis del sistema y reutilización a grande escala.

2
New cards

RNF y Arquitectura

Los Requerimientos No Funcionales determinan el estilo y estructura arquitectónica a elegir: rendimiento, protección, mantenimiento, seguridad y disponibilidad.

3
New cards

Modularidad

Agrupación lógica de código relacionado entre sí. Es un principio de organización que se mide con cohesión y acoplamiento.

4
New cards

Cohesión

Qué tan bien están relacionados los elementos dentro de un módulo. Se busca alta cohesión.

5
New cards

Acoplamiento

Grado de interdependencia entre módulos. Cómo se comunican entre sí. Se busca bajo acoplamiento.

6
New cards

Cohesión Funcional

El tipo más alto y deseable. Todo el módulo trabaja hacia un único objetivo bien definido.

7
New cards

Cohesión Secuencial

La salida de una parte es la entrada de la siguiente. Ej: order maintenance.

8
New cards

Cohesión de Comunicación

Los elementos operan sobre los mismos datos. Ej: customer maintenance.

9
New cards

Cohesión de Procedimiento

Los elementos siguen una secuencia de pasos relacionados.

10
New cards

Cohesión Temporal

Los módulos se relacionan por dependencias de tiempo. Ej: autenticación de dos factores (2FA).

11
New cards

Cohesión Lógica

Los datos se relacionan lógicamente pero no funcionalmente.

12
New cards

Cohesión Coincidente

El tipo más bajo y negativo. Los elementos solo están juntos porque están en el mismo archivo fuente. No recomendable.

13
New cards

IEEE 1016

Estándar que define cómo documentar el diseño de software mediante un SDD (Software Design Description). Define perspectivas, vistas e inquietudes.

14
New cards

SDD — Software Design Document

Documento formal que describe el diseño de un sistema. Incluye perspectivas, vistas, decisiones de diseño y justificaciones. Basado en IEEE 1016.

15
New cards

Perspectivas (IEEE 1016)

Puntos de vista desde los cuales se observa y documenta un sistema. Cada perspectiva aborda preocupaciones de distintos stakeholders. Ej: lógica, despliegue, proceso, física.

16
New cards

Inquietudes / Concerns

Intereses o preocupaciones que los stakeholders tienen sobre el sistema: rendimiento, seguridad, mantenibilidad, disponibilidad, escalabilidad.

17
New cards

Vistas (IEEE 1016)

Representación del sistema desde la perspectiva de un conjunto de inquietudes. El SDD se compone de múltiples vistas, cada una descrita con un viewpoint.

18
New cards

IEEE 828

Estándar que define el formato para la gestión de la configuración del software. Establece el SCMP: identificación, control de cambios, registro del estado y auditorías.

19
New cards

Arquitectura Monolítica

Sistema desplegado como una sola unidad. Tipos: capas (layered), pipeline y microkernel.

20
New cards

Arquitectura Distribuida

Sistema dividido en múltiples unidades independientes. Tipos: basada en servicios, basada en eventos (broker/mediator), SOA, microservicios y basada en espacio.

21
New cards

Arquitectura en Capas — Layered

Monolítica. Organiza el sistema en capas horizontales donde cada capa solo se comunica con la inmediata. Típico: Presentación → Negocio → Persistencia.

22
New cards

Arquitectura Pipeline

Monolítica. La información fluye en un solo sentido. Componentes: Producer → Transformer → Tester → Consumer.

23
New cards

Arquitectura Microkernel

Monolítica. Tiene un Core System (happy path) y plug-ins especializados e independientes que se agregan en runtime o compile-time.

24
New cards

Arquitectura Basada en Servicios

Distribuida. La UI se conecta a servicios de grano grueso. Servicios más grandes y menos numerosos que microservicios. Buena opción para migrar desde un monolito.

25
New cards

Arquitectura Basada en Eventos — Broker

Distribuida. No hay orquestador central. El evento se publica y el componente que esté libre lo toma. Altamente desacoplada. Ej: tienda en línea (inventario, facturación, envío).

26
New cards

Arquitectura Basada en Eventos — Mediator

Distribuida. Hay un orquestador central que coordina el flujo y decide qué componente ejecuta qué paso. Mayor control, más acoplado. Ej: reserva de vuelos.

27
New cards

Diferencia Broker vs Mediator

Broker: nadie coordina, el evento va al componente libre, orden no garantizado. Mediator: hay un director central que dirige el flujo paso a paso con orden definido.

28
New cards

SOA — Service-Oriented Architecture

Distribuida. Servicios grandes reutilizables que se comunican por un bus centralizado (ESB). Menos flexible que microservicios por el ESB como cuello de botella.

29
New cards

ESB — Enterprise Service Bus

Bus centralizado en SOA que maneja transformación, enrutamiento y orquestación. Su centralización lo convierte en cuello de botella y punto único de fallo.

30
New cards

Microservicios

Distribuida. Cada funcionalidad es un servicio completamente independiente con su propia base de datos. Flujo: Client Request → API Gateway → Service → DB propia.

31
New cards

API Gateway

Punto de entrada único en microservicios que recibe todas las peticiones del cliente y las enruta al servicio correspondiente. También maneja autenticación y logging.

32
New cards

Arquitectura Basada en Espacio

Distribuida. Usa memoria compartida distribuida en lugar de base de datos central. Diseñada para picos de tráfico extremos e impredecibles. Ej: venta de boletos de concierto.

33
New cards

¿Cuál arquitectura usar?

Considerar: tipos de datos y actualizaciones, frecuencia de los cambios y plataforma de ejecución del sistema.

34
New cards

Arquitectura de Seguridad

Protección en cada capa del sistema. Capas de afuera a adentro: UI web/móvil → Autenticación → Funcionalidad de la app → Servicios compartidos → Transacciones y BD.

35
New cards

CMMI — Capability Maturity Model Integration

Estándar de calidad con 316 prácticas clave agrupadas en 18 áreas y 5 niveles de madurez organizacional.

36
New cards

CMMI Nivel 1 — Inicial

Sin protocolos ni estándares. Caótico, sin guía.

37
New cards

CMMI Nivel 2 — Repetible

Tiene métodos estandarizados y control en proyectos.

38
New cards

CMMI Nivel 3 — Definido

Procesos documentados, monitoriza y mejora. Se tiene una metodología. Requiere 3+ años.

39
New cards

CMMI Nivel 4 — Gestionado

Controles avanzados, métricas y retroalimentación de costos y calidad. Requiere 5+ años y 50+ empleados.

40
New cards

CMMI Nivel 5 — Optimización

Mejora continua, todo estandarizado, análisis cuantitativo y cualitativo. Menos del 0.1% de organizaciones lo alcanza.

41
New cards

NIST — AI RMF 1.0

Guías no regulatorias del National Institute of Standards and Technology para el uso responsable de IA. Tres principios: gobernanza responsable, evaluación y mitigación de riesgos, mejora continua.

42
New cards

MoProSoft — NMX-I-059/02-NYCE-2016

Modelo de procesos para la industria de software mexicana. CMMI realista para pymes. Tres niveles: Dirección, Gerencia, Operación.

43
New cards

PSP — Personal Software Process

Proceso enfocado en el individuo. Predictivo. Mejora productividad, reduce errores, mejora calidad y control del trabajo individual.

44
New cards

TSP — Team Software Process

Proceso enfocado en el equipo. Cada persona planea, da seguimiento y reporta su avance. Define roles, medidas estándar de calidad y maximiza productividad del equipo.

45
New cards

Ciclo TSP

Lanzamiento → Estrategia → Plan → Requerimientos → Diseño → Implementación → Pruebas → Postmortem.

46
New cards

Relación PSP-TSP-CMMI

PSP (individuo) → TSP (equipo) → CMMI (organización). La mejora escala de lo personal a lo organizacional.

47
New cards

Metodología Predictiva vs Adaptativa

PSP es predictiva: cada quien documenta su proceso y usa datos para predecir la agenda. Ágil es adaptativa: se ajusta continuamente a los cambios.

48
New cards

Patrones de Diseño

Mejor práctica documentada o núcleo de una solución aplicada con éxito en múltiples contextos. Proveen lenguaje unificado y resuelven problemas comunes ya solucionados antes.

49
New cards

Rol del Arquitecto

Define requerimientos de negocio, elige la arquitectura de software, decide cómo se organizan los componentes y toma decisiones tecnológicas (BD, plataforma, servidor, herramientas).

50
New cards

Rol del Diseñador

Crea diagramas de clases, pantallas UI, prueba y desarrolla el código fuente. Define cómo se construyen y codifican los componentes.

51
New cards

Patrones Básicos

Interface, parent abstract class, accessors methods, constant data manager, immutable object, monitor.

52
New cards

Patrones Creacionales

Crean objetos reduciendo el acoplamiento. Principio: responsabilidad única y abierto/cerrado. Ej: Factory Method, Abstract Factory, Builder, Singleton, Prototype.

53
New cards

Patrones Estructurales

Crean estructuras complejas manteniendo flexibilidad y eficiencia. Basados en herencia. Ej: Proxy/Bridge, Adapter, Decorator, Facade, Composite.

54
New cards

Patrones de Comportamiento

Definen cómo los objetos se comunican e interactúan. Ej: Command, Chain of Responsibility, Mediator, Observer.

55
New cards

Antipatrones

Soluciones conocidas que parecen buenas pero resultan contraproducentes. Lo opuesto a un patrón de diseño.

56
New cards

Patrón Builder

Creacional. Construye objetos complejos paso a paso. Componentes: Director, Builder (interfaz), Builder Concreto. Ventaja: no rompe responsabilidad única. Desventaja: aumenta complejidad.

57
New cards

Patrón Singleton

Creacional. Garantiza una sola instancia de clase con un único punto de acceso global. Ventaja: fácil encontrar errores. Desventaja: dificulta pruebas unitarias, no cumple responsabilidad única.

58
New cards

Patrón Proxy / Bridge

Estructural. Objeto intermedio que controla el acceso a otro. Baja el acoplamiento. Cumple PRU y abierto/cerrado. Uso: clase monolítica con muchas variantes de una funcionalidad.

59
New cards

Patrón Adapter

Estructural. Conector para interfaces incompatibles. Crea una clase traductora intermedia. Uso: integrar código heredado con código moderno. Cumple PRU. Desventaja: aumenta complejidad.

60
New cards

Patrón Decorator

Estructural. Asigna responsabilidades adicionales a un objeto dinámicamente durante ejecución. Uso: cuando la herencia no sirve. Ej: envío de notificaciones. Desventaja: difícil de eliminar.

61
New cards

Patrón Facade

Estructural. Provee una interfaz simplificada a un subsistema complejo.

62
New cards

Patrón Composite

Estructural. Compone objetos en estructuras de árbol para representar jerarquías parte-todo.

63
New cards

PRU — Principio de Responsabilidad Única

Cada clase o módulo debe tener una sola razón para cambiar. Una sola responsabilidad bien definida.

64
New cards

Principio Abierto/Cerrado

Un módulo debe estar abierto para extensión pero cerrado para modificación. Se extiende sin cambiar el código existente.

65
New cards

Refactorización

Proceso sistemático de mejora del código sin crear nueva funcionalidad ni cambiar su comportamiento observable. Hace el código más fácil de entender y menos costoso de modificar.

66
New cards

Lo que NO es refactorización

No modifica la lógica existente, no agrega nueva funcionalidad, no requiere nuevas pruebas. Solo mejora la estructura interna.

67
New cards

Para qué sirve la refactorización

Eliminar código duplicado, hacer el código más fácil de entender, ayuda a encontrar bugs y a programar más rápido.

68
New cards

Código Limpio

Obvio para otros programadores, sin duplicados, número mínimo de clases y partes móviles, pasa todas las pruebas al 100%. Más fácil y económico de mantener.

69
New cards

Cuándo refactorizar — tipos

Preparación (antes de agregar una característica), comprensión (para entender mejor el código), recoger la basura (al encontrarlo de paso), planeada/oportunista, a largo plazo.

70
New cards

Problemas al refactorizar

Branches, ralentizar nuevas características, code ownership, falta de testing, legacy code y bases de datos acopladas al código.