06. Agile Software Modelling

System architecture is a reflection of organization hierarchy.

Modelling

Used to handle complexity: lots of functionality, interactions (possible concurrent) and constraints.

Identifying components: reuse existing libraries/resources.

Abstraction levels have been raised over the years to try reduce complexity?

Representations/models/visuals are good if:

Visual representations should:

Representations are a model of reality. All models are wrong; some models are useful.

Class Diagrams

Every organization has their own business rules, their own vocabulary, and concepts (with relations to each other).

Domain concepts:

Class diagrams are a static representation (not business logic). The semantics of all elements must be clear and fully unambiguous.

The terminology used by the client should also be used by in the code.

Tactics

Architecture tactics:

Architecture style and design patterns:

These shape the system design early on:

Documentation

README files should state:

Wiki pages:

Stories as Use-Case Scenarios

From a story it is difficult to:

Robustness diagrams:

  웃 ------ |-o  -----> ⥀ ----- o̲ ◆-----> o
actor    boundary   control   entity  property

OR:

Example: As a user, I want to search for events by their types, location or date so that I will be able to subscribe to them later.

user    event interface  subscribe
  웃 -------- o-| ------->  ⥀
              |             |
              |             |
              v           event
      search  ⥀ ----------  o ◆--- o location
                            ◆ ◆
                            |   \
                           date  \
                                  type

Partial scenarios

As a user, I want to do x so that value: the value does not need to be implemented in the story, the story acts as justification for the task.

Wireframes

c.f. robustness diagrams: