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.
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.
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 (http://dx.doi.org/10.1016/j.scico.2010.11.005). Science of Computer Programming, 2011
Moore, Evaluating offdiagonal complexity as a metric of software evolution (https://dl.dropboxusercontent.com/u/5760429/Moore-M801-EMA.pdf). MSc dissertation, The Open University, 2011.
Moore and Wermelinger, The Challenge of Software Complexity (https://oro.open.ac.uk/38238). 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 (http://www.markusstrohmaier.info/documents/2009_STC09-Socio-technical-co...), Workshop on Socio-Technical Congruence 2009.
Explore our qualifications and courses by requesting one of our prospectuses today.