DAS;
Estilos Arquiteturais;
Reutilização de Software, e
Arquiteturas em Sistemas de IA.
Documento de Arquitetura (DAS)
🧾Template
Principais Estilos Arquiteturais:
📌Stand-alone & N-camadas & Padrão Arquitetural MVC;
📌Cliente-Servidor & P2P & Objetos Distribuídos;
📌Pipes and Filters & Repositório, e
📌Orientado a Eventos & Orientado a Serviços.
Stand-alone & N-camadas & MVC
Pipes and Filters & Repositório
Cliente-Servidor & P2P & Objetos Distribuídos
Orientado a Eventos & Orientado a Serviços
Materiais para Leitura (Outros Autores)
Reutilização Software
Tópicos em Ciência da Computação, no qual a autora se aprofunda em Reutilização de Software via classificação e seleção de artefatos reutilizáveis.
A autora perpassa por vários sistemas que já propuseram reutilização de software com esquemas de uso facilitado para encontrar o que deseja, bem como reutilizar o achado.
Nos tempos modernos, parte desse processo tem migrado para suportes orientados à IA.
No trabalho de Stefanye Haiashida (2024), TCC intitulado "Influência da IA na otimização do desenvolvimento de software, e a influência da IA generativa no futuro dessa prática", a autora conclui que a IA tem facilitado e agilizado o processo de desenvolvimento em geral, além de aprimorar e moldar tendências e métodos tecnológicos. Entretanto, a autora destaque que a IA não deverá substituir o fator humano nessa prática tão cedo.
Interessante analisar a colocação de um dos entrevistados, participantes da etapa de análise da autora. Esse menciona que "linguagem de programação é algo absoluto e determinístico, e modelos generativos não são.". Cabem reflexões...
No trabalho de João Pedro Barros (2025), Dissertação de Mestrado intitulada "Aplicações da inteligência artificial generativa em processos de produção de sites com foco na experiência dos web designers", o autor menciona que a maioria dos designers reconhece os benefícios da IA Generativa. Destacam, principalmente: agilidade, otimização de tempo e geração de ideias. Entretanto, também apontam fragilidades e preocupações, com foco em: originalidade, dependência tecnológica e questões éticas. Enfim, o autor conclui que, se utilizada com curadoria crítica e criatividade, a IA Generativa permite aumentar a produtividade dos designers, até mesmo promovendo soluções personalizadas, eficientes e alinhadas às demandas dos usuários, com a ressalva de que não substitui os humanos.
Arquitetura em Sistemas de IA
O texto a seguir é baseado na fonte:
https://www.dbccompany.com.br/arquiteturas-de-ia-projetando-sistemas-inteligentes-escalaveis/
O autor perpassa pelos componentes mais elementares de uma arquitetura moderna de IA, bem como pelas principais decisões de design para diferentes domínios de aplicação e pelos desafios recorrentes da integração de IA com sistemas legados. O texto original foi enriquecido com outros conceitos associados...
Componentes Elementares de uma Arquitetura de IA:
Coleta e Ingestão de Dados
Armazenamento de Dados
Processamento e Engenharia de Dados
Treinamento e Gerenciamento de Modelos
Inferência e "Serviçagem" de Modelos
Monitoramento, Governança e Segurança
Coleta e Ingestão de Dados
Usam-se ferramentas como Apache Kafka, Apache Flink, Apache NiFi e AWS Kinesis visando lidar com a ingestão em tempo real (streaming) ou em lote (batch), bem como assegurar resiliência, escalabilidade e alta disponibilidade.
Outras informações sobre Coleta e Ingestão de dados em: https://repositorio.ufsc.br/handle/123456789/268242
Armazenamento de Dados
Adota-se a abordagem “Lakehouse”, combinando Data Lakes (ex. Amazon S3, Azure Data Lake Gen2, Google Cloud Storage) para dados brutos, e Data Warehouses (ex. BigQuery, Snowflake ou Redshift) para dados processados e otimizados para análises complexas.
Trata-se de uma arquitetura de dados moderna para armazenamento flexível e de baixo custo dos data lakes. Além disso, faz uso combinado das características de governança e desempenho inerentes aos data warehouses, gerenciando todos os tipos de dados (brutos, estruturados e não estruturados) em formatos abertos.
Outras informações sobre Lakehouse em: /https://15721.courses.cs.cmu.edu/spring2023/papers/02-modern/armbrust-cidr21.pdf
Processamento e Engenharia de Dados
Envolve atividades como limpeza, normalização, transformação, enriquecimento e agregação, procurando preparar de forma adequada os dados que alimentarão os modelos de IA. Ferramentas como Apache Spark, dbt (Data Build Tool), Apache Beam e Apache Airflow são utilizadas para orquestrar os workflows de transformação, primando por atualidade e consistênicia dos dodos. Usam-se arquiteturas baseadas em “medallion architecture” (bronze, silver, gold) para organização dos dados em camadas de refinamento progressivo. Por fim, bancos especializados (ex. Elasticsearch) permitem buscas em texto livre. Há ainda o Neo4j para grafos.
Treinamento e Gerenciamento de Modelos
O treinamento de modelos de IA, demanda infraestrutura especializada (como clusters com GPU/TPU) e ambientes isolados para experimentação. TensorFlow, PyTorch, Scikit-learn e XGBoost são alguns frameworks utilizados para criação dos modelos. Há ainda as plataformas de versionamento MLflow, Weights & Biases, Vertex AI, SageMaker e Kubeflow, as quais permitem manter rastros de experimentos, tuning de hiperparâmetros e deployment automatizado. Machine Learning Operations (MLOps) é uma abordagem que ajuda a acelerar o ciclo de vida dos modelos, promovendo reprodutibilidade, colaboração entre equipes e governança.
Outros detalhes sobre MLOps constam em: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10081336
Inferência e "Serviçagem" de Modelos
Nessa etapa, os modelos são disponibilizados em ambientes de produção, presando pela baixa latência e pela alta confiabilidade. TensorFlow Serving, NVIDIA Triton Inference Server, TorchServe ou implementações via Docker/Kubernetes são servidores especializados usados nesse contexto. Há exposição dos modelos via APIs REST/gRPC, muitas vezes gerenciadas por API Gateways (ex: Kong, Istio) com autenticação e escalabilidade automática. Por fim, técnicas de quantização, compressão e poda de redes neurais permitem reduzir o custo computacional da inferência, principalmente em dispositivos embarcados ou aplicações mobile (Edge AI). Outros detalhes sobre essas técnicas podem ser obtidos em: https://repositorio.ufrn.br/server/api/core/bitstreams/7603cea4-cdeb-4e4c-be9d-938028a93bda/content
Monitoramento, Governança e Segurança
Esses são vistos como pilares visando obter confiança, ética e conformidade legal. Os modelos demandam monitoramento contínuo para identificar degradação de desempenho (model drift, data drift), variações de latência e consumo de recursos. Muito resumidamente, e com base em Surya Gangadhar Patchipala (2023), model drift compreende a situação na qual o modelo não mais realiza a tarefa imposta/pretendida de forma adequada. Já data drift compreende o momento no qual os dados reais diferem dos dados usados no treinamento.
EvidentlyAI, Prometheus, Grafana, Kibana e DataDog são exemplos de ferramentas que ajudam nesse processo, conferindo painéis e alertas em tempo real. Há necessidade ainda de um olhar mais criterioso em relação às políticas de segurança (criptografia, autenticação, rastreabilidade), controle de versões e mecanismos de explicabilidade (XAI) para auditoria dos resultados gerados. Explicabilidade pode ser entendida como um mecanismo técnico muito relevante visando transparência, auditabilidade, dentre outros princípios que devem ser atendidos em Sistemas de Informação, em especial os que lidam com dados sensíveis e/ou decidem sobre direitos fundamentais. Outros detalhes sobre XAI podem ser encontrados em: (Filho A., 2025).
Domínios e Decisões de Design:
Sistemas de Recomendação, onde o tempo é um fator crítico. Portanto, arquiteturas com caches in-memory e modelos adaptativos atualizados online são relevantes. Arquiteturas com cache in-memory armazenam dados frequentemente acessados diretamente na memória RAM, permitindo reduzir a necessidade de consultar discos rígidos ou bancos de dados relacionais, o que contribui para diminuir a latência. Ferramentas populares nesse sentido: Redis e Memcached em arquiteturas de microsserviços. Há dois tipos mais conhecidos: (i) Cache Embutido (In-Process Caching), onde o cache reside na mesma memória do serviço que consome os dados. Latência muito baixa, mas alto consumo de memória e dificuldade e manter consistência dos dados, caso o serviço escale horizontalmente. (ii) Cache Distribuído In-Memory (Out-of-Process Caching), onde os dados são armazenados em um cluster de servidores de cache dedicado, externo ao serviço. Compartilhamento de dados centralizado, mesmo considerando o uso de múltiplas instâncias, além de alta escalabilidade e resiliência; mas há maior latência em comparação ao cache embutido.
Processamento de Linguagem Natural (PLN) (ex. chatbots, análise de sentimentos e geração de texto (LLMs)), onde o poder computacional é um fator relevante. Portanto, arquiteturas distribuídas com GPUs de alta capacidade, balanceamento de carga, bem como técnicas avançadas de paralelismo são relevantes. Nesse sentido, há necessidade de múltiplos processadores gráficos para trabalhar em conjunto, interligados via redes de altíssima velocidade, visando processamento paralelo massivo de grandes volumes de dados, sendo arquiteturas muito utilizadas no treinamento de modelos de Inteligência Artificial.
Visão Computacional com detecção de objetos, reconhecimento facial, dentre outros recursos, onde é necessário o processamento de grandes volumes dados (imagens e vídeos). Portanto, arquiteturas de Redes Neurais Convolucionais (CNN), preparadas para armazenamento otimizado, são relevantes. Como funcionam? Basicamente, empilham-se camadas como convolução (Conv2d), ativações (ReLU) e camadas totalmente conectadas. O processo de otimização envolve a exportação do modelo base (treinado em ferramentas como: PyTorch ou TensorFlow) para o formato ONNX (Open Neural Network Exchange), executando-o e compilando-o, por exemplo, no NVIDIA TensorRT. Isso tende a garantir latência bem baixa e alto throughput em GPUs (placas de vídeo ou aceleradores). Sendo assim, pode-se processar uma quantidade massiva de dados, cálculos ou quadros por segundo simultaneamente. Existem várias técnicas de Otimização do TensorRT para CNNs, dentre elas: Fusão de Camadas (Layer/Operator Fusion) para eliminar overheads de leitura e escrita na memória, bem como chamadas de API, combinando múltiplas operações matemáticas e camadas consecutivas em único kernel de execução na GPU; Seleção de Kernel (Auto-tuning) para selecionar o algoritmo matemático de convolução mais rápido, considerando GPU usada, e Computação de Precisão Mista para diminuir o consumo de memória, alterando o tipo de dado da rede.
Análise Preditiva em Larga Escala, onde há demanda de batch processing eficiente, com escalabilidade horizontal. Alguns exemplos desse tipo de análise são Previsão de Churn, manutenção preditiva ou previsão de demanda. Só para contextualizar... A Previsão de Churn compreende uma análise que identifica clientes com maior probabilidade de deixar de usar um produto ou serviço. Na sequência, são tomadas ações preventivas para retenção. Portanto, arquiteturas baseadas em DAGs (Grafo Acíclico Direcionado), organizando o trabalho em estágios e tarefas paralelas, compreendendo um pipeline escalável e uso de algoritmos clássicos (regressão, classificação, clusterização e recomendação). É comum o uso de Batch Transform, sendo essa uma ferramenta da Amazon usada para rodar em grande escala, realizar inferências e transformações em conjuntos de dados numerosos/massivos.
Nesse contexto, e orientando-se pela fonte (https://ogcruz.github.io/Bookdown/introdu%C3%A7%C3%A3o-%C3%A0s-s%C3%A9ries-temporais.html) conceitos como séries temporais, regressão e classificação tornam-se relevantes:
Séries temporais são conjuntos de observações ordenadas em um intervalo de tempo (dia, mês, trimestre, ano, dentre outros), ou seja, ordenadas cronologicamente. Isso permite obter uma visão geral sobre o andamento ou comportamento da variável em análise. Existem as séries regulares e as séries irregulares. Nas séries regulares, têm-se que as observações ocorrem em intervalos de tempo fixos. Já nas séries irregulares, têm-se que as observações ocorrem em intervalos de tempo variados.
A classificação dos tipos de séries temporais compreende:
séries temporais contínuas: obtém-se a informação com observações em qualquer intervalo de tempo. Exemplo: Temperatura.
séries temporais discretas: obtém-se a informação com observações em intervalos de tempo discreto e equidistantes (ano, mês, dias e outros). Exemplo: Mortalidade Infantil.
séries temporais multivariadas: obtém-se a informação considerando várias coleções de observações para a mesma sequência de períodos de tempo, envolvendo uma análise histórica. Exemplo: Número de Homicídios e Acidentes na Região Sudeste.
séries temporais multidimensionais: obtém-se a informação considerando várias coleções de observações para a mesma sequência de períodos de tempo, mas em diferentes contextos. Exemplo: Número de AVCs em Diferentes Unidades Federativas.
Regressão é uma técnica usada para prever valores futuros de séries temporais, permitindo compreender tendências e padrões. Predição...
Alguns Desafios Inerentes à Integração de IA com Sistemas Legados:
Interoperabilidade - é relevante a criação de APIs ou middlewares intermediários, adequando os dados dos sistemas legados ao formato necessário à IA (ex: JSON, Parquet, Avro). ETLs (em português: Extrair, Transformar, Carregar) ajudam nesse processo, e são comumente utilizados para extrair e converter dados de BDs Relacionais mais antigos (ex: Oracle, DB2). Leia mais em: https://www.ibm.com/br-pt/think/topics/etl
Desacoplamento - utilizar filas de mensagens (Kafka, RabbitMQ, Pub/Sub) e microsserviços permite desacoplar os sistemas legados das novas aplicações de IA. Com essa separação clara, torna-se possível atualizar ou escalar os componentes de IA sem gerar impactos no que está em operação. Filas de mensagens são componentes de middleware que permitem a comunicação assíncrona entre aplicações, armazenando mensagens até que possam ser processadas por terceiros. O Apache Kafka, por exemplo, é uma plataforma de streaming de eventos que permite publicar, subscrever e processar fluxos de dados em tempo real, oferecendo vantagens como alta escalabilidade, baixa latência e durabilidade.
Governança e Segurança - regular e assegurar que os modelos de IA operem em conformidade com políticas corporativas, Lei Geral de Proteção de Dados Pessoais (LGPD), General Data Protection Regulation (GDPR), Marco Legal (ainda em tramitação) e demais regulações. Aplicam-se técnicas como data masking, logging e ferramentas de rastreabilidade para ajudar nesse processo. Data masking é uma técnica de preservação da privacidade, sendo usada para proteger a identificação de informações pessoais, ou seja, dados sensíveis. Como isso é feito? Substituindo essas informações por outras realistas, mas anonimizadas. A ideia é manter a usabilidade do dado para desenvolvimento, teste, análise ou treino, mas não permitir o acesso não autorizado ou indevido ao mesmo. Ler sobre Privacidade Diferencial...
IA Aplicada a Ambientes de Engenharia de Software - Renato Afonso
Nesse artigo, é possível perceber que existem ambientes que estruturam o uso de IA para amparo de atividades da Engenharia de Software.
Essas atividades podem ir desde a elaboração de modelos nas etapas de projeto de software até geração de testes e código.
Conhecer ferramentas e saber avaliar o que é gerado tornam-se demandas na rotina de atividades de um Engenheiro de Software moderno.
Refatoração de Código: Comparação entre Abordagens Manuais e IA Generativa
Trata-se de um TCC da Universidade Tecnológica Federal do Paraná. Nele, a autora Maria Regina reporta que as ferramentas de IA Generativa promoveram melhorias em diferentes métricas de qualidade. Entretanto, a autora coloca ainda que a IA Generativa apresentou limitações relacionadas à preservação de contexto, com geração de erros de compilação e introdução de alterações que iam além do escopo tradicional da refatoração.
Novamente, algo que reforça a necessidade de avaliar o que é gerado pela IA. A IA alucina, e demanda cuidados ao usá-la. O conhecer e o saber desenvolver e aplicar continuam sendo os principais diferenciais de um Engenheiro de Software bem formado.
IA Generativa: A Revolução na Educação em Engenharia de Software.
Debate interessante sobre a IA Generativa, em especial no que compreende o aprendizado e o ensino da Engenharia de Software.
O vídeo original foi produzido por pesquisadores do Software Engineering Institute, da Carnegie Mellon University, disponível em: https://www.youtube.com/live/tXzPSyG6V-4
Discute-se sobre novas habilidades, desafios educacionais e preparação.
Dentre as habilidades, destaca-se a necessidade de conhecer ferramentas que podem auxiliar nas atividades da Engenharia de Software, ao mesmo tempo que destaca a necessidade de avaliar o que está sendo produzido/gerado pela IA.
Há certa preocupação com o uso da IA comprometendo o aprendizado considerado fundamental para um Engenheiro de Software. Além disso, há preocupações em como manter a equidade entre os estudantes, uma vez que o acesso às ferramentas de IA demandam custos razoáveis, tornando-se inacessíveis para algumas instituições e parte dos discentes.
Por fim, conclui-se que é importante conhecer esse contexto, debater sobre ele, visando preparar os estudantes para um mundo onde a IA inerentemente existe.