Como definir, avaliar requisitos, decompor e documentar uma arquitetura de software com base em um problema?
Antes de começar, vale explicar que definição de framework ou definição de tecnologia não significa definição de arquitetura. Muito que se vê no mercado profissionais escolhendo de forma arbitrária frameworks ou linguagens enquanto dizem estar "definindo a arquitetura". Bom, na prática a arquitetura, mesmo que de forma arbitrária, está sendo definida, mas não significa que está correto.
Então, o que um arquiteto precisa fazer para afirmar que fez a definição de uma arquitetura? Bom, algumas coisas. Entre elas:
- Avaliação da viabilidade do projeto - Antes de iniciar um projeto é importante avaliar a viabilidade de forma macro.
- Cálculo de custo de projeto vs custo da solução - Não tem porque criar um projeto que terá um custo de manutenibilidade e sustentabilidade superior ao que se espera como retorno.
- Capacidade - Tem um time para desenvolver a solução? O arquiteto precisa ter a capacidade de avaliar de forma macro, antes mesmo de decompor os requisitos e conseguir avaliar se tem um time com skills para seguir com o projeto, se terá de preparar a equipe para alguma possível tecnologia que venha a fazer sentido com base no contexto do projeto, ou até mesmo, se terá de contratar mais desenvolvedores e engenheiros para atender a solução.
- Levantamento de premissas e funcionalidades esperadas.
- Outro ponto importante é elaborar a documentação do projeto para trazer visibilidade mais precisa das etapas do projeto: Problema que queremos resolver, tecnologias que solucionam o problema de forma adequada e que esteja também dentro da capacidade da empresa, requisitos não funcionais, validação de requisito e claro, um diagrama de implantação (no mínimo) para conseguirmos visualizar a solução por completo. E é esse ponto que vamos tratar nesse artigo.
- Avaliação da viabilidade do projeto - Antes de iniciar um projeto é importante avaliar a viabilidade de forma macro.
- Cálculo de custo de projeto vs custo da solução - Não tem porque criar um projeto que terá um custo de manutenibilidade e sustentabilidade superior ao que se espera como retorno.
- Capacidade - Tem um time para desenvolver a solução? O arquiteto precisa ter a capacidade de avaliar de forma macro, antes mesmo de decompor os requisitos e conseguir avaliar se tem um time com skills para seguir com o projeto, se terá de preparar a equipe para alguma possível tecnologia que venha a fazer sentido com base no contexto do projeto, ou até mesmo, se terá de contratar mais desenvolvedores e engenheiros para atender a solução.
- Levantamento de premissas e funcionalidades esperadas.
- Outro ponto importante é elaborar a documentação do projeto para trazer visibilidade mais precisa das etapas do projeto: Problema que queremos resolver, tecnologias que solucionam o problema de forma adequada e que esteja também dentro da capacidade da empresa, requisitos não funcionais, validação de requisito e claro, um diagrama de implantação (no mínimo) para conseguirmos visualizar a solução por completo. E é esse ponto que vamos tratar nesse artigo.
Então, por onde começar?
Primeiro precisamos do problema que queremos resolver. Vou usar um case que me foi passado à algum tempo e não vou mencionar a origem do case (por razões óbvias).DesafioFormalização dos contratos de financiamento de imóveis baseando-se em documentos disponibilizados pelo cliente, em modelos de regras de créditos conforme perfil do cliente.
DesafioFormalização dos contratos de financiamento de imóveis baseando-se em documentos disponibilizados pelo cliente, em modelos de regras de créditos conforme perfil do cliente.
Funcionalidades
- Entrada de documentos pelos canais digitais;
- Status do processo de análise reportado ao cliente através de canais digitais por push ou meios de comunicação como SMS e e-mail;
- Modelo de regra de crédito mais inteligente reportando pendencias e/ou inconsistência de documentos de forma rápida ao cliente;
- Uso de documentos digitais disponibilizado por órgãos externos.
- Entrada de documentos pelos canais digitais;
- Status do processo de análise reportado ao cliente através de canais digitais por push ou meios de comunicação como SMS e e-mail;
- Modelo de regra de crédito mais inteligente reportando pendencias e/ou inconsistência de documentos de forma rápida ao cliente;
- Uso de documentos digitais disponibilizado por órgãos externos.
Premissas
- O sistema de imóveis se encontra em ambiente mainframe.
- O sistema de financiamento de imóveis expõe webservices SOAP que suportam atualmente 10 TPS.
- Como há dados sensíveis sendo trafegados é importante as camadas de segurança e fraude fazerem parte da jornada de captura.
- Temos uma previsão de consumo de mais 1000 TPS
- Se integrar a um Backoffice externo em Salesforce
- O sistema de imóveis se encontra em ambiente mainframe.
- O sistema de financiamento de imóveis expõe webservices SOAP que suportam atualmente 10 TPS.
- Como há dados sensíveis sendo trafegados é importante as camadas de segurança e fraude fazerem parte da jornada de captura.
- Temos uma previsão de consumo de mais 1000 TPS
- Se integrar a um Backoffice externo em Salesforce
Agora vamos começar a trabalhar no nosso documento
Vou criar alguns nomes para simplificar a elaboração do documento:Nome da empresa: XptoBanNome do projeto: Xpto DigitalNome dos arquitetos: Rodrigo Celebrone e Outro AlguémLink para a documentação: https://docs.google.com/document/d/16sft-JbzSN7sd9q0AlM2RHOFKl6sncE2hEjv_ENApQU/edit?usp=sharing
Etapas do documento
- Proposta
- Modelo de implantação
- Detalhamento dos componentes
- Mecanismos arquiteturais
- Requisitos não funcionais
- Detalhamento dos requisitos não funcionais (estímulo/resposta)
- Proposta
- Modelo de implantação
- Detalhamento dos componentes
- Mecanismos arquiteturais
- Requisitos não funcionais
- Detalhamento dos requisitos não funcionais (estímulo/resposta)