Estándares de Documentación - AudioLab Framework¶
Guía Completa para Documentación Consistente y Escalable
🎯 Propósito¶
Este documento define los estándares obligatorios para toda la documentación en AudioLab, garantizando:
- Consistencia - Mismo formato en todo el proyecto
- Escalabilidad - Fácil de mantener a medida que crece
- Descubribilidad - Los desarrolladores encuentran lo que necesitan
- Mantenibilidad - Documentación siempre actualizada
📚 Filosofía de Documentación¶
Principios Fundamentales¶
- Documentation as Code - Docs viven junto al código
- DRY (Don't Repeat Yourself) - Single source of truth
- Progressive Disclosure - De general a específico
- Examples First - Mostrar antes que explicar
- Living Documentation - Actualizar con cada cambio
Tipos de Documentación¶
README.md → Qué es y cómo usarlo (Overview)
ARCHITECTURE.md → Cómo funciona internamente (Design)
API.md → Referencia de funciones (Reference)
GUIDE.md → Tutoriales paso a paso (How-to)
CHANGELOG.md → Historial de cambios (History)
🏗️ Estructura de Carpetas por Nivel¶
Nivel 1: Carpetas Raíz (00-20)¶
Ejemplo: 04_CORE/, 03_INFRA/, 05_MODULES/
Estructura Obligatoria:
XX_NOMBRE/
├── _docs/ # ⭐ OBLIGATORIO
│ ├── README.md # Índice de documentación
│ ├── reports/ # Reportes ejecutivos
│ ├── audits/ # Auditorías del sistema
│ ├── analytics/ # Métricas y análisis
│ ├── architecture/ # Diseño del sistema
│ └── guides/ # Guías de desarrollo
├── XX_00_subsystem/ # Primer subsistema
├── XX_01_subsystem/ # Segundo subsistema
├── ...
├── README.md # ⭐ OBLIGATORIO - Overview del sistema
├── ARCHITECTURE.md # Diseño de alto nivel
├── CMakeLists.txt # Build configuration
└── CHANGELOG.md # Historial de cambios
README.md Obligatorio (Nivel 1):
# XX_NOMBRE - Título Descriptivo
**Brief de una línea**
## 🎯 Propósito
Qué problema resuelve este sistema.
## 🏗️ Arquitectura
Diagrama o descripción de subsistemas:
- XX_00_subsystem - Qué hace
- XX_01_subsystem - Qué hace
- ...
## 📖 Documentación
- [Architecture Overview](_docs/architecture/)
- [Latest Audit](_docs/audits/)
- [Development Guides](_docs/guides/)
## 🚀 Quick Start
```bash
# Ejemplo mínimo de uso
📊 Status¶
- Version: X.Y.Z
- Status: Production Ready / In Development / Deprecated
- Last Updated: YYYY-MM-DD
XX_YY_subsystem/ ├── YY_00_component/ # Primer componente ├── YY_01_component/ # Segundo componente ├── ... ├── tests/ # ⭐ OBLIGATORIO - Tests unitarios │ ├── test_.cpp │ └── CMakeLists.txt ├── examples/ # RECOMENDADO - Ejemplos de uso │ ├── example_.cpp │ └── README.md ├── benchmarks/ # OPCIONAL - Performance tests │ └── bench_*.cpp ├── README.md # ⭐ OBLIGATORIO ├── CMakeLists.txt # Build configuration └── CHANGELOG.md # RECOMENDADO
--- ### Nivel 2: Subsistemas (XX_YY_subsystem) **Ejemplo**: `04_00_type_system/`, `04_02_math_primitives/` **Estructura Obligatoria**:**README.md Obligatorio** (Nivel 2): ```markdown # Subsystem Name **Brief description** ## Purpose What this subsystem does. ## Components - `YY_00_component/` - Description - `YY_01_component/` - Description ## Usage ```cpp // Minimal working example #include "subsystem/header.hpp" int main() { // Example code }
API Reference¶
Key Functions¶
functionName()- What it doesanotherFunction()- What it does
Testing¶
Performance¶
| Operation | Time | Notes |
|---|---|---|
| Function1 | ~Xms | Description |
Dependencies¶
- Internal: XX_00, XX_01
- External: C++17 STL
See Also¶
- Related Subsystem
- Architecture YY_ZZ_component/ ├── include/ # OPCIONAL - Headers públicas │ └── component.hpp ├── src/ # OPCIONAL - Implementation │ └── component.cpp ├── tests/ # ⭐ OBLIGATORIO SI HAY CÓDIGO │ ├── test_component.cpp │ └── BUILD_INSTRUCTIONS.md # Si setup especial ├── README.md # ⭐ OBLIGATORIO └── CMakeLists.txt # Si compila
Functions¶
Examples¶
Implementation Notes¶
- Design decisions
- Performance characteristics
- Edge cases
Testing¶
---
## 📝 Templates de Documentación
### Template: README.md (Subsistema)
```markdown
# [Subsystem Name]
**[One-line description of purpose]**
---
## 🎯 Purpose
[2-3 sentences explaining what problem this solves]
---
## 🏗️ Architecture
---
## 💡 Key Concepts
### [Concept 1]
[Explanation]
### [Concept 2]
[Explanation]
---
## 🚀 Quick Start
```cpp
// Minimal working example
#include "[subsystem]/[header].hpp"
int main() {
// Example code
return 0;
}
📖 API Reference¶
Core Types¶
| Type | Description |
|---|---|
TypeName |
What it represents |
Key Functions¶
| Function | Description | Time Complexity |
|---|---|---|
functionName() |
What it does | O(1) |
🧪 Testing¶
Test Coverage: XX% (goal: 80%+)
⚡ Performance¶
| Operation | Benchmark | Notes |
|---|---|---|
| Operation1 | ~Xµs | [Context] |
🔗 Dependencies¶
Internal:
- XX_YY_other_subsystem - Why needed
External: - C++17 Standard Library - [Optional external deps]
📚 See Also¶
Status: [Production / Development / Deprecated] Version: X.Y.Z Last Updated: YYYY-MM-DD
---
### Template: ARCHITECTURE.md (Sistema Completo)
```markdown
# [System Name] - Architecture
**[System-level description]**
---
## 🎯 Overview
[High-level description of system purpose and design]
---
## 🏗️ Layer Architecture
---
## 📦 Subsystem Details
### [Subsystem 1]
**Responsibilities**:
- [Responsibility 1]
- [Responsibility 2]
**Key Components**:
- `component_1` - [Description]
- `component_2` - [Description]
**Dependencies**: [List]
---
## 🔄 Data Flow
[Explanation of data flow]
---
## 🎨 Design Patterns
### [Pattern 1]
- **Where**: [Subsystem]
- **Why**: [Rationale]
- **Example**: [Code snippet]
---
## 📊 Metrics
| Metric | Value | Target |
|--------|-------|--------|
| Subsystems | X | - |
| Components | Y | - |
| Test Coverage | Z% | 80%+ |
---
## 🔗 Dependencies
[Dependency graph or description]
---
## 📚 References
- [Subsystem Docs](../XX_subsystem/)
- [API Reference](../guides/api_reference.md)
🔍 Checklist de Documentación¶
Para Cada Nuevo Subsistema¶
-
README.mdcon template completo -
tests/directory con al menos 1 test -
examples/con ejemplo mínimo funcional -
CMakeLists.txtsi compila - Entry en CHANGELOG del sistema padre
- Actualizar README del sistema padre
- Actualizar ARCHITECTURE.md si afecta diseño
Para Cada Nueva Función Pública¶
- Documentar en README del componente
- Incluir ejemplo de uso
- Escribir al menos 1 test
- Documentar complejidad temporal si relevante
- Documentar thread-safety si relevante
Para Cada Release¶
- Actualizar CHANGELOG.md
- Verificar que todos los README estén actualizados
- Ejecutar auditoría de completitud
- Generar métricas de cobertura
- Actualizar versión en todos los README principales
🤖 Automatización¶
Scripts Requeridos¶
validate_docs.ps1- Verifica que existan READMEs obligatoriosgenerate_index.ps1- Genera índice de documentacióncheck_examples.ps1- Verifica que ejemplos compilenaudit_completeness.ps1- Genera reporte de gaps
Hooks de Git¶
# pre-commit hook
- Verificar que README existe si se añade código
- Validar formato Markdown
- Comprobar links rotos
📊 Niveles de Completitud¶
Nivel 1: Mínimo Viable ⭐¶
- README.md con Purpose y Quick Start
- Al menos 1 test funcional
Nivel 2: Completo ⭐⭐⭐¶
- README.md completo con template
- Tests con >50% coverage
- Al menos 1 ejemplo
Nivel 3: Ejemplar ⭐⭐⭐⭐⭐¶
- README.md + ARCHITECTURE.md
- Tests con >80% coverage
- Múltiples ejemplos
- Benchmarks si relevante
- Integrado en _docs/ del sistema
🎯 KPIs de Documentación¶
Métricas a Trackear¶
| Métrica | Cálculo | Target |
|---|---|---|
| README Coverage | READMEs / Subsistemas | 100% |
| Example Coverage | Examples / Subsistemas | 80% |
| Test Coverage | Tests / Código | 80% |
| Doc Freshness | Docs < 3 meses | 90% |
Auditorías¶
- Mensual: Verificar READMEs nuevos
- Trimestral: Auditoría completa de sistema
- Anual: Review de arquitectura
🚀 Roadmap de Implementación¶
Fase 1: Foundation (Semana 1-2)¶
- Crear templates en
_templates/ - Implementar scripts de validación
- Documentar 04_CORE como referencia
Fase 2: Rollout (Semana 3-4)¶
- Aplicar estándares a 03_INFRA
- Aplicar estándares a 05_MODULES
- Capacitar equipo en estándares
Fase 3: Automation (Semana 5-6)¶
- Automatizar generación de índices
- CI/CD checks para docs
- Dashboard de métricas
Fase 4: Maintenance (Ongoing)¶
- Auditorías trimestrales
- Actualización de templates
- Mejora continua
📋 Ejemplos de Referencia¶
Ejemplar: 04_00_type_system¶
- ✅ README completo y detallado
- ✅ Ejemplos funcionales
- ✅ Tests comprehensivos
- ✅ Documentación de performance
Ejemplar: 04_02_math_primitives¶
- ✅ README con benchmarks
- ✅ Performance reports
- ✅ Múltiples ejemplos
- ✅ Optimization notes
Necesita Mejora: 04_08_parameter_system¶
- ❌ Sin README principal
- ❌ Sin ejemplos
- ⚠️ Tests parciales
🔗 Herramientas Recomendadas¶
Editores Markdown¶
- VSCode + Markdown All in One extension
- Typora para preview WYSIWYG
Diagramas¶
- Mermaid para diagramas en Markdown
- PlantUML para UML detallado
- Excalidraw para sketches
Validación¶
- markdownlint para linting
- markdown-link-check para links rotos
💡 Mejores Prácticas¶
DO ✅¶
- Empezar con README.md - Antes de escribir código
- Ejemplos mínimos - Que compilen y corran
- Actualizar en el momento - No "después"
- DRY - Linkear en vez de duplicar
- Progressive disclosure - Overview → Details
DON'T ❌¶
- Documentar implementación - Solo API pública
- Copy-paste docs - Usar referencias
- Docs sin ejemplos - Mostrar, no solo decir
- Asumir conocimiento - Explicar términos específicos
- Docs desactualizados - Mejor borrar que mentir
📞 Soporte¶
Para dudas sobre documentación:
1. Consultar este documento
2. Ver ejemplos en 04_00_type_system/
3. Revisar templates en _templates/
4. Contactar al maintainer del sistema
Versión: 1.0.0 Última actualización: 2024-10-16 Próxima revisión: 2025-01-16
Este estándar es obligatorio para todo código nuevo en AudioLab.