Abstract
Great designs are rarely inventions without precedent; more often they are skillful adaptations of earlier designs. Designers work by recognizing structures they have previously seen, and taking steps they have taken before. By making such patterns and design moves explicit, we can educate designers more effectively and promote good design. This paper explains concepts, a modular structure for describing software behavior that allows patterns to be recognized, and proposes three pairs of design moves for software design, illustrating their application in some widely used products.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press, Cambridge (2005)
Alexander, C.: A Pattern Language: Towns, Buildings, Construction. Oxford University Press, Oxford (1977)
Alexander, C.: Timeless Way of Building. Oxford University Press, Oxford (1979)
Batory, D., O’Malley, S.: The design and implementation of hierarchical software systems with reusable components. ACM Trans. Softw. Eng. Methodol. 1(4), 355–398 (1992)
Brooks, F.P.: No silver bullet—essence and accident in software engineering. In: Proceedings of the IFIP Tenth World Computing Conference, pp. 1069–1076 (1986)
de Kleer, J., Brown, J.S.: Mental models of physical mechanisms and their acquisition. In: Anderson, J.R. (ed.) Cognitive Skills and Their Acquisition, pp. 285–309. Lawrence Erlbaum (1981)
Evans, E.: Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley, Hoboken (2004)
Fowler, M.: Analysis Patterns: Reusable Object Models. Addison-Wesley Professional, Hoboken (1997)
Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley Professional, Hoboken (2002)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Hoboken (1994)
Greenberg, S., Buxton, B.: Usability evaluation considered harmful (some of the time). In: Proceedings of Computer Human Interaction (CHI 2008), April 2008
Griswold, W., Notkin, D.: Automated assistance for program restructuring. ACM Trans. Softw. Eng. Methodol. (TOSEM) 2(3), 228–269 (1993)
Hay, D.C.: Data Model Patterns. Dorset House (2011)
Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall, Hoboken (1985)
Jackson, D.: The Essence of Software: Why Concepts Matter for Great Design. Princeton University Press, Princeton (2021)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis. MIT Press, Cambridge (2012)
Jackson, D.: Alloy: a language and tool for exploring software designs. Commun. ACM 62(9), 66–76 (2019). https://cacm.acm.org/magazines/2019/9/238969-alloy
Jackson, M.: Problem Frames: Analysing & Structuring Software Development Problems. Addison-Wesley Professional, Boston (2000)
Jones, C.B.: Systematic Software Development Using VDM. Prentice Hall, Hoboken (1990)
Kapor, M.: A software design manifesto. Reprinted as Chapter 1 of [28]
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
Parnas, D.L.: Designing software for ease of extension and contraction. IEEE Trans. Softw. Eng. 5, 2 (1979)
Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Pearson (1996)
Spivey, J.M.: The Z Notation: A Reference Manual. International Series in Computer Science, 2nd edn. Prentice Hall (1992). https://spivey.oriel.ox.ac.uk/wiki/files/zrm/zrm.pdf
Tognazzini, B.: First Principles of Interaction Design, revised & expanded (2014). https://asktog.com/atc/principles-of-interaction-design
TRIZ (Wikipedia article). https://en.wikipedia.org/wiki/TRIZ
User Interface Design Patterns. https://ui-patterns.com
Winograd, T., Bennett, J., De Young, L., Hartfield, B. (eds.): Bringing Design to Software. Addison-Wesley, Boston (1996)
Acknowledgments
Thank you to Geoffrey Litt, Joshua Pollock and Michael Jackson for helpful discussions about design moves, and to Akiva Jackson, Rachel Jackson and Rebecca Jackson for sharing their experiences and insights about troubled concepts. The author’s research was supported in part by the National Science Foundation, under the Secure and Trustworthy Cyberspace (SATC) and Designing Accountable Software Systems (DASS) programs.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 Springer Nature Switzerland AG
About this paper
Cite this paper
Jackson, D. (2022). Concept Design Moves. In: Deshmukh, J.V., Havelund, K., Perez, I. (eds) NASA Formal Methods. NFM 2022. Lecture Notes in Computer Science, vol 13260. Springer, Cham. https://doi.org/10.1007/978-3-031-06773-0_3
Download citation
DOI: https://doi.org/10.1007/978-3-031-06773-0_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-06772-3
Online ISBN: 978-3-031-06773-0
eBook Packages: Computer ScienceComputer Science (R0)