Introdução a Arquitetura de Software
Muitas pessoas falam sobre **Arquitetura de Software**, mas você sabe o que é? Você sabe o que faz um arquiteto de software?
Definição
Muitas pessoas falam sobre Arquitetura de Software, mas você sabe o que é?
Para responder esta pergunta, vamos entender o significado da palavra “arquitetura”. Analisando sua etimologia, “arquitetura” vem do grego e significa: Primeiro desenho, ou principal desenho.
Você encontra mais detalhes sobre a palavra “Arquitetura” neste link.
Logo entende-se como arquitetura de software, como uma etapa da engenharia de software e que se dedica a montar o primeiro (ou principal) esboço da estrutura do software.
Fazendo uma analogia, a arquitetura da construção civil concentra-se em desenhar ambientes e organizar os espaços de acordo com o objetivo dos interessados no projeto. Após essa etapa o projeto é detalhado e a construção pode ser iniciada.
A arquitetura da engenharia de software segue os mesmos passos. Segundo Sommerville (2011), o projeto de arquitetura acontece após a elicitação dos requisitos e a análise de casos uso. Desta forma, essa etapa se preocupa em definir a estrutura do sistema e como ela será organizada.
Importância e Vantagens
É comum que softwares sejam construídos sem uma análise da arquitetura que será utilizada. Isso acontece por vários motivos (é uma longa lista…).
Mas eu devo me preocupar com a arquitetura do meu sistema?
Resposta: Sim, você deve se preocupar!
Segundo Sommerville (2011), a refatoração de arquitetura normalmente é bem cara, pois aferá todo o sistema.
Para destacar o valor da arquitetura de software, Gray e Larson (2009) dizem que as etapas iniciais são as mais oportunas para identificar e tratar os riscos. Quanto mais evoluído o projeto, maior será os custos de mudanças.
A arquitetura de software possibilita uma análise inicial bem ampla e que é importante para validar a estrutura do sistema. Isso minimiza as chances de refatoração da arquitetura.
Um bom trabalho realizado nesta etapa facilita a discussão com os stakeholders, uma vez que o projeto de arquitetura normalmente é bem recebido por pessoas leigas. Relacionado a alguns diagramas, ele é relativamente fácil de entender.
Projeto de arquitetura
Existem várias maneiras para representar graficamente o projeto de arquitetura.
Inicialmente você utilizar blocos e ligações simples com o objetivo de representar as partes do sistema e suas comunicações. Essa opção é utilizada em projetos simples e com pouco tempo de desenvolvimento.
Outra opção é utilizar o digrama de componentes da UML. É ótimo em sistemas complexos ou que necessitam de documentação extensa. Em breve falaremos mais sobre o diagrama de componentes aqui no blog.
Para Sommerville, os projetos ágeis aceitam uma perspectiva diferente sobre a arquitetura de software.
“Em processos ágeis, geralmente se aceita que um estágio inicial do processo de desenvolvimento se preocupe com o estabelecimento de uma arquitetura global do sistema.” (SOMMERVILLE, 2011, p. 103).
Na minha opinião, é possível separar algumas etapas ou sprints para definição e codificação do modelo arquitetônico. Construção protótipos são bem-vindos durante a discussão e testes.
Por fim, existem as linguagens de descrição de arquitetura (ADLs, do inglês Architectural Description Languages). O uso delas não é tão comum e Sommerville (2011) justifica isso.
“No entanto, devido a sua natureza especializada, especialistas de domínio e aplicação consideram as ADLs difíceis de entender e usar, o que torna difícil avaliar sua utilidade para engenharia de software prática.” (SOMMERVILLE, 2011, p. 108).
Conclusão
Este artigo tem o objetivo de esclarecer o termo arquitetura de software e como ele pode fazer do seu dia a dia.
Se você gostou, curta e compartilhe este artigo. Fique ligado no blog, pois em breve falaremos mais sobre este assunto.
Dúvidas ou sugestões, é só deixar seu comentário.
Referências
GRAY, Clifford; LARSON, Erik. Gerenciamento de Projetos o Processo Gerencial. 4. ed. São Paulo: Mcgraw-hill, 2009. Tradução de Dulce Cattunda e Frederico Fernandes.
SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Addison Wesley, 2011.