Abstract: Software design is a complex pursuit – technically, cognitively, and socially. Understanding that complexity – and managing it effectively – are ongoing challenges. Building on decades of empirical research on professional software design, and on existing literature, this paper presents a new characterization of software design that unpacks that complexity. The characterization drills down to the core of design as a goal-driven activity and expresses it in terms of parallel contrasting dialogues: (1) a dialogue between problem and solution, (2) a dialogue across application, interaction, architecture, and implementation design, (3) a dialogue across the design cycle of analysis, synthesis, and evaluation, (4) a dialogue between pragmatism and fitness-for-purpose, and (5) dialogues among the team members engaged in the work of designing,. There is an inherent tension and interaction between the dialogues, which emphasise different views. This is a mechanism by which effective designers manage the complexity: each dialogue provides a focus (if not a simplification) for design reasoning, but effective design maintains the interaction between dialogues and makes use of the contrasts between them to achieve design insight. This characterisation helps to explain both why existing software engineering methodology does not always work and what an effective ‘design mindset’ is; the paper discusses some of the implications of viewing current software design practices in this light.
PPIG 2019 - 30th Annual Workshop
Software design as multiple contrasting dialogues