2. BUENAS PRÁCTICAS DE DISEÑO.
Las metodologías modernas de desarrollo ponen un gran énfasis
sobre la etapa de diseño pues contribuye enormemente a la calidad,
escalabilidad y fiabilidad de una aplicación. Si diseñamos
los componentes de una aplicación de forma reusable y escalable,
el código que programemos en el futuro se construirá sobre
unos cimientos sólidos. Se necesita tratar varios aspectos en esta
etapa, como, por ejemplo, la seguridad, el modelo subyacente de persistencia
y los recursos de la aplicación. Para la mayoría de las aplicaciones,
los problemas comunes tienen soluciones bien conocidas. Trataremos algunas
de ellas en el presente apartado.
2.1. Buena práctica número 2. Diseñe para
el cambio con un modelo de dominio dinámico.
Con la aparición del desarrollo iterativo y de ciclos de desarrollo
más breves, es casi seguro que una aplicación sufrirá cambios
después del diseño inicial. Para manejar efectivamente estos
cambios y conseguir un alto nivel de calidad, los programadores no deberían
volver a programar código ya probado desde cero. Para evitar esto,
se necesitan modelos de dominio dinámicos, es decir, que cambien
de forma ágil.
Existen varias soluciones posibles para implementar un modelo de dominio
dinámico. Las más comunes son el uso de “beans” de
entidad CMP en EJB o de un motor de persistencia convencional
como Toplink. Estas herramientas liberan a los programadores de la tarea
de mantener el acceso a datos y les permiten concentrarse en las reglas
de negocio. Como consecuencia, cuando se cambie el esquema de la base de
datos, se deberán cambiar muchas menos líneas de código
que las que sería necesario modificar si no se utilizaran esas herramientas.
2.2 Buena práctica número 3. Utilice un lenguaje
de modelado estándar.
Los diseñadores y programadores, así como cualquier persona
involucrada en el proceso de desarrollo, necesitan un lenguaje común
para poder comunicarse claramente. El lenguaje unificado de modelado (“Unified
Modelling Language” o UML) provee un lenguaje y una variedad de diagramas
para que los arquitectos y diseñadores puedan explicar conceptos
técnicos complejos de forma sencilla y precisa.
Muchos entornos de desarrollo en Java ofrecen herramientas para generar
código a partir de modelos UML y a la inversa. Esas herramientas
permiten un código bien documentado y una mayor productividad del
programador, sin cargar a este último con el peso de sincronizar
el código con los diagramas UML.
2.3 Buena práctica número 4. Recicle sus recursos.
Fondo Común de Objetos
Las aplicaciones suelen desperdiciar demasiado tiempo recuperando, creando
o destruyendo algunos objetos o recursos complejos. Para evitar esto, se
debería crear un número limitado de recursos y compartirlos
desde un fondo común (“pool”, en inglés). J2EE
gestiona algunos de estos fondos, como, por ejemplo, los de conexiones.
Accediendo a un recurso existente mediante un fondo común, el cliente
disminuye los costos de creación, destrucción e inicialización.
Cuando el cliente acaba con el objeto, devuelve el objeto al fondo común
para que sea utilizado por otros clientes.
Caché
Desde hace mucho tiempo, la industria de la computación ha utilizado
cachés de hardware y software para mejorar el rendimiento desde
el nivel más bajo de hardware a la capa de software más alta.
Una caché no es más que un tipo específico de fondo
común. En vez de guardar en el fondo una conexión u objeto,
se guardan datos remotos, desplazándolos a una ubicación
más cercana al cliente. Muchos vendedores de hardware y software
suministran sus propias cachés de datos para sus servidores Web
y servidores de bases de datos. A pesar de ello, puede ser útil
programar cachés específicas para tareas especiales, como
servicios Web, solicitudes cruzadas de red u otras.
|