domingo, maio 30, 2010

Desenhando Segundo os Princípios da Teoria Geral de Sistemas

Como vimos em Um Breve Resumo da Teoria Geral de Sistemas,
é comum aplicarmos a máxima atribuída a Cesar “divide et impera”. No entanto, ao dividirmos algo complexo em muitas partes, poderemos estar gerando outro problema complexo: a comunicação entre as partes. Tem dúvida? Então faça o seguinte: divida algo em 2, 3, 4, 5, 6, 7 partes. Em cada “divisão” calcule o número máximo de possíveis canais de comunicação. Veja que a fórmula geral

Número Máximo de Canais de Comunicação=(Número de Partes*(Número de Partes-1))/2.

demonstra que a complexidade é, agora, das comunicações entre as partes.
Portanto, fica então um problema: como dividir para conquistar e
evitar a explosão de canais de comunicação?

A resposta é dada pelo conceito de hierarquia. O aspecto central é dividir em partes menores, mas não tão menores, de modo que elas mesmas possam ser divididas, formando uma hierarquia.

Veja no pseudo-algoritmo abaixo a expressão desse conceito.


Como podemos notar o pseudo-algoritmo é recursivo, isto é ele é se repete para frações do argumento (sistema) original. Dessa forma, cada subsistema tem oportunidade de ser dividido em sistemas menores. Observe que, a pseudo-instrução Divide em [3,6] garante que não se caia no problema anterior, isto é dividir em muitos sistemas menores.

O número mágico [3,6] (intervalo fechado no campo dos inteiros entre 3 e 6) é diferente do número mágico clássico (7+-2) de George Miller e baseia-se nas idéias de Douglas Ross.

O número mágico foi derivado de uma série de experiências cognitivas conduzidas em 1956 e baseada na capacidade de memorização de conjuntos de informação, conjuntos esses formados por símbolos. Os estudos mostraram que os seres humanos têm maior facilidade de memorizar conjuntos de informações, por exemplo: telefones, que tenham uma quantidade máxima de símbolos no intervalo [5,9]. Esse número tem sido aplicado em várias situações, como por exemplo: na administração ao recomendar que não se tenha mais do que 7+-2 subordinados ou no desenho de software ao se propor que não se divida um módulo em mais do 7+-2 partes.

Douglas Ross é o inventor do SADT, um dos primeiros métodos de desenho de software, que apresenta uma bem ancorada disciplina no emprego do conceito de hierarquia.

A argumentação básica é: para o limite mínimo: tudo tem início, meio e fim; para o limite máximo: dividir em 7 subsistemas leva a que o número máximo de canais de comunicação seja o triplo do número de subsistemas, o que não ocorre com a divisão em 6.

Portanto, empregando-se a hierarquia, consegue-se dividir um sistema complexo em uma série de subsistemas menos complexos, até que, nos subsistemas não mais divisíveis temos como lidar com a complexidade. Esse princípio é apresentado em diferentes roupagens nos mais variados métodos de desenho. Por exemplo, em Engenharia de Software costuma-se atribuir o nome de refinamentos passo a passo.

Claro que as coisas não são tão simples como erroneamente poderíamos supor. O grande problema da aplicação do conceito de hierarquia é sabermos como dividir da melhor maneira. Some-se a isso o problema de sabermos quando não devemos dividir mais.

Com o pseudo-algoritmo temos o básico norteador na condução do desenho de sistemas, mas além disso, é importante também conhecer duas heurísticas bastante aplicadas no desenho de sistemas: coesão e acoplamento.

sábado, maio 22, 2010

Estrutura em Rede

A estrutura em rede começa a surgir como partes de organizações, principalmente em empresas de tecnologia . Nessa estrutura inexiste o conceito de hierarquia formal e o trabalho é feito em equipe, onde existe a idéa de propriedade coletiva do trabalho.


Na estrutura em rede, em vez de atores organizacionais com pápeis fixos, tem-se um conjunto de indivíduos que trabalham cooperativamente. Apesar da propriedade ser coletiva, é frequente a existência de líderes nesse grupos, que na maioria das vezes tem uma função fundamentalmente de iniciador ou motivador dos trabalhos. Exemplos: campanhas publicitárias, construção de software livre, organizações filantrópicas, projetos de cooperação científica.

A Figura abaixo mostra a estrutura desse tipo de organização (aqui ressaltamos apenas algumas das relações possíveis). As vantagens são: flexibilidade no tratamento da tarefa, trabalho em grupo, criação e propriedade coletiva, maximização das habilidades do indivíduo. As desvantagens são: falta de responsabilidade individual, gerência coletiva, acumulo do canal de comunicação, complexidade de sincronização.



Os sistemas de informação para lidarem com esse tipo de estrutura organizacional são fortemente centrados em comunicação, porque o fluxo é basicamente entre todos os indivíduos envolvidos. Esses Sistemas de Informação tornam-se cada vez mais frequentes na medida em que se tornam disponíveis tecnologias de software que dão apoio ao trabalho cooperativo tanto síncrono como assíncrono.

Comunicações assíncronas são aquelas como o de correio eletrônico e comunicação síncrona são aquelas onde os emissores e receptores estão interagindo de uma forma fortemente acoplada temporalmente, ou seja, em tempo real. Existe hoje uma série de softwares que dão apoio a construção de sistemas de informação desse tipo. Um deles é o Lotus, antigo Lotus Notes.

A implementação de um Sistema de Informação para uma estrutura em rede é mais difícil, porque tem que ser geral o suficinte para atender todo um grupo, e ser particular o suficiente para dar apoio ao trabalho de cada indivíduo.

Estrutura Matricial

A estrutura matricial é a estrutura organizacional utilizada por organizações que trabalham orientadas a projetos, onde um projeto agrega vários elementos funcionais. O trabalho por projeto, que leva a uma organização matricial num determinado período de tempo, é muito frequente em empresas de engenharia e de publicidade, por exemplo.


Na Figura damos o exemplo de uma empresa de engenharia de telecomunicações (dois líderes de projeto X e Y, cada um recruta engenheiros de áreas especializadas: energia, radio e civil). Ese tipo de organização vê a organização de um maneira horizontal e assemelha-se a visão de processos pregada pela escola da re-engenharia. A Reengenharia foi moda no início dos anos 90 com base num artigo e livro de Hammer: Hammer, M, Re-engineering Work: Don't Automate, Obliterate, Harvard Business Review, 68, 4, July-Aug, 1990, 104-112 e Hammer M and Champy, Reengineering the Corporation: A Manifesto for Business Revolution (Collins Business Essentials) 1993.

“As vantagens da estrutura matricial são: qualidade da decisão no caso de conflitos de interesses, contato direto no lugar de burocracia, aumenta a motivação gerencial, desenvolvimento de gerentes através do incremento do envolvimento em decisões. As desvantagens são: tempo ara a tomada de decisão, responsabilidades não ficam claras, grande grau de conflito, diluição de prioridades.” (Gerry Johnson e Kevan Shcoles “Exploring Corporate Strategy”)

As estruturas matriciais representam um desafio para o arquiteto de sistemas de informação. Aqui, além de lidarmos com o fluxo vertical de cada funcionalidade e o fluxo inter-funcional de cada sistema, temos também que lidar com um fluxo horizontal, que muita vezes cruza todas as funções.

Os sistemas de informação têm que ser desenhados para atender tanto aos clientes horizontais como para os clientes verticais. Conseguir uma solução balanceada é o objetivo, porque muitas vezes a necessidade de informação gerencial da perspectiva horizontal pode gerar um trabalho extra para a organização vertical e com isso minar a qualidade do sistema como um todo.

Estrutura Divisionalizada

A estrutura divisionalizada é a estrutura organizacional que replica a estrutura funcional em mais de uma divisão da organização. Nesse caso, uma organização muito grande pode estruturar em divisões. Podem existir vários níveis de divisão, o que, claro, acarreta uma maior complexidade. Por exemplo, uma divisão geográfica poderia ter várias divisões de produtos.

Exemplos de estruturas são: regiões geográficas, linhas de produto e faixa de renda de consumidores. Portanto, em cada uma dessas divisões encontramos uma estrutura funcional semelhantes entre si. Veja a Figura, onde mostramos uma organização comercial dividida segundo três regiões geográficas (Sul, Sudeste e Centro Oeste) que engloba, em cada uma, uma estrutura funcional semelhante (Compras, Lojas, Estoque, Logística, Pessoal, Finanças).



É possível também encontrarmos organizações onde a separação funcional e divisional seja tão independente que não haja subordinação entre elas. Caso semelhante seria a combinação de divisão de produtos e divisão geográfica.

“As vantagens são: concentração na área do negócio, facilita-se medições de eficiência, facilidade na adição e subtração de novas unidades, facilita a atenção da gerência superior para com assuntos estrátegicos, encouraja o desenvolvimento da gerência. As desvantagens são: possibilidade de confusão sobre responsabilidade, conflito entre divisões, maior custo nas trocas entre divisões, divisões podem tornar-se muito grandes e complexidade de coordenação caso haja muitas divisões.”
(Gerry Johnson e Kevan Shcoles “Exploring Corporate Strategy”)

O arquiteto de sistemas de informação, quando lidando com estrutura divisionalizada, deve atentar que o fluxo de informação, além das características funcionais tem que considerar o fluxo entre funcões semelhantes de outras divisões, como também atender mais um nível de aglutinação (divisão). Sistemas de informação que dão apoio a organizações divisionalizadas têm que ter cuidado especial no tratamento das diferenças entre as estruturas funcionais replicadas.

quarta-feira, maio 19, 2010

Estrutura Funcional

A estrutura funcional é a clássica estrutura organizacional que utiliza a função como maneira de dividir áreas de responsabilidade e autoridade. É a estrutura típica em que a maioria das empresas se organiza. Segue naturalmente (na medida em que forma segue função) as especialidades do negócio ou as qualidades de seus fundadores.


A Figura ilustra esse tipo de estrutura. Exemplos para uma organização fabril são as diretorias de: marketing, produção, financeira, comercial e recursos humanos. Ou seja nesse caso a estrutura organizacional se baseia na compartimentalização das tarefas.




“As vantagens são o executivo chefe fica em contato com todas as operações, reduz e simplifica os mecaninsmos de controle, tem clara definição de responsabilidades, especialistas estão em nível medio e superior de gerência. As desvantagens são: gerentes de nível superior ficam sobrecarregados com assuntos de rotina, gerentes de nível superior negligenciam aspectos estratégicos, dificuldade de lidar com diversidade, coordenação entre funções é difícil e falha em adaptar-se”. (Gerry Johnson e Kevan Shcoles “Exploring Corporate Strategy”)

Em organizações desse tipo, os sistemas de informação são construídos com uma forte base funcional, servindo com prioridade a seu ambiente e apoiando principalmente um fluxo vertical na troca de informações. Claro que existem fluxos inter-funcionais e que recebem e enviam informações a outras estruturas funcionais, mas o centro do tratamento da informação é de competência da função. Na verdade os fluxos inter-funcionais são os que apresentam desafios para o arquiteto do sistema de informação.

Estruturas Organizacionais

Como bem salientou o Prof. Sergio Rodrigues Bio em seu livro “Sistemas de Informação: Um Enfoque Gerencial”, o conhecimento sobre a estrutura da organização para a qual estamos desenhando um Sistema de Informação é fundamental. Bio, em seu livro, reporta sobre três tipos de estrutura: funcional, divisionalizada e matricial. Além dessas estruturas, acrescentamos a estrutura em rede.


Nas notas que se seguem, estaremos detalhando o que são essas estruturas e de que maneira impactam o desenho do Sistema de Informação. Esses impactos usaram, além do livro do Bio, o livro de Gerry Johnson e Kevan Shcoles “Exploring Corporate Strategy”.