¿Reglas o herramientas? El pensamiento crítico en la arquitectura de software