A essência do trabalho de um arquiteto de software é ser capaz de aplicar e encontrar o equilíbrio certo entre estes três "fontes" da arquitetura.
Assim podemos afirmar que o papel de um arquiteto de software é de grande responsabilidade em um projeto de software. Até mesmo o sucesso do projeto vai ser influenciado diretamente pela solução arquitetônica empregada.
Em virtude da importância e responsabilidade exercida por este profissional, é natural persarmos que esse papel deve sempre ser exercido por alguém que tenha autoridade e liderança. Entretanto, em muitas organizações de desenvolvimento de software a responsabilidade não é acompanhada com autoridade específica. Desta forma, a fim de fazer o seu trabalho de forma eficaz, o arquiteto deve, então, encontrar uma outra maneira de exercer influência e liderança.
Ele deve possuir uma série de habilidades, tais como:
Um arquiteto de software deve ser um excelente designer de sistemas de software. Ele deve ser capaz de reconhecer, reutilizar, ou criar soluções de design eficazes e aplicá-las de forma adequada. Ele deve estar familiarizado com os estilos arquitetônicos fundamentais e padrões que estão na base da disciplina de arquitetura de software. Um arquiteto pode até ter alguns padrões que fazem parte de seu arsenal privado de ferramentas de design, acumulado ao longo do tempo. Por outro lado, um arquiteto também deve ser capaz de reconhecer projetos ineficazes, estilos impróprios e padrões, e decisões de design sem a flexibilidade adequada.
XMuitas organizações de desenvolvimento de software produzem vários sistemas dentro do mesmo domínio de aplicação. Por exemplo, a Microsoft trabalha principalmente dentro do domínio de aplicativos para desktop. O domínio principal do Google é a disseminação de informação através da Internet; já a Boeing tem um extenso foco em sistemas embarcados; NASA sistemas espaciais.
Assim, quanto mais especialista em um domínio, melhor será o arquiteto.
XUm arquiteto de software deve saber que suas soluções realmente irão funcionar quando forem desenvolvidas. Assim, um arquiteto de software precisa garantir que a tecnologia de software existente é capaz de suportar a implementação da arquitetura definida. Um design bonito não é útil se não pode ser implementado.
XAs exigências para a contratação de uma empresa de desenvolvimento estão cada vez mais rigorosas. Por este motivo, é crítico que um arquiteto tenha domínio dos padrões de mercado. Por exemplo, para poder ser contratada pelo governo americano uma empresa de desenvolvimento deve ser certificada CMMI 5. Um arquiteto deve ter conhecimento deste padrão.
XUm grande designer de software não é necessariamente um grande arquiteto de software. Um bom arquiteto não pode se ater APENAS às melhores técnicas, os seus desenhos devem ser sobretudo realistas, economicamente viáveis, tecnologicamente implementáveis, e com o menor risco para o projeto. Em outras palavras, um arquiteto deve ser mais do que apenas um (grande) designer. Um arquiteto deve elaborar uma arquitetura que efetivamente resolve o problema em questão, respeitando simultaneamente as restrições impostas ao projeto.
X