Seleccin de la Tecnologa
Facilitador
Lder y Formador
Aseguramiento de la Calidad
Gestin de los requisitos no funcionales y definicin de la Arquitectura de
Software
En muchos proyectos de software se suele preguntar a los usuarios qu caractersticas
desean en el producto a desarrollar, pero muchas veces se pasan por alto los requisitos no
funcionales, o cualidades del sistema, que se necesitan.
Los requerimientos no funcionales tienen que ser especficos, medibles, alcanzables y
comprobables, para poder satisfacerlos (no basta con algo subjetivo como: el sistema debe
ser rpido), y adems hay que saber priorizarlos de manera que todos sean tomados en
cuenta.
Caractersticas como el rendimiento, la escalabilidad, la disponibilidad, auditora, etc., son
requisitos no funcionales que deben ser definidos e incluso cuestionados cuando se
considere oportuno y es el Arquitecto de Software quien debe asumir estas funciones.
La arquitectura del software debe ser conocida y entendida no solo por el equipo de
desarrollo sino tambin por otras reas como seguridad informtica, base de datos,
operaciones, el equipo de mantenimiento, etc.
Es funcin del Arquitecto de Software servir de facilitador para la colaboracin entre
estos grupos de inters de manera de garantizar que la arquitectura se integrar con xito
en el entorno empresarial.
Lder y Formador
El Arquitecto de Software debe asumir la direccin tcnica, para asegurar que todos
los aspectos de la arquitectura se estn implementando de manera correcta.
De igual manera el Arquitecto de Software debe proporcionar orientacin tcnica y dar
apoyo al equipo de desarrollo; debe estar preparado para entrenar al equipo en las
tecnologas seleccionadas (Formador) y tambin debe estar abierto a sugerencias.
Aseguramiento de la Calidad
Garantizar la calidad es parte fundamental del rol de un Arquitecto de Software, el
cual debe apoyarse en procesos de integracin continua que utilicen herramientas
automatizadas de anlisis de cdigo fuente, pruebas unitarias y cobertura de cdigo, para
asegurar el cumplimiento de las normas, polticas y mejores prcticas establecidas .
Qu es la arquitectura de software?
El proceso de arquitectura de software toma los requisitos de los clientes, los
analiza y produce un diseo para obtener un software que satisfar sus
necesidades. Los diseos exitosos de software deben sopesar las disyuntivas
inevitables que surgen debido a requisitos conflictivos; cumplir con los
principios de diseo y las buenas tcnicas de procedimiento que han
evolucionado con el tiempo; y complementar el hardware moderno, las redes y
los sistemas de administracin. Una arquitectura contundente de software
implica tener mucha experiencia en temas tericos y prcticos, as como la
visin necesaria para convertir lo que al parecer son escenarios y requisitos
comerciales imprecisos en diseos de trabajo slidos y prcticos.
La arquitectura de software implica definir una solucin estructurada que
satisfaga todos los requisitos tcnicos y operacionales y, a la vez, optimizar los
atributos comunes de calidad como rendimiento, seguridad y capacidad de
administracin. Adems, implica una serie de decisiones basadas en una
cmo pueden variar estos distintos requisitos, de modo que el arquitecto debe
trabajar hasta lograr un diseo que se ajuste al rea de superposicin.
Cada arquitecto de software tiene su propio enfoque para recopilar y analizar
requisitos y para definir la arquitectura. No obstante, algunas preguntas que
generalmente deben responder son: cmo trabajarn los usuarios con la
aplicacin?; cmo se implementar la aplicacin en produccin y cmo se
administrar?; cules son los requisitos de atributos de calidad para la
aplicacin, como seguridad, rendimiento, concurrencia, internacionalizacin y
configuracin?; cmo se puede disear la aplicacin para que sea flexible y
sostenible a travs del tiempo?; cules son las tendencias arquitectnicas
que podran tener impacto en la aplicacin ahora o despus de su
implementacin?
Esta ltima pregunta es interesante e importante. Un buen diseo de software
no slo satisface los requisitos del cliente ahora, sino que contina hacindolo
en el futuro inmediato. Esto influye en las decisiones que debe tomar el
arquitecto acerca del hardware, los componentes, marcos, plataformas de
tiempo de ejecucin, sistemas de software de administracin y muchos otros
factores incorporados en el software o con los que ste debe integrarse.
Al igual que la mayora de las tareas en el mundo del diseo y desarrollo de
software, disear la arquitectura es un proceso inicial y a la vez iterativo.
Muchas tareas iniciales como el anlisis de requisitos, la investigacin tcnica y
la identificacin de objetivos habitualmente se producen al comienzo del
proceso. El siguiente paso consiste en identificar los escenarios clave para el
diseo. Estos son los requisitos primarios que debe cumplir el software y las
restricciones dentro de las que debe operar. A partir de esta informacin, el
arquitecto puede generar una descripcin general de la aplicacin. Esta
descripcin general abarca detalles de alto nivel, como el tipo de aplicacin
(web, telfono, escritorio o nube), la arquitectura de implementacin
(habitualmente un diseo por niveles con componentes que se comunican
sobre lmites de hardware y de red), los estilos adecuados de arquitectura que
se seguirn (como de n niveles, cliente-servidor u orientada al servicio) y las
tecnologas de implementacin que se adaptan mejor al escenario.
Desde all, el arquitecto puede comenzar a generar diseos candidatos que
satisfagan los requisitos de alto nivel y los ms importantes que se
identificaron anteriormente. El diseo despus se revisa y se pone a prueba
frente a los escenarios clave, a menudo en conjunto con las observaciones del
cliente y versiones de ensayo o prueba, para garantizar que ofrezca la solucin
ptima. Esto es poco probable durante la primera iteracin, pero a medida que
el ciclo se repite el diseo finalmente convergir en los requisitos y escenarios
clave. En la figura 2 se muestra este enfoque iterativo.
A medida que el diseo se vuelve ms pormenorizado y se identifican las
tareas y componentes individuales, el arquitecto puede seguir refinando y
agregando detalles a cada etapa. Por ejemplo, luego de identificar el estilo
arquitectnico y el enfoque de implementacin, el arquitecto puede tomar
TIPOS DE ARQUITECTO
- Arquitecto empresarial (Corporativo).
- Arquitecto de soluciones (funcional).
- Arquitecto Tcnico.
- Arquitecto de Infraestructura
FASES EN QUE PARTICIPA UN ARQUITECTO DE SOFTWARE
- Pre diseo
- Anlisis del dominio
- Diseo esquemtico
- Desarrollo del diseo
- Documentacin del proyecto
- Seleccin y contratacin
- Construccin
- Post Construccin