Collaborative Software Design: How to facilitate domain modeling decisions

Collaborative Software Design: How to facilitate domain modeling decisions

Collaborative Software Design: How to facilitate domain modeling decisions
Автор: Baas-Schwegler Kenny, Van Kelle Evelyn, Verschatse Gien
Дата выхода: 2025
Издательство: Manning Publications Co.
Количество страниц: 821
Размер файла: 6,5 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

Copyright
dedication
contents
front matter
forewords
preface
acknowledgments
about this book
Who should read this book?
How this book is organized: a roadmap
liveBook discussion forum
about the authors
about the cover illustration
1 The need for collaborative software design
1.1 Design decisions gone wrong at BigScreen
1.1.1 Understanding the landscape
1.1.2 BigScreen’s attempt at refactoring
1.2 BigScreen: How collaborative modeling helped to improve design decisions
1.2.1 Our approach for BigScreen
1.2.2 The new architecture
1.2.3 A brief history of software design
1.2.4 The Agile theater
1.2.5 Enabling teams to do collaborative software design
1.3 Collaborative software design as a catalyst for better design decisions
1.3.1 Collaborative modeling, design, and architecture
1.3.2 Collaborative modeling ingredients and potential benefits of facilitation
1.3.3 The effect of social dynamics on collaborative modeling sessions
1.3.4 Collaborative decision-making
Summary
2 What is collaborative modeling?
2.1 Understanding the business problems
2.1.1 What problems are we trying to solve?
2.1.2 What is collaborative modeling?
2.1.3 Exploring business problems using collaborative modeling
2.2 Domain-Driven Design and collaborative modeling
2.2.1 What is Domain-Driven Design?
2.2.2 Who are the stakeholders?
2.2.3 Why DDD and collaborative modeling go hand in hand
2.3 Different collaborative modeling tools
2.3.1 Collaborative modeling in the problem and solution space
2.3.2 EventStorming
2.3.3 Example Mapping
2.3.4 Domain Storytelling
2.3.5 When to use what tool
2.4 Collaborative software design catalysts
2.5 Further reading
Summary
3 Using collaborative modeling for design and architecture
3.1 What is software design and architecture?
3.1.1 The importance of meaning and definitions
3.1.2 What is software architecture?
3.1.3 What is software design?
3.1.4 What are sociotechnical systems?
3.1.5 Design decisions and collaborative modeling
3.2 Heuristics for collaborative modeling
3.2.1 What are heuristics?
3.2.2 Competing heuristics
3.2.3 How to use heuristics
3.3 Driving the design by understanding the business
3.3.1 Designing boundaries
3.3.2 Why boundaries are designed through collaboration
3.3.3 From design to architecture
3.4 Collaborative software design catalysts
3.5 Chapter heuristics
3.6 Further reading
Summary
4 The ingredients of collaborative modeling
4.1 The collaborative modeling stages
4.1.1 Why use our stages?
4.1.2 The stages
4.2 Preparing for a session
4.2.1 Preparing the content
4.2.2 Preparing the space
4.3 Sensemaking
4.3.1 Conscious and unconscious minds
4.3.2 Opening up conversations
4.3.3 What is sensemaking?
4.3.4 Why would you do sensemaking?
4.3.5 In-person or remote?
4.3.6 Premortem
4.4 Check-in and check-out
4.4.1 What is a check-in and check-out?
4.4.2 Characteristics of a check-in and check-out
4.4.3 Why would you do a check-in and check-out?
4.4.4 Capturing feedback through check-outs
4.5 Different collaboration styles for modeling with tools
4.5.1 Together, Alone
4.5.2 Split and Merge
4.5.3 Small Group Diverge and Converge
4.5.4 Liberating structures: 1-2-4-All
4.5.5 Ensemble
4.5.6 Fishbowl
4.5.7 Anarchy!
4.5.8 Guerilla
4.5.9 The secret modeler
4.5.10 How to use the styles
4.6 Retrospective
4.6.1 Evaluating the outcome of the session
4.6.2 When we don’t do a retrospective
4.7 Collaborative software design catalysts
4.8 Chapter heuristics
4.9 Further reading
Summary
5 Facilitating collaborative modeling
5.1 The role of a facilitator
5.1.1 The facilitator as an observer
5.1.2 Other stances of a facilitator
5.2 The core competencies of a facilitator
5.2.1 Neutrality
5.2.2 Observing
5.2.3 Compassion
5.2.4 Using and learning the core competencies
5.3 Skill set of a facilitator
5.3.1 Clear communication
5.3.2 Active listening
5.3.3 Holding space
5.4 Facilitating sensemaking and collaborative styles
5.4.1 Why do you need a facilitator?
5.4.2 The role of a facilitator during sensemaking
5.4.3 Facilitating check-ins and check-outs
5.4.4 Preparing to facilitate sensemaking
5.4.5 Facilitating collaborative styles
5.4.6 What if you’re not the facilitator?
5.5 Dealing with remote facilitation
5.5.1 Benefits and potential downsides of the different forms
5.5.2 Preparing a remote facilitation
5.6 Collaborative software design catalysts
5.7 Chapter heuristics
5.8 Further reading
Summary
6 The influence of ranking
6.1 Ranking explained
6.1.1 What is ranking?
6.1.2 Implicit versus explicit ranking
6.1.3 Symbolic violence
6.1.4 Epistemic injustice
6.2 Becoming aware of ranking during collaboration and software design
6.2.1 Group ranking
6.2.2 People
6.3 Facilitating ranking
6.3.1 Analyzing the group rank
6.3.2 Own, play, and share your rank
6.3.3 Making the group aware of their rank
6.4 Collaborative software design catalysts
6.5 Chapter heuristics
6.6 Further reading
Summary
7 The effect and opportunities of cognitive bias
7.1 Cognitive bias explained
7.1.1 What is cognitive bias?
7.1.2 What does cognitive bias look like?
7.1.3 System 1 and System 2: A crash course
7.1.4 Embracing cognitive bias
7.2 Cognitive bias during collaboration and software design
7.2.1 Confirmation bias
7.2.2 The law of triviality
7.2.3 False-consensus effect
7.2.4 Availability bias
7.2.5 Loss aversion
7.2.6 Additive bias
7.3 Facilitating cognitive bias
7.3.1 Self-fulfilling prophecy
7.3.2 Altering behavior through nudges
7.3.3 The different dimensions of nudges
7.3.4 Becoming a choice architect
7.4 Collaborative software design catalysts
7.5 Chapter heuristics
7.6 Further reading
Summary
8 Resistance and conflict resolution
8.1 Why people show resistance and have conflicts
8.1.1 What conflict is all about
8.1.2 Edge behavior
8.1.3 What is resistance?
8.2 Resistance and conflict during collaboration
8.2.1 Recognizing resistance and conflict in collaborative modeling
8.2.2 The effect of resistance and conflict on software design
8.2.3 Resistance and conflict as learning opportunities
8.3 Facilitating toward a resolution
8.3.1 Resistance and conflict in practice
8.3.2 Kissing the group over the edge
8.3.3 Creating role fluidity
8.4 Collaborative software design catalysts
8.5 Chapter heuristics
8.6 Further reading
Summary
9 Making sustainable design decisions
9.1 Decisions, decisions, decisions
9.1.1 What is a decision anyway?
9.1.2 Decision vs. outcome
9.1.3 What you need to make a decision
9.1.4 Reactive vs. proactive decisions
9.1.5 Sustainability in software design
9.2 Decision-making styles and levels of buy-in
9.2.1 Autocracy vs. democracy
9.2.2 Creating buy-in on decisions
9.2.3 Buy-in on software design decisions
9.3 Facilitating sustainable design decisions
9.3.1 Moving toward a majority vote
9.3.2 Go fishing!
9.4 Collaborative software design catalysts
9.5 Chapter heuristics
9.6 Further reading
Summary
10 Managing unsolvable problems
10.1 Polarities: Some problems can’t be solved
10.1.1 What are polarities?
10.1.2 Recognizing polarities
10.1.3 Common polarities in collaborative modeling
10.1.4 Crusaders and tradition bearers
10.2 Visualizing a polarity
10.2.1 Creating a shared understanding of a polarity
10.2.2 Managing the polarity
10.3 Managing polarities during collaborative modeling
10.3.1 Getting stuck in a polarity
10.3.2 Managing a polarity as facilitator
10.3.3 Letting the group manage the polarity
10.4 Collaborative software design catalysts
10.5 Chapter heuristics
10.6 Further reading
Summary
11 Communicating and documenting decisions
11.1 Formalizing a decision
11.1.1 Finding the consequences
11.1.2 Capturing the decision
11.2 Spreading the knowledge through the company
11.2.1 Communicating decisions
11.3 Keeping the decision alive
11.3.1 The modeling process as a whirlpool
11.3.2 Don’t fall in love with your model
11.4 Collaborative software design catalysts
11.5 Chapter heuristics
11.6 Further reading
Summary
12 Collaborative modeling beyond software design
12.1 Moving toward understanding the context
12.1.1 Focusing on customer needs
12.1.2 Connecting business strategy, product, and software architecture
12.2 Collaborative modeling beyond software design
12.2.1 Different roles, different modeling needs
12.2.2 Customer journeys and EventStorming: A love story
12.2.3 Aligning capabilities with your strategy
12.3 Moving toward implementation
12.3.1 When to go from collaborative modeling to coding
12.3.2 From collaborative modeling to code
12.4 Collaborative software design catalysts
12.5 Chapter heuristics
12.6 Further reading
Summary
Appendix A.
index

Emerging practices, collaboration tools, and effective techniques for incorporating your key stakeholders into the software design process.

Don’t spend months building the wrong software! Collaborative Software Design is a unique and practical guide for effectively involving all stakeholders in the design of software to ensure sustainable design decisions.

In Collaborative Software Design you’ll learn how to:

  • Prepare and facilitate collaborative modeling sessions with tools such as Business Model Canvas, Event Storming, Domain Storytelling, Example Mapping, and Wardley Mapping
  • Pick and apply heuristics for modeling software design
  • Techniques for getting all needed knowledge from the group
  • The influence of ranking
  • The impact and opportunities of cognitive bias
  • Resistance and conflict resolution
  • Practices for following up after a modeling session
  • Document the session and report to stakeholders

About the technology

Delivering high-quality software requires the active participation of all stakeholders in the design process. But how do you align individuals with different roles, perspectives, and priorities to create sustainable software? Collaborative Software Design presents proven strategies that you can use to foster productive decision making, resolve conflicts and uncertainties, and elevate the quality of design outcomes.

About the book

In Collaborative Software Design, you’ll explore principles, techniques, and tools to promote safe communication as you discover business problems, formalize requirements, and implement a software project. It highlights established collaborative modeling tools like Event Storming, Example Mapping, Wardley Mapping, and Domain Storytelling, and introduces unique approaches for managing cognitive biases, conflict, and organizational hierarchy. Whether you’re a business stakeholder, a technical contributor, or a professional facilitator, you’ll learn how to hear and benefit from every voice in the room.

What's inside

  • Prepare and lead collaborative modeling sessions
  • Turn conflict into innovation
  • Make sustainable software design decisions
  • Improve software design from a sociotechnical perspective

About the reader

For anyone involved in the software development process.


Похожее:

Список отзывов:

Нет отзывов к книге.