viernes, junio 19, 2009

Diseño de arquitecturas I

Joseph Hofstader en el Architecure Journal N° 15 indica que el diseño de la arquitectura de un software tienen 4 aspectos: Conocimiento del dominio, conceptualización, habilidades técnicas y habiidades para aplicar patrones. Los dos primero sería la etapa de definicion del problema y las dos ultimas formaria la etapa de desarrollo dela solución.

Indica que el conocimiento de la tecnología no los unico a manejar para diseñar aplcaciones robustas, pero si es una habilidad muy importante que tiene que tener el arquitecto de software. Dentro de la empresa se recomienda trabajar con la menor cantidad de tecnologias posibles, esto permite administrar el esfuerzo del desarrollo en forma más eficiente, reduciendo la cantidad de herramientas de administración, desarrollo monitoreo etc, teniendo grupos con menos perfiles técnicos etc .
Algunos de los los aspectos de calidad a tener en cuanta al momento de diseñar la arquitectura base de un sistema son altamente influenciado por la forma en que se implementa el diseño a nivel código. Por ejemplos aspectos de seguridad, performance y mantenimiento son altamente degradados sin se desarrolla sin seguir buenas practicas y aplicar patrones.
Para ello se debe tener adecuados controles de calidad, testear el codigo en forma periodica, dependiendo de la metodología de desarrollo adoptada, la integración continúa mediante el uso de herramientas permiten controlar al final del día que el código subido al repositorio notiene errores de compilación y además se pueden ejecutar revisione de código y pruebas unitarias automáticas. Si con esto se generar reportes se puede controlar día a día la calidad del código que se está generado.

Si no hacemos esto, cuando el codigo pasa a testing funcional, nos encotramos con cosas como SQL Harcodeados, store procedures gigantescos que no tienen ningun tipo de control en la cantidad de registros a enviar al cliente, armado de documentos (xml u otros tipo) concatenados strings (System.String) y en el peor de los casos codigo "chorizo" practimente imposible de mantener, datos de conexión harcodeados (aunque no lo crean) etc etc.

No se imaginan los problema de reworking y troubleshuting que surgen cuando se produce un incidencia con alguna de esas aplicaciones.

No hay comentarios.: