Analysing the Complexity of Software with (Social) Network Metrics

Topic Description

Complexity science is an exciting discipline that aims to uncover principles and relationships that explain the emergent behaviour of systems formed by many relatively autonomous, interacting parts. Complex systems range from ant colonies to the nervous system and the climate.

Software can also be seen as a complex system, its behaviour emerging from the interaction of a network of various parts (functions, packages, libraries) that depend (through calls, imports, inheritance, etc.) on each other.

The traditional ways of measuring software complexity have been rather simplistic, e.g. number of lines of code, number of branches (McCabe complexity). This topic aims to see if ideas from complexity science and social network analysis can lead to better insights about software systems and the network of developers that produce those systems.

Skills Required:

Interdisciplinary curiosity is welcome. Good programming skills required, to process software repositories. Depending on the particular research topic chosen, some maths and stats knowledge may be needed.

Background Reading:

Barabási, Linked: the new science of networks. Perseus Books, 2003

Mitchell, Complexity: a guided tour. Oxford University Press, 2011

Arbuckle, Studying software evolution using artefacts’ shared information content ( Science of Computer Programming, 2011

Moore, Evaluating offdiagonal complexity as a metric of software evolution ( MSc dissertation, The Open University, 2011.

Moore and Wermelinger, The Challenge of Software Complexity ( Proc. European Conf. on Complex Systems, 2012.

Strohmaier, Wermelinger, and Yu, Using Network Properties to Study Congruence of Software Dependencies and Maintenance Activities in Eclipse (, Workshop on Socio-Technical Congruence 2009.

Report an error on this page