es on how abstractions are to be represented as data structures, modules, and so on. Conceptual design is the domain of conventional requirements analysis, project scoping and specification; representation design covers software architecture, module design, and implementation. Traditionally, conceptual design and representation design have been separated into distinct phases. But the recognition that there are two fundamentally different aspects of design does not presume a particular ordering of tasks, and applies equally to ‘agile’ processes in which the two are interleaved. Recently, decisions about when conceptual design should take place, and how (or even whether) it is recorded, have been the subject of endless debate. But that conceptual design exists and matters has not been questioned. After all, ideas are the raw material of software, and everyone recognizes that you cannot build good software from bad ideas. 2 Little Research on Conceptual Design Much research effort ha...