Auditoría de Código Fuente Microsoft.Net
El objetivo de esta Auditoría
es corroborar la integridad del código fuente escrito, además de la coherencia
y propiedades de mantenimiento del código fuente desarrollado bajo la
plataforma .Net Web de Microsoft.
Es muy común que obviemos los
estándares o practicas recomendadas, causando problemas al ser liberados en el
ambiente de producción. Por lo tanto en este documento se pretende hacer una
última revisión de todos los objetos a liberar.
Se emplearán herramientas que
ya están incorporadas dentro de Visual Studio 2012, o bien existen de forma
externa tales como FxCorp, CAT .Net, StyleCop, CloneDR los cuales nos
permitirán darle los parámetros siguientes:
Validación de Detección de Violación de Código
Se efectuará análisis de código estático de código .Net., para lo cual se analizarán las bibliotecas de clases. Lo
que se buscará es que cumpla
con las mejores prácticas de .Net
Framework de Microsoft, para lo cual se
podrán dar diversos tipos de análisis:
·
Diseño
·
Globalización
·
Interoperabilidad
·
Mantenibilidad
·
Movilidad
|
·
Rendimiento
·
Portabilidad
·
Confiabilidad
·
Seguridad
·
Uso
|
Métricas de Calidad
Las métricas de código son un
conjunto de medidas de software que proporcionan a los programadores una mejor
visión del código que están desarrollando.
Al aprovechar las métricas de código, los programadores pueden entender
qué tipos y métodos se deben rehacer o probar más a fondo. Los equipos de
desarrollo pueden identificar los riesgos potenciales, entender el estado
actual de un proyecto y seguir el progreso durante el desarrollo del software.
Las métricas que se medirán
son las siguientes:
- Índice de Mantenimiento: Facilidad relativa de mantenimiento del código.
- Complejidad Ciclomática: Complejidad estructural del código calculando el número de rutas de acceso del código diferente del flujo del programa.
- Profundidad de Herencia: Cantidad de definiciones de clase que se extienden a la raíz de la jerarquía de clases.
- Acoplamiento de Clases: Nivel de acoplamiento a las clases únicas a través de parámetros, variables locales, tipos de valores devueltos, llamadas a métodos, instancias genéricas o de plantillas, clases base, implementaciones de interfaces, campos definidos en tipos externos y decoración de atributos.
- Líneas de Código: Número aproximado de líneas del código. El recuento se basa en el código IL y, por consiguiente, no representa el número exacto de líneas en el archivo de código fuente.
Performance
Se efectuarán corridas de cada opción del sistema,
dividiéndolo por módulos, de tal forma que se puedan trazar los tiempos de
ejecución de cada objeto, método, función, componente o clase en el código
fuente.
Este nos dará una estadística de
todos aquellos objetos en el código fuente que deberían revisarse para
distribuir o mejorar las prácticas de codificación que mejoren el performance
de la aplicación.
Estilo (Nomenclaturas)
Se revisarán la nominación de las interfaces, que permitirán
especificar qué normas de denominación deberían aplicarse a ciertas
declaraciones. Normas de denominación
incluyen:
·
Prefijos obligatorios
·
Sufijos obligatorios
·
Los prefijos que se deben evitar.
·
Los sufijos que deben ser evitados.
·
Reglas de la carcasa: Camel, Pascal, en
mayúsculas.
·
Reglas de expresiones regulares.
Las declaraciones a las que se debe aplicar una regla de
denominación, se revisará por una o más normas de congruencia. Se puede especificar en una regla que coinciden:
·
Tipo de declaración.
·
Visibilidad
·
Declaración de atributo se marca con.
·
Clase base de la interfaz (para las clases y las
interfaces).
·
Para una regla de denominación reglas también
los no coincidentes se pueden especificar en forma similar.
Arquitectura
Se verifica que se haya
empleado modelos de capas, sin importar la arquitectura del código fuente. Para ello, se realizarán:
·
Generación de Diagrama de Clases
·
Generación de Estándar del cliente respecto a la
Capa de Presentación
·
Nombres de las Interfaces con el Usuario
·
Estándar del cliente respecto a la Capa de
Negocio
·
Reglas de negocio y componentes de negocio
independientes del servidor
·
Lógica de acceso a Datos (ya sea Bases de Datos
o Archivos de Datos)
Comentarios