Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cross-functional requirements: getting the most...

Cross-functional requirements: getting the most important requirements right

Developers may tend to focus 100% of their attention on "functional requirements". I try to argue that first, those are not really "requirements", but rather are solution ideas. Second, I assert that the cross-functional requirements are the most important ones, and I hint at a more precise and actionable way to think about CFR than what I usually see.

Matteo Vaccari

February 12, 2024
Tweet

More Decks by Matteo Vaccari

Other Decks in Technology

Transcript

  1. © 2024 Thoughtworks Software architecture and cross-functional requirements Getting the

    most important requirements right Matteo Vaccari, 09-02-2024
  2. © 2024 Thoughtworks 2 We bring the best of our

    distributed teams to support your business objectives 11,500+ Employees 30 Years Australia Brazil Canada Chile China Ecuador Finland Germany India Italy Netherlands Romania Singapore Spain Thailand United States United Kingdom Vietnam 18 Countries 51 Offices
  3. © 2024 Thoughtworks My journey • 1990 - 2023 SW

    developer • 1995 - 1998 Ph.D. on Program Correctness • 2000 - 2015 Lecturer • 2005 - 2015 Extreme programming coach • 2005 - 2023 Conference speaker • 2015 - Thoughtworker 3
  4. © 2024 Thoughtworks How we usually deal with cross-functional requirements

    5 Discussed during inception. Rarely mentioned during execution
  5. © 2024 Thoughtworks How we distribute our focus 6 Functional

    “requirements” cross-functional requirements
  6. © 2024 Thoughtworks How we distribute our focus 7 Functional

    “requirements” cross-functional requirements The success of a project depends on these
  7. © 2024 Thoughtworks How we distribute our focus 8 Functional

    “requirements” cross-functional requirements The success of a project depends on these We call them “requirements”, but they are not. They are mostly solution ideas that (we hope) will make our product competitive
  8. © 2024 Thoughtworks The language of requirements engineering 9 1.

    Function requirement: what the product does Can you state what the function of these products is?
  9. © 2024 Thoughtworks The language of requirements engineering 10 2.

    Performance requirement: “how good” the product has to be
  10. © 2024 Thoughtworks The language of requirements engineering 11 2.

    Performance requirement: “how good” the product has to be a. Product qualities: “how well” it does its function What qualities do these products have?
  11. © 2024 Thoughtworks Sample product qualities 12 None of these

    properties is boolean. They are all quantifiable Ergonomy Perception of luxury Resistance to water Robustness Durability Elegance …
  12. © 2024 Thoughtworks Quantifying product qualities 16 Durability Scale? Number

    of sittings How to observe? Test with Gester GT-LB305 machine
  13. © 2024 Thoughtworks Sample product qualities 17 Function: sitting Ergonomy

    Perception of luxury Durability Water-resistant You may picture the qualities as independent axes. The notch indicates the current level
  14. © 2024 Thoughtworks Quality requirements 18 Perception of luxury Scale:

    1-10 How to observe: Survey Current: 4 Desired: 9 Stakeholder: John the PO Durability Scale: number of sittings How to observe: test with GT-LB305 until it breaks Current: 100K Desired: 1M Stakeholder: Jane the general manager Definition: a project is successful when all critical requirements are satisfied
  15. © 2024 Thoughtworks Quality requirements 19 Perception of luxury Scale:

    1-10 How to observe: Survey Current: 4 Desired: 9 Stakeholder: John the PO Durability Scale: number of sittings How to observe: test with GT-LB305 until it breaks Current: 100K Desired: 1M Stakeholder: Jane the general manager Definition: a project is successful when all critical requirements are satisfied What is a critical requirement?
  16. © 2024 Thoughtworks Quality requirements 20 Perception of luxury Scale:

    1-10 How to observe: Survey Current: 4 Desired: 9 Stakeholder: John the PO Durability Scale: number of sittings How to observe: test with GT-LB305 until it breaks Current: 100K Desired: 1M Stakeholder: Jane the general manager Definition: a project is successful when all critical requirements are satisfied What is a critical requirement? A critical requirement is a requirement wanted by a critical stakeholder, i.e. someone that we need to make happy or else we fail
  17. © 2024 Thoughtworks 21 What if it’s impossible to meet

    all critical requirements within time and money constraints?
  18. © 2024 Thoughtworks Creating slack in the problem space 22

    Perception of luxury Scale: 1-10 How to observe: Survey Current: 4 Acceptable: 8 Desired: 9 Stakeholder: John the PO Durability Scale: number of sittings How to observe: test with GT-LB305 until it breaks Current: 100K Acceptable: 900K Desired: 1M Stakeholder: Jane the general manager It might be impossible to reach the desired level in all critical requirement. Therefore we ask for an Acceptable level
  19. © 2024 Thoughtworks Delighting our stakeholders 23 Perception of luxury

    Scale: 1-10 How to observe: Survey Current: 4 Acceptable: 8 Desired: 9 Delight: 10 Stakeholder: John the PO Durability Scale: number of sittings How to observe: test with GT-LB305 until it breaks Current: 100K Acceptable: 900K Desired: 1M Delight: 2M Stakeholder: Jane the general manager In order for our product to beat the competition, it must delight its stakeholders. Therefore…
  20. © 2024 Thoughtworks Sample product qualities 24 Function: sitting a

    human Ergonomy Perception of luxury Durability Water-resistant Acceptable Current Delight Acceptable Current Delight
  21. © 2024 Thoughtworks A precise vocabulary for discussing requirements 25

    1. Vision — description at the highest level 2. Function Requirement — what it does 3. Performance Requirements — how good it does it a. Qualities — how well the system performs: e.g., usability, customer satisfaction, availability b. Resource Savings — required economic and resource savings, compared to a benchmark c. Workload Capacities — e.g., it should support 3K concurrent users 4. Resource Requirements — e.g., it should cost less than 1M euro 5. Design Constraints — e.g., it should use Oracle 6. Condition Constraints — e.g. it should be legal in Europe Tom Gilb, Competitive engineering
  22. © 2024 Thoughtworks 27 private List<Integer> intersection(int[] a, int[] b)

    { var result = new ArrayList<Integer>(); for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { if (a[i].equals(b[j])) { if (!result.contains(a[i])) { result.add(a[i]); } } } } return result; } private Set<Integer> fastIntersection(Integer[] a, Integer[] b) { var result = new HashSet<Integer>(); var bSet = new HashSet<Integer>(); Collections.addAll(bSet, b); for (int i = 0; i < a.length; i++) { if (bSet.contains(a[i])) { result.add(a[i]); } } return result; } Comparing two algorithms This requires about n3 operations This requires about 2n operations
  23. © 2024 Thoughtworks 28 private List<Integer> intersection(int[] a, int[] b)

    { var result = new ArrayList<Integer>(); for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { if (a[i].equals(b[j])) { if (!result.contains(a[i])) { result.add(a[i]); } } } } return result; } private Set<Integer> fastIntersection(Integer[] a, Integer[] b) { var result = new HashSet<Integer>(); var bSet = new HashSet<Integer>(); Collections.addAll(bSet, b); for (int i = 0; i < a.length; i++) { if (bSet.contains(a[i])) { result.add(a[i]); } } return result; } Comparing two algorithms This requires about n3 operations This requires about 2n operations Execution time (ms) n O(n3) ~ O(n) 1K 17 1 10K 190 2 100K 16885 13 500K 635420 43
  24. © 2024 Thoughtworks What did we learn? A good programmer

    knows that: an O(n) algorithm will always be faster than an O(n3) algorithm (for large n) No amount of “programming skill” or “parallelism” will make the O(n3) algorithm faster But Sometimes an inefficient algorithm is easier to write and easier to prove correct 29 Qualities Qualities Qualities
  25. © 2024 Thoughtworks Architecture: the decisions that are hard to

    revert For instance: choosing the better algorithm in view of the qualities we want to achieve • Speed • Memory • Robustness • Cost to write • Cost of maintenance 30
  26. © 2024 Thoughtworks Example: streaming events vs traditional DB 31

    Stateless server Stateless server Stateless server Frontend Relational DB Stateful consumer Stateful consumer Stateful consumer Frontend Kafka topic Kafka topic Stateful consumer Stateful consumer Stateful consumer Kafka topic What are the main qualities of these two architectures?
  27. © 2024 Thoughtworks Multidimensional comparisons Latency Throughput Transactionality Better Worse

    Familiarity RDB Kafka RDB Kafka RDB Kafka RDB Kafka ? RDB Kafka
  28. © 2024 Thoughtworks How to design architecture? We should: •

    know many different architectures • understand what qualities they have Then we can: • combine and contrast them • estimate how they might satisfy the critical requirements 33
  29. © 2024 Thoughtworks How many is “many”? 34 This book

    writes the same program in 40 different architectures!