AUDITORÍAS / Auditoría de software y código
Auditoría de software, código y deuda técnicaConocer el programa antes de invertir en su siguiente etapa.
Una aplicación puede seguir resolviendo su función y, al mismo tiempo, haberse vuelto difícil de modificar, probar o publicar. Revisamos código, dependencias, pruebas, configuración y recorridos relevantes para explicar qué condiciona su evolución.
No calificamos un sistema por su antigüedad, por el framework que utiliza ni por una puntuación automática. Relacionamos los hallazgos con cambios reales, fallos conocidos y decisiones que la empresa necesita tomar.
EL DIAGNÓSTICO, PASO A PASO
- 01Código y ejecución
- 02Dependencias y pruebas
- 03Prioridades de evolución
Observación → Evidencia → Prioridad
- Pregunta
- ¿Podemos seguir evolucionando este software?
- Trabajo
- Revisión técnica con alcance definido
- Evidencia
- Código, ejecución, pruebas y dependencias
- Resultado
- Hallazgos, riesgos y prioridades
RESULTADO PARA TU PROYECTO
Una base para evolucionar el software sin improvisar
Revisamos el estado del código y las decisiones que dificultan corregir errores o añadir funciones.
Problemas localizados
Áreas con complejidad, dependencias o pruebas insuficientes señaladas con contexto.
Impacto explicado
Relación entre deuda técnica y fallos, retrasos o riesgo de cambios.
Ruta de mejora
Refactorizaciones y comprobaciones priorizadas sin exigir rehacer todo el producto.
EXPERIENCIA DOCUMENTADA
Experiencia documentada, con el alcance real de cada caso
Cuaderno Amarillo: intervenir en código heredado
Trabajamos sobre una plataforma de cursos a medida que ya existía. Es experiencia de intervención en software heredado, sin presentarla como una auditoría integral del código.
Conocer el caso y su alcance →Arternativas: diagnóstico de plataforma
La experiencia de auditorías incluye una revisión técnica y operativa para delimitar prioridades de evolución, diferenciada del trabajo SEO.
Conocer el caso y su alcance →EL RECORRIDO
Tu proyecto, paso a paso
Acordamos el alcance
Definimos preguntas, sistemas y límites de la revisión.
Recogemos evidencias
Comprobamos el estado con pruebas adecuadas al caso.
Analizamos hallazgos
Separamos síntomas, causas y riesgos.
Entregamos prioridades
Explicamos qué corregir y cómo comprobarlo.
LA PREGUNTA
No auditamos el código «en general»: primero definimos qué necesitas decidir
Una empresa puede querer ampliar una función, cambiar de proveedor, comprender errores recurrentes, valorar una migración o comprobar una entrega recibida. Cada pregunta pide revisar módulos, recorridos y dependencias diferentes. Esta especialidad forma parte de nuestras auditorías tecnológicas, cada una con un alcance propio.
Un repositorio grande puede contener años de trabajo. Leerlo entero sin un objetivo no garantiza una respuesta útil; acordamos alcance y muestras suficientes para fundamentar la decisión.
| Decisión | Qué interesa conocer |
|---|---|
| Ampliar una función | Zonas afectadas y dependencias |
| Cambiar de proveedor | Repositorio, entorno, accesos y conocimiento transferible |
| Modernizar | Compatibilidad, dependencias y límites actuales |
| Resolver errores recurrentes | Recorrido, estados y comprobaciones disponibles |
| Recibir una entrega | Alcance pactado, comportamiento y materiales entregados |
CONTEXTO
Antes de juzgar el código necesitamos saber qué sistema estamos mirando
Un repositorio no explica por sí solo qué versión está en producción, qué otros componentes participan ni cómo se configura el entorno. Identificamos, según el alcance, código, dependencias, migraciones, documentación, datos, integraciones y forma de publicación.
Una aplicación puede parecer incompleta porque parte de la lógica reside en otro servicio. También puede parecer ordenada mientras depende de tareas manuales que sólo conoce una persona. Situar el código en su contexto evita ambos errores.
EJECUCIÓN
Poder ejecutar el proyecto forma parte del conocimiento que debe conservarse
Comprobamos qué hace falta para poner en marcha las partes relevantes: versiones, configuración, datos, servicios externos y pasos manuales. Necesitar preparación no convierte un proyecto en malo; la limitación aparece cuando el procedimiento depende de información inaccesible o cuentas personales.
Indicamos qué pudimos reproducir, qué condiciones faltan y cuánto condiciona eso el diagnóstico.
COMPORTAMIENTO
El código se interpreta mejor cuando sabemos qué intenta hacer
Relacionamos los componentes con recorridos y reglas reales. Cuando es viable ejecutamos situaciones representativas y observamos qué partes intervienen. Una función larga no es automáticamente crítica, igual que una clase pequeña no demuestra calidad.
Una regla empresarial puede ser compleja por naturaleza. El problema aparece si está duplicada, dispersa o si cambiarla altera funciones aparentemente independientes. La pregunta es qué dificultad técnica afecta a ese comportamiento concreto.
ESTRUCTURA
Localizar dónde termina una responsabilidad y empieza otra
Revisamos cómo se reparten las responsabilidades en las zonas incluidas. Si una pieza conoce la interfaz, los datos, las reglas y varias integraciones, cualquier modificación puede tener efectos difíciles de anticipar.
Buscamos lógica repetida, reglas repartidas, efectos secundarios poco visibles y módulos que sólo pueden cambiarse juntos. El tamaño de un archivo o una métrica automática pueden orientar la revisión, pero no sustituyen la explicación del efecto real.
DEPENDENCIAS
Una dependencia antigua no es automáticamente deuda crítica
Examinamos la función, versión, mantenimiento y compatibilidad de librerías, frameworks y servicios relevantes. Preguntamos si una dependencia bloquea actualizaciones, presenta un problema conocido, impide la función prevista o compromete otra parte del sistema.
Una tecnología estable puede requerir menos atención que una dependencia reciente que genera incompatibilidades. Si recomendamos actualizar, explicamos qué habría que comprobar antes.
PRUEBAS
No contamos tests: analizamos qué comportamiento protegen
Una carpeta con muchas pruebas puede dejar sin proteger una regla crítica. A la inversa, un sistema con pocas pruebas automáticas puede tener comprobaciones manuales conocidas. Describimos qué cambios serían difíciles de validar y por qué.
Si el diagnóstico revela comportamientos sin protección, la guía de testing de software explica cómo priorizar comprobaciones alrededor de los riesgos reales, sin usar el número de tests como objetivo.
Puede haber cientos de tests y ninguno comprobar que un expediente cerrado no vuelve a facturarse. La cantidad total no responde a la pregunta de negocio.
Una prueba también puede convertirse en deuda
Si depende de detalles internos y se rompe al reorganizar código sin alterar el comportamiento, revisamos si sigue aportando confianza o sólo coste de mantenimiento.
DATOS
Cambiar código también puede significar cambiar datos que ya existen
Revisamos cómo se representa la información relevante y cómo evolucionó su estructura. Campos ambiguos, migraciones acumuladas, datos duplicados o reglas escondidas en el código pueden condicionar una ampliación.
Una versión nueva debe funcionar con los datos reales, no sólo con una base vacía. Identificamos las migraciones o compatibilidades que habría que validar antes de intervenir.
SISTEMAS EXTERNOS
Una dependencia externa puede limitar la evolución
APIs, pasarelas, ERP o proveedores de identidad participan en la arquitectura real. Examinamos los recorridos afectados, los datos compartidos y qué ocurre cuando el otro sistema falla o cambia su interfaz.
Si el siguiente paso consiste en implementar una conexión o corregirla, la intervención corresponde a integración de sistemas y APIs.
FALLOS
Un error útil permite saber qué ocurrió y dónde buscar
Observamos cómo se propagan los errores en las zonas revisadas. Un fallo absorbido puede hacer que una operación parezca completada a medias; uno expuesto sin filtro puede mostrar información interna innecesaria.
Nos interesa qué estado deja la operación, si puede repetirse con seguridad, si queda rastro suficiente y qué información recibe quien debe investigar. Si la necesidad principal son alertas y observación continuada, corresponde a monitorización operativa.
CONFIGURACIÓN
Distinguir el software de aquello que cambia entre entornos
Dominios, rutas, credenciales y servicios externos pueden estar mezclados con el código. Revisamos cómo se suministra la configuración y qué información falta para reproducir el entorno. No presupone que todo proyecto deba tener la misma estructura de desarrollo y producción.
ENTREGA
Cómo se publica una versión también condiciona la evolución
Revisamos el camino que sigue un cambio hasta ponerse en uso: preparación, dependencias, migraciones, pasos manuales y comprobaciones posteriores. Una publicación frágil puede hacer costosa una mejora pequeña.
El diagnóstico identifica ese riesgo. Diseñar pipelines o procedimientos nuevos pertenece a CI/CD y automatización de despliegues.
CONOCIMIENTO
La documentación útil permite entender decisiones y operar el sistema
Comprobamos si existe información suficiente para localizar responsabilidades, preparar el entorno y comprender decisiones que todavía condicionan el trabajo. Documentar cada línea no es el objetivo; tampoco puede sustituirse todo por conocimiento informal de una persona.
Señalamos qué ausencia impide una tarea concreta y qué información convendría recuperar.
DEUDA TÉCNICA
Una limitación se vuelve relevante cuando encarece cambios necesarios
Una decisión anterior puede haber sido razonable. La deuda técnica aparece cuando la estructura actual aumenta de forma apreciable el coste, riesgo o dificultad de cambios que la empresa necesita realizar.
La describimos mediante una relación verificable: cambio previsto → obstáculo observado → consecuencia → alternativa. Un bug, una vulnerabilidad y una función pendiente son problemas distintos; no los llamamos deuda técnica por comodidad.
La auditoría diagnostica el estado actual. Para entender cómo intentamos evitar que esas dificultades se acumulen durante el desarrollo, consulta nuestros criterios de calidad y mantenibilidad del software.
PRIORIDAD
No toda deuda debe pagarse ahora
Una limitación aislada y conocida puede mantenerse si corregirla cuesta más que convivir con ella. Priorizamos según el cambio previsto, la probabilidad de encontrar el obstáculo, su impacto y el esfuerzo de intervención.
| Situación | Decisión posible |
|---|---|
| Afecta a un cambio próximo y bloquea entregas | Intervenir antes o junto a esa entrega |
| Produce fallos repetidos en un recorrido importante | Corregir y definir comprobación |
| Existe, pero no afecta a trabajo previsto | Registrar y revisar más adelante |
| Falta evidencia de impacto | Investigar antes de estimar una solución |
COMPLEJIDAD
Distinguir la complejidad del negocio de la que añade la implementación
Un proceso con tarifas, estados y excepciones puede ser difícil aunque el código esté bien organizado. La auditoría no promete eliminar reglas que el negocio realmente necesita.
Identifica la complejidad accidental: duplicación, dependencias ocultas, conversiones manuales y decisiones que podrían representarse de forma más clara.
REESCRIBIR O EVOLUCIONAR
Reescribir todo exige una justificación propia
Una reescritura puede parecer más limpia que comprender un sistema antiguo, pero también puede perder reglas implícitas, datos y recorridos que hoy funcionan. Antes de recomendarla contrastamos alcance, coste, riesgos de migración y alternativas parciales.
Conservar, corregir o sustituir un componente son opciones distintas. La antigüedad del framework no decide por sí sola el destino de la aplicación.
REFACTORIZAR
Una refactorización necesita objetivo y forma de validación
Refactorizar cambia la estructura interna sin buscar un comportamiento nuevo. Tiene sentido cuando facilita un cambio previsto o reduce un riesgo demostrado. Explicamos qué zona se tocaría, qué comportamiento debe mantenerse y cómo comprobarlo.
Una limpieza estética sin relación con un problema real no obtiene prioridad automática.
LÍMITES
Decir qué no hemos podido verificar es parte del informe
Puede faltar un entorno ejecutable, una cuenta, datos representativos o documentación de un proveedor. No presentamos esas zonas como comprobadas. Distinguimos lo observado, lo inferido y lo que queda pendiente.
Una herramienta automática puede localizar versiones o señalar zonas interesantes; su puntuación no sustituye evidencia de comportamiento e impacto. La incertidumbre se convierte en una tarea concreta de investigación, no en una certeza ficticia.
CAMBIO DE EQUIPO
Un nuevo proveedor necesita más que un repositorio
Revisamos, si ésa es la pregunta, acceso al código, preparación del entorno, dependencias, datos, materiales de entrega y conocimiento que sólo posee el equipo anterior. El informe permite planificar la transición sin atribuir culpas ni obligar al cliente a contratarnos después.
NUEVA ETAPA
Antes de ampliar, identificar qué puede recibir el cambio
Si una empresa quiere añadir funciones importantes, la revisión localiza zonas afectadas, restricciones y comportamiento que debe preservarse. No toda ampliación necesita una auditoría previa; ésta aporta valor cuando la incertidumbre haría arriesgado empezar a construir directamente.
REVISIÓN DE ENTREGA
Comprobar una entrega exige compararla con lo acordado
Cuando revisamos software de otro proveedor solicitamos alcance, requisitos, versión recibida y condiciones de entrega. Diferenciamos incumplimiento funcional, defecto técnico, limitación conocida, mejora opcional y preferencia de implementación.
DEL ENCARGO A UNA DECISIÓN
Seis pasos para que el diagnóstico pueda utilizarse
Definir la pregunta
Qué decisión debe permitir tomar la auditoría.
Reproducir el contexto
Código, entorno, recorridos y materiales disponibles.
Recoger evidencias
Comportamiento, dependencias, pruebas y dificultades observadas.
Relacionar hallazgos
Qué cambia, qué riesgo introduce y qué depende de ello.
Priorizar
Conservar, corregir, refactorizar, investigar o sustituir.
Definir validación
Qué permitirá considerar resuelto cada punto.
UN INFORME PARA PODER ACTUAR
Del hallazgo a una comprobación concreta
El informe indica alcance y fecha, información utilizada, observaciones, evidencias, impacto, prioridades y límites. Distingue lo comprobado de aquello que sólo podemos inferir.
Reescribir toda la aplicación no es una sexta opción automática: sería una decisión de mayor alcance que requiere su propia justificación.
ASÍ SE REDACTA UN HALLAZGO
Una regla compartida cambia precios en varias pantallas
- Observación
- La misma regla de cálculo se implementa en más de un punto del recorrido revisado.
- Evidencia
- Se identifican las rutas y los casos donde los resultados divergen.
- Impacto
- Un cambio comercial puede corregirse en una pantalla y quedar sin aplicar en otra.
- Recomendación
- Concentrar la regla o aclarar responsabilidades antes del siguiente cambio.
- Validación
- Comprobar las combinaciones representativas con el resultado esperado.
Ejemplo ilustrativo del formato del informe; no describe un hallazgo atribuido a un cliente.
Cuando el diagnóstico apunta a una nueva estructura, el siguiente servicio puede ser arquitectura de software. Si la decisión es implementar mejoras, corresponde a evolución y desarrollo de software a medida.
PARA DEFINIR EL ENCARGO
Preguntas antes de empezar
¿Qué diferencia hay entre esta auditoría y una de ciberseguridad?
Esta revisión se centra en evolución, estructura, dependencias, pruebas y mantenimiento. Una auditoría de ciberseguridad estudia controles y riesgos de seguridad con otro alcance.
¿Utilizáis herramientas automáticas?
Pueden ayudar a localizar versiones o zonas a revisar. Las conclusiones no se basan únicamente en una puntuación.
¿Una aplicación antigua necesita reescribirse?
No. Primero comprobamos qué limitaciones afectan a los cambios previstos y qué sigue funcionando.
¿Qué entendéis por deuda técnica?
Una condición del software que aumenta de forma relevante el coste, riesgo o dificultad de cambios que necesitamos realizar.
¿Toda deuda técnica debe corregirse?
No. Puede conservarse si está aislada, se conoce y corregirla cuesta más que convivir con ella.
¿Revisáis todos los archivos?
Depende del alcance. En sistemas grandes concentramos la revisión en módulos, recorridos y dependencias relevantes para la decisión.
¿Necesitáis acceso al repositorio?
Para auditar código, sí. Sin él puede revisarse comportamiento externo, pero no equivale al mismo servicio.
¿Necesitáis ejecutar la aplicación?
Siempre que sea viable aporta evidencia para relacionar estructura y comportamiento. Indicamos expresamente si no pudo hacerse.
¿Revisáis las pruebas existentes?
Cuando forman parte del alcance, evaluamos qué comportamiento protegen y qué riesgos quedan sin comprobar.
¿La auditoría incluye escribir tests o refactorizar?
No por defecto. Primero entregamos diagnóstico y prioridades; la implementación se acuerda como una fase distinta.
¿Podéis revisar el software antes de cambiar de proveedor?
Sí. Revisamos los materiales y accesos disponibles para identificar qué necesitaría el nuevo equipo para continuar.
¿Podéis revisar una entrega de otra empresa?
Sí, si podemos conocer lo acordado y definir con qué criterios se contrasta la versión entregada.
¿El informe obliga a contratar después a dev2bit?
No. El diagnóstico debe servir para tomar decisiones y puede utilizarlo el cliente con otro equipo.
¿Determináis si el código es «bueno» o «malo»?
No emitimos una nota global. Describimos hallazgos concretos, evidencia, consecuencias y decisiones que condicionan.
DESPUÉS DEL DIAGNÓSTICO
Cada fase tiene su propio alcance
El informe puede recomendar conservar, corregir o estudiar una nueva estructura. La programación a medida ejecuta la evolución; la arquitectura de software define una organización futura cuando sea necesaria.
La auditoría aclara el estado de partida; la guía de ingeniería de software muestra cómo organizamos después el cambio elegido, sus comprobaciones y su continuidad.
UNA PREGUNTA CONCRETA ES UN BUEN COMIENZO
¿Qué necesitas entender de tu proyecto?
Cuéntanos qué ocurre, desde cuándo y qué decisión necesitas tomar. Definiremos los sistemas que revisar, la información necesaria y el entregable de la auditoría.
