jueves, 23 de agosto de 2012

Algunas prácticas de desarrollo de aplicaciones web para asegurar calidad, mantenibilidad, escalabilidad y seguridad


Imagen de: Picasa Web Albums

En el entorno actual, cada vez más los clientes y usuarios de aplicaciones web exigen desarrollos en menor tiempo, exigiendo un “time to market” cada vez más corto, por lo cual existe la tentación de desarrollar sin prácticas de diseño y programación que aseguren la mantenimiento, continuidad y escalabilidad de las soluciones, mejorando el tiempo a expensas de la calidad.
 
En este artículo se presentan una serie de buenas prácticas en diseño y desarrollo de aplicaciones web y arquitectura orientada a servicios (SOA), abarcando prácticas de ingeniería del software, diseño y programación orientado a objetos, uso adecuado de patrones en el modelo de tres capas y estándares de desarrollo.

Estas prácticas, si bien pueden representar un mayor costo y tiempo cuando se comienza a desarrollar una nueva aplicación, representará beneficios en la capacidad de las aplicaciones de escalar y mantenerse. Presentamos a continuación estas prácticas:

Diseño e ingeniería de software orientado a objetos

  • Aplicar el patrón de experto en información / responsabilidad única, bajo el cual a una clase se le asigna una única responsabilidad.
  • Reducir al mínimo el grado de acoplamiento entre componentes de software. 
  • Maximizar el grado de cohesión y no diseñar llamadas no estructuradas entre componentes.
  • Aplicar el patrón de creador, bajo el cual una clase B puede crear a una clase A sólo si: B agrega, contiene, registra instancias, utiliza estrechamente o tiene los datos de inicialización de A.
  • Aplicar el patrón de controlador, bajo el cual la clase controladora o bien representa al sistema global o a uno de sus casos de uso (un controlador por caso de uso). 
  • Evitar diseñar objetos con gran cantidad de métodos y/o códigos extensos. 
  • Evitar agrupar métodos de funcionalidades o entidades de negocio no relacionados en una misma clase, en su lugar, contemplar clases por entidad de negocio. 
  • Diseñar la aplicación para que la mayor cantidad de funciones de procesamiento de datos estén la base de datos (vía procedimientos almacenados). 
  • Simplificar el diseño de base de datos, evitando múltiples tablas relacionadas innecesarias. 

Implementación de estándares de programación

  • Escribir los programas bajo el principio de “mantenerlo simple” (Programas sencillos).
  • Diseñar e implementar la paquetería de software de forma estructurada, modular y jerárquica, siguiendo el modelo de tres capas por funcionalidad de negocio. 
  • Definir y seguir estándares para asignar nombres a paquetes, tales como nombre de organización, empresa, aplicación, módulo o capa. (Buscar ejemplo). 
  • Definir y seguir estándares para asignar nombres a clases, atributos, métodos, variables, funciones etc. 
  • Colocar nombres descriptivos a funciones, clases, métodos, variables, funciones etc.
  • No usar nombres de variable de un solo carácter.
  • Elabore los programas “indentando” (sangría) los códigos entre corchetes o llaves (cuerpo de programas, if, whiles, funciones), esto facilita la lectura del código. 
  • Aplicar los conceptos de programación orientada a objetos de herencia, encapsulamiento, polimorfismo, entre otras, maximizando la reutilización.
  • Usar objetos de transferencia de datos (DTO) para evitar métodos con gran cantidad de parámetros.


Buenas prácticas de desarrollo y programación

  • Evitar hacer múltiples llamadas a funciones, métodos u otros componentes para obtener los mismos valores, haciendo uso de variables. 
  • Utilizar clases especializadas en validaciones de formato de texto, números y fechas, en lugar de replicar dicha lógica en toda la aplicación. 
  • Centralizar los accesos a base de datos en componentes / clases (DAO). 
  • Garantizar que cada componente de una capa acceda únicamente a la capa adyacente. 
  • Agrupas líneas de código comunes en procedimientos o funciones.
  • Evitar dependencia en los componentes de lógica de negocio de variables enviadas como parámetros.

Buenas prácticas para el manejo de sesiones

  • Evitar registro en variables de sesión de datos que no se requieran utilizar. 
  • Evitar dependencias de variables de estado que puedan perder vigencia durante su ejecución. 
  • Manejar información sensible por medio de enmascaramiento y mantenerla en sesión solamente durante la petición (Request) 

Vista Controlador 

  • Utilizar bondades lenguajes de programación para aislar los controladores del exterior y gestionar las dependencias entre controladores. 
  • Implementar ciclos de vida de tipo request para los controladores de vista. 
  • Usar componentes de tipo “Service Locator” para llamadas a objetos. 
  • Implementar filtros para evitar que los usuarios puedan acceder directamente a todas las URLs de un sitio.

Documentación de código 

  • Elabore un seudo código o diagrama (ej. Diagrama de secuencia) de sus programas.
  • Agregar suficientes comentarios estructurados al código, de tal forma que puedan generarse documentación a partir de los mismos.
  • Hacer uso extensivo de los comentarios. 
  • No entregar desarrollos sin comentarios.
  • Cada programa debe comenzar con un comentario que describa su propósito. 


Conclusión

Está demostrado que el costo de corregir un incidente es 10 veces mayor después que el mismo ha sido entregado a inspección de calidad, en lugar de diseñar la calidad dentro del proceso de programación. Las mejoras mencionadas en este artículo permitirán desarrollos de mejor calidad y con menor cantidad de incidencias de calidad.

Asimismo, al desarrollarse bajo prácticas de programación estructuradas y patrones conocidos, la aplicación adquirirá un mayor grado de mantenibilidad y escalabilidad, facilitando el trabajo e incrementando la productividad del equipo de mantenimiento. 

Otros artículos


No hay comentarios :

Publicar un comentario

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.