Arquitetura do Sistema - Princípios de Arquitetura
Voltar
Nesta seção estão descritos os princípios de arquitetura para o sistema computacional objeto deste projeto. Tais princípios são definições de alto nível de valores fundamentais, regras gerais e diretrizes que orientam o processo de tomada de decisões técnicas, servindo de base para a arquitetura e desenvolvimento deste sistema.
Índice
- 1 PA01 – Conformidade com padrões técnicos
- 2 PA02 – Navegadores oficiais
- 3 PA03 – Automatização dos testes
- 4 PA04 – Reutilização e simplicidade de componentes
- 5 PA05 – Sistema fácil de usar
- 6 PA06 – Segurança de informações
- 7 PA07 – Mudanças com base em requisitos
- 8 PA08 – Aderência a domínios funcionais
- 9 PA09 – Interfaces de baixo acoplamento
PA01 – Conformidade com padrões técnicos
O sistema será desenvolvido para operar em plataforma Web. O back-end será implementado em tecnologia Java EE (versão 7) e Java Persistence API (versão 2.1) enquanto que o front-end com Angular (versão 2.0) e Typescript.
No contexto dos componentes desenvolvidos em Java, os seguintes padrões serão adotados quando aplicável:
Adicionalmente, as seguintes Features Java EE 7 poderão ser utilizadas:
- Bean Validation
- EJB (Enterprise JavaBeans)
- JavaMail (JavaMail API)
- JAX-RS (Java API for RESTful Web Services)
- JAX-WS (Java API para Web services XML)
- JTA (Java Transaction API)
- JPA (Java Persistence API)
- CDI (Contexts and Dependency Injection for Java EE)
- JSON-P (Java API for JSON Processing)
Mudanças nos padrões técnicos e nas versões de tecnologias podem levar a mudanças no sistema computacional.
Para as funcionalidades do sistema funcionarem de forma adequada, é necessário usar um navegador da web homologado pela equipe de desenvolvimento. As versões suportadas de navegadores da web para este projeto são as seguintes:
- Internet Explorer 11 ou superior
- Google Chrome 42 ou superior
- Firefox versão 45 ou superior
Versões de navegadores não homologadas podem apresentar resultados imprevisíveis.
PA03 – Automatização dos testes
Crie scritps automáticos para testar unidades individuais de código fonte afim de mostrar que cada unidade atende corretamente sua especificação. Unidades podem ser métodos, classes, módulos, etc. Dependerá muito do que é a menor parte do sistema que pode ser testada.
Crie scripts automáticos para testar a combinação das unidades em conjunto. Tais scripts devem emular a interação do usuário em usar as diversas funcionalidades consideradas centrais do sistema para confirmar as principais funcionalidades fazem o esperado.
Fique atento ao fato de que é necessário rever e atualizar os scripts de teste para evitar resultados errados na hora da execução automática.
Considere que não é possível substituir todos os testes manuais por automáticos pois testes manuais também são importantes para encontrar falhas que simulam ambiente real e ações que só pessoas podem ser capazes de fazer no sistema.
PA04 – Reutilização e simplicidade de componentes
A arquitetura do sistema deve ser desenvolvida considerando componentes reutilizáveis, modulares e de baixo acoplamento que implementam serviços bem definidos.
Ela deve ser o mais simples possível de manter, mas atendendo a todos os requisitos de negócios e corporativos. Sempre que complexidade for necessária, ela deve ser encapsulada para promover a simplicidade das soluções desenvolvidas.
PA05 – Sistema fácil de usar
O sistema deve ser fácil de usar, intuitivo e seguir um padrão de identidade visual, com aparência e layouts uniformes.
A tecnologia computacional deve ser transparente para os usuários, portanto, permitir que eles concentrem-se nas suas tarefas em vez de preocupar-se com questões relativas à tecnologia.
PA06 – Segurança de informações
As informações devem ser protegidas com base na integridade, disponibilidade, confidencialidade, incontestabilidade e autenticidade. Cada informação deve ser submetida a uma avaliação de segurança com base nesses cinco fatores.
A rastreabilidade de segurança inclui a concepção e aplicação adequadas do sistema de auditoria e das ferramentas de monitoramento.
O compartilhamento e a divulgação abertos de informações devem ser balanceados com a necessidade de restringir a disponibilidade de informações confidenciais, proprietárias e sensíveis.
Atentar que as leis e regulamentos atuais podem exigir privacidade de dados e, simultaneamente, permitir acesso livre e sem restrição. Informações temporárias (massas de teste) devem ser protegidas para evitar especulação injustificada, erros de interpretação e uso impróprio.
PA07 – Mudanças com base em requisitos
Mudanças em sistemas e tecnologias serão implementadas apenas para atender a necessidades de negócios.
Mudanças de tecnologia podem criar oportunidades para melhorar o processo de negócios e, consequentemente, alterar as necessidades de negócios.
O desenvolvimento do sistema ou melhoria técnica não será implementada a menos que haja uma necessidade de negócio associada.
Uma necessidade de negócio deve ser considerada, mas deve também ser alinhada com outros princípios de arquitetura e/ou direcionadores de TI. Deve haver um equilíbrio entre necessidades de negócio e operações de TI.
PA08 – Aderência a domínios funcionais
As regras de negócios e funcionalidade do sistema são consistentes com a finalidade/missão deste sistema. Deverá haver uma aderência completa ao domínio funcional em que o sistema está localizado.
Cada nova solicitação de funcionalidade deve ser avaliada, conjuntamente, pelo Product Owner, consultor do negócio e gestor do contrato do projeto.
PA09 – Interfaces de baixo acoplamento
As interfaces de comunicação devem ter baixo acoplamento, possuir descrição própria e oferecer baixo impacto sobre os sistemas computacionais envolvidos em caso de mudanças.
Baixo acoplamento significa que os serviços (APIs corporativas, por exemplo) são criados sem uma afinidade com certo consumidor do serviço. Portanto, o serviço é totalmente desacoplado de um consumidor.
O serviço também é responsável pelo tratamento de exceção. O resultado é uma arquitetura de baixo acoplamento.