Arquitetura = elementos, organização e decisões.
Onde: arquitetura de software consiste em um conjunto de elementos que possuem alguma organização.
Os elementos e sua organização são definidos por decisões tomadas para satisfazer objetivos e restrições.
Bass
Nota:
A arquitetura de um programa ou de sistemas computacionais é a estrutura ou estruturas do sistema, a qual é composta de elementos de software, as propriedades externamente visíveis desses elementos, e
os relacionamentos entre eles
ISO/IEEE 1471-2000
Nota:
Arquitetura é a organização fundamental de um sistema, representada por seus componentes, seus
relacionamentos com o ambiente, e pelos princípios que conduzem seu design e evolução
É diferente de Design de
Software
Nota:
O contraste entre design e arquitetura é justamente a forma de como se vê o sistema, como a
implementação pode ser interpretada. Enquanto a arquitetura observa o todo, o design se encarrega de
observar a interação entre as partes.
Possui
Componentes
Nota:
Todo grande sistema é inicialmente pensado em pequenas partes (subsistemas), cada uma com sua
funcionalidade e independente das demais. Essas partes são o que chamamos de componentes.
Cada componente tem sua funcionalidade independente dos demais e que cada um deles não precisa saber como é o funcionamento dos outros (isso é o que pode ser chamado de encapsulamento).
Conectores
Configurações e padrões
arquiteturais
Estilos de arquitetura
Nota:
Um estilo arquitetural estabelece uma estrutura para todos os componentes do sistema, ou seja, ele impõe uma transformação ao projeto do sistema por completo
Camadas
Nota:
São definidas várias camadas onde cada uma delas é responsável por realizar operações diferentes.
Centralizada em dados
Nota:
O centro dessa arquitetura é formado por um repositório de dados (banco de dados e arquivo são exemplos de repositórios). Os componentes fazem o acesso ao repositório para realização de operações como atualização, inserção, modificação ou exclusão de dados.
Chamadas e retornos
Nota:
Permite a obtenção de uma estrutura de sistema na qual é mais fácil de ampliar e fazer modificações.
Esse estilo possui vários subestilos, entre eles:
Orientada a objetos
Nota:
Os componentes nesse caso são objetos do sistema. Estes são formados encapsulando dados e os métodos de acesso para a manipulação desses dados. Toda a comunicação é feita através da troca de
mensagens por meio da chamada de métodos.
Padrões de arquitetura
Nota:
Um padrão de arquitetura
impõe transformações no projeto de arquitetura. Para ficar mais claro a diferença, o padrão difere do
estilo em alguns pontos, tais como: (i) O padrão foca numa parte da arquitetura ao invés de toda ela; (ii) Um padrão dita as regras na arquitetura, descrevendo como o software vai manipular alguma
característica de sua funcionalidade no quesito de infraestrutura.
Controle de Acesso
Nota:
Em um banco de dados é possível dizer qual usuário tem determinados privilégios como consulta ou modificação de dados, por exemplo. Na informática essa é uma das muitas situações em que se pode definir o que o usuário está, ou não, habilitado para ver e fazer. Isto é o que chamamos de controle de acesso
Concorrência
Nota:
Observando a computação atualmente notamos que os computadores deixaram de ser monotarefas faz
tempo! Isto graças a evoluções de hardware (processadores) e software. Hoje muitos sistemas precisam lidar com o que chamamos de paralelismo, que nada mais é que execução de tarefas “em paralelo”.
Persistência
Nota:
Persistência consiste basicamente no armazenamento de dados. Contudo, os dados só devem ser persistidos se sobreviverem após a execução do processo que o criou.
Distribuição
Nota:
Uma boa parte dos sistemas em operação atualmente funciona de forma distribuída. Na verdade, interagimos com sistemas sem ao menos saber em que parte do mundo estão as máquinas que os abriga.
O padrão de distribuição trata de como é feita a comunicação entre os sistemas ou os componentes nos sistemas em um ambiente distribuído.