![Resolubilidade Maquínica, Sistemas de Gestão e Nível de Automatização das Organizações](https://www.oanalistadeblumenau.com.br/_blog/658021c9675eb.jpg)
Resolubilidade Maquínica, Sistemas de Gestão e Nível de Automatização das Organizações
As máquinas começaram suas trajetórias como alternativa para os músculos humanos, porém atualmente já substituem o cérebro humano em muitas atividades.
Pedro Domingos afirma que se voltássemos no tempo, no início do século XX, e disséssemos às pessoas que uma máquina seria inventada em breve e que resolveria problemas de todas as áreas do conhecimento, a mesma máquina para todos os problemas, ninguém acreditaria. Elas diriam que cada máquina só pode fazer uma única coisa: máquinas de costura não datilografam e máquinas de escrever não costuram.[1]
Para este artigo o computador é observado como a unidade da diferença entre hardware e software e enfatiza-se principalmente o software, aqui representado pelos sistemas de gestão.
Pode-se atribuir o sucesso dessa máquina incomum chamada computador, principalmente ao software, pois ele é que dá a flexibilidade necessária, embora se tenha claro que sem um hardware capaz de suportá-lo, não se teria software.
Selecionar o software adequado para resolver um problema complexo, transforma-se em uma empreitada também complexa, que vem evoluindo ao longo do tempo, envolvendo diversas dimensões. Focaremos aqui na parte tecnológica de construção dos sistemas de gestão, muitas vezes negligenciada e que pode ser a razão de insucessos e frustrações na utilização dos sistemas adquiridos.
Conceitos Operacionais Ligados a Resolubilidade Maquínica, Sistemas de Gestão e Nível de Automatização das Organizações
Resolubilidade Maquínica
Resolubilidade Maquínica é um termo criado pelo autor, portanto, não é uma terminologia comum e o seu significado está associado à capacidade de resolver ou solucionar problemas por meio de máquinas.
Este artigo aborda a automatização das organizações por meio de um sistema de gestão. O nível de automatização pode ser baixo, médio ou alto e está ligado à qualidade do sistema de gestão selecionado, envolvendo diversas dimensões. O foco aqui é no aspecto das tecnologias utilizadas na construção do sistema e a importância delas para um nível alto de automatização, aspecto esse ainda “esquecido” ou não tratado adequadamente nos processos de seleção de um sistema de gestão.
Máquinas
O termo máquina é utilizado no sentido cibernético. Na cibernética, o termo máquina não se refere apenas a dispositivos físicos como computadores ou robôs, mas é usado de forma mais abrangente para descrever sistemas que processam informações e realizam operações. A definição de máquina, na cibernética, inclui qualquer sistema que tenha entrada, processamento e saída de informações.[2] Portanto, fórmulas matemáticas, cálculos e regras de transformação, também são máquinas. Assim um sistema de gestão, um programa de computador, é uma máquina.
Automatização
Automatização é o processo de substituir o trabalho humano por máquinas. A automatização pode ser usada em uma ampla gama de atividades, desde tarefas simples e repetitivas até tarefas complexas, com pretensões de chegar à tomada de decisões. Têm-se, até o surgimento da inteligência artificial, que máquinas são artefatos “altamente confiáveis e prognosticáveis”, porém com o advento dos novos modelos generativos, fala-se até em “alucinações” dos algoritmos de IA.[3]
Nível de Automatização da Organização e Grau de Automatização de uma Tarefa
Para as organizações utiliza-se os termos nível baixo, médio e alto, para indicar uma posição ou extensão de caráter mais geral, em relação à automatização, considerando-se o conjunto de todas as tarefas envolvidas em todas as áreas de uma empresa. Está-se diante da impossibilidade de determinação precisa do alcance da automatização em uma organização. Os executivos procuram um alto nível de automatização para suas organizações, significando que desejam o máximo possível de automatização que se possa obter com as tecnologias atuais.
Porém, para tarefas específicas, utiliza-se o termo grau de automatização. Pode-se afirmar, por exemplo, que a tarefa foi 100% automatizada, 10% automatizada ou 80% automatizada. Os responsáveis pelas tarefas ou aqueles responsáveis pela automatização delas, podem indicar graus de automatização, que ainda imprecisos, podem ser de grande valia para as análises dos gestores.
Sistema de Gestão - Planejamento de Recursos Empresariais
Enterprise Resource Planning (ERP) [Planejamento de Recursos Empresariais], é um sistema de informação que auxilia na gestão empresarial, automatizando todas ou muitas das tarefas de uma organização. Assim, um sistema de gestão empresarial deve ter pretensões de universalidade, para abranger o máximo possível de atividades no âmbito a que se destina.
Especialização dos Sistemas de Gestão
Dadas as diferenças existentes entre negócios, que operam em áreas diferenciadas, há no mercado sistemas de gestão especializados que são mais adaptados às regras de negócio e às idiossincrasias da área em que opera a organização. Um escritório de advocacia vai encontrar num sistema de gestão jurídica, e não num sistema de gestão industrial, soluções mais próximas para os seus problemas.
Sistemas de gestão, desenvolvidos para áreas específicas, necessitam de menos personalizações para automatizar as diversas atividades de uma organização, significando menos custos e prazo menor para implementação.
Dificilmente uma organização consegue chegar a um nível alto de automatização sem personalizações no sistema de gestão escolhido, porém três pontos importantes devem ser fortemente considerados: a) o sistema exige muitas personalizações? b) Como são realizadas essas personalizações? c) Como o fornecedor às mantém durante a vida útil do sistema, considerando-se as inevitáveis trocas, devido às versões futuras?
O Processo de Liberação de Releases e Versões (Deployment) e a Maior Complexidade nos Sistemas de Gestão
Deployment, refere-se ao processo de liberação e implantação inicial de um sistema de informação, bem como, as liberações e implementações de novos releases e versões. Releases são alterações pontuais nos códigos dos programas e versões envolvem modificações em diversas áreas do sistema. Embora ambas as formas apresentem riscos e necessidades de testes, as trocas de versões exigem processos diferenciados, dada a complexidade da operação.
Sistemas de gestão têm uma complexidade elevada nos processos de deployment. Por que isto ocorre?
Primeiro, deve-se considerar que as estruturas genéricas de um sistema de informação estão sendo alteradas constantemente por seus fornecedores, por diversos motivos, mas principalmente pela introdução de novas tecnologias, bem como por novidades advindas de solicitações de clientes existentes ou de potenciais clientes; novidades essas que são incorporadas e liberadas em novas versões dos produtos para todos aqueles que o utilizam.
Em segundo lugar, as empresas que utilizam os sistemas de gestão evoluem, alterando seus processos de forma diferenciada entre elas. Os diversos modelos de negócio são diferenciados e os sistemas tendem a uma adaptação a esses modelos, a partir de personalizações, também conhecidas como customizações.
Em terceiro lugar, devido ao exposto no parágrafo anterior, essas personalizações não se generalizam e permanecem ativas e necessárias apenas em determinados clientes. O sistema do cliente ganha rotinas que fazem sentido somente para aquela organização determinada e assim, nas trocas de releases e versões, devem ser mantidas, transformando-se em atividade bastante complexa e arriscada, para o fornecedor do sistema e para o cliente.
Quando se combina esses três aspectos, trocar uma versão de um sistema de gestão transforma-se em atividade que envolve riscos importantes, haja vista as organizações dependerem dele para continuidade normal de suas operações. Quaisquer paradas, por quaisquer motivos, são prejudiciais para a operação normal da organização.
Assim uma nova versão de um sistema de gestão deve: a) preservar as personalizações; b) disponibilizar as novidades relacionadas com as regras de negócio para os clientes, mas mantê-las opcionais sempre que possível; c) permitir que os clientes usufruam das novidades tecnológicas sem sustos, com melhoria da eficiência e da produtividade, com o mínimo de treinamento dos diversos usuários.
Desta forma, pensando-se em uma organização operando no seu dia a dia, todos esses fatores combinados exigem que o deployment de um sistema de gestão seja bastante pragmático e eivado de passos e regras.
A Evolução da Técnica e a Importância Para a Resolubilidade Maquínica
Analogias não Substituem Equivalências - Cuidado ao Avaliar Sistemas de Informação
Deve-se ter presente o que Fiolhais afirma sobre analogias: “[…] as analogias não substituem equivalências […]”, “[…] são tão úteis como enganadoras […]” e “A identidade das designações leva muitas vezes erradamente a supor identificação dos conteúdos.”[4] De acordo com Pinker, metáforas são generalizações, que incluem um caso específico numa categoria universal e que “[…] assim como outras generalizações, as metáforas podem ter suas previsões testadas e seus méritos inspecionados, incluindo sua fidelidade a estrutura do mundo.”[5]
Há de se ter cuidado quando, nas avaliações de sistemas de gestão, são utilizadas analogias, comparando a compra de um sistema de informação à de outros produtos. Como demonstrado neste artigo, a complexidade do processo de escolha de um sistema de gestão é enorme e diferenciada, pois está ligada diretamente ao modelo de negócio da organização e a solução de problemas por meio dele.
A Evolução das Máquinas - Softwares e Hardwares - Computador, que máquina é essa afinal?
A máquina analítica, projetada pelo matemático e inventor britânico Charles Babbage, no século XIX, é considerada a precursora dos computadores atuais, pois já previa uma unidade de processamento, uma unidade de memória e uma unidade de entrada e saída. O objetivo da máquina analítica era executar cálculos complexos e manipular símbolos. Ada Lovelace, que colaborava com Charles Babbage, foi a primeira a perceber seu potencial para além de simples cálculos matemáticos. Ela escreveu notas detalhadas sobre o funcionamento da máquina, incluindo um algoritmo para calcular os números de Bernoulli, tornando-se assim a primeira programadora da história.[6]
Iniciava-se uma separação importante entre a parte física de uma máquina em si (hardware) e a possibilidade de programá-la para cálculos matemáticos diferenciados (software). Nascia um novo conceito de aparato com base numa codependência entre o hardware e o software; nascia o computador. A parte física da máquina (hardware) só fazia sentido se pudesse alternar seu funcionamento a partir de algoritmos diversos (software), criados para aproveitamento dessa estrutura básica, em princípio ilimitados, porém o software só fazia sentido se tivesse uma máquina que segue suas instruções, que pudesse dar vida a ele.
Atualmente, para os indivíduos, fica mais clara a separação entre a parte física da máquina e os aplicativos que nela se instalam, bem como a interdependência entre hardware e software.
O computador não é somente hardware ou somente software. Ele não é uma coisa e nem outra. É algo diferente, emergente. Quando um programa está sendo executado, há um acoplamento estrutural entre as duas estruturas, uma interpenetração entre elas.[7] Na história se percebe uma coevolução destas estruturas. Quanto mais potente for o hardware, mais softwares complexos podem ser desenvolvidos e softwares complexos exigem o desenvolvimento de hardwares mais potentes em termos de velocidade e capacidade de armazenamento. Atualmente têm-se um bom exemplo com a difusão da Inteligência Artificial Generativa (baseada em deep learning), que demanda muito poder de computação. Assim, embora haja um progresso separado dessas estruturas, quando se analisa o computador em si, como unidade da diferença entre hardware e software, vê-se um processo autorreferencial, em que o computador progride sem a estipulação de um limite pré-determinado, embora nem hardware e nem software, separadamente, pressuponham isso. De acordo com Luhmann, a autorreferência não só define, como também contém uma afirmação sobre coisas, pois sustenta que a unidade somente se alcança a partir de uma operação relacional.[8]
O que torna o computador tão especial é justamente a unidade dessa diferença, em outras palavras, uma união, uma junção de coisas tão diferentes. Um mesmo hardware pode dar vida a muitos algoritmos, transformando o computador em um artefato muito interessante, pois transmuta-se em algo que não era, com utilidades diferentes para os seres humanos, pois sua identidade não precisa ser preservada.
Um jovem vê um computador como divertimento, um administrador como uma ferramenta de gestão, um programador como uma forma de auferir renda (alguns como forma de divertimento) e um matemático como uma grande, potente e rápida calculadora.
Os programas e sistemas com códigos explícitos, não baseados em IA, que são máquinas, pois se aplicadas as mesmas regras de transformação sobre as entradas, têm-se as mesmas saídas, utilizam-se da complexidade do hardware para ganhar vida, porém o hardware também se aproveita da complexidade do software para existir e assim não se pode afirmar que os programas sejam mais importantes que a parte física ou vice-versa.
Acoplamento Estrito - O Preço Elevado da Confiabilidade
Os programadores instruem os computadores, para realizar as tarefas, por meio do software, a partir de uma linguagem computacional composta de um conjunto de palavras.[9] Os programas (algoritmos) compõem-se de muitas dessas palavras ligadas umas às outras, no que se poderia denominar de um acoplamento estrito entre elas.
Acoplamento estrito entre palavras, significa que quaisquer dessas palavras adquirem significado nessa relação a que foram expostas. Quando se fala em linguagem computacional, não há interpretação e o sentido é dado pelo programador, com vantagens e desvantagens que citaremos apenas superficialmente neste artigo.
Com os programas tradicionais, códigos explícitos, não baseados em IA, confia-se exageradamente nas máquinas, pois, se fez milhões de vezes daquela maneira, continuará fazendo outras milhões de vezes da mesma forma; máquinas são confiáveis; computadores são confiáveis. Porém, essa confiabilidade tem um preço bastante elevado.
A confiabilidade, que resulta de o computador seguir os comandos dos programadores à risca e fazer tudo da mesma forma, sem se cansar, sem interpretar, sem atribuir sentido, é também uma das maiores restrições dos algoritmos tradicionais (fora do âmbito da IA), pois, quaisquer alterações dependem de programadores, gerando custos e dificuldades inerentes à tarefa de alterar códigos complexos.
Como, então, ganhar produtividade para atender a uma demanda crescente por profissionais técnicos, bem como por novos aplicativos e personalizações nos programas utilizados por organizações dos diversos setores da economia?
A Técnica Resolvendo os Problemas da Técnica
O progresso da Técnica
Ao longo do tempo, as empresas de Tecnologia da Informação foram criando soluções para os problemas enfrentados pelos algoritmos tradicionais, dada a complexidade de criação e de manutenção, buscando melhorar a produtividade, de forma a dar respostas mais rápidas e com menos custos para os usuários dos sistemas de informação.
Chaves, fios e interruptores.
Os primeiros programadores utilizavam chaves, fios e interruptores para programar as primeiras máquinas. Se atualmente se necessita um alto conhecimento técnico para programar computadores, pode-se imaginar as exigências daquela época. Obviamente isso não poderia continuar assim…
Linguagens de programação.
No final da década de 1940 e início da década de 1950, começaram a surgir as primeiras linguagens de programação, que se baseavam em um conjunto de instruções básicas que facilitavam a vida dos programadores. Existem milhares de linguagens que foram desenvolvidas, como por exemplo, Pascal, Turbo Pascal, C#, C++, Cobol, Algol, Snobol, Fortran, Ada95, Delphi, Python, JavaScript, para citar algumas.
Parametrizações.
Os computadores iniciaram suas trajetórias, como máquinas efetivamente úteis, quando adquiridos por agências governamentais e grandes empresas. Inicialmente, não havia uma distinção tão clara entre hardware e software para os usuários comuns desses equipamentos. As empresas, por exemplo, compravam computadores para resolver os problemas de folhas de pagamento e parecia natural que aquela máquina fazia exatamente isso. Porém, começaram as surgir os primeiros problemas. Nem todas as empresas operavam da mesma forma, exigindo que os programas fossem diferentes para cada uma delas.
Uma solução adotada pelos programadores foi a criação de parametrizações. Uma das tarefas era identificar as principais diferenças que existiam entre as organizações, para que cada sistema que fosse construído pudesse dar possibilidades de as empresas selecionar a forma como o sistema deveria se adaptar a elas, a partir da configuração de parâmetros; cada empresa podia mesclar os parâmetros da forma que desejasse.
Os sistemas passaram a ter milhares de combinações de parâmetros que interferiam no seu funcionamento e ainda assim insuficientes. Ao final, ainda era necessário criar versões de um sistema para determinadas empresas, com custos astronômicos.
Técnicas de Para Escrita dos Códigos
A crescente difusão dos computadores e sistemas, ainda com necessidades elevadas de personalizações realizadas por programadores, junto com o crescente número de programadores necessários para alterar um mesmo sistema, trouxeram a necessidade de padronizações na elaboração dos programas e sistemas. Técnicas como a programação estruturada, Programação Jackson, Programação Orientada a Objetos e outras difundiram-se no mundo todo, porém os computadores eram cada vez mais utilizados e os velhos problemas continuavam assombrando as empresas de TI e seus clientes.
Utilização de ferramentas Low Code e No Code em ascensão.
Ferramentas de programação low code e no code são plataformas que permitem que os desenvolvedores de softwares criem seus programas sem precisar escrever muito código ou nenhum código, respectivamente.
Ferramentas de programação low code fornecem aos desenvolvedores uma interface que permite criar programas a partir de uma metalinguagem, que acessa rotinas prontas e genéricas. Essas ferramentas ainda exigem conhecimento de programação e os programadores ainda precisam desenvolver algoritmos que se ligam com o ferramental, porém o ganho em produtividade é muito grande. A Fácil criou a ferramenta de desenvolvimento low code denominada Quellon, para desenvolver seus produtos e o sistema de gestão jurídica Espaider.
Ferramentas de programação no code são mais simples do que as ferramentas de programação low code. Elas não exigem nenhum conhecimento de programação, pois permitem que os desenvolvedores criem aplicativos usando uma interface gráfica intuitiva, mas se prestam para atividades menores e específicas. Ver adiante neste artigo a tecnologia e-PVM.
Assim, a principal diferença entre as duas abordagens é o nível de conhecimento de programação necessário. As ferramentas de programação low code são adequadas para desenvolvedores conhecimento de programação, enquanto as ferramentas de programação no code podem ser utilizadas por usuários não técnicos.
Esse foi um salto bastante significativo para reduzir os custos de programação a partir do incremento da produtividade, além de permitir personalizações de sistemas com mais facilidade.
Inteligência Artificial (IA) - Aprendizado de Máquina (Machine Learning).
IA é um termo genérico e abrangente. Quem se dedica a essa área tem como objetivo dotar os computadores de inteligência, seja lá o que isso signifique realmente; mas, principalmente da capacidade de aprender, assim como o ser humano e alguns outros animais fazem. Uma das características mais nobres do ser humano é a capacidade de aprendizado; aprende muitas coisas genericamente.
Diante da grandiosidade do desafio, e na busca por esse cálice sagrado, computadores inteligentes, estudos realizados por psicólogos, cientistas e técnicos de TI, resultaram em técnicas que, embora incipientes, podem ser utilizadas na prática com benefícios surpreendentes. Técnicas toscas e embrionárias de aprendizado, que simulam de forma muito precária, se comparadas com os sistemas psíquicos, a aquisição de conhecimento. Obviamente, se entende como um processo natural evolucionário para uma mente artificial. Uma dessas técnicas é o Machine Learning (ML) ou o Aprendizado de Máquina (AM).
Aprendizado de Máquina, é um subcampo da IA que nasceu da necessidade de redução de complexidade, da necessidade de conquistas paulatinas, para um dia se atingir a inteligência artificial. O fato é que essa técnica deu tão certo que está ofuscando um pouco o próprio campo geral da IA. Esses novos tipos de algoritmos, executados em computadores potentes, em redes mundiais, trazem resultados surpreendentes para as organizações. Melhoria no atendimento de clientes, redução de custos de vendas, aumento na quantidade e na satisfação dos clientes, com consequente aumento no faturamento e lucratividade das companhias. Esses resultados animadores, é claro, justificam mais investimentos para essas tecnologias; há um círculo virtuoso de avanços e novos investimentos. A busca pela IA genuína não terminou, mas enquanto ela não chega, os computadores podem ser utilizados de forma muito mais criativa no mundo atual. E certamente esses desenvolvimentos em AM se desenvolveram a ponto de auxiliar na IA como um todo.
Até o advento da IA, as máquinas estavam limitadas à automatização de determinadas atividades, enquanto outras passavam ao largo, pela impossibilidade de serem resolvidas com códigos explícitos de programação. Aos poucos essa barreira foi sendo quebrada a partir desses novos algoritmos de IA.
Modelos Discriminativos.
Os modelos, comumente utilizados até agora — que dominaram o mundo da IA nesses últimos tempos —, estão sendo empurrados para uma categoria denominada de “discriminativos”. Categoria essa que está senda ofuscada pela categoria dos “generativos”.
Para os modelos discriminativos, o mais comum é a utilização do aprendizado com supervisão, em que são fornecidos dois conjuntos de dados para o computador, por exemplo: textos e as classificações deles feitas por agentes humanos.
A grande característica de um computador que se baseia em um “modelo discriminativo” é a capacidade de separar dados e encontrar semelhantes. No caso de imagens, um modelo discriminativo consegue diferenciar um cachorro de um gato, pois assim pode ter sido ensinado com base em milhares de imagens.
Esse foi um avanço importante na área de programação de computadores, pois educa-se o computador a partir de dados e assim obtêm-se dele resultados diferenciados, não explicitados pelos programadores. Esses algoritmos se baseiam em métodos estatísticos variados.
Modelos Generativos.
Utilizando-se o exemplo de imagens dado anteriormente, “Um Modelo generativo pode gerar novas fotos de animais que se parecem com animais reais […]”.[10]
Enquanto um modelo discriminativo depende de rótulos associados aos dados: isso é um gato, isso é um cachorro, isso é um tigre, depende de um aprendizado supervisionado, um modelo generativo pode ou não se utilizar desse recurso. O modelo generativo pode aprender com bilhões de dados sem supervisão. Em outras palavras, sem que os humanos tenham que rotular os dados explicitamente.
Por exemplo: existem modelos simples generativos que sugerem uma próxima palavra em uma sequência de palavras para formação de uma frase. Não houve a necessidade de supervisão de agentes humanos neste caso. Os algoritmos aprendem “observando” como a linguagem é utilizada. O “conhecimento” foi extraído da observação de bilhões de textos que existem na internet. Assim é que a linguagem foi dominada por esses novos algoritmos generativos. Eles não têm a mínima ideia do que “bom dia” significa, mas sugerem “dia” após o “bom”, pois estatisticamente é o que mais ocorre. É o que se experimenta todos os dias utilizando-se celulares.
Os modelos generativos podem realizar diversas correlações com os dados que manipulam. Por exemplo, olhos não podem aparecer no queixo das pessoas, pois normalmente estão entre a testa e o nariz. Para a geração de uma nova imagem, essa regra é seguida. Se alguém pede uma imagem de um gato andando de skate, o skate deve estar sob os pés do gato. As imagens não são simples cópias, mas gerações de novas imagens. A distribuição dos dados em um contexto faz parte da abordagem da denominada Inteligência Artificial Generativa.
Esses modelos generativos abrem duas frentes importantes na área de programação de computadores: a primeira é a utilização deles para atividades variadas de aprendizado de máquina que não requerem programação explícita de programadores, atividades essas que dificilmente seriam automatizadas com os algoritmos de código explícito (tradicionais) ou mesmo com os modelos discriminativos. A segunda é a geração de códigos de programas de computadores, auxiliando os programadores na árdua tarefa de programar, incrementando em muito a produtividade.
Integração Entre Sistemas de Informação - Portas de Entrada e de Saída - Arquivos, APIs, Middleware
Embora um sistema de gestão tenha pretensões de universalidade, na prática já está demonstrado que uma organização não pode dar conta de suas peculiaridades apenas com as funções presentes nestes sistemas. Ainda que o sistema de gestão possa oferecer determinadas funcionalidades, a organização pode entender que as potencialidades sejam insuficientes e que existe no mercado um programa especialista que pode atender com mais qualidade.
Um sistema de gestão não deve desistir de ser o repositório de todos os dados da organização, mas para isso não precisa tratá-los todos como informação, pois gerar informação, pode ser uma incumbência de outros programas, como por exemplo, programas de Business Intelligence (BI). A partir da integração com outros produtos, o sistema de gestão pode centralizar dados e descentralizar a produção de informações, sempre com foco na resolubilidade maquínica, objetivando um alto nível de automatização.
É necessário então que o sistema de gestão abra portas de entrada e de saída, considerando todos os aspectos de segurança, que permitem a conversa entre sistemas. Os fornecedores dos produtos de gestão podem desenvolver integrações à medida que a organização necessite (integrações não nativas), porém é fundamental que o sistema disponha de possibilidades nativas de integração. Em outras palavras, o sistema está preparado para conversar com outros produtos a partir de um padrão, de uma “linguagem” que é tecnicamente utilizada para essa finalidade.
Pode-se destacar algumas formas para que sistemas de informação possam conversar entre eles e a técnica utilizada vai depender do contexto, embora algumas sejam mais recomendáveis, por questões de segurança da informação e minoração de erros de transferências:
Transferência de dados por Meio de Arquivos - Integração Simples e de Baixo Custo
Neste caso, os dados são transferidos entre os sistemas por meio de arquivos. Essa é uma técnica simples e de baixo custo, mas pode ser ineficiente e difícil de manter, além de comprometer a segurança das informações.
Integração por Meio de APIs - Application Programming Interface (Interface de Programação de Aplicativos)
Essa é uma técnica mais eficiente e flexível que a integração por meio de arquivos, mas pode ser mais complexa e de custo mais elevado.
Integração por Meio de Middleware - Programa Intermediador
Neste tipo de integração, um terceiro sistema é utilizado para intermediar a comunicação entre os dois sistemas. Isso pode aumentar o custo da integração, mas pode ser útil em alguns casos.
Sistemas de Informação Preparados para Utilização em Nuvem
Há uma forte tendência de transferência de localização dos sistemas de informação para nuvem, sejam elas públicas ou privadas, porém, existem algumas preocupações que devem ser levadas em consideração, a segurança das informações é uma das principais. Nesse sentido, os sistemas devem ser construídos com técnicas que minorem os riscos de invasão.
Nenhum sistema está totalmente seguro, por outro lado, ele não precisa estar totalmente inseguro, pois existem práticas bem difundidas de bloqueios contra as principais invasões conhecidas e que são atualizadas mundialmente à medida que são descobertos novos métodos que permitem acessos indevidos aos dados.
Uma boa prática, quando da seleção de um sistema de informação, é exigir, dos fornecedores de sistemas, certificados que atestem a realização de testes periódicos de invasão, testes estes, conduzidos por empresas terceiras especializadas no assunto, sem prejuízo de a organização realizar seus próprios testes. O certificado dá uma indicação se realmente o sistema foi construído com a preocupação de segurança da informação. Alguns sistemas, construídos antes da tendência de mudança para nuvem, são muito frágeis e vulneráveis, transformando-se em peças que trazem muitos riscos para as empresas.
As Diversas Técnicas à Serviço da Resolubilidade Maquínica
Gestores estão diante de um grande desafio quando precisam escolher um sistema de gestão para suas organizações. Os processos de seleção têm progredido, envolvendo diversas dimensões, mas ainda assim, há um aspecto que tem sido relegado a um segundo plano, e que, entende-se, deverá se tornar um dos principais a serem considerados em quaisquer processos de seleção.
A dimensão tecnológica, entendendo-se como o conjunto de técnicas empregadas que estruturam um sistema de gestão, deverá ser fortemente considerada nos processos de avaliação. É a partir desse conjunto de técnicas que um sistema de gestão adquire a flexibilidade necessária para resolver os problemas do dia a dia das organizações, atendendo às suas idiossincrasias e estruturas diferenciadas.
Entende-se que um sistema de gestão deve ser o resultado de uma simbiose entre as diversas técnicas apresentadas anteriormente, tanto aquelas ligadas à construção de suas estruturas, quanto aquelas ligadas ao deployment e aos diversos processos de personalização, sem as quais há sérias limitações para que as organizações atinjam um alto nível de automatização.
Gestores em Busca de um Alto Nível de Automatização
Existem várias razões para as automatizações das atividades em organizações, mas ao final, o que importa, é se a operação delas não foi afetada negativamente e se a empresa obteve aquilo que desejava.
Gestores já não aceitam mais a “dureza” estrutural presente em alguns sistemas de gestão que exigem que somente a organização deva se adaptar às suas estruturas, mas insistem que o sistema deve ser flexível o suficiente para se adaptar àquelas estruturas que são diferenciais da organização.
A Árdua Tarefa de Seleção de um Sistema de Gestão - Uma Nova Dimensão Precisa ser Fortemente Considerada
O processo de escolha de um sistema de gestão, para uma determinada organização, vêm progredindo ao longo do tempo, compondo-se de fases como: solicitação de proposta (Request for Proposal - RFP), em que são estipulados requisitos a partir das necessidades da organização, avaliação dos fornecedores e planejamento da implementação. Ainda assim, diversas organizações têm errado em suas escolhas, com todas as consequências daí advindas.
Neste artigo não se deseja estressar e apresentar os principais problemas existentes nessas fases e que também contribuem para as dificuldades de escolha de um produto. Afirma-se que muitas empresas não têm dado importância à tecnologia aplicada aos sistemas de gestão, seja por não abordarem essa dimensão em seus documentos de seleção, seja por não detalharem adequadamente as características apontadas neste artigo e descobrem as restrições, ligadas à falta de técnicas importantes, somente durante a utilização deles.
A Dimensão Tecnológica nos Sistemas de Gestão - Resolubilidade Maquínica
Gráfico 1 - Complexidade do problema, adaptabilidade do sistema e Resolubilidade Maquínica x custo x tempo
O gráfico 1 apresenta três divisões, representadas por cores diferentes. Cada uma dessas divisões reúne um grupo de técnicas que formam a tecnologia empregada em um sistema de gestão, visando o estabelecimento de uma solução que se ligue com o problema de automatização de uma organização específica.
No caso de um sistema de gestão, dada a complexidade do problema, a solução deve necessariamente passar pela utilização desses grupos de técnicas, que juntas formam a tecnologia empregada. Sistemas de gestão, tecnologicamente atualizados, precisam necessariamente oferecer essa complexa reunião de técnicas, nesse sentido é que os processos de avaliação de sistema devem contemplar uma nova dimensão que estresse a tecnologia empregada. Em outras palavras, não basta uma visão superficial do sistema em termos de tecnologia, essa dimensão deve receber o mesmo cuidado que é dado às demais dimensões, pois sem ela, as demais ficam prejudicadas.
Parametrização
O primeiro conjunto de técnicas diz respeito aos diversos parâmetros, que combinados, permitem ao sistema resolver problemas importantes, porém comuns, pois em geral são problemas que estão presentes na grande maioria das organizações. É uma solução bastante simples e eficiente, encontrada pelas empresas fornecedoras de sistemas, para o que se propõe, que é a solução de problemas empresariais ligados à diferenciação das organizações, porém identificados a priori.
A quantidade de parâmetros tende a aumentar, à medida que as empresas fornecedoras vão ganhando mais e mais clientes. É uma técnica simples, de fácil implementação pelas empresas fornecedoras e de fácil utilização pelos clientes.
Porém, deve-se considerar que esses parâmetros se relacionam entre eles, criando milhares de combinações, exigindo cuidado e responsabilidade na utilização deles e muita eficiência no suporte aos usuários.
Parâmetros podem ser simples, como por exemplo, botões de liga e desliga, mas podem apresentar maior complexidade com listas de elementos fixos e finitos, especificados pelos programadores, bem como, permitir elementos infinitos, inseridos pelos próprios usuários do sistema.
Essa camada de técnicas é fundamental, simples e elegante, mas para um sistema de gestão ela é insuficiente. Essa solução se presta para um nível de complexidade baixo, pois a adaptabilidade do sistema é reduzida, embora sem ela tudo seria muito mais difícil.
Personalize Você Mesmo - Tecnologia e-PVM
Quando a camada de parametrização é insuficiente, deve-se recorrer à camada no code.
Deve-se entender a camada no code, como a possibilidade de personalização de um sistema sem a utilização de programadores que dominam a estrutura e a linguagem básica em que o sistema foi escrito.
Porém, a camada no code a partir de uma interface visual e interativa muito simples e intuitiva, pode também ter comandos mais sofisticados que necessitem de conhecimentos específicos para solução de alguns problemas mais complexos, ainda assim, com vantagens na produtividade.
Essa camada pode ser utilizada por consultores das empresas fornecedoras, consultores de empresas terceiras contratadas para implementação do sistema, técnicos administradores do sistema no cliente e até mesmo pelos próprios usuários, dependendo da gradação dos conhecimentos necessários.
A tendência é que haja uma transferência de funcionalidades para que os próprios usuários, sem conhecimentos especializados, realizem as personalizações do sistema, adaptando-o às suas características e preferências individuais, melhorando suas usabilidades e a experiências. Em outras palavras, a partir de comandos intuitivos, aprendidos a partir de visitas guiadas ou com treinamentos muito rápidos, os usuários alteram suas telas, deixando-as do jeito que desejam. Ainda assim, podem existir personalizações que são mais bem realizadas por consultores ou usuários “avançados” treinados para a tarefa.
Tudo subordinado a uma política geral da empresa. Por exemplo, se um dado deve ser inserido pelos usuários em geral, definido em uma norma organizacional, nenhum usuário pode abdicar do preenchimento obrigatório e transformar esse dado em opcional. Por outro lado, se um dado é específico de uma área e não obrigatório para as demais, um usuário que não utilize esse dado pode fazê-lo sumir de sua tela, melhorando sua experiência com o sistema.
Os usuários também podem alterar a localização dos dados, arrastando os campos para locais mais adequados, bem como separá-los em grupos. Cada usuário tem uma conformação específica da tela que utiliza.
Existem outras modificações que podem ser feitas nessa camada, que antes envolvia analistas e programadores e que agora são possíveis com muita facilidade, seja por meio dos próprios usuários, seja por meio de consultorias especializadas.
A desnecessidade de analistas e programadores deixam as implantações de sistemas mais rápidas, pois as personalizações podem ser feitas in loco, pelas equipes responsáveis por elas e pelo próprio usuário. Há uma descentralização das personalizações.
A camada no code permite inserção de novos campos de dado, eliminação daqueles desnecessários, alteração na legenda deles (inclusive para diversos idiomas), mudanças em suas obrigatoriedades, modificação da ordem deles em telas de cadastro, com eventual criação de novos grupos que os separem e espertezas ligadas ao tipo de dado que é inserido.
Os analistas e programadores se deparam com um problema bastante sério e paradoxal que é: desenhar telas que sejam intuitivas, práticas, com poucos cliques, com diversos dados, que se adéquem à forma que cada usuário trabalha. Muitas vezes, uma mesma tela atende a diversas áreas da organização, mas a necessidade de dados é diferenciada, porém os analistas precisam disponibilizar todos os dados, ainda que alguns deixem de utilizá-los e isso transforma um sistema de gestão em uma peça complexa e de difícil utilização. Além de diferenças mais grotescas, há diferenças sutis de utilização que diminuem a produtividade, caso não estejam como o usuário realmente utiliza ou deseja. Essa camada, além de resolver problemas de personalização da organização, enfoca na usabilidade pelos diversos agentes humanos.
Customizações por Meio de Analistas e Programadores - A Inevitabilidade de Alterações Complexas
Estratégias e modelos de negócio fazem parte da vida de quaisquer organizações e isso equivale a afirmar que suas formas de gestão são diferenciadas, pois ainda que as estratégias e modelos de negócio sejam semelhantes entre empresas diferentes, principalmente quando atuam no mesmo segmento, as soluções encontradas pelos gestores para solução dos problemas do dia a dia, seus modelos mentais, podem apresentar diferenças marcantes, refletindo-se nos diversos departamentos e consequentemente em seus sistemas de gestão.
Apesar (ainda bem que elas existem) das camadas já apresentadas até aqui (parametrização e no code), representando o esforço dos fornecedores em apresentar sistemas de gestão de mercado flexíveis, que possam ser implementados em tempo aceitável e com custos razoáveis, na maioria dos casos, dado o exposto no parágrafo anterior, há a necessidade do desenvolvimento de rotinas complexas utilizando-se analistas, programadores, cientistas de dados e outros.
A pretensão de universalidade dos sistemas de gestão de mercado esbarra, justamente, nos diferenciais que as empresas têm em suas formas de administração, exigindo uma terceira camada, que é a solução do problema por meio de codificação explícita, com analistas e programadores ou com a utilização de outras técnicas, como por exemplo a IA.
O processo de customização, utilizando-se analistas, programadores, cientistas de dados, analistas de requisitos e outros, independentemente da técnica utilizada, sempre envolve maior custo e mais tempo para atingir os resultados desejados. Aqui não se objetiva detalhar essa questão.
O que é necessário destacar é que, as organizações precisam estar atentadas e verificar em detalhes, como seus fornecedores garantem essas customizações em versões futuras e se haverá ou não custo. Como já citado, os sistemas têm progressos constantes, com alterações diversas, bem como, alterações específicas para diversas organizações, assim, um fornecedor precisa explicitar como faz essa manutenção e garantir em contrato que a organização poderá atualizar suas versões, usufruindo de melhorias, sem perder suas personalizações independentemente da camada em que foram realizadas.
Para essa terceira camada, há uma infinidade de técnicas que permitem personalizações complexas, mais dispendiosas e demoradas, como por exemplo a IA, que mesmo assim poderá requerer códigos explícitos que liguem o sistema ao ferramental de aprendizado de máquina, bem como, o tratamento adequado dos dados utilizados para aprendizagem.
Conclusão
Diante desafio que representa a escolha de um sistema de gestão para suas organizações, os gestores precisam incluir ou dar muita atenção para a dimensão tecnológica, sem quaisquer prejuízos das demais dimensões. Os processos de seleção têm progredido, envolvendo diversas dimensões, mas ainda assim, esse aspecto tem sido relegado a um segundo plano. Por tudo que foi explicitado, entende-se que esta dimensão é uma das principais a serem consideradas em quaisquer processos de seleção.
A dimensão tecnológica, entendendo-se como o conjunto de técnicas empregadas que estruturam um sistema de gestão, deverá ser fortemente considerada nos processos de avaliação. É a partir desse conjunto de técnicas que um sistema de gestão adquire a flexibilidade necessária para resolver os problemas do dia a dia das organizações, atendendo às suas idiossincrasias e estruturas diferenciadas.
O nível de automatização de uma organização pode ser baixo, médio ou alto e está ligado à qualidade do sistema de gestão selecionado, envolvendo, de maneira especial, a dimensão tecnológica, que deve ter necessariamente às três camadas apresentadas: parametrização, no code e personalizações com técnicas diferenciadas utilizando-se analistas e programadores, com o apoio da IA e integrações com outros sistemas.
[1] DOMINGOS, Pedro. O algoritmo mestre; tradução: Aldir José Coelho Corrêa da Silva. São Paulo: Novatec, 2017, p 57-58.
[2] LUHMANN, Niklas. Introdução à teoria dos sistemas; tradução: Ana Cristina Arantes Nasser. 3 ed. Petrópolis: Vozes, 2011, p. 108-109.
[3] Ver outros artigos desse blog sobre Inteligência Artificial Generativa.
[4] FIOLHAIS, Carlos. Universo, computadores e tudo o resto; Lisboa: Gradativa, 1994, p. 82.
[5] PINKER, Steven. Do que é feito o pensamento: a língua como janela para natureza humana; tradução: Fernanda Ravagnani. São Paulo: Companhia das Letras, 2008, p. 300.
[6] GREGERSEN, Erick. Ada Lovelace: The First Computer Programmer. Disponível em: < https://www.britannica.com/story/ada-lovelace-the-first-computer-programmer >. Acesso em: dez. 2023.
[7] Os biólogos Maturana e Varela criaram o termo acoplamento estrutural para designar as perturbações mútuas que existem entre o sistema e o entorno, tendo como resultado o desencadeamento de mudanças nos estados de suas estruturas. O termo não designa que um sistema atue diretamente na estrutura de outro, mas que “[…] meio e unidade atuarão como fontes de perturbações mútuas e desencadearão mutuamente mudanças de estado.” (MATURANA, Humberto R.; VARELA, Francisco J. A árvore do conhecimento; tradução: Humberto Mariotti e Lia Diskin; ilustração: Carolina Vial, Eduardo Osorio, Francisco Olivares e Marcelo Maturana Montañez. São Paulo: Palas Athena, 2001, p. 112).
Luhmann passou a utilizar também esse termo durante seus estudos e modificação da Teoria dos Sistemas abandonando o conceito clássico de sistema, teoria essa aplicada em detalhes e com as devidas adequações à Teoria Geral dos Sistemas Sociais. Em seus escritos sobre os sistemas sociais, encontram-se afirmações ligadas à Teoria dos sistemas, comuns para quaisquer sistemas e afirmações que são exclusivas dos sistemas sociais, o que exige do leitor certos cuidados. Anteriormente, Luhmann utilizava somente o termo “interpenetração” (Criado por Parsons), que designa que um sistema coloca toda a sua complexidade à disposição de outro, para que o outro se construa. (LUHMANN, Niklas. Sistemas sociales: Lineamientos para una teoría general; tradução: Silvia Papper; Brunhilde Erker; coordenação: Javier Torres Nafarrete. Santafé de Bogotá: CEJA, 1998, p. 205).
[8] LUHMANN, Niklas. Sociedad y sistema: la ambición de la teoría; tradução: Santiago López Petit; Dorothee Schmitz. 1 ed. Barcelona: Espasa, 1990, p. 89.
[9] Existem milhares de linguagens que foram desenvolvidas. Algumas para propósitos gerais e outras para casos específicos. Poucas linguagens são realmente novas, pois derivam-se de outras. Pode-se citar algumas como Cobol, C#, C++, Algol, Fortran, Pearl, Rebol e Turbo Pascal.
[10] Palestra intitulada Explorando modelos generativos: Uma introdução ao ChatGPT e Midjourney para criação de textos e imagens, proferida por Mateus Cassaniga na Fácil Summit Week 2023, Blumenau, 04 abr. 2023.