Os exemplos de sistemas complexos encontram-se por toda a parte: mercados financeiros, ecologias, redes de regulação genética, sociedades, sistemas de computação distribuída, a internet, etc.
Naturalmente, não é fácil definir o que é a Complexidade [Vilela Mendes,R.99]. No entanto, uma série de propriedades comuns à generalidade dos sistemas complexos pode ser identificada. A característica mais frequentemente encontrada em todos estes sistemas é a de serem, em geral, compostos por um grande número de elementos e o seu comportamento apresentar propriedades que não podem ser facilmente deduzidas a partir das propriedades do comportamento dos elementos quando isolados. A emergência de propriedades colectivas, qualitativamente diferentes das individuais e a não-linearidade das interacções entre os elementos são as características fundamentais do comportamento dos sistemas complexos. A decomposição dum sistema nos seus elementos, para melhor o compreender, foi durante muito tempo o grande método de estudo das ciências tradicionais. Porém, se o sistema for um
sistema complexo, as suas propriedades não são decomponíveis.
A essência dos sistemas complexos reside na natureza e efeito das interacções e nas propriedades colectivas que elas criam. Daí que, cada vez mais, haja na comunidade científica um esforço para tentar desenvolver uma teoria unificada dos sistemas complexos, através dum estudo global e comparativo.
As questões mais importantes na área dos sistemas complexos são:
Relação forma-função: Em que medida a estrutura particular dum sistema influencia a sua
funcionalidade e quão vasto é o leque de estruturas que correspondem à mesma função?
Estruturas colectivas emergentes: Que estruturas colectivas emergem nestes sistemas e como
elas se relacionam com os tipos de interacção entre os elementos do sistema?
Dinâmica evolutiva: Que tipos de dinâmica colectiva são característicos destes sistemas?
Como é que a dinâmica colectiva se relaciona com as dinâmicas individuais?
Quantificação da complexidade e sua evolução: Como é que se pode quantificar a
complexidade dum sistema e como é que este tende a evoluir, para uma maior ou menor complexidade? E em que circunstâncias?
De uma maneira geral pode-se dizer que o estudo dos sistemas complexos segue duas vias complementares, cada uma delas com objectivos distintos. A primeira via está direccionada para a melhoria da capacidade de prever o comportamentos dos sistemas complexos, enquanto a segunda via está associada ao estudo da criação de estruturas. É esta segunda via, que exploramos nesta dissertação.
Quer as estruturas, quer quaisquer outros aspectos investigados na área dos sistemas complexos envolvem, directa ou indirectamente pelo menos três propriedades fundamentais: a não linearidade, a interdependência e a emergência.
uma simples sobreposição dos comportamentos elementares dos seus constituintes.
Interdependência significa que a reacção de cada um dos elementos do sistema depende
fortemente do comportamento dos outros, dum modo auto-consistente e difícil de prever a
priori.
Emergência caracteriza o aparecimento de propriedades colectivas, qualitativamente
diferentes do comportamento individual. A emergência, ou criação, de estruturas é uma das propriedades mais frequentemente estudadas na área da Complexidade.
Definição 4.2.1.1: um sistema complexo é um sistema formado por um elevado número de elementos, caracterizado por uma dinâmica não-linear, por interdependência entre o comportamento dos seus elementos e pelo aparecimento de propriedades colectivas, qualitativamente diferentes do comportamento individual. A essência dos sistemas complexos reside na natureza e no efeito das interacções entre os seus elementos. Exemplo 4.2.1.1. A minha família é exemplo de sistema complexo. É formada por um número elevado de elementos, perto de cem. Tem uma dinâmica não linear visto que o que acontece a um dos elementos não tem apenas influência sobre ele mas afecta fortemente todos os outros e altera inclusivamente a evolução da família. A morte ou doença grave de um dos elementos leva a que negócios familiares possam não ser realizados, porque a
interdependência afectiva entre os comportamentos dos seus elementos é muito forte. É ainda
possível identificá-la por propriedades colectivas qualitativamente diferentes do comportamento individual. Uma atitude optimista como forma de resolver grandes dificuldades, é uma característica emergente da minha família, proveniente da certeza da inter ajuda existente e coexistente com a atitude individual pessimista de vários membros. A designação de sistema como complexo provém da dificuldade de obter, reunir e organizar
informação suficiente para a sua representação. Nas secções que se seguem apresentamos algumas medidas da complexidade. Dado o âmbito
restritas à quantificação da complexidade em sistemas estáticos, ou seja, não se pretende explorar as medidas cuja funcionalidade recai sobre a caracterização da dinâmica dos sistemas complexos.
Várias das definições de complexidade aparecem associadas à quantidade de informação necessária à descrição, à reconstrução (capacidade de previsão) ou à classificação dos sistemas complexos.
De acordo com a referência de entre as principais quantidades propostas para caracterizar os diversos aspectos dos sistemas complexos i) umas caracterizam a maior ou menor natureza aleatória dos sistemas, ii) outras caracterizam as dificuldades de reprodução do sistema e iii) outras ainda caracterizam as relações entre o sistema e os seus elementos constituintes [Vilela Mendes,R99]. Estas últimas são as medidas de auto-organização.
Podemos ainda separar as medidas de auto-organização e as de auto-organização dinâmica. As primeiras incidem sobre a caracterização da criação de estruturas, as segundas incidem sobre a quantificação das relações da dinâmica colectiva do sistema com as dinâmicas individuais (dinâmica evolutiva).
Dado o objectivo central desta dissertação, a medida da complexidade do software (ou do produto resultante do processo de desenvolvimento de software), interessa principalmente explorar as medidas da complexidade vocacionadas para a caracterização da regularidade dos sistemas complexos. Esta é também uma das maneiras de caracterizar (através da quantificação) a existência de estrutura num determinado sistema. São as seguintes as medidas que, mais frequentemente, servem de instrumento a esta caracterização:
medidas da complexidade o computacional, o bruta,
o algorítmica, o efectiva,
medidas de entropia o de Shannon
o de Kolmogorov-Sinai e os expoentes de Lyaponov, o de Renyi
leis de escalamento e potência o a lei de Zipf
medidas de correlação