139
The Or
i
gi
nalHacker–www.
or
i
gi
nal
hacker
.
or
g
®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA
INGENIERÍA
DE SOFTWARE Y
ESTRUCTURAS DE
DIRECTORIOS DEFINITIVAS
EN APLICACIONES MVC
MODULARES
LO PADECÍ DURANTE AÑOS.
DURANTE AÑOS ME DEDIQUÉ
A INVESTIGAR Y TRATAR DE
DESCUBRIR UN ESQUELETO
QUE RESULTASE TAN ÓPTIMO
COMO IRREFUTABLE. LA
CREACIÓN DEEUROPIO
ENGINE ME AYUDÓ MUCHO EN
EL HALLAZGO DE UNA
RESPUESTA Y AHORA, TRAS
DOS AÑOS DE
CONSTANTES PRUEBAS
SOBRE ALGO MÁS DE 70
APLICACIONES CREADAS ,
PUEDO CONTARLES MI
PROPUESTA SIN MIEDO A
COMETER ERRORES.
E
nredos, desprolijidades, decisiones «provisorias para
siempre», son solo algunas de las tantas causas que
generan el malestar y la desesperación que todo
programador padece de formapermanente en su carrera como
desarrollador de Software y a pesar de haber leído los mejores
libros, estudiado con los mejores docentes, seguido los mejores
consejos y haberse mantenido actualizado sobre los últimos
avances en tecnología, la desgastante sensación nunca
desaparece.
Parece una introducción irónica, casi sarcástica, pero no lo es. Es la
pura realidad que vivo día a día cuando revisoalgún código en
GitHub, intento hacer algo de ingeniería inversa sobre alguna app o
simplemente
escucho
padecer
a
mis
alumnos.
Pues
la
organización del código fuente, la estructura interna de una
aplicación y su esqueleto, representan el 80% del éxito de
una aplicación. Y si alguna de estas falla, el fracaso del Software
es un hecho inminente.
LA
IMPORTANCIA CONTAR CON UN SISTEMA BIENORGANIZADO
Las bases de una aplicación modular, no son solo un formalismo
técnico de moda. Por consiguiente, sus principios de portabilidad,
encapsulación e independencia, deben ser respetados sin
margen de error.
Un sistema modular es aquel que se compone de un número desconocido de aplicaciones denominadas
«módulos» y que permite la incorporación o eliminación de un módulo sin alterar en absoluto lasaplicaciones
The Or
i
gi
nalHacker–www.
or
i
gi
nal
hacker
.
or
g
®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA
8
restantes. De esta forma, un sistema modular que hoy cuenta con un módulo de ventas y otro de costos,
mañana podrá contar con un módulo extra de seguridad social sin que los módulos de ventas y costos se vean
afectados.
Por otra parte,es norma inviolable, que un sistema modular cuente con un núcleo independiente, que pueda
mantenerse, actualizarse y modificarse sin que ello afecte a los módulos del sistema.
Por supuesto que todo esto no se logra solo con una estructura interna coherente. Pero igual de cierto es, que
contar con un esqueleto irrefutable, nos soluciona el 80% del problema.
PROPUESTA ESTRUCTURAL
Como comenté alprincipio, tras un largo período de pruebas e investigaciones, logré dar con una estructura
que al momento, a demostrado dar los mejores resultados. Esta estructura que propongo no es nueva. Parte
de ella puede verse sugerida por grandes autores como Martin Fowler 4 y aplicada por numerosos
frameworks en diferentes lenguajes. Yo simplemente he tomado esta arquitectura y he creado un híbrido que
tomalo mejor de ésta sumando unos toques propios muy sutiles.
Exteriormente, el esqueleto estructural de un sistema modular MVC (independientemente del lenguaje
con el que se encuentre creado), debería verse exactamente como el siguiente (algunos nombres pueden
variar):
.
├──
├──
│
│
├──
├──
└──
apps*
common
├── custom
└── libs
core
static*
tests
Aquí se almacenarán todas las aplicaciones(módulos) del sistema
Destinado al almacenamiento de archivos estáticos
Los asteriscos * indican que el nombre del directorio puede variar
SOBRE
LOS NOMBRES VARIABLES
El directorio apps tiene por objetivo el almacenamiento de los módulos del sistema (más adelante veremos su
estructura interna). Por lo tanto, nombres como applications y modules también son válidos. Es
importante que se conserve un...
Regístrate para leer el documento completo.