Understanding large-scale software systems – structure and flows

Omer Levy, Dror G. Feitelson

Research output: Contribution to journalArticlepeer-review

Abstract

Program comprehension accounts for a large portion of software development costs and effort. The academic literature contains mainly research on program comprehension of short code snippets, but comprehension at the system level is no less important. We claim that comprehending a software system is a distinct activity that differs from code comprehension. We interviewed experienced developers, architects, and managers in the software industry and open-source community, to uncover the meaning of program comprehension at the system level; later we conducted a survey to verify the findings. The interviews demonstrate, among other things, that system comprehension is largely detached from code and programming language, and includes scope that is not captured in the code. It focuses on one hand on the structure of the system, and on the other hand on the flows in the system, but less on the code itself. System comprehension is a continuous, unending, iterative process, which utilizes white-box and black-box approaches at different layers of the system depending on needs, and combines both bottom-up and top-down comprehension strategies. In summary, comprehending a system is not just comprehending the code at a larger scale, and it is not possible to comprehend large systems at the same level as comprehending code.

Original languageEnglish
Article number48
JournalEmpirical Software Engineering
Volume26
Issue number3
DOIs
StatePublished - May 2021
Externally publishedYes

Keywords

  • Code structure
  • Program comprehension
  • Program flows
  • System comprehension

Fingerprint

Dive into the research topics of 'Understanding large-scale software systems – structure and flows'. Together they form a unique fingerprint.

Cite this