ED1 - Arquiteto de SW
ED1 - Arquiteto de SW
ED1 - Arquiteto de SW
Arquitetura de Software
Estudo dirigido: Papel Arquiteto de Software
Prof: Pedro A. Oliveira
Este texto apresenta algumas visões e avaliações sobre a área de atuação e as principais
atividades desempenhadas por um arquiteto de software no que tange às características
essenciais para este profissional e suas responsabilidades no processo de desenvolvimento de
software.
1. Introdução
O que faz um Arquiteto de Software? Qual é o perfil desse profissional e quais são os papéis
que ele deve desempenhar? Segundo Torres, com a evolução da construção de software, aos
poucos foi surgindo uma nova profissão: Arquiteto de Software.
Ainda segundo Torres, mesmo sendo indispensáveis no processo de desenvolvimento de
grandes aplicações, os arquitetos de software ainda são muito pouco conhecidos. Isto se deve
ao fato de que uma empresa, ao iniciar o desenvolvimento de uma nova solução,
primeiramente pensa em contratar um analista de sistemas e alguns desenvolvedores para a
implementação da solução. Porém, durante o desenvolvimento do software, algumas questões
referentes à sua infraestrutura são levantadas, tais como:
A solução será Web, Windows ou mobile? Se for Windows, por exemplo:
• Como será distribuída, via setup nos clients, utilizando distribuição GPO no
domínio ou como smart clients?
• Como serão as futuras atualizações da solução?
• Como será feito o controle de segurança no ambiente do servidor?
• A solução será acessada externamente? Se sim, como será feita a conexão remota
com o banco de dados?
Se a solução for web:
• Estará em um Data Center próprio ou na nuvem?
• Como será o tratamento de sessão?
• Serão utilizados cookies? Haverá a necessidade de instalar plug-ins?
Se a solução for distribuída ou envolver mobile:
• Qual serão as tecnologias utilizadas?
• Será utilizada solução nativa ( para Android, iOS ou outro S.O. móvel)?
• Será elaborado um app multiplataforma ou híbrido? Se sim, para que plataformas?
• Haverá integração entre camadas ou tecnologias?
Todas estas questões são importantes, pois suas respostas servirão de base para definições
na construção de uma boa solução. A tarefa de fornecer respostas para estas questões deve
ser realizada por um profissional específico com características técnicas que o capacitem a
fazê-la. Esse profissional é conhecido como arquiteto de software.
2. Arquitetura de Software
Arquitetura de software é, simplesmente, um modelo conceitual que facilita a transição de
requisitos para a implementação (Merson). Formalmente, tem-se:
The software architecture of a program or computing system is the
structure or structures of the system, which comprise software
elements, the externally visible properties of those elements, and the
relationships among them.
(BASS at el. Apud SOFTWARE ENGINEERING INSTITUTE)
A arquitetura de software é também uma das sub-áreas da área de Projeto de Software, como
apresentada no SWEBOK (Corpo de Conhecimento em Engenharia de Software) e abrange
tópicos como: estruturas, pontos de vista, descrição de arquiteturas, estilos arquiteturais,
padrões.
3. O Arquiteto de Software
Arquiteto de Software é o especialista em soluções técnicas para o desenvolvimento de
sistemas, o que exige uma visão sistêmica madura e aguçada, e deve ficar responsável por
ações no nível decisório mais alto, seja corporativo ou de sistemas:
- análise e conhecimento de tecnologias para compor o espaço de soluções possíveis;
1
- projeto de sistemas no nível alto de abstração, sem detalhes, baseado em requisitos não
detalhados;
- identificação e gerência de riscos associados aos projetos;
- Assessoria aos gerentes/coordenadores de projeto.
2
Uma das coisas mais importantes para o arquiteto é que ele deve, sempre que possível,
oferecer liberdade para os desenvolvedores escolherem suas tecnologias, frameworks, não
engessando totalmente o software, visto que isso faz com que seu time aprenda mais e fique
mais motivado. Uma outra atitude interessante é incluir os desenvolvedores em reuniões
arquiteturais, pois os mesmos podem agregar com experiências vivenciadas, entre outros
conhecimentos adquiridos.
3
coach, realizando a identificação dos mecanismos arquiteturais relevantes, motivando o time
para a investigação e resolução destes mecanismos e apoiando o time do início ao fim do
projeto (Mendes, 2006).
3º. Mito: para ser um arquiteto basta conhecer as técnicas de arquitetura de software.
Um arquiteto de sistemas deve conhecer também outras disciplinas (ex: Gerência de Projetos)
ou domínios (hardware, Dados ou Segurança), além da pura implementação J2EE ou. NET
(Mendes, 2006).
4
No link https://www.infoq.com/br/articles/C4-architecture-model/ do blog InfoQ é possível
conhecer um modelo mais leve e ágil para documentação de arquiteturas, denominado “C4”.
Esta sigla indica as quatro etapas/formas de documentação a serem adotadas para atender a
uma documentação minimamente adequada, como segue:
• Nível 1: diagrama de contexto do sistema;
• Nível 2: diagrama de container;
• Nível 3: diagrama de componentes;
• Nível 4: código.
Procure entender esta proposta, avaliando sua adequação, vantagens e possíveis problemas.
Informações complementares sobre C4 podem ser encontradas aqui: https://c4model.com e
aqui: https://www.archimatetool.com/blog/2020/04/18/c4-model-architecture-viewpoint-and-
archi-4-7/.
5. Considerações Finais
Pode-se concluir que é essencial a presença de um arquiteto de software durante o processo
de desenvolvimento, especialmente, quando se trata de aplicações de grande porte, complexas
ou distribuídas. O bom trabalho desse profissional afeta não apenas um projeto, mas pode
afetar muitos outros projetos a serem desenvolvidos futuramente pela empresa, pois um
padrão de desenvolvimento bem definido obviamente poderá ser aplicado a vários projetos.
Assim, a definição de uma boa arquitetura acontece em cada um dos níveis: corporativo, de
domínio, de aplicação, de componente.
Assim, o arquiteto de software torna-se um profissional imprescindível. Por um lado, atua como
aliado dos gestores na redução de riscos e, consequentemente, no aumento das chances de
sucesso dos projetos; por outro lado, se coloca como referência técnica da equipe de projeto.
Referências
TORRES, DENNES. Arquitetos de Software. & lt;
http://www.bufaloinfo.com.br/artigos/coluna09.asp>. Acessado em: 26 set. 2016.
MERSON, PAULO.? Mini-curso: Como documentar arquitetura de software? & lt;
http://www.sbbd-sbes2005.ufu.br/arquivos/Merson05_minicurso_SBES1.pdf>. Acessado em:
26, set. 2017.
SOFTWARE ENGINEERING INSTITUTE, CarnegieMellon. & lt;
http://www.sei.cmu.edu/architecture/index.html> Acessado em: 26, set. 2017.
BASS, LEN; CLEMENTS, PAUL; & KAZMAN, RICK. Software Architecture in Practice, Second
Edition. Boston, MA: Addison-Wesley, 2016.
BRAGA, L. J. (2007). ?Carreira: Arquiteto de Software? & lt;
http://zeluisbraga.wordpress.com/2007/06/27/carreira-arquiteto-de-software/>. Acessado em:
26, set. 2007 RUP.? Papel: Arquiteto de Software? & lt;
http://www.wthreex.com/rup/process/workers/wk_archt.htm> Acessado em: 26, set. 2017.
INFOQ. https://c4model.com. Acesso em: 10/08/2020.
INFOQ. https://www.archimatetool.com/blog/2020/04/18/c4-model-architecture-viewpoint-and-
archi-4-7/. Acesso em: 10/08/2020.
MENDES, M. (2006).? Quem é o arquiteto de software?. & lt;
http://blog.marcomendes.com/2006/10/09/quem-e-o-arquiteto-de-software/> Acessado em:
26, set. 2017
https://www.infoq.com/br/news/2010/09/real-papel-arquiteto, Acesso em: 13/02/2019.
Questões:
1. Qual é a importância de um arquiteto de Software para uma empresa de TI que desenvolve
sistemas corporativos que devem ser integrados? Cite uma situação prática como exemplo.
2. Cite três atividades típicas que um arquiteto de software pode/deve desempenhar num
grande projeto de software conduzido por uma empresa para um cliente externo.
4. Cite um mito sobre o papel arquiteto de software e explique porque ele é falso.
5
5. Num projeto de desenvolvimento de software um arquiteto poderia atuar como (assinale
quantos itens julgar corretos):
( ) Assessor / consultor do gerente do projeto.
( ) Assessor / consultor dos analistas de sistemas.
( ) Líder técnico.
( ) Interface entre os times de projeto e de produção.
( ) Analista de qualidade.
8. Cite uma situação concreta em que a atuação de um arquiteto de software foi determinante
para o sucesso de um projeto de desenvolvimento de software. Você pode se basear em
experiências pessoais ou em pesquisas sobre casos de sucesso reais.
9. Faça uma pesquisa de mercado visando encontrar cursos de graduação e/ou de pós-
graduação na área de arquitetura de software, no Brasil ou no exterior. Cite o nome, a
instituição que oferece, a duração e o foco/objetivo dos três cursos encontrados.
10. Com base no texto e nas atuais demandas do mercado de tecnologia descreva uma
situação (real ou hipotética) em que um arquiteto de software atuaria de forma a aumentar
as chances de sucesso de um projeto que segue a abordagem ágil. Você deve ser
convincente sobre a importância (ou não) deste papel para o projeto apresentado.