Towards a theory of conceptual design for software

Concepts are the building blocks of software systems. They are not just subjective mental constructs, but are objective features of a system's design: increments of functionality that were consciously introduced by a designer to serve particular purposes. This essay argues for viewing the desig...

Full description

Bibliographic Details
Main Author: Jackson, Daniel
Other Authors: Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Format: Article
Language:en_US
Published: Association for Computing Machinery (ACM) 2017
Online Access:http://hdl.handle.net/1721.1/106499
https://orcid.org/0000-0003-4864-078X
_version_ 1826198379152015360
author Jackson, Daniel
author2 Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
author_facet Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Jackson, Daniel
author_sort Jackson, Daniel
collection MIT
description Concepts are the building blocks of software systems. They are not just subjective mental constructs, but are objective features of a system's design: increments of functionality that were consciously introduced by a designer to serve particular purposes. This essay argues for viewing the design of software in terms of concepts, with their invention (or adoption) and refinement as the central activity of software design. A family of products can be characterized by arranging concepts in a dependence graph from which coherent concept subsets can be extracted. Just as bugs can be found in the code of a function prior to testing by reviewing the programmer's argument for its correctness, so flaws can be found in a software design by reviewing an argument by the designer. This argument consists of providing, for each concept, a single compelling purpose, and demonstrating how the concept fulfills the purpose with an archetypal scenario called an 'operational principle'. Some simple conditions (primarily in the relationship between concepts and their purposes) can then be applied to reveal flaws in the conceptual design.
first_indexed 2024-09-23T11:03:57Z
format Article
id mit-1721.1/106499
institution Massachusetts Institute of Technology
language en_US
last_indexed 2024-09-23T11:03:57Z
publishDate 2017
publisher Association for Computing Machinery (ACM)
record_format dspace
spelling mit-1721.1/1064992022-09-27T16:54:40Z Towards a theory of conceptual design for software Jackson, Daniel Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science Jackson, Daniel Jackson, Daniel Concepts are the building blocks of software systems. They are not just subjective mental constructs, but are objective features of a system's design: increments of functionality that were consciously introduced by a designer to serve particular purposes. This essay argues for viewing the design of software in terms of concepts, with their invention (or adoption) and refinement as the central activity of software design. A family of products can be characterized by arranging concepts in a dependence graph from which coherent concept subsets can be extracted. Just as bugs can be found in the code of a function prior to testing by reviewing the programmer's argument for its correctness, so flaws can be found in a software design by reviewing an argument by the designer. This argument consists of providing, for each concept, a single compelling purpose, and demonstrating how the concept fulfills the purpose with an archetypal scenario called an 'operational principle'. Some simple conditions (primarily in the relationship between concepts and their purposes) can then be applied to reveal flaws in the conceptual design. SUTD-MIT International Design Centre (IDC) 2017-01-17T14:45:33Z 2017-01-17T14:45:33Z 2015-10 Article http://purl.org/eprint/type/ConferencePaper 978-1-4503-3688-8 http://hdl.handle.net/1721.1/106499 Jackson, Daniel. “Towards a Theory of Conceptual Design for Software.” ACM Press, 2015. 282–296. https://orcid.org/0000-0003-4864-078X en_US http://dx.doi.org/10.1145/2814228.2814248 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!) - Onward! 2015 Creative Commons Attribution-Noncommercial-Share Alike http://creativecommons.org/licenses/by-nc-sa/4.0/ application/pdf Association for Computing Machinery (ACM) Jackson
spellingShingle Jackson, Daniel
Towards a theory of conceptual design for software
title Towards a theory of conceptual design for software
title_full Towards a theory of conceptual design for software
title_fullStr Towards a theory of conceptual design for software
title_full_unstemmed Towards a theory of conceptual design for software
title_short Towards a theory of conceptual design for software
title_sort towards a theory of conceptual design for software
url http://hdl.handle.net/1721.1/106499
https://orcid.org/0000-0003-4864-078X
work_keys_str_mv AT jacksondaniel towardsatheoryofconceptualdesignforsoftware