Saltar al contenido
Finance & Banking
Evolution Program
Inicio / modules / 22-proyecto-banco-digital-y-mercado-tokenizado / solutions

Solución de referencia — Laboratorio 1: alcance y decisiones de arquitectura

Material docente.

Once funciones, cuatro incluidas y el mismo ingreso

Reducir el alcance no fue una decisión de prudencia sino de aritmética: siete de las once funciones no tenían quien las necesitara en el segmento, y por eso excluirlas no bajó el ingreso ni un peso.

La prueba que lo demuestra

def test_reducir_el_alcance_no_baja_el_ingreso_documenta_el_problema():
    ingreso_con_todas = a.ingreso
    excluidas = a.excluir_las_que_no_aportan()

    assert excluidas == 3
    assert a.ingreso == ingreso_con_todas   # <- NO BAJA

Esta prueba debe pasar. El ingreso es idéntico antes y después porque las funciones excluidas tenían ingreso cero: nadie del segmento las pedía. Lo que cambió fue el coste y el número de regímenes.

Las cuatro preguntas

1 ¿QUIÉN LA NECESITA?   un segmento concreto
2 ¿QUÉ PAGA POR ELLA?   una cifra
3 ¿QUÉ CUESTA SERVIRLA? otra cifra
4 ¿QUÉ DECISIÓN OBLIGA? y si condiciona otras

SI LA 1 ES «TODOS» O LA 2 ES «NADA»,
LA FUNCIÓN SE EXCLUYE

La primera es la que más elimina. «Todos» no es un segmento: es la señal de que nadie se preguntó a quién se sirve.

La exclusión exige su razón

with pytest.raises(ValueError):
    a.excluir("custodia digital", razon="")

Es una decisión de diseño deliberada. Una exclusión sin razón escrita reaparece en la reunión siguiente, y el equipo vuelve a discutirla desde cero.

La cifra que decide si el proyecto existe

carga regulatoria anual        404 000
facturación necesaria        1 836 364

  antes de ganar nada

Si el mercado objetivo no soporta esa facturación, el proyecto no es viable por mucho que la tecnología funcione. Saberlo en la clase 1 ahorra las diecisiete siguientes.

La salida manda sobre el coste

def test_la_salida_manda_sobre_el_coste_documenta_el_problema():
    componente = _sin_salida()
    assert componente.coste_integrar(5) < componente.coste_construir(5)

    decision, motivo = componente.decidir()
    assert decision is DecisionBuild.CONSTRUIR
    assert "dependencia estructural" in motivo

Esta prueba también debe pasar. Integrar el registro de colateral es más barato y aun así se construye: sin proveedor alternativo, el coste de abandonarlo no es la migración sino rehacerlo entero.

Errores que se penalizan

Error Por qué
Incluir todo lo aprendido Muchas cosas mal en vez de pocas bien
Exclusión sin razón Reaparece en la reunión siguiente
Segmento «todos» Es la señal de que no hay segmento
Carga regulatoria al final Decide si el proyecto existe
Comparar solo el coste inicial La salida es lo que decide

Límites