Kapittel 2. Analytisk tilnærming - Formalisert komparasjon av CEDAW-rapporter
2.3. Kalibrering av variabler
O termo “arquitetura cliente/servidor” surgiu no final dos anos 80 na formação de redes de computadores, utilizando microcomputadores pessoais, procurando oferecer facilidades de execução de aplicações, em concorrência ao ambiente de grande porte (Mainframe). “Historicamente, os sistemas baseados em Mainframe, com arquiteturas centralizadas, apresentam uma série de problemas. Complexidade e rigidez são muito apontadas, assim como dificuldades para a escalabilidade e interoperabilidade entre diferentes fabricantes. O surgimento de plataformas baseadas em microprocessadores de grande capacidade, a baixo custo, e o desenvolvimento da tecnologia de redes, tornaram possível a alternativa
EMPRESA INVESTIDOR CIDADÃO GOVERNO B2B Cadeia de Suprimento EDI B2I Oportunidades de Investimento B2C Bens e Serviços Finalísticos B2G Bens e Serviços Finalísticos EMPRESA C2B Bens e Serviços Finalísticos I2B CapitaI G2B Oportunidades de Negócios
INVESTIDOR CIDADÃO GOVERNO
C2I Recursos para Investimentos I2I Informação e Oportunidades G2I Oportunidades de Investimento I2C Poupança C2C Lazer G2C Serviços e Informações Públicas I2G Investimento para o Desenvolvimento C2G Avaliação sobre Qualidade de Serviços Públicos G2G Orçamento, Títulos e Pagamentos
descentralizada ... A arquitetura de sistemas evolui então, não só em função da tecnologia de microprocessadores, que deu poder aos desktops, e de tecnologia de redes, mas também porque as interfaces gráficas encorajaram os usuários a aplicarem o computador como uma ferramenta de negócio, além do fato dos bancos de dados relacionais terem adquirido performance satisfatória” [FILHO1, 2001].
Com o desenvolvimento da tecnologia cliente/servidor a utilização do Mainframe não desmoronou. Principalmente as médias e grandes empresas que contavam com uma quantidade muito grande de aplicações já desenvolvidas e elevados investimentos na infra-estrutura dos computadores de grande porte, não abandonaram o seu legado e transferiram todas as aplicações para a arquitetura cliente/servidor [FAGUNDES, 2001].
A arquitetura cliente/servidor surgiu como evolução da arquitetura de compartilhamento de arquivo nas redes de microcomputadores PC. “Apesar da volumosa cobertura da imprensa sobre a computação cliente/servidor, há muita confusão sobre o que realmente cliente/servidor é. Cliente e servidor são uma entidade de software e não de hardware. Na sua forma fundamental, envolve uma entidade (cliente) fazendo uma específica requisição, que é cumprida pela outra entidade de software (servidor)” [GALLAUGHER, 1995]. A Figura 3-8 exibe o esquema básico da arquitetura cliente/servidor, na qual diversos serviços são entregues mediante a requisição feita. Embora sejam indicados, simbolicamente,
diversos servidores, pelo conceito, o cliente e o serviço podem residir em um mesmo equipamento.
Figura 2-9 – Arquitetura cliente/servidor
A estrutura de rede local (LAN) oferece as facilidades de comunicação entre dois pontos. Diversos serviços podem estar disponíveis. As aplicações para usuários finais consistem, basicamente, de três componentes: apresentação (interface), processamento (aplicação) e dados. A localização desses componentes entre os clientes e os servidores define algumas variações da arquitetura cliente/servidor: duas camadas e três camadas.
Na arquitetura cliente/servidor em duas camadas “a interface do sistema é normalmente colocada no ambiente desktop do usuário, e os serviços de gerenciamento da base de dados está, normalmente, no servidor que é uma máquina mais poderosa para atender diversos clientes. O gerenciamento do processamento é dividido entre o ambiente de interface do sistema do usuário e o ambiente de serviços de gerenciamento da base de dados” [SEI3, 2000]. A arquitetura em duas camadas trabalha relativamente melhor em ambientes
Cliente 1 Cliente 'n' Impressão Impressora a laser Banco de Dados SGBD Aplicação . . . Servidores Clientes LAN Rede Local
homogêneos com regras de negócios razoavelmente estáticas. Esta arquitetura é menos recomendada para ambientes heterogêneos, com muitas mudanças de regras [GALLAUGHER, 1995]. A arquitetura em duas camadas é uma boa solução para computação distribuída com um número de clientes entre uma dúzia e uma centena, interagindo simultaneamente em uma rede local. Acima de cem usuários a performance começa a deteriorar. Outro fator que deve ser lembrado é que essa arquitetura oferece limitações quanto à flexibilidade na movimentação da funcionalidade do programa de um servidor para outro, sem que modificações no código sejam realizadas [SEI3, 2000].
A arquitetura em três camadas surge para superar as limitações da arquitetura em duas camadas. “... a camada intermediária foi adicionada entre o ambiente de interface do sistema do usuário e o ambiente de serviços de gerenciamento da base de dados. Há uma variedade de formas de implementação dessa camada intermediária, tal como monitor de transação, serviços de mensagens, ou serviços de aplicação ... Uma limitação na arquitetura em três camadas é que o ambiente de desenvolvimento é, normalmente, mais difícil de ser utilizado do que em duas camadas” [SEI3, 2000].
A terceira camada (servidor de camada intermediária) está entre a interface do usuário (cliente) e o gerenciamento dos dados. Essa camada intermediária oferece gerenciamento de processos, onde a lógica e as regras dos negócios são executadas e podem acomodar centenas de usuários (como comparado somente
a cem usuários com a arquitetura em duas camadas) para oferecer funções como o enfileiramento, execução de aplicações e organização de dados. [SEI4, 2000].
“A arquitetura em três camadas é utilizada quando um efetivo projeto cliente/servidor distribuído é necessário para oferecer performance, flexibilidade, manutenibilidade, reusabilidade e escalabilidade, enquanto oculta a complexidade de processamento distribuído para os usuários. Estas características têm feito da arquitetura em três camadas uma popular escolha para aplicações Internet e sistemas de informações centrados na rede” [SEI4, 2000]. A Figura 3-9 representa a arquitetura em três camadas. A camada superior oferece as facilidades de abertura de seção, entrada de dados e gerenciamento de display. A camada intermediária disponibiliza o desenvolvimento, estabelecimento, monitoramento e recuperação de processo que são compartilhados para múltiplas aplicações. A camada inferior provê a guarda dos dados.
Figura 2-10 – Arquitetura em três camadas
Fonte: [SEI4, 2000] Interface do sistema do usuário Gerenciamento de processos Gerenciamento da base de dados
Embora a arquitetura em três camadas possa ser implementada utilizando uma variedade de tecnologias, o mecanismo de chamadas do cliente para o servidor é tipicamente a chamada de procedimento remoto (RPC – Remote Procedure Call).
O desenvolvimento de aplicações em três camadas exige um longo tempo do desenvolvedor, devido à complexidade que está envolvida na codificação. Porém, os esforços empreendidos na fase inicial do desenvolvimento são recompensados nas atividades subseqüentes. O reaproveitamento de código oferece grande agilidade para o desenvolvimento de outras aplicações. Para as necessidades de migração das ferramentas do cliente, na arquitetura em três camadas, a lógica está escrita em uma camada intermediária reutilizável, assim quando da migração para uma nova ferramenta, o desenvolvedor simplesmente tem que criar a apresentação e acrescentar chamadas RPC para o nível de funcionalidade. [GALLAUGHER, 1995]. A Figura 3.10 expressa, proporcionalmente, os esforços no desenvolvimento inicial, atividades subseqüentes, procedimentos e a migração de ferramentas no ambiente do cliente.
Figura 2-11 – Comparações de esforços de desenvolvimento nas arquiteturas em duas e três camadas
Fonte: [GALLAUGHER, 1995]
A arquitetura de servidor de aplicação em três camadas, uma das variações da arquitetura em três camadas “aloca o corpo principal de uma aplicação para ser executada em um hospedeiro, em lugar de colocá-la no ambiente de interface do cliente” [SEI3, 2000]. Maiores detalhamentos sobre a arquitetura de servidor de aplicação em três camadas estão apresentados no capítulo de Gestão de Tecnologia da Informação.
A evolução do ambiente centralizado para um ambiente distribuído requer uma modificação no quadro de especialistas de desenvolvimento de aplicações, bem como na gerência das equipes técnicas e na metodologia do desenvolvimento de sistemas. [FILHO1, 2001] enumera alguns perfis de profissionais necessários para um ambiente cliente/servidor. O Quadro 3.4 relaciona esses perfis e apresenta uma breve descrição.
Desenvolvimento Inicial 0 5 10 15 20 25 30 35 40 2 camadas 3 camadas Desenvolvimento Subsequente 0 5 10 15 20 25 2 camadas 3 camadas Migração Ferramentas no Cliente 0 5 10 15 20 25 2 camadas 3 camadas
Quadro 2.6 – Perfis profissionais para tecnologia cliente/servidor
Profissional Descrição Analista de
Negócio
Formação tecnológica atualizada, mas com sólidos conhecimentos em administração de empresas e das operações do negócio da organização em que atua. Analisa processos de negócios a serem informatizados, preocupando-se com os impactos das mudanças organizacionais daí decorrentes.
Projetista de sistemas
Responsável pela definição da arquitetura da solução (tecnologia, dados e aplicação), a partir dos modelos efetuados pelo analista de negócio. Capacitação ampla em tecnologia cliente/servidor. Capacitação sólida em softwares de desenvolvimento.
Analista de tecnologia
Responsável pelo suporte técnico de todos softwares de infra-estrutura do ambiente cliente/servidor. Forte capacitação em sistemas operacionais, redes, bancos de dados e ferramentas de desenvolvimento.
Administrador de dados
É um profissional particularmente crucial na tecnologia cliente/servidor. A distribuição dos dados cria novos desafios assim como a descentralização do desenvolvimento.
Analista de aplicação
Compõe as equipes técnicas que implementam as camadas de apresentação e lógica do negócio, a partir das definições da arquitetura de solução. Conhecimento de banco de dados e SQL (Structured Query Language), programação orientada a objetos, CASE (Computer Aided Software Engineering), interoperabilidade e reusabilidade de código.
Integrador de sistemas
Garantir a interoperabilidade dos diversos componentes da arquitetura, apoiar e orientar o trabalho das equipes de dados, aplicação e tecnologia.
Fonte: [FILHO1, 2000]
“Uma tendência que tem sido observada nas empresas que estão reestruturando na área de informática, a partir da migração para cliente/servidor, é o achatamento das estruturas de gerenciamento. Equipes mais enxutas e autônomas (células), com poucos níveis hierárquicos de report, em estreita colaboração com os clientes e muita fluidez na comunicação organizacional, têm se revelado a configuração ideal ... Experiências nas empresas de mercado têm demonstrado que é necessário um alto volume de treinamento para garantir uma migração, com sucesso, para os novos perfis, assim como uma alta freqüência de treinamento para garantir a continuidade de uso de novas plataformas” [FILHO1, 2000].
Na próxima seção a terceirização é abordada como uma forma de suprir a carência de profissionais especializados, necessários para a adoção de um novo paradigma de desenvolvimento de aplicações.