Revisão de arquitetura

Para fazer revisões de arquitetura devemos considerar alguns pontos importantes.

As soluções/projetos devem estar adequadas ao um padrão especifico, para isso deve-se validar periodicamente a estrutura das mesmos para que sua evolução seja o mantida dentro do padrão, reduzindo o impacto com relação a manutenção/sustentação.

Caracteristicas implícitas

As implementações devem ser analisadas levando em consideração os seguintes aspectos:

  • O que esta sendo feito:
    • Satisfaz os casos de uso/requisitos do sistema;
    • Resiste a mudanças efetuadas no ambiente de implementação;
    • É de fácil manutenção e entendimento;
  • O procedimento de implementação é claro;
  • Tem fácil adaptação a possíveis mudanças validas efetuadas nos requisitos (Nível de dimensionamento mais complexo).

Objetivos diretos

Observar com precisão os seguintes pontos:

  • Dimensionar falhas no disign da solução;
  • Manter a consistência e integridade na arquitetura das aplicações;
  • Identificar oportunidade de:
    • Refactory;
    • Reutilização de código;
    • Criação de componentes;
  • Observar se as fronteiras das camadas são respeitadas no design da aplicação;
  • As camadas estão sendo utilizadas para encapsular as fronteiras conceituais entre os tipos de serviço, Ex:
    • Negocio: domínio da solução;
    • Facade: aplicação, distribuição de fluxos entre web e negocio e demais camadas;
    • Web: interface com o usuário;
    • Infra: cross-cutting, camada transversal que serve as demais;
    • Repositorio: persistência dos dados;
  • A abstração das camadas  facilita a compreensão do design;
  • Detectar incopatibilidade entre os casos de uso:
    • Design execessivo;
    • Requisitos não realistas/ausentes;
  • Analisar aspectos não-funcionais:
    • Desempenho;
    • Confiabilidade;
    • Segurança;

Sugestão de verificação

São necessárias algumas verificações para garantir a qualidade dos fontes em e da estrutura da aplicação, são eles:

  • Mecanismos de Arquitetura/Design
    • Furo de camadas;
    • Documentos/arquivos dispersos;
    • Recuperação ou tratamento de erros;
    • Exibição e interfaces comuns (exibição em janelas, captura de dados, condicionamento de sinais etc.);
    • Para componentes TCE, esta utilizando os pacotes nuGet;
    • Assembly information;
    • Nomenclaturas
      • Pastas;
      • Projetos;
      • Classes;
      • Interfaces;
      • Arquivos;
      • Mensagens;
    • Nível de abstração de componentes;
  • Qualidade:
    • Cobertura de código com relação aos testes unitários;
    • Testes de carga;
    • Testes de regressão;
    • Testes de de interface (Automatizados);
    • (…)
  • Código fonte:
    • Nomespaces;
    • Duplicação de código;
    • “Using” desnecessário;
    • Nomes de variáveis;
    • Heranças;
    • Visibilidade de métodos;
    • Classes por arquivo (Deve ser somente uma classe);
    • Poluição do código:
      • Comentários desnecessários;
      • Metodos sem nenhuma referência;
      • Métodos com escopos vazios;
      • Mensagens/strings fora do resource;
    • Padrões SOLID;
      • Reponsabilidade única;
        • Linhas de código por método;
      • Fechado para alteração, aberto para extenção;
        • Complexidade do método;
      • Deve ser possível substituir uma classe base por suas classes derivadas em quanquer ponto do código.
        • Uso da classe base e herança da forma correta;
      • Classes dependem somente de interfaces e não de classes concretas;
        • Uso do NEW dentro das classes;
      • Injeção de dependência / Inversão de controle;
        • Construtor com as interfaces necessárias;

 

Verificação adicional

A verificação adicional é para garantir a evolução adequada das estruturas paralelas relacionas ao projeto como documentação, banco de dados e versionador de código;

  • Repositorio (Team Explorer)
    • Nomenclatura
      • Pastas;
      • Branches;
    • Banco de dados
      • Nomenclatura
        • Tabelas;
        • Views;
        • StoredProcedures;
        • Funções;
        • Colunas;
        • FK, PK, UK;
      • Normalização adequada;
    • Documentação
      • Técnica (DA – Documento de arquitetura)
        • Visão logica (diagrama de sequência);
        • Visão dos dados (DER);
      • Negocio (UC – Casos de uso);
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s