====== Visão Geral ====== A arquitetura de software, diferente do desing de software, é uma área da Tecnologia da Informaçao(TI), se refere a organização de um sistema e muita das vezes está presente em programas utilizados no cotidiano. A área consiste na análise estratégica de cada componente operacional antes de definitivamente criar as soluções viáveis para a tecnlogia.{{ :a:234326-o-que-e-o-ping-e-como-ele-afeta-sua-conexao-com-a-internet.png?400|}} Antes de qualquer meio tecnológico se tem a análise do desempenho, escalabilidade, interoperabilidade, compatibilidade e performance, sendo estes citados os critérios principais para a ação efetiva da arquitetura de software. A arquitetura também possibilita a compreensão das diferenças de linguagens, sistemas operacionais e ambientes da computação, assim qualquer componente tecnológico pode ser usado para integrar na solução aquitetural. Fora a escolha de algoritmos e estrutura de dados, a arquitetura envolve: * Decisões sobre as estruturas que formarão o sistema; * Controle; * Protocolos de comunicação, sincronização e acesso a dados; * Atribuição de funcionalidade a elementos do sistema; * Distribuição física dos elementos de escalabilidade; * Desempenho e outros atributos de qualidade. A arquitetura de software influencia em principal na performance, qualidade, facilidade de manutenção e escalabilidade. Critérios estes que influenciam no sucesso do projeto desenvolvido e na praticidade na compreensão do usuário. ====== Principais Marcos ====== A criação e desenvolvimento dos modelos de microsserviços, computação em nuvem e inteligência artificial, que fazem parte da arquitetura de software, vão e já influenciam no futuro do mundo das máquinas junto a revolução digital. A praticidade dada pelas ferramentas anteriormente citadas tem sido um avanço na longa complexidade da arquitetura na tecnologia. Fora os já atingidos como a Arquitetura em camadas, cliente-servidor, MVC(Model-view-controller pattern) e a de microsserviços anteriormente colocada. ====== Grandes Nomes ====== ==== Edsger Wybe Dijkstra.==== {{ :a:dj.png?200|}}Edsger foi um dos mais importantes pesquisadores na área da Ciência da computação. Wybe sempre viu a necessidade da organização de um programa e/ou software para o seu bom funcionamento. Dijkstra nasceu em 1930 Roterdã, na Holanda e morreu em 2002 em Nuenen devido ao câncer, porém mesmo após sua morte, continuou influenciando positivamente com os conhecimentos deixados. ---- ==== Frances Allen. ==== {{ :a:frances_alen.png?200|}}Frances foi a primeira mulher a ganhar o prestigiado Turing Award, ela nasceu em 1932 em Nova Iorque e faleceu em 2020 em Scgenectady. Foi uma mulher de extrema influência, e suas maiores realizações foram o trabalho importante em compiladores, otimização de códigos e computação paralela. Mas Allen, com sua otimização de código e paralelização, fez algo relacionado a arquitetura de software, assim permitindo que softwares mais avançados rodassem de maneira melhor com seus ajustes. ---- ====== Aplicações/Tipos de Arquitetura ====== A arquitetura de software pode ser aplicada para melhora da performance, escalabilidade e flexibilidade, também usada para delimitar a estrutura utilizada para projetar um software. Entre os diversos modelos utilizados, a arquitetura em camadas possui destaque devido ao seu funcionamento prático, cujo consiste na divisão do sistema em diferentes camadas, proporcionando independência na comunicação e implementação. A facilidade dessa aplicação pode ser direcionada na criação de softwares multiplataformas, pois a potencialidade de retirar e acrescer camadas sem comprometer a estrutura por completo facilita o desenvolvimento. Outros modelos de arquitetura igualmente utilizados são: * Client-server (cliente-servidor) * Model-view-controller (MVC) * Microservices (microsserviços) * Pipes-and-filters (PF) * Peer-to-Peer (P2P) * Service-Oriented Architecture (SOA) * Publish-Subscribe (Pub/Sub) Os tipos mencionados acima servem de modelo para o necessário, por exemplo, se um projeto requer vários serviços e componentes para desenvolver uma estrutura modular, o ideal é que sejam Microservices. Outro fator importante a ser evidenciado é que não há o melhor modelo de arquitetura de software, cada modelo tem sua função, e o projeto define qual é mais eficaz para executar determinado papel. Abaixo o mapa hexagonal que demonstra o ciclo de desenvolvimento de um arquiteto de software. {{ :a:architecturehexagonal-1024x579.png?600 |}} ====== Impacto Social ====== A praticidade e qualidade dada pela arquitetura de software entrega exatamente o que os usuários solicitam, a fácil compreensão do programa gerada. A área foca exatamente nisso, uma boa formatação do projeto que evite as falhas, longo tempo de carregamento e consiga uma boa estruturação e comôdidade. Cada dia mais a imagem tem sido o foco principal, pois é o que entrega a primeira visão do que é oferecido, como um programa por exemplo. A arquitetura de software mesmo que sendo uma área com o surgimento considerávelmente novo, tem sido essêncial e facilitando grande parte na área de UX(user expirience) dando novos avanços e a cada passo sendo um evolutivo com grandes feedbacks bons. ====== Desafios ====== Vários desafios podem ser citados na área da arquitetura de softwares, mas em destaque estão a dificuldade de suporte com os fornecedores e o tempo. Para a arquitetação de um programa obter o êxito, é necessário o apoio e o período necessário para tal, esse usufruído em longa duração para que o usuário não tenha que dispor do seu tempo para enfrentar bugs ou problemas com o uso do projeto. Portanto, a arquitetura de software mesmo tendo a falta de apoio necessária, tem se restaurando com empresas comprometidas com a UX e assim garantindo a qualidade, mesmo com o longo tempo de ação, vem o curto tempo de reação com as atualizações constantes dos arquitetos responsáveis pelo programa gerenciado. ====== Referências ====== - Arquitetura de software: entenda por que ela é tão importante! Disponível em: . Acesso em: 29 ago. 2022. - Assistir Aula - Arquiteto de Software - Curso - Fundamentos de Arquitetura de Software. Disponível em: . Acesso em: 29 ago. 2022. **Imagem de 'Aplicações' também retirada da Aula.** - DIGITAL HOUSE. Arquitetura de software: quais são os tipos e qual o melhor padrão para seu projeto. Disponível em: . Acesso em: 29 ago. 2022. - Tipos de arquitetura de software. Disponível em: . Acesso em: 29 ago. 2022. - Disponível em: . Acesso em: 29 ago. 2022. - DEMARTINI, F. As dez mulheres mais importantes da história da tecnologia. Disponível em: . Acesso em: 29 aug. 2022. - MOCHETTI, K. Dijkstra, um pioneiro em todas as áreas. Disponível em . Acesso em: 29 aug. 2022. - Fernandes, V. J. ARQUITETURA DE SOFTWARE: UMA PROPOSTA PARA A PRIMEIRA APLICAÇÃO. Disponível em: . Acesso em: 4 de set. de 2022. - TV, C. F. Arquitetura de Software (Não é coisa de outro mundo) // Dicionário do Programador. Disponível em: . Acesso em: 29 aug. 2022.