Estado de Librerías y Dependencias
Informe ejecutivo detallado sobre el estado de obsolescencia, riesgos de seguridad y ruta de remediación para los componentes críticos del ecosistema .NET.
Índice de Contenido
Equipo de Ingeniería y Análisis
Ing. Luis Manuel Corea Cabrera
Líder de Análisis Técnico
Ing. Rubén Hernández Céspedes
Ing. Joshua Stif Murillo Rodríguez
Ing. Arnold Delgado Trejos
Ing. Aldo Maynor Ulate Shedden
Entity Framework (General)
Análisis y Opciones
- Estado Actual Fragmentación de versiones (5.0.0 y 6.1.3). Sistemas legacy sobre .NET Framework.
- Opción 1: Migración a .NET Core Alto esfuerzo, riesgo elevado a corto plazo.
- Opción 2: Upgrade a EF 6.5 Compatible con .NET Framework 4.6.2+. Cambios mínimos.
Recomendación y Acción
- Recomendación Técnica Optar por Opción 2 (EF 6.5) para estandarizar sin detener operación.
- Roadmap Planificar modernización a .NET 8 + EF Core post-estabilización.
Caso de Estudio: Proyecto Time Web API - Limpieza y Dependencia EF
21 Oct 2025 - Responsable: Ing. Luis Manuel Corea C.
Proyecto Time Web API - Limpieza de Configuración y Dependencia de EFLimpieza y Diagnóstico
- Acción Eliminación de bloques legacy en
web.config:<membership>,<roleManager>,<profile>. - Validación Ausencia confirmada de
AccountControllero lógica de autenticación antigua.
Análisis de Dependencia
- Problema
EntityFramework 5.0.0instalado pero no usado directamente en código. - Causa Dependencia dura de
Microsoft.AspNet.Providers.Corev1.2.0.
Conclusión
- Decisión Mantener EF 5.0.0 en modo pasivo para evitar excepciones en runtime.
- Estado Limpieza exitosa de configuración visual.
Caso de Estudio: BNMovilEmpresarial
Auditoría de Actualización EF y Barcode (22 Sep 2025) - Responsable: Ing. Luis Manuel Corea
BNMovil Empresarial - EF y Barcode - OverviewObjetivo
- Propósito Planificar actualización de EF y BarcodeProfessional.
Hallazgos
- Resultado No se encontró referencia activa en rama
R-Inc. Fueron eliminadas previamente.
Conclusión
- Resolución Plan descartado por no ser aplicable.
Frontend Legacy (JQuery)
Diagnóstico de Riesgo
- Dispersión Versiones desde 1.4.2 hasta 3.7.1.
- Riesgo Vulnerabilidades XSS conocidas en versiones antiguas.
Plan de Saneamiento
- Upgrade Migración a jQuery 3.7.1.
- Política Prohibir uso en nuevos desarrollos.
Caso de Estudio: time-web-api-raiz (Investigación JQuery)
Responsable: Ing. Aldo Maynor Ulate S.
Informe Actualización Jquery y JQuery.UI.Combined en BN Móvil - OverviewEstrategia 1: Actualización
- Upgrade jQuery a 3.7.1, UI a 1.14.1.
Estrategia 2: Eliminación
- Eliminación total de jQuery, KnockoutJS y validaciones legacy.
Validación QA
- Ambas estrategias viables y validadas con Unit Testing.
Caso de Estudio: Auditoría JQuery (Transferencias Web API)
Declaración de Obsolescencia (Sprint 26.02) - Responsable: Ing. Aldo Maynor Ulate Shedden
jQuery y jQuery.UI - Informe de Actualización - OverviewObjetivo y Hallazgo
- Objetivo Mitigar vulnerabilidad en librería JQuery obsoleta.
- Hallazgo Librería mal configurada y no funcional en ambiente DEV.
Acción Inmediata
- Update Se actualizó a v3.7.1 para sanear alertas de seguridad en el repositorio.
- Estado El proyecto compila pero su funcionalidad es nula.
Resolución Final
- Obsolescencia El servicio fue reemplazado por
Transferencias WCF. - Decisión Marcar repositorio como obsoleto y proceder a su eliminación.
Neodynamic WebControl
Obsolescencia
- Tecnología Web Forms obsoleta (+11 años) sin soporte.
Estrategia
- Reemplazo obligatorio. Evaluar costo de licencia o refactorización.
Caso de Estudio: Eliminación Neodynamic (Barcode)
Limpieza de Referencias sin Uso - Responsable: Ing. Luis Manuel Corea
IB Sitio - Eliminación BarcodeProfessional - OverviewDiagnóstico
- Hallazgo Referencia a
Neodynamic.WebControls.BarcodeProfessionaldetectada en solución pero sin uso en código fuente.
Ejecución de Limpieza
- Eliminación Se removieron referencias de
web.config,.csprojy carpetaspackages/. - Física Borrado de DLLs en directorios
bin/yobj/.
Resultado
- Compilación Exitosa (Clean + Rebuild).
- Impacto Reducción de dependencias innecesarias y peso del proyecto.
Newtonsoft.Json
Conflicto de Dependencias
- Coexistencia con
System.Text.Jsongenera riesgo de "Dll Hell".
Estrategia
- Estandarizar a 13.0.3 en legacy. Usar nativo en nuevos.
Caso de Estudio: BNCR.Time.WebApi (Actualización)
Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft - OverviewBNCR.Time.WebApi
- Hallazgo Versión 4.5.11 detectada. Uso activo en
HelpPageSampleGenerator.cs. - Acción Actualización directa a 13.0.3.
BNCR.Time.WebApi.Test
- Hallazgo Versión 4.5.11 detectada por dependencias internas.
- Acción Actualización a 13.0.3 para paridad.
Validación
- ✅ Limpieza correcta. ✅ Compilación exitosa. ✅ Tests aprobados.
Caso de Estudio: Limpieza y Análisis Newtonsoft (Internet Banking Web)
Depuración de Usings y Validación de Dependencias (24 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes
INFORME DE LIBRERÍA EN SITIO - OverviewLimpieza Selectiva
- Acción Eliminación de
using Newtonsoft.Json;sin uso en 6 archivos clave comoInactivarSubcuenta.csyPagoReciboTPage.cs.
Dependencia Obligatoria
- Retención El paquete NuGet NO se eliminó.
- Motivo Requerido por
BNCR.GeneradorPDF,BNCR.RedisNudata.BLySignalR.
Estado Final
- Versión Se mantiene estable en 13.0.3.
- Código Limpio de referencias innecesarias, manteniendo la infraestructura operativa.
Caso de Estudio: Banca Electrónica (Actualización Newtonsoft)
Upgrade de v10.0.2 a v13.0.3 - Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft.Json - OverviewHallazgos
- Proyectos
BancaElectronica.APIyServicios.BL. - Versión Origen 10.0.2 (Desactualizada).
- Uso Clase
Utilidades.cspara serialización JSON.
Actualización
- Acción Upgrade vía NuGet a la versión 13.0.3.
- Código Validación de métodos
JsonConvert.SerializeObject.
Validación
- Pruebas Ejecución exitosa de tests antes y después del cambio.
- Compilación Correcta, sin conflictos de dependencias.
Caso de Estudio: BNCR.SINPETR.BL (Validación)
Verificación de Versión y Uso (12 Dic 2025) - Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft - OverviewEstado Actual
- Versión 13.0.3 (Ya actualizada).
- Estado Cumple con el estándar de seguridad. No requiere cambios.
Uso Detectado
- Archivos
ConectorHttpClient.cs,TransferenciaRegionalBL.cs,TransferenciasPEXBL.cs,Utiles.cs.
Validación
- QA El código hace uso correcto de la librería para serialización/deserialización.
- Acción Se marca como revisado y aprobado.
Caso de Estudio: Limpieza Newtonsoft (Internet Banking WCF)
Eliminación de Referencias sin Uso (30 Dic 2025) - Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft - OverviewDiagnóstico
- Situación
Newtonsoft.Json 13.0.1instalado en 6 proyectos (WCF, Test, Seguridad, DAL, BL, Entidades) pero sin referencias en código.
Acción Correctiva
- Desinstalación Se removió el paquete de todos los proyectos afectados para reducir dependencias innecesarias.
Validación QA
- Consistencia Pruebas unitarias ejecutadas antes y después: 50 pasadas, 100 fallidas (errores preexistentes no relacionados).
- WCF Client Carga correcta del servicio.
Caso de Estudio: Análisis de Dependencias (Proyectos Seguridad)
Validación de Referencias Indirectas (12 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft - OverviewAlcance del Análisis
- Proyectos
BNCR.Seguridad.BL,.Entidades,.WCF. - Estado Newtonsoft.Json 13.0.3 instalado.
Dependencias Críticas
- Hallazgo Aunque el código directo no lo use, existen dependencias de terceros:
BNCR.NuDataSecurityBNCR.Servicios.TraceMicrosoft.AspNet.SignalR.Client
Decisión Técnica
- Retención NO ELIMINAR. La librería es requerida por los paquetes de seguridad y monitoreo.
- Versión Se mantiene en 13.0.3 por compatibilidad.
Caso de Estudio: Actualización Newtonsoft (IB Móvil)
Upgrade de v11.0.2 a v13.0.3 y Limpieza (24 Sep 2025) - Responsable: Ing. Rubén Hernández Céspedes
Newtonsoft.Json - OverviewDiagnóstico
- Alcance
BNCR.IBMovil,.APIy.Test. - Hallazgo La API utilizaba la versión desactualizada 11.0.2 con uso directo en
PrevalidarCuentasExteriorApi.cs. - Deuda Técnica Referencias
usingsin uso real en el modeloPrevalidarCuentasExtreriorModels.cs.
Ejecución Técnica
- Actualización Upgrade a la versión 13.0.3 vía NuGet en la API.
- Limpieza Se eliminó la referencia sin uso para evitar ruido en el código.
- Dependencias Se verificó que otras librerías como
BNCR.RedisNudata.BLrequieren esta versión activa.
Validación QA
- Serialización Correcta ejecución de
JsonConvert.SerializeObjecttras la actualización. - Estabilidad Configuración de
bindingRedirectverificada enapp.config. Tests ejecutados con éxito.
Microsoft OWIN
Seguridad y Auth
- Versiones inconsistentes. Riesgo en manejo de sesiones.
Estandarización
- Unificar a 4.2.2 y validar flujos de Login.
Caso de Estudio: Actualización OWIN (BN Móvil Empresarial)
Modernización de Seguridad y ADFS (v4.0.0 → v4.2.2) - Responsable: Ing. Joshua Stif Murillo Rodríguez
Microsoft.Owin - OverviewAlcance del Cambio
- Librerías
Microsoft.Owin.*(Host, Security, Cookies, WsFederation). - Impacto Actualización de v4.0.0 a v4.2.2.
- Objetivo Beneficiarse de parches de seguridad y estabilidad en el middleware de autenticación.
Áreas Críticas
- Federación Proceso de autenticación federada mediante ADFS (Active Directory).
- Sesiones Generación/validación de tokens, claims, y cookies de sesión.
Pruebas Ejecutadas
- Login/Logout Validación de login ADFS con usuarios reales y redirección en logout.
- Seguridad Restricción de páginas protegidas, rechazo de credenciales inválidas y expiración de sesión.
Common Service Locator (CSL)
Bloqueo Legacy
- Unity 2.x depende de CSL 1.0. Eliminarla rompe runtime.
Decisión Técnica
- NO ELIMINAR CSL en proyectos con Unity 2.x.
Caso de Estudio: Actualización CSL 2.0.7 (BN-Valores)
Modernización Controlada DAL (18 Nov 2025) - Responsable: Ing. Luis Manuel Corea Cabrera
BN Valores - CommonServiceLocator.NET - OverviewContexto y Alcance
- Hallazgo CSL v1.0.0 obsoleta en capa DAL. Riesgo de conflicto con Oracle Managed Data Access.
- Alcance
BNCR.BNValores.DAL. Otros proyectos (BL, WCF) no afectados.
Ejecución
- Update NuGet a v2.0.7 (Última estable).
- Limpieza Recompilación total y validación de
packages.config.
Estado de Pruebas
- Unit Tests Fallidos por falta de credenciales de BD (No relacionado a librería).
- Compilación Exitosa.
Caso de Estudio: Actualización CSL (Convenios PAR)
Actualización DAL v1.0.0 a v2.0.7 (02 Dic 2025) - Responsable: Ing. Luis Manuel Corea Cabrera
CommonServiceLocator - OverviewContexto
- Situación CSL 1.0.0 en DAL. Riesgo de conflictos con .NET 4.8 y Oracle Managed Data Access.
- Alcance Exclusivo en capa de Datos (DAL). WCF/BL intactos.
Ejecución
- Update NuGet a v2.0.7 (Última estable).
- Limpieza Eliminación de referencias viejas y limpieza de
bin.
Resultado y Bloqueo
- Compilación Exitosa sin errores de dependencias.
- Tests Fallidos por falta de credenciales de BD (Ajeno a la actualización).
Caso: BNCR.Transferencias.DAL (Reversión)
Responsable: Ing. Rubén Hernández Céspedes
CommonServiceLocator.NET - OverviewContexto
- Diagnóstico CSL 1.0.0. Dependencias indirectas de Unity 2.1.
Incidente
- Actualización a 2.0.7 causó bloqueo en Runtime.
Rollback
- Reversión a v1.0.0 para garantizar estabilidad operativa.
Caso de Estudio: Actualización CSL en BNCR.Firmador
Mantenimiento de Dependencias Indirectas - Responsable: Ing. Joshua Stif Murillo Rodríguez
CommonServiceLocator - OverviewContexto
- Situación El proyecto no usa CSL directamente, pero lo requiere por dependencias de terceros.
- Versión Origen 1.0.0 (Obsoleta).
Ejecución
- Acción Actualización del paquete NuGet a la versión 2.0.6.
- Alcance Modificación exclusiva de
packages.configy.csproj.
Resultado
- Estado Actualización exitosa. Estabilidad y compatibilidad aseguradas.
- QA Compilación y ejecución de servicios WCF validadas.
Caso de Estudio: Modernización Cuentas WCF (.NET 4.8)
Actualización Unity/CSL y Limpieza - Responsable: Ing. Arnold Delgado Trejos
CommonServiceLocator - OverviewObjetivo
- Proyecto
BNCR.Cuentas.WCF/ DAL. - Meta Migrar a .NET Framework 4.8 y actualizar dependencias críticas.
Ejecución
- CSL Update de 2.0.1 a 2.0.7.
- Unity Update a v5.11.10 y eliminación de
Unity.Interception(obsoleto).
Resultados
- Estabilidad Compilación exitosa de toda la solución (DAL, BL, WCF, Entidades).
- Funcional Validación correcta de métodos de acceso a datos.
Caso de Estudio: Eliminación CSL en WCF Bitácora
Limpieza de Librerías Obsoletas (17 Dic 2025) - Responsable: Ing. Aldo Maynor Ulate Shedden
Eliminar CommonServiceLocator.NET - OverviewContexto y Objetivo
- Proyecto
BNCR.BitacoraIb.WCF. - Acción Eliminación de la tríada legacy:
CommonServiceLocator,Unity,Unity.Interception. - Trazabilidad Servicio consumido por Banca Electrónica, Seguridad y OAuth.
Ejecución Técnica
- Limpieza Remoción física de DLLs y paquetes NuGet.
- QA Ejecución de Unit Tests (4 pruebas) en
BNCR.BitacoraIB.TEST.
Validación Funcional
- Inserción BD Confirmada. El método
AlmacenarBitacoraIBregistra datos correctamente. - Hallazgo Tests unitarios fallan parcialmente por falta de SPs, pero la funcionalidad core está intacta.
Caso de Estudio: Eliminación CSL en BNCR.Empresarial.Web
Desacoplamiento y Modernización (11 Feb 2026) - Responsable: Ing. Rubén Hernández Céspedes
CommonServiceLocator.NET - OverviewEstrategia de Desacoplamiento
- Hallazgo CSL 1.0.0 en uso. Dependencia indirecta de Enterprise Library 5.0.
- Solución Actualización de EntLib a 6.0.1304 para romper dependencia con CSL/Unity.
Ejecución de Limpieza
- Eliminación Se removieron completamente
CommonServiceLocator,UnityyUnity.Interception. - Limpieza Proyecto compilado sin errores tras la remoción.
Pruebas de Integración
- Funcionalidad Validación exitosa de pantallas clave: Saldos, Vencimientos y Operaciones.
- Veredicto El sistema es estable y está listo para despliegue.
Caso de Estudio: Migración EntLib 6.x (Internet Banking)
Eliminación de CommonServiceLocator (30 Dic 2025) - Responsable: Ing. Arnold Delgado Trejos
CommonServiceLocator - OverviewAlcance
- Solución BNCR.InternetBanking (6 proyectos).
- Objetivo Actualizar EntLib a 6.0.1304 y eliminar CSL.
Ejecución
- Update NuGet Packages actualizados a v6.x.
- Limpieza Eliminación total de referencias a
ServiceLocator.
Validación
- Compilación 0 Errores. Warnings controlados.
- Técnica DLLs de CSL ausentes en bin. Runtime estable.
Caso de Estudio: Actualización EntLib/CSL (BN-Servicios)
Eliminación de Vulnerabilidad y Recuperación de Tests (13 Ene 2026) - Responsable: Ing. Aldo Maynor Ulate Shedden
Eliminar CommonServiceLocator - OverviewContexto
- Problema Unit Tests rotos (solo 4 funcionando). Vulnerabilidad en CSL.
- Objetivo Actualizar EntLib, remover dependencias obsoletas y reparar tests.
Ejecución
- Update EntLib a 6.0.1304.
- Limpieza Remoción de
CommonServiceLocator,UnityyUnity.Interception. - Config Ajuste de App.config para paridad con producción.
Resultados
- QA Tests activos aumentaron de 4 a 52 (65% cobertura).
- Pendiente Errores restantes por conexión Oracle y falta de SPs en ambiente QA.
Caso de Estudio: Análisis CSL (Sinpe Móvil WCF)
Validación de Dependencias Cruzadas - Responsable: Ing. Joshua Stif Murillo Rodríguez
CommonServiceLocator - OverviewStack Tecnológico
- Base .NET 4.7.2 + WCF.
- Legacy Enterprise Library 5.0.505 + Unity 2.1.505.
- Target CommonServiceLocator 1.0.0.
Bloqueo de Arquitectura
- Riesgo Actualizar CSL a 2.x rompe compatibilidad binaria con Unity 2.x y EntLib 5.
- Impacto Fallo catastrófico en runtime (Logging, Exception Handling).
Resolución Técnica
- Decisión NO ACTUALIZAR. Mantener v1.0.0 para garantizar continuidad operativa.
- Futuro Requiere proyecto de migración total de arquitectura.
Caso de Estudio: Actualización Compleja BN-Vital (EntLib/Mapper)
Resolución de Dependencias Cruzadas (28 Ene 2026) - Responsable: Ing. Aldo Maynor Ulate Shedden
CommonServiceLocator.Net - OverviewHallazgos Críticos
- Gestión Incorrecta DLLs commiteadas en carpeta
packagessin referencia enpackages.config, impidiendo update automático. - Cascada
BNCR.Mapperdependía fuertemente de EntLib v5, rompiéndose al actualizar a v6.
Solución Técnica
- Update Actualización manual de EntLib a 6.0.1304.
- Mapper Migración a
BNCR.Mapper v2para compatibilidad. - Config Configuración de variable de entorno
TNS_ADMINpara cliente Oracle.
Validación y Riesgo
- QA 49 Tests unitarios exitosos (WCF + BL).
- Alerta Bases de datos DEV/QA/PROD residen en el mismo servidor. Conexiones Oracle obsoletas.
Caso de Estudio: Análisis CSL (Comercios WCF)
Validación de Dependencias Cruzadas - Responsable: Ing. Joshua Stif Murillo Rodríguez
CommonServiceLocator - OverviewStack Tecnológico
- Base .NET 4.7.2 + WCF.
- Legacy Enterprise Library 5.0.505 + Unity 2.1.505.
- Target CommonServiceLocator 1.0.0.
Bloqueo de Arquitectura
- Riesgo Actualizar CSL a 2.x rompe compatibilidad binaria con Unity 2.x y EntLib 5.
- Impacto Fallo catastrófico en runtime (Logging, Exception Handling).
Resolución Técnica
- Decisión NO ACTUALIZAR. Mantener v1.0.0 para garantizar continuidad operativa.
- Futuro Requiere proyecto de migración total de arquitectura.
QA & Testing (NUnit)
Caso de Estudio: Migración MSTest a NUnit (BN-CUSTODIO)
Modernización de Framework de Pruebas (23 Dic 2025) - Responsable: Ing. Luis Manuel Corea
NUnit.NET - OverviewContexto y Auditoría
- Hallazgo Inicial Auditoría vía script PowerShell detectó uso de
MSTesten código fuente. - Diagnóstico Dependencia lógica (using/atributos) sin DLLs físicas bloqueantes.
- Motivación Migrar a NUnit 4.4.0 para aprovechar aserciones expresivas y CI/CD.
Ejecución Técnica
- Refactor Eliminación de
using Microsoft.VisualStudio.... - Atributos Reemplazo:
[TestClass] -> [TestFixture],[TestMethod] -> [Test]. - Aserciones Cambio:
Assert.NotNull->Assert.That(..., Is.Not.Null). - Dependencia Se agregó referencia a
BNCR.Servicios.Tracerequerida por BL.
Resultado Técnico
- Conclusión Migración exitosa. Código más limpio y mantenible.
Resumen
- Update 2.6.3 -> 4.4.0 en
BNCR.Time.WebApi.Tests.
Validación
- Tests de humo (TimeTest) ejecutados exitosamente.
Estrategia
- Mantener NUnit3TestAdapter actualizado. Evaluar unificación.
Caso de Estudio: Implementación NUnit (Internet Banking Web)
Arquitectura Espejo y Base de Pruebas - Responsable: Ing. Arnold Delgado Trejos
Implementación de NUNIT Sobre Sitios IB - OverviewEstructura
- Diseño Multicapa con estructura espejo (`Ada`, `Alias`, etc.) para pruebas unitarias puras.
- Base Class Library .NET Framework 4.8.
Implementación
- Stack NUnit 3.13.3 + NUnit3TestAdapter 4.5.0 + Microsoft.NET.Test.Sdk 17.9.0.
- Core Clase `TestBase.cs` para configuración común y mocks.
Validación
- Resultado Proyecto operativo y ejecutable desde Visual Studio.
- Caso Validación de lógica de negocio del módulo `Ada` aislada de la UI.
Caso de Estudio: Migración MSTest a NUnit (InternetBanking WCF)
Proyecto: BNCR.InternetBanking.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez
NUnit - OverviewLimpieza de Referencias
- Eliminado
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. - Motivo Bloqueaba depuración y priorizaba runner antiguo.
Implementación
- Paquetes NUnit 3.13.3, NUnit3TestAdapter 4.5.0, Test.Sdk 17.9.0.
- Refactor Migración de clases: Ahorro_Test, BnFondos_Test, Limites_Test, etc.
- Cambios
[TestClass]a[TestFixture].
Impacto
- Beneficio Alineamiento con estándares CI/CD y eliminación de dependencias obsoletas.
- Validación Ejecución exitosa en VS 2019 y .NET 4.8.
Caso de Estudio: Transferencias WCF (Estrategia Dual NUnit)
Sprints 25.22 - HU 829197 - Responsable: Ing. Aldo Maynor Ulate Shedden
NUnit - OverviewEstrategia por IDE
- VS 2019 Rama V19 con NUnit 3.14.0 + Adapter 3.17.0.
- VS 2022 Rama V22 con NUnit 4.4.0 + ClassicAssert.
Hallazgos de Ambiente
- Deprecación System.Data.OracleClient.
- Base de Datos Faltan SPs y errores de acceso denegado.
Resultado
- Implementación Unit Testing configurado (63 pruebas totales).
- Estandarización Cambio de atributos
[TestMethod]a[Test].
Caso de Estudio: BN-Valores WCF (Estrategia Dual NUnit)
Sprints 25.22 - HU 834582 - Responsable: Ing. Aldo Maynor Ulate Shedden
NUnit - OverviewEstrategia por IDE
- VS 2019 Rama V19 con NUnit 3.14.0.
- VS 2022 Rama V22 con NUnit 4.0.0.
- Objetivo Mantener compatibilidad hasta migración total de IDEs.
Bloqueo de Ejecución
- Estado 20 Pruebas Totales / 20 Fallidas.
- Causa Falta de string de conexión a Base de Datos en el entorno de pruebas.
Implementación
- Configuración Proyectos configurados y compilando.
- Atributos Migración exitosa de MSTest a NUnit en el código fuente.
Caso de Estudio: Migración BN-Servicios a NUnit
Refactorización y Eliminación de Try-Catch (13 Ene 2026) - Responsable: Ing. Luis Manuel Corea
NUnit.NET - OverviewDiagnóstico Inicial
- Dependencia Uso de
MSTestlimitando modernización. - Anti-patrón Bloques
try-catchsilenciaban errores reales y forzabanAssert.Failsin StackTrace.
Ejecución Técnica
- Migración MSTest → NUnit 4.4.0.
- Refactor Eliminación masiva de try-catch en 11 clases (Pagos, Transferencias, etc.).
- Aserciones Modelo de Restricciones:
Assert.That(res, Is.Not.Null).
Valor Entregado
- Observabilidad Errores muestran la línea exacta en el BL, no un mensaje genérico.
- Modernización Stack compatible con .NET 4.6.2+ y CI/CD.
Caso de Estudio: Migración Puntos Solidarios a NUnit
Refactorización y Fail Fast (05 Feb 2026) - Responsable: Ing. Luis Manuel Corea
NUnit.NET - OverviewDeuda Técnica
- Anti-Patrón Bloques
try-catchocultaban el stack trace real. - Legacy Dependencia de MSTest limitando CI/CD.
Refactorización
- Migración MSTest → NUnit 4.4.0 (Constraint Model).
- Limpieza Eliminación de try-catch para permitir "Fail Fast".
- Dependencia Inclusión explícita de
BNCR.Servicios.Trace.
Resultado
- Diagnóstico Exposición inmediata de la causa raíz de errores.
- Cobertura Migración exitosa de
PuntosSolidariosTest.cs.
Caso de Estudio: Actualización NUnit en BNCR.Firmador
Actualización a versión 4.4.0 (21 Oct 2025) - Responsable: Ing. Arnold Delgado Trejos
NUnit - OverviewResumen de Upgrade
-
Alcance
Actualización del proyecto de pruebas
BNCR.Firmador.Tests. - Salto de Versión Actualización exitosa de NUnit 2.6.3 a NUnit 4.4.0.
- Estado Coexistencia con MSTest sin conflictos.
Procedimiento y Validación
-
Inyección
Actualización vía NuGet. Inclusión de
NUnit3TestAdapter. -
Validación
Pruebas de humo con clase referencia
BCCRFirmadorTest. -
Método Clave
ValidarElServicio(Verificación de disponibilidad).
Conclusión
- Resultado Compilación y ejecución de tests exitosa.
- Mitigación Se mantiene compatibilidad con atributos MSTest existentes mientras se habilita NUnit 4 para nuevos tests.
Caso de Estudio: Migración MSTest a NUnit (Banca Electrónica)
Proyecto: BNCR.BancaElectronicaServicios.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez
NUnit - OverviewObjetivo del Cambio
-
Modernización
Migración del framework nativo
MSTesthacia NUnit para mejorar compatibilidad y estandarización. - Alcance 15 clases de prueba afectadas (Cuentas, Pagos, Seguridad, Transferencias, etc.).
Ejecución Técnica
-
Paquetes Instalados
- NUnit 3.13.3
- NUnit3TestAdapter 4.5.0
- Microsoft.NET.Test.Sdk 17.9.0
-
Refactorización
Reemplazo masivo de atributos:
[TestClass] -> [TestFixture],[TestMethod] -> [Test].
Validación Exitosa
- Resultados Compilación exitosa y ejecución completa desde Test Explorer sin errores.
- Beneficio Entorno preparado para CI/CD y reducción de dependencias obsoletas de VS.
Caso de Estudio: Migración MSTest a NUnit (Cuentas WCF)
Proyecto: BNCR.CuentasServicios.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez
NUnit - OverviewObjetivo del Cambio
- Meta Modernizar entorno de pruebas migrando de MSTest a NUnit.
- Alcance Proyecto
BNCR.CuentasServicios.Test, specifically claseCuentasTest.cs.
Ejecución Técnica
- Paquetes Install NUnit 3.13.3, Adapter 4.5.0, Test.Sdk 17.9.0.
- Refactor
[TestClass] -> [TestFixture],[TestMethod] -> [Test].
Validación
- Resultado Compilación exitosa y ejecución correcta en Test Explorer.
- Impacto Sin afectación funcional al servicio WCF.
Caso de Estudio: Migración MSTest a NUnit (Tarjetas WCF)
Proyecto: BNCR.Tarjetas.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez
NUnit - OverviewContexto y Hallazgo
- Objetivo Migrar de MSTest a NUnit en .NET 4.7.2.
- Limitación Técnica El paquete
Microsoft.NET.Test.Sdkno es compatible conpackages.config. - Solución Se confirmó que solo con
NUnit3TestAdapteres suficiente para la ejecución.
Ejecución Técnica
- Paquetes NUnit 3.13.3 + Adapter 4.5.0.
- Refactor
[TestClass] -> [TestFixture],[TestMethod] -> [Test]enTarjetasTest.cs. - Limpieza Eliminación de referencias
Microsoft.VisualStudio.TestTools.
Validación Exitosa
- Resultado Compilación correcta y detección de pruebas en Test Explorer.
- Impacto Cero afectación al servicio WCF productivo.
Caso de Estudio: Migración MSTest a NUnit (Seguridad WCF)
Proyecto: BNCR.Seguridad.Test - Responsable: Ing. Joshua Stif Murillo Rodríguez
NUnit - OverviewContexto y Limpieza
- Hallazgo Referencia a
Microsoft.VisualStudio.QualityToolsforzaba el uso del runner antiguo. - Acción Eliminación de la DLL conflictiva y desinstalación de MSTest.
Implementación
- Paquetes NUnit 3.13.3, Adapter 4.5.0, Test.Sdk 17.9.0.
- Refactor Migración de
ClientesTest,DeshabilitarTokenTest,TransaccionesDTATes.
Impacto
- Estandarización Alineación con CI/CD y eliminación de dependencias legacy de VS.
- Validación Ejecución correcta de pruebas y depuración (breakpoints).
Caso de Estudio: Implementación NUnit (BN-Páguese)
Inyección de Dependencias y Validación (13 Ene 2026) - Responsable: Ing. Arnold Delgado Trejos
NUnit - OverviewAlcance
- Proyecto
BNCR.BNPagueseIB.Test(WCF). - Objetivo Modernizar framework de pruebas a NUnit 4.4.0.
Implementación
- NuGet Instalación de NUnit 4.4.0.
- Adapter Inclusión opcional de NUnit3TestAdapter para Test Explorer.
Validación
- Smoke Test Ejecución exitosa de
ClienteTest.ConsultaEstadoCliente_OK. - Estado Sin conflictos con attributes MSTest existentes.
Caso de Estudio: Migración y Diagnóstico (Sinpe Móvil)
Auditoría de Obsolescencia (27 Ene 2026) - Responsable: Ing. Rubén Hernández Céspedes
Nunit - OverviewDiagnóstico Inicial
- Estado Tests inconclusos. Uso incorrecto de
try-catchocultando errores. - Código Ausencia total de aserciones (Asserts).
Acciones Correctivas
- Migración MSTest -> NUnit 3.13.2.
- Limpieza Eliminación de try-catch y estandarización a AAA.
Hallazgo Crítico
- Resultado Tests fallan por conexión.
- Conclusión WCF no desplegado en ningún ambiente. Proyecto presuntamente descontinuado.
Caso de Estudio: Implementación NUnit (BN-Vital)
Inyección de Dependencias y Validación (27 Ene 2026) - Responsable: Ing. Arnold Delgado Trejos
NUnit - OverviewAlcance
- Proyecto
BNCR.BNVital.Test(WCF). - Objetivo Modernizar framework de pruebas a NUnit 4.4.0.
Implementación
- NuGet Instalación de NUnit 4.4.0.
- Adapter Inclusión opcional de NUnit3TestAdapter para Test Explorer.
Validación
- Smoke Test Ejecución exitosa de
ClienteTest.ConsultaEstadoCliente_OK. - Estado Sin conflictos con atributos MSTest existentes.
Caso de Estudio: Implementación NUnit (Transferencias Web API)
Inyección de Dependencias y Validación (10 Feb 2026) - Responsable: Ing. Arnold Delgado Trejos
NUnit - OverviewAlcance
- Proyecto
BNCR.Transferencias.Test(WCF). - Objetivo Modernizar framework de pruebas a NUnit 4.4.0.
Implementación
- NuGet Instalación de NUnit 4.4.0.
- Adapter Inclusión de NUnit3TestAdapter para Test Explorer.
Hallazgos y Riesgos
- Estado Pruebas exitosas (e.g.
ConsultaEstadoCliente_OK). - Deuda Técnica Gran cantidad de métodos de prueba comentados en el código fuente.
Caso de Estudio: Actualización NUnit (IB Móvil Empresarial)
Inyección de Dependencias y Pruebas (23 Sep 2025) - Responsable: Ing. Arnold Delgado Trejos
NUnit - OverviewAlcance del Upgrade
- Proyecto
BNCR.IBMovil.Test. - Salto de Versión Actualización de NUnit v2.6.3 (.NET 4.0) a v4.4.0 (.NET 4.7.2).
Validación
- Smoke Test Ejecución exitosa de
BitacoraIBTest.EscribirBitacora_OK. - Estado Compilación y ejecución correctas desde Test Explorer sin incidencias.
Riesgos y Deuda Técnica
- Hallazgo La mayoría de los métodos en la clase de prueba actual se encuentran comentados.
- Recomendación Unificar el framework de pruebas y actualizar el Runner/Adapter para CI/CD.
Gestión de Documentos
Caso de Estudio: Remoción iTextSharp (BNCR.Firmador)
Limpieza de Dependencias (04 Nov 2025) - Responsable: Ing. Luis Manuel Corea C.
iTextSharp - OverviewDiagnóstico
- Hallazgo La librería solo existía en proyectos de prueba (
BNCR.Firmador.TestySellador.Test). - Estado Código comentado, sin uso activo en producción (BL/DAL).
Ejecución
- Acción Eliminación de referencias en
packages.configy archivos.csproj. - Limpieza Borrado de carpetas de paquetes y binarios.
Resultado
- Compilación Exitosa (Clean/Rebuild).
- Optimización Reducción del tamaño del despliegue y eliminación de deuda técnica.
Caso de Estudio: Migración iTextSharp a QuestPDF (Banca Electrónica)
Modernización de Motor de Reportes (18 Nov 2025) - Responsable: Ing. Arnold Delgado Trejos
ITextSharp - OverviewObjetivo y Alcance
- Meta Eliminar dependencia obsoleta de iTextSharp y estandarizar con QuestPDF.
- Proyectos
BNCR.BancaElectronica.Servicios.BLyAPI.
Ejecución Técnica
- Reescritura Método
ObtenerPDFmigrado a Fluent API de QuestPDF. - Limpieza Eliminación de referencias en 5 controladores API (Tarjetas, Cuentas, etc.).
Validación QA
- Visual Comparación 1:1 de PDFs generados (mismos estilos y tablas).
- Funcional Carga correcta en Web y Móvil.
Protocolos de Datos (OData)
Caso: Limpieza OData en time-web-api-raiz
Responsable: Ing. Joshua Stif Murillo Rodríguez
Microsoft.Data.OData - OverviewAnálisis
- Paquetes OData instalados sin referencias en código WCF.
Limpieza
- Eliminación de referencias para reducir peso y riesgos.
QA
- Compilación y funcionalidad WCF validadas.
Investigaciones Técnicas
Estrategia: CSL + EntLib 6.x y Alerta de Riesgo Legacy
Definición Arquitectónica e Investigación de Riesgos (16 Dic 2025) - Responsable: Ing. Luis Manuel Corea Cabrera
Investigación: Upgrade a EnterpriseLibrary 6.x - OverviewProblema y Bloqueo Legacy
- Acoplamiento EntLib 5.0 depende fuertemente de Unity y CSL para instanciar objetos.
- ⚠ Tríada del Bloqueo Unity 2.x exige CSL 1.0. Eliminarlo rompe el runtime irremediablemente.
Solución e Independencia
- Independencia EntLib 6.0 gestiona su propia configuración, haciendo obsoleto el uso de CSL para la capa Data.
- Viabilidad Migrar Unity a versiones recientes está descartado por su alto costo y riesgo funcional.
Procedimiento y Protocolo
- Procedimiento Estándar 1. Limpieza de NuGet (CSL). 2. Update a EntLib 6.x. 3. Ajuste de Binding Redirects en web.config.
- 🛑 Protocolo de Seguridad Si el proyecto utiliza Unity 2.x: STOP. No eliminar CSL bajo ninguna circunstancia.
Mejoras a Implementar
Calidad de Código y Seguridad
- Métricas de Code Coverage Incrementar la cobertura de pruebas unitarias para reducir deuda técnica. Se pondrá foco en eliminar malas prácticas y código duplicado detectado.
- Análisis Estático (SonarQube) Mejorar las métricas reportadas por SonarQube, resolviendo "Code Smells" y vulnerabilidades potenciales.
- Gestión de Vulnerabilidades Búsqueda proactiva de vulnerabilidades en dependencias. Estrategia de actualización constante a versiones nuevas y eliminación definitiva de versiones obsoletas.
Estrategia de Modernización
- Upgrade a .NET Core Estimación de esfuerzo para migrar los servicios WCF hacia .NET Core / .NET 6+, asegurando soporte a largo plazo (LTS).
- Estandarización de IDE Oficializar el uso de Visual Studio 2022 para todo el equipo y retirar el soporte a VS2019, aprovechando las mejoras de rendimiento y herramientas de 64 bits.
Estandarización de Librerías Core
-
Upgrade BNCR.Helper
Estimación para actualizar la librería base del banco. Se buscará estandarizar la serialización JSON migrando de
Newtonsofta System.Text.Json en capas medias y WCF para mejorar el rendimiento. - Corrección Error SOA.API Resolución de conflictos con Newtonsoft. Se recomienda migrar a la versión 1 de BNCR.Helper como solución definitiva (evitando parches temporales como actualizar atributos).
- BNCR.Mapper Estandarizar el uso de la librería de mapeo, migrando todos los proyectos de la Versión 1 a la Versión 2.
Herramientas y Procesos
- Colecciones de Postman Crear y mantener una colección de Postman en el repositorio Git de cada proyecto WCF. Esto facilitará las pruebas de integración y el onboarding de nuevos desarrolladores.
- Estimaciones Actualización del Excel de control con nuevas estimaciones ajustadas a la realidad del proyecto tras los hallazgos recientes.
Métricas de Ejecución
Tareas por Sprint
Carga por Ingeniero
Top Tecnologías
Resumen
| Métrica | Valor | Detalle |
|---|---|---|
| Total Tareas | 45 | Casos de Estudio Documentados |
| Sprints | 10 | 25.21 - 26.04 |
| Dominante | NUnit / CSL | 68% de los casos |
Siguientes Proyectos a Analizar/Actualizar
Backlog de Tareas Pendientes
| TP / Entorno | Proyecto | Librería a Actualizar |
|---|---|---|
| DEV_IB_WCF | archivo-virtual-ib-wcf-raiz | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | autenticacion-raiz | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | bitacora-ib-wcf-raiz - Repos | EnterpriseLibrary.Data V4 |
| DEV_IB_WCF | bn-custodio-wcf-raiz | EnterpriseLibrary.Data V6 |
| DEV_IB_WCF | bn-fondos-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | bn-paguese-ib-wcf | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | bn-servicios-raiz - Repos | EnterpriseLibrary.Data V6 |
| DEV_IB_WCF | bn-servicios-raiz - Repos | EnterpriseLibrary.Common.dll V3 |
| DEV_IB_WCF | bn-valores-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | bn-vital-wcf-raiz | EnterpriseLibrary.Data V6 |
| DEV_IB_WCF | buc-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | carga-archivo-xml-raiz - Repos | EntityFramework V6 |
| DEV_IB_WCF | catalogos-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | cheques-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | conector-ad-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | comercios-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | comprobantes-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | cuentas-movil-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | cuentas-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | entretenimiento-wcf-raiz - Repos | EnterpriseLibrary.Data V4 |
| DEV_IB_WCF | firmador - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | internet-banking-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | inversiones-wcf-raiz | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | listado-archivos-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | m-administrador-ib-wcf-raiz | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | menu-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | monedero-ib-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | pago-servicios-wcf-raiz - Repos | Oracle.ManagedDataAccess |
| DEV_IB_WCF | pagos-moviles-wcf-raiz | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | puntos-solidarios-wcf-raiz | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | seguridad-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | siacc-wcf-raiz | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | sinpe-dtm-wcf-raiz | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | sinpe-movil-wcf | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | sinpe-tr-wcf-raiz - Repos | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | sinpe-wcf-raiz - Repos | EnterpriseLibrary.Data V3 |
| DEV_IB_WCF | tarjetas-wcf-raiz | EnterpriseLibrary.Data V5 |
| DEV_IB_WCF | pago-servicios-wcf-raiz - Repos | EnterpriseLibrary.Data V6 |
| Dev_ComponentesComunes | notificaciones-net | Newtonsoft.Json.4.0.8 |