262 - Documento de Arquitetura » Histórico » Versão 1
Redmine Admin, 11/05/2019 22:34
1 | 1 | Redmine Admin | h1. 2.6.2 - Documento de Arquitetura |
---|---|---|---|
2 | |||
3 | |||
4 | h2. 1. Definição das camadas |
||
5 | |||
6 | !Visao_Geral_das_Camadas_Arquiteturais.png! |
||
7 | |||
8 | h3. 1.1 Camada de Apresentação |
||
9 | |||
10 | Controla a interação entre usuário e aplicação. Contém componentes responsáveis pela lógica de apresentação da aplicação e tem as responsabilidades de capturar dados, apresentar os resultados e controlar a navegação. |
||
11 | No mesmo nível estão os serviços expostos pela aplicação para interagir com outras aplicações. |
||
12 | O padrão de nomenclatura para as classes Java é *br.gov.mpog.dti.<xxx>.apresentacao*, respectivamente para a apresentação web e para os serviços, onde <XXX> é o nome do módulo. |
||
13 | A parte de apresentação no que diz respeito aos componentes de interface e interação direta com o usuário serão efetuados na camada do cliente (navegador) com o AngularJS. O código javascript integrará com o servidor enviando e recebendo mensagens no formato json via serviços REST providos pelo Spring MVC. |
||
14 | |||
15 | h4. 1.1.1 Tecnologias Utilizadas |
||
16 | |||
17 | |||
18 | * AngularJS 1.6.3 |
||
19 | * Ui Router 1.0 |
||
20 | * Spring MVC 4.2 |
||
21 | * Spring Security 4.0.3.RELEASE |
||
22 | |||
23 | h3. 1.2 Camada de Aplicação |
||
24 | |||
25 | Coordena a atividade da aplicação. Ela não contém regras de negócio nem mantém o estado dos objetos de negócio, mas pode manter o estado de uma tarefa em progresso. |
||
26 | O padrão de nomenclatura é *br.gov.mpog.dti.<xxx>.servico*, onde <xxx> é o nome do módulo. |
||
27 | |||
28 | h4. 1.2.1 Tecnologias Utilizadas |
||
29 | |||
30 | * Spring Boot 1.3.2.RELEASE |
||
31 | |||
32 | h3. 1.3 Camada de Domínio |
||
33 | |||
34 | Contém informações sobre o domínio do negócio. Mantém os objetos de negócio. |
||
35 | O padrão de nomenclatura é *br.gov.mpog.dti.<XXX>.modelo*, onde <XXX> é o nome do projeto. |
||
36 | |||
37 | h4. 1.3.1 Tecnologias Utilizadas |
||
38 | |||
39 | |||
40 | * POJO |
||
41 | * Hibernate Validation 5.1 |
||
42 | * JPA |
||
43 | |||
44 | h3. 1.4 Camada de Infraestrutura |
||
45 | |||
46 | Atua como uma biblioteca de suporte para as demais camadas, provendo comunicação entre elas, implementando persistência para os objetos de negócio, fornecendo bibliotecas para a camada de interface com o usuário etc. |
||
47 | O padrão de nomenclatura é *br.gov.mpog.dti.<XXX>.infraestrutura*, onde <XXX> é o nome do projeto. |
||
48 | |||
49 | h4. 1.4.1 Tecnologias Utilizadas |
||
50 | |||
51 | |||
52 | * Hibernate 4.3 |
||
53 | * Hibernate Envers 4.3 |
||
54 | * Spring Data 4.2 |
||
55 | |||
56 | |||
57 | h2. 2. Requisitos Arquiteturais |
||
58 | |||
59 | _Esta seção é um checklist cujo resultado final são os requisitos arquiteturais da aplicação. |
||
60 | Deve ser respondida, de forma sucinta, ao longo da execução do projeto. As questões que não se aplicam devem ser respondidas com “N/A”._ |
||
61 | |||
62 | h3. 2.1 Desempenho |
||
63 | |||
64 | * Qual a velocidade de resposta esperada da aplicação? |
||
65 | * Há diferentes classes de operações para as quais os usuários têm expectativas diferentes? |
||
66 | * Existe janela batch? O que executa nela? |
||
67 | * Há batches com restrições de desempenho específicas? Em caso afirmativo, especifique. |
||
68 | * Há dados com alta taxa de acesso para leitura/gravação que podem ser mantidos em memória nas diferentes camadas da arquitetura? |
||
69 | * Quais são os gargalos de desempenho esperados? |
||
70 | ** CPU |
||
71 | ** Memória no cliente, no servidor ou em nós intermediários |
||
72 | ** Espaço em disco em cada nó |
||
73 | ** Links de comunicação |
||
74 | ** Banco de dados (acesso, pesquisa, joins complexos) |
||
75 | ** Interação com outros sistemas internos |
||
76 | ** Interação com sistemas externos |
||
77 | |||
78 | h3. 2.2 Escalabilidade |
||
79 | |||
80 | * Qual o máximo de usuários esperado realizando que tipos de operações? |
||
81 | * Qual a perspectiva de crescimento em quais tabelas críticas sem impactar o desempenho da aplicação? |
||
82 | * Há possibilidade de saturar um link de comunicação que não pode ter a capacidade/velocidade aumentada? |
||
83 | * Que dimensões podem ser escaladas? (por exemplo: CPU, memória, servidores, distribuição geográfica etc.) |
||
84 | * Qual a principal estratégia para escalar a aplicação: ampliando os nós de uma topologia fixa ou adicionando novos nós? |
||
85 | |||
86 | h3. 2.3 Disponibilidade |
||
87 | |||
88 | * Qual o percentual de disponibilidade requerido? |
||
89 | * A disponibilidade varia ao longo do dia, da semana, do mês ou do ano ou em função de localização? |
||
90 | * Há interrupções controladas planejadas? Qual a programação? |
||
91 | |||
92 | h3. 2.4 Confiabilidade |
||
93 | |||
94 | * Há componentes com confiabilidade menor que a requerida para o sistema? |
||
95 | * Que estratégias estão em curso para tornar mais confiáveis os recursos menos confiáveis? |
||
96 | * Qual o tempo médio de falha por severidade? |
||
97 | * Como a confiabilidade pode ser avaliada antes da implantação? |
||
98 | |||
99 | h3. 2.5 Segurança |
||
100 | |||
101 | * Quais operações precisam ser seguras? |
||
102 | ** *Todas as operações não públicas (Públicas são as operações acessadas pela aplicação Portão do Cidadão), menos de login deverão ser protegidas* |
||
103 | * Como os usuários serão administrados? |
||
104 | ** *Através do SSO Acessos* |
||
105 | * Como serão dadas permissões aos usuários para acessarem operações seguras? |
||
106 | ** *Através do Acessos, que será a solução corporativo de gestão de acesso e de autorização do MPOG* |
||
107 | * Quais os diferentes níveis de segurança e como mapear: |
||
108 | ** Segurança por operação |
||
109 | *** *Serão protegidas utilizando as anotações padrão Java (JSR-250)* |
||
110 | ** Segurança por tipo de objeto |
||
111 | *** *Serão protegidas utilizando as anotações padrão Java (JSR-250)* |
||
112 | ** Segurança por instância de objeto |
||
113 | *** *Os objetos poderão ser filtrados por dados negociais, por exemplo dependendo da UF do usuário logado por exemplo. Esse filtro será aplicado às queries efetuadas no banco de dados.* |
||
114 | |||
115 | h3. 2.6 Manutenibilidade |
||
116 | |||
117 | * Há facilidade de contratação de pessoas com as habilidades técnicas requeridas e de atraí-las para a área? |
||
118 | * Que tipos de mudanças são esperados na primeira rodada de manutenção? Quais são suas prioridades relativas? |
||
119 | * Que tipo de testes de regressão é necessário para garantir que as manutenções não degradem as funcionalidades existentes? |
||
120 | |||
121 | h3. 2.7 Flexibilidade |
||
122 | |||
123 | * Há algum comportamento do sistema que precisa ser alterado regularmente sem necessidade de alteração na aplicação? |
||
124 | ** Isso pode estar contido em uma base de dados? |
||
125 | ** Há regras que podem ser aplicadas em tempo de execução por um motor de regras? |
||
126 | ** Há funções executadas por meio de scripts do usuário? Caso afirmativo, como será realizada a garantia de qualidade desses? |
||
127 | |||
128 | h3. 2.8 Usabilidade |
||
129 | |||
130 | * Qual o perfil dos usuários da aplicação? |
||
131 | * Há operações que devem ser realizadas o mais rapidamente possível, por meio da redução de ações do usuário? |
||
132 | * Há operações que requerem apresentações específicas para ajudar o usuário a realizá-las? |
||
133 | * Como é resolvido o equilíbrio entre integridade de dados e a habilidade de cancelar uma operação em andamento? |
||
134 | * Que tipos de treinamentos são esperados? |
||
135 | * Há algum sistema de ajuda incluído? |
||
136 | |||
137 | h3. 2.9 Configuração |
||
138 | |||
139 | * Quais os parâmetros cuja configuração é necessária nas máquinas que hospedarão a solução? |
||
140 | |||
141 | h3. 2.10 Personalização |
||
142 | |||
143 | * Que aspectos do sistema podem ser personalizados pelo usuário? |
||
144 | * Como o usuário realiza essa configuração? |
||
145 | * Qual a estratégia para definir os padrões? |
||
146 | |||
147 | h3. 2.11 Portabilidade |
||
148 | |||
149 | * Portabilidade de dados entre a aplicação e outras soluções? |
||
150 | ** Não |
||
151 | * Portabilidade entre diferentes versões de um único banco de dados? |
||
152 | ** Não |
||
153 | * Portabilidade para um banco de dados de outro fabricante? Caso afirmativo, qual/quais e em que situação? |
||
154 | ** Não |
||
155 | * Portabilidade de browser? Quais marcas e versões? |
||
156 | ** Não |
||
157 | * Portabilidade de sistema operacional? |
||
158 | ** Sim |
||
159 | |||
160 | h3. 2.12 Conformidade com padrões |
||
161 | |||
162 | * Quais padrões legais se aplicam? |
||
163 | * Quais padrões técnicos se aplicam? |
||
164 | * Quais outros padrões se aplicam? |
||
165 | * Quais padrões de desenvolvimento se aplicam? |
||
166 | ** Nomenclatura de bases de dados |
||
167 | ** Padrões arquiteturais internos |
||
168 | ** Padrões de linguagem e de codificação |
||
169 | ** Padrões de testes e de revisões |
||
170 | ** Padrões de apresentação |
||
171 | ** Modelos ou metodologias de ciclo de vida |
||
172 | |||
173 | h3. 2.13 Internacionalização |
||
174 | |||
175 | * Quais os idiomas suportados? |
||
176 | ** Português do Brasil (pt_BR) |
||
177 | * Em que ordem? |
||
178 | * Tipo de codificação de caracteres? Simples ou multi? |
||
179 | ** *Todos os arquivos serão salvos utilizando a codificação UTF-8.* |
||
180 | |||
181 | h3. 2.14 Interoperabilidade |
||
182 | |||
183 | * Com que soluções a aplicação interagirá imediatamente? |
||
184 | ** *O Acessos, sistema de Single Sign On; Sistema e-Sic via WebService* |
||
185 | * Que outras soluções estão previstas? |
||
186 | ** *Não há por enquanto* |
||
187 | * Com que categorias de aplicações internas e externas pode ser necessário interagir? |
||
188 | ** *Através de webservices REST* |
||
189 | * Que funcionalidades da aplicação serão expostas como um serviço? |
||
190 | ** Não tem nenhuma funcionalidade a disponibilizar como serviço ainda |
||
191 | * Que funcionalidades da aplicação precisam ser expostas como web service ou via um portal? |
||
192 | ** Não tem nenhuma funcionalidade a disponibilizar como serviço ainda |
||
193 | ** Digrama de Implantação com as Integrações conhecidas do Módulo SGC. |
||
194 | *** !sgc-implantacao.png! |
||
195 | |||
196 | h3. 2.15 Auditoria e rastreabilidade |
||
197 | |||
198 | * Existe a necessidade de auditar ou rastrear as ações dos usuários na aplicação? |
||
199 | ** *Sim* |
||
200 | * Quais as ações e informações serão registradas? |
||
201 | ** *Situação anterior da tupla do banco de dados (Usando Hibernate Envers para auditoria), IP, Usuário Logado e tipo da operação* |
||
202 | * Por quanto tempo, no mínimo, o registro de quem fez o que deve ser mantido? |
||
203 | ** *Indeterminado* |
||
204 | |||
205 | h3. 2.16 Transações |
||
206 | |||
207 | * Quais as fronteiras mais importantes das transações de banco de dados e aplicação? |
||
208 | ** *A abertura e fechamento das transações (commit/roollback) se dará na camada de aplicação com anotações @Transactional* |
||
209 | * O padrão otimista de locking é apropriado ou é necessário algo mais complexo em alguma ou todas as situações? |
||
210 | ** *Não há necessidade com os requisitos atuais* |
||
211 | |||
212 | h3. 2.17 Administração |
||
213 | |||
214 | * Que tipos de intervenções “ao vivo” são requeridos? |
||
215 | * Há necessidade de realizar configuração remota da aplicação? |
||
216 | * Há consoles de administração que serão usadas para gerenciar a aplicação? |
||
217 | |||
218 | h2. 3. Visão de Implementação |
||
219 | |||
220 | _Nesta seção descreva sucintamente a estrutura geral do modelo de implementação, a divisão do software em camadas e subsistemas no modelo de implementação e todos os componentes significativos do ponto de vista da arquitetura._ |
||
221 | |||
222 | !Visao_Detalhada_das_Camadas.jpeg! |
||
223 | |||
224 | h3. 3.1 Pacotes de Design Significativos do Ponto de Vista da Arquitetura |
||
225 | |||
226 | _Para cada pacote significativo, inclua uma subseção com o respectivo nome, uma breve descrição e um diagrama com todos os pacotes e classes significativos nele contidos. |
||
227 | Para cada classe significativa no pacote, inclua o respectivo nome, uma breve descrição e, opcionalmente, uma descrição de algumas das suas principais responsabilidades, operações e atributos._ |
||
228 | |||
229 | h3. 3.2 Componentes |
||
230 | |||
231 | _Lista dos subsistemas localizados em cada camada e o diagrama de componentes._ |
||
232 | |||
233 | h3. 4. Diagrama do Banco de Dados |