Requirements Gathering and Architecture Design

Lecture



1. Requirements gathering

  • System customers (stakeholders)
    • they are not obliged to know what they want
    • they cannot necessarily explain what they want
  • Functional, non-functional, and derived requirements
  • Infrastructure (deployment environment)
  • Architectural candidates. General algorithm:
    - everything together (three layers, one deployment stage)
    - move out the DB and the front end
    - optimize the DB (vertical scaling)
    - do replication and sharding
    - add caching
    - add load balancing
    - move away from the three-tier design
    - this lets the project (and the architect) live for 3 years, or even longer
  • Architectural elements (responsibilities, constraints, interfaces)
  • The "pick 2 of 3" rule: "fast, good, cheap"
  • Antipatterns (keeping everything in your head, not maintaining documentation, insufficient or, conversely, excessive detail, copying, imitating the greats, an incomplete process)

2. Principles of building projects in the early stages

  • What does architecture have to do with it (isn't architecture just arrows and boxes?)
  • Conway's law
  • Main approaches: separation of concerns, managing complexity, simplifying communication
  • Main problems: fragmentation, design errors, inconsistency, over-functionality
  • Simple ways of documenting
  • Openness to change and to bringing in new developers
  • Establishing rules and conventions
  • Iterative development, waterfalls, cycles
  • Short steps
  • Why KISS, SOLID, GRASP, etc. do not help

3. Common architectural approaches

- pipes and filters
- Client/Server
- Peer-to-peer
- Layers and Tiers
- Publisher/Subscriber

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Web site or software design"

Terms: Web site or software design