liveBook · Manning

Design

As explained in Collaborative Software Design: How to facilitate domain modeling decisions

Software design is the activity of determining a software system’s structure, behavior, and implementation decisions from its requirements.

Software design consists of activities that modify current software systems into preferred ones. These activities usually produce a plan containing design decisions. section 3.1.3

Design is unavoidable, whether decisions are explicit or implicit. Collaborative modeling makes assumptions visible, brings different perspectives together, and reduces ambiguity that otherwise creates workarounds and accidental complexity. section 3.1 section 3.0

Use software design as a collaborative practice:

  • Start from a shared model of the business problem before choosing a solution. section 3.0
  • Invite stakeholders to challenge assumptions and contribute their knowledge. section 3.1
  • Facilitate decisions rather than imposing designs; teach teams to run modeling sessions independently. section 1.2.5
  • Define ambiguous terms, record important decisions, and revisit models as feedback changes understanding. section 3.1.1 section 11.3

BigScreen’s move toward a preferred system

BigScreen first models its current situation with the group’s perspectives and knowledge. It then uses design activities to plan changes toward a preferred system, including boundary decisions that may reshape its architecture. section 3.1.3

Not every design decision is architectural. Architecture is the subset of design decisions that changes the system’s foundational shape; localized changes without broader ripple effects need not receive architectural treatment. Design quality also depends on social and cognitive conditions, including disagreement, power, bias, and resistance. section 3.1.3 section 1.2.5

How Collaborative Software Design: How to facilitate domain modeling decisions covers it

How deep it goes
Defines design, distinguishes architecture, and connects modeling with facilitation, bias, explicit decisions, and iterative feedback.
Examples
Uses BigScreen modeling, boundary decisions, ambiguous terminology, architectural disagreements, and evolving decision records as practical examples.
What it assumes
Assumes a current software system and an understood business problem, while teaching how to move from problem space to solution space.
What you can do after
Apply it via collaborative modeling to expose assumptions, make decisions, plan system changes, and keep designs adaptable.
How it connects
Connects software design with collaborative modeling, software architecture, Domain-Driven Design, sociotechnical systems, cognitive bias, and architectural decision records.

Also explained in

Compare how 4 books explain design →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Collaborative Software Design: How to facilitate domain modeling decisions. The section links point to the parts of the book it draws on.