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

Cross-functional requirements: getting the most important requirements right

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  4. © 2024 Thoughtworks 4
    Cross-functional requirements?

    View full-size slide

  5. © 2024 Thoughtworks
    How we usually deal with cross-functional
    requirements
    5
    Discussed during
    inception. Rarely
    mentioned during
    execution

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. © 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

    View full-size slide

  9. © 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?

    View full-size slide

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

    View full-size slide

  11. © 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?

    View full-size slide

  12. © 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

    View full-size slide

  13. © 2024 Thoughtworks
    Quantifying product qualities
    13
    Perception of luxury
    Scale?
    How to observe?

    View full-size slide

  14. © 2024 Thoughtworks
    Quantifying product qualities
    14
    Scale? 1-10
    How to observe? Survey
    Perception of luxury

    View full-size slide

  15. © 2024 Thoughtworks
    Quantifying product qualities
    15
    Durability
    Scale?
    How to observe?

    View full-size slide

  16. © 2024 Thoughtworks
    Quantifying product qualities
    16
    Durability
    Scale? Number of sittings
    How to observe? Test with
    Gester GT-LB305 machine

    View full-size slide

  17. © 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

    View full-size slide

  18. © 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

    View full-size slide

  19. © 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?

    View full-size slide

  20. © 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

    View full-size slide

  21. © 2024 Thoughtworks 21
    What if it’s impossible
    to meet all critical requirements
    within time and money constraints?

    View full-size slide

  22. © 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

    View full-size slide

  23. © 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…

    View full-size slide

  24. © 2024 Thoughtworks
    Sample product qualities
    24
    Function:
    sitting a human
    Ergonomy
    Perception of luxury
    Durability
    Water-resistant
    Acceptable
    Current
    Delight
    Acceptable
    Current
    Delight

    View full-size slide

  25. © 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

    View full-size slide

  26. © 2024 Thoughtworks
    Architecture
    26

    View full-size slide

  27. © 2024 Thoughtworks 27
    private List intersection(int[] a, int[] b) {
    var result = new ArrayList();
    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 fastIntersection(Integer[] a, Integer[] b) {
    var result = new HashSet();
    var bSet = new HashSet();
    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

    View full-size slide

  28. © 2024 Thoughtworks 28
    private List intersection(int[] a, int[] b) {
    var result = new ArrayList();
    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 fastIntersection(Integer[] a, Integer[] b) {
    var result = new HashSet();
    var bSet = new HashSet();
    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

    View full-size slide

  29. © 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

    View full-size slide

  30. © 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

    View full-size slide

  31. © 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?

    View full-size slide

  32. © 2024 Thoughtworks
    Multidimensional comparisons
    Latency
    Throughput
    Transactionality
    Better
    Worse
    Familiarity
    RDB Kafka
    RDB Kafka
    RDB Kafka
    RDB Kafka
    ? RDB Kafka

    View full-size slide

  33. © 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

    View full-size slide

  34. © 2024 Thoughtworks
    How many is “many”?
    34
    This book writes the same program in
    40 different architectures!

    View full-size slide

  35. © 2024 Thoughtworks
    Books by thoughtworkers:
    35

    View full-size slide

  36. © 2024 Thoughtworks
    Tom Gilb: Real requirements engineering
    36
    https://www.gilb.com/competitive-engineering

    View full-size slide

  37. © 2024 Thoughtworks
    Thank you!
    37
    Alessio Maida
    Business Development Manager
    [email protected]
    Matteo Vaccari
    Technical Principal
    [email protected]

    View full-size slide