Abstract: Modularity is a fundamental concept in software engineering with deep roots in human cognition. However, to date few studies of the cognitive roots of modularity have been carried out. To contribute to filling this gap, we examine memory, abstraction and conceptual categorization as viewed in cognitive psychology. We clarify the connections between those topics and hierarchical decomposition. Using them as a basis, we propose a view of software modules as cohesive and structured representations of conceptual categories geared to facilitate reasoning along multiple levels of abstraction. We examine some features of the object-oriented paradigm and point out strengths and limitations in how mainstream object-oriented languages match the cognitive needs of software developers. We conclude by mentioning some future work that may bring insights on the language features to strive for in the next wave of technology adoption.
PPIG 2011 - 23rd Annual Workshop
On the Cognitive Foundations of Modularity