Frame: the problem and its names
The problem in one sentence, the names research and practice give it, and the terms searched.
The problem in one sentence
Given a set of files and the references between them, choose how content is cut into files and how files are arranged in folders. The aim is that nothing is held twice, each file does one thing, and a reader or an import reaches what it needs in few steps.
What the field calls it
The field has no single name. It is the meeting point of five strands, plus a human one.
| Strand | Field names | Acronyms and key authors |
|---|---|---|
| Why modules at all | modularity, information hiding, coupling and cohesion | DSM (Baldwin, Clark), Parnas |
| Choosing the folder tree from the dependency graph | software clustering, remodularization, architecture recovery | MQ, Bunch (Mancoridis), MoJo (Tzerpos, Holt), SBSE |
| Scoring a hierarchy | hierarchical clustering objectives | Dasgupta cost, SSE hardness |
| Holding nothing twice | hash-consing, minimal DAG, tree compression, clone detection | MDL, Type 1 to 4 clones, CCFinder, Deckard |
| Checking rules | architecture conformance checking | reflexion models, ArchUnit |
| The human constants | menu depth versus breadth, information foraging, identifier studies | scent, Miller, Pirolli |
Search terms tried, three ways
- Academic: software module clustering, remodularization, hierarchical clustering cost function.
- Acronym: MQ, MoJoFM, DSM, SBSE, SSE.
- Author: Mancoridis, Dasgupta, Candela, Garcia, Murphy.
What practitioners call it
Practice uses other words for the same questions. Each row pairs a practitioner term with the field name already used above.
| Practitioners say | The field says |
|---|---|
| project layout, repo structure, "where do files go" | architecture recovery, remodularization |
| package by feature, package by layer | dominant decomposition (Tarr 1999), common closure (Martin 2017) |
| screaming architecture | information hiding, purpose as first facet |
| monorepo, workspace | modularity at repository scale |
| DRY, WET, Rule of Three, AHA, wrong abstraction | clones, one place per fact |
| max-lines, "file too long" | size is a prompt |
| internal packages, visibility, code owners | conformance checking, folder boundaries |
| reserved names, MAX_PATH | portable paths |