Anda di halaman 1dari 10

CUL ES LA FUNCIN DE UN ARQUITECTO DE SOFTWARE?

Mientras en la industria el trmino Desarrollador de Software est bastante claro, el


trmino Arquitecto de Software sigue bastante difuso y muchas empresas se preguntan
si necesitan o no a alguien que desempee dicho rol.
El Arquitecto de Software debe ser una persona con amplios conocimientos tcnicos,
gran experiencia en programacin, liderazgo y que ejerza las siguientes funciones:

Gestin de los requisitos no funcionales y definicin de la Arquitectura de


Software

Seleccin de la Tecnologa

Mejora continua de la Arquitectura

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.

Una vez obtenido el conjunto completo de requisitos no funcionales, el siguiente paso es


pensar en cmo se resolvern los problemas expuestos y definir la arquitectura.
La definicin de la arquitectura se trata de la introduccin de la estructura, directrices,
principios y liderazgo de los aspectos tcnicos de un proyecto de software. Por lo tanto se
requiere de una figura dedicada a pensar en estos aspectos, es decir, alguien tiene que
asumir la propiedad del proceso de definicin de la arquitectura y esto es sin duda, parte
de las competencias del Arquitecto de Software.
Seleccin de la Tecnologa
La seleccin de la tecnologa suele ser un ejercicio con una serie de desafos interesantes y
en el cual se debe tomar en cuenta un universo de factores como el coste, las licencias, la
relacin con los proveedores, la estrategia de la tecnologa, la compatibilidad e
interoperabilidad, poltica de actualizaciones, etc.
Adicionalmente hay que conocer si las tecnologas funcionan realmente y se adaptan o no a
los requerimientos del software.
El Arquitecto de Software debe asumir la propiedad del proceso de seleccin de la
tecnologa y por tanto es responsable del riesgo tcnico.
Mejora continua de la Arquitectura
Hoy en da es imposible pensar en el desarrollo de software sin tomar en cuenta procesos
de evaluacin y feedback que permitan conocer si el software satisface las expectativas del
usuario.
De igual manera es necesario someter a la arquitectura de software a dichos procesos, para
demostrar que funciona, que efectivamente resuelve los requisitos no funcionales y por
tanto reducir el riesgo general de fracaso del proyecto.
El Arquitecto de Software debe encargarse de la mejora continua de la Arquitectura y a
su vez estar abierto a modificarla utilizando las sugerencias o feedback que se pueda
obtener de otros miembros del equipo.
Facilitador

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

amplia gama de factores, y cada una de esas decisiones puede tener un


considerable impacto sobre la calidad, rendimiento, mantenimiento y xito
general de ese software.
El software moderno rara vez es independiente. Por lo menos, en la mayora de
los casos, interactuar con un origen de datos como una base de datos
corporativa que expone la informacin con la que trabajan los usuarios del
software. Habitualmente, el software moderno debe tambin interactuar con
otros servicios y funciones de red para realizar autenticacin, obtener y
publicar informacin, y ofrecer una experiencia de usuario integrada. Si no se
cuenta con una arquitectura adecuada, puede que sea difcil o incluso
imposible implementar, operar, mantener e integrar el software correctamente
con otros sistemas, y no podr cumplir los requisitos del usuario.

La arquitectura de software se puede considerar como un mapeo entre lo que


un software debe lograr y los detalles de la implementacin como cdigo. Al
obtener la arquitectura correcta se garantizar la coincidencia ptima entre
requisitos y resultados. El software con buena arquitectura llevar a cabo las
tareas especificadas dentro de los parmetros de los requisitos originales y lo
har de una forma que maximice el rendimiento, la seguridad, confiabilidad y
muchos otros factores.
En su mximo nivel, el diseo arquitectnico debe exponer la estructura del
sistema pero ocultar los detalles de implementacin; percatarse de todos los
casos y escenarios de uso; intentar abordar los requisitos de todas las partes
interesadas; y satisfacer lo ms posible todos los requisitos funcionales y de
calidad.

Por qu es importante la arquitectura de software?


Los requerimientos del software moderno son cada vez ms complejos puesto
que los usuarios esperan ms de sus aplicaciones. Las aplicaciones de
escritorio independientes y sencillas ya no son lo suficientemente buenas en la
mayora de los escenarios comerciales y empresariales. En nuestro mundo
conectado, la aplicacin debe interactuar con otras aplicaciones y servicios y
ejecutarse en una serie de entornos, como la nube, y en dispositivos porttiles.
Los diseos monolticos comunes en el pasado se han reemplazado por
software componentizado orientado al servicio, que utiliza marcos, sistemas
operativos, hosts en tiempo de ejecucin y redes para implementar
caractersticas que eran inslitas hasta hace unos pocos aos.
Esta complejidad afecta no slo al diseo, sino tambin a la implementacin,
mantenimiento y administracin del software. El costo total de propiedad (TCO)
del software ahora se compone predominantemente de costos posteriores a la
implementacin. Una aplicacin con buena arquitectura minimizar el TCO al
reducir el costo y tiempo requeridos para implementar la aplicacin,

mantenerla en ejecucin, actualizarla para cumplir con los requisitos


cambiantes y solucionar problemas. Adems simplificar el soporte tcnico y la
administracin por parte del usuario.
El software tambin debe cumplir varios criterios fundamentales para tener
xito. Debe proporcionar seguridad de manera que la aplicacin y sus datos
estn protegidos contra ataques malintencionados y errores accidentales. Debe
ser robusto y confiable para minimizar los errores y los costos asociados. Debe
ejecutarse dentro de los parmetros requeridos para satisfacer las necesidades
del cliente, como un tiempo de respuesta mximo o una capacidad de carga de
trabajo especfica. Debe ser sostenible para poder minimizar los costos de
administracin y soporte tcnico y suficientemente extensible para permitir los
cambios y actualizaciones inevitables que se requerirn con el tiempo.
Todos estos factores implican algunas desventajas. Por ejemplo, la
implementacin de los mecanismos ms seguros mediante un cifrado complejo
afectar el rendimiento. La implementacin de opciones de configuracin y
actualizacin de amplio rango puede hacer que la implementacin y
administracin sean ms complicadas. Adems, cuanto ms complejo sea el
diseo, ms costar implementarlo. Una buena arquitectura tendr como
objetivo equilibrar estos factores para producir el resultado ptimo en el
escenario especfico.

Qu hace un arquitecto de software?


La arquitectura de software comienza con un conjunto de requisitos. Estos
puede expresarse en forma de diagramas, diagramas de flujo de proceso,
modelos o listas documentadas de tareas operacionales que el software debe
realizar. Es habitual que el cliente o el socio tambin expresen requisitos
menos precisos, como la apariencia o la manera en que ciertas interfaces de
usuario deben funcionar en tareas comunes. Los requisitos tambin deben
incluir informacin sobre el software, sistemas, hardware y redes existentes
con que va a interactuar el nuevo software; y otros factores como el plan de
implementacin y mantenimiento y, desde luego, el presupuesto disponible
para el proyecto.
El arquitecto de software debe considerar las necesidades del cliente. Sin
embargo, el trmino general cliente habitualmente comprende tres reas de
responsabilidad en conflicto: los requisitos empresariales, los requisitos del
usuario y los requisitos del sistema. Los requisitos empresariales por lo general
definen una serie de factores, como los procesos de negocios, los factores de
rendimiento (como seguridad, confiabilidad y capacidad de proceso) y las
restricciones de presupuesto y costos. Los requisitos del usuario incluyen el
diseo de interfaz, capacidades operativas y facilidad de uso del software. Los
requisitos del sistema incluyen el hardware, las redes y las capacidades y
restricciones del entorno en tiempo de ejecucin. En la figura 1 se muestra

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

decisiones respecto a la comunicacin entre niveles y componentes. Es posible


que esto incluya la eleccin de un protocolo segn los requisitos actuales y
futuros y la consideracin de presentaciones preliminares de la nueva
tecnologa y las capacidades definidas en prximos estndares.
El producto final del trabajo de un arquitecto generalmente es un conjunto de
esquemticas, modelos y documentos que definen la aplicacin desde varias
perspectivas de manera que, al combinarse, proporcionen a los
desarrolladores, equipos de prueba, administradores y a la administracin
general toda la informacin necesaria para implementar el diseo. Esta
informacin describir la estructura y el diseo de las partes componentes y
los niveles de aplicacin; la forma en que se manejan asuntos de alcance
general como registro y validacin; el plan de pruebas e implementaciones; y
la documentacin para asistir a desarrolladores, administradores y personal de
soporte tcnico.
El diseo final tambin debe especificar los atributos de calidad que debe
cumplir la aplicacin. Estos constituyen el resultado de las decisiones y
compensaciones realizadas por el arquitecto con el asesoramiento del cliente.
Estos atributos incluyen definiciones de los requisitos de seguridad y su plan de
implementacin, la escalabilidad y el rendimiento requeridos al implementarse
en la plataforma de destino, las formas en que se implementan el
mantenimiento y la extensibilidad, y las caractersticas que permiten la
interoperabilidad con otros sistemas.
Qu habilidades necesita un arquitecto de software?
Es evidente que un arquitecto de software requiere una amplia gama de
habilidades tanto generales como tcnicas. Durante el anlisis de requisitos y
las etapas de revisin, el arquitecto debe trabajar con el cliente, consultar a
socios y otros miembros del equipo y actuar como un intermediario para
gerentes, usuarios y administradores de sistemas. Al sobresalir en estas
habilidades generales se puede producir un mejor plan inicial y un conjunto
ms preciso de requisitos, lo que ahorra tiempo y esfuerzo ms adelante.

El arquitecto de software tambin debe poseer las habilidades tcnicas que se


requieren para comprender cmo los modernos sistemas de software, los
marcos y el hardware admiten los requisitos; cmo los factores de red y
sistema operativo pueden afectar las decisiones de diseo; y cmo las
tendencias y los cambios en estas reas tendrn un impacto sobre el diseo.
Despus del anlisis inicial de requisitos, el arquitecto de software tambin
debe aplicar sus habilidades tcnicas en torno a patrones de diseo,
estndares de comunicacin y mensajera, capacidades de cdigo, problemas
de seguridad y restricciones de rendimiento. Todos estos requieren un
conocimiento profundo de las tecnologas que se usarn para implementar el
software final.

Por supuesto, la arquitectura de software tambin requiere visin. El ser capaz


de ver cmo los sistemas se integrarn y pueden interoperar, cmo sern
particionados e implementados y cmo interactan con los usuarios a menudo
slo se puede determinar una vez que el arquitecto ve en su mente la solucin
en general. Esto requiere un enfoque organizado y mucha atencin a los
detalles para intercalar y comprender todos los requisitos y restricciones, y
para transformarlos gradualmente en un diseo tcnico fluido e integral. Sin
embargo, tambin se requiere talento e imaginacin para poder visualizar el
resultado final y luego trabajar metdicamente hacia la solucin ideal.
Un arquitecto de software no es simplemente un programador con
experiencia, sino la persona clave que ayudar a tomar decisiones
estratgicas acertadas para aprovechar al mximo la tecnologa en
nuestros sistemas.
A diferencia de un programador, el arquitecto de Software debe dominar la
mayor cantidad de tecnologas de software y prcticas de diseo, para as
poder tomar decisiones adecuadas para garantizar el mejor desempeo, reuso,
robustez, portabilidad, flexibilidad, escalabilidad y mantenibilidad de las
aplicaciones.
El arquitecto de software es el lder tcnico del equipo, el rol natural al que
debe aspirar un programador experimentado que desea tomar decisiones
tcnicas relevantes en el desarrollo de un sistema. Es el principal tomador de
decisiones respecto a la manera en que ser construida la aplicacin por los
programadores del equipo.

QUE CARACTERISTICAS Y COMPETENCIAS TIENE EL ARQUITECTO DE SOFTWARE


Posee competencias tcnicas y conocimientos tecnolgicos.
- Investiga nuevas tecnologas y comprende Frameworks arquitectnicos y las
mejores practicas.
- Desarrolla rpidamente profundo conocimiento en una tecnologa.
- Tiene liderazgo y autoridad.
- Sigue y dirige a la vez.
- Es un buen comunicador.
- Entiende el dominio del negocio.
- Es un negociador.
- Posee fuerte visin para los negocios.
- Entiende la poltica de la empresa.
- Puede trabajar con informacin ambigua o incompleta.

- Identificar e interactuar con los interesados en el proyecto para asegurarse


que sus necesidades son satisfechas.
- Se orienta por objetivos y pro-actividad
- Debe poseer la madurez, visin y tener un juicio crtico.

RESPONSABILIDADES DE UN ARQUITECTO DE SOFTWARE


Elaborar la arquitectura correcta para solucionar el problema que se encuentra
desarrollando es solo una parte de la responsabilidad del arquitecto.
- Define y documenta la solucin, asegurndose que este acorde con el sistema
deseado y que adems es la - correcta para su soporte y evolucin.
- Se asegura que todos los involucrados estn utilizando la solucin elaborada
y la estn utilizando bien.
- Conoce cuales cualidades sistmicas, deben alcanzarse y en qu medida.
- Responde sobre las inquietudes relacionadas con la seleccin de herramientas
y ambientes de desarrollo.
- Resuelve conflictos y ayuda a generar acuerdos.
- Mantiene la moral, tanto en el interior del grupo de arquitectura como al
exterior.
- Gerencia las estrategias de identificacin y mitigacin de los riesgos
asociados con la arquitectura.

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

Conclusin: El arquitecto de software se encuentra incluido dentro de toda la


rama de desarrollo de la solucin ya que puede asistir sobre consultas o
inconvenientes que pueden llegar a darse durante la elaboracin del mismo...

Anda mungkin juga menyukai