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.

2 comentários:

Ranieri Marinho de Souza disse...

Interessante o seu artigo

Abraços,
Ranieri Marinho de Souza
SEGR - Segurança da Informação
http://blog.segr.com.br

Unknown disse...

Gosto muito dos artigos de seu Blog. Quando for possível dá uma passadinha para ver meu Curso de Informática online. Emily Nascimento.