SWAT Lecture 01: Why Agile Architecture And Design?

01, SWAT Spring 2021

  1. Overview of the lecture – 2/3 theory and paper exercises, 1/3 computer exercises -
    1. source code in Java to discuss architecture
    2. referenced books
    3. referenced articles
      1. must read: Additional information
      2. can read: Historical information
  2. The source code is the architecture
    1. Difference between to architect (process) and an architecture (result)
    2. If you think good architecture is expensive, try bad architecture
    3. Effectivity vs Efficiency
    4. Waste in design
    5. Good architects should be good developers
  3. Cowboy programmer
  4. Gold plated architecture
    1. Costs, ROI, optimum
  5. DRY – Don’t Repeat Yourself -, YGNI – You aren’t Gonna Need It -, gardening a solution, legacy solutions, geriatric systems, 
  6. Example of architecture styles: 
    1. N-Tier, 
    2. pipes and filter, - streams in Java -
    3. client-server, - JEE application servers – barebone servers and VM -
      1. A money related evolution
    4. whiteboard, 
    5. batch, - batch module
    6. reactive, - Java RX
    7. microarchitecture, - Bounded Domain and parallel development -
      1. requires Docker and Kubernetes
    8. hexagon and onion – Business Domain Model -
    9. P2P – Reliability and fault tolerance -
    10. OOP Anti-Patterns
      1. Singletons are evil
      2. Never return a null value
      3. Return unmodifiable collections
      4. No Anemic domain classes
      5. DTO – Data Transfer Objects – are waste
      6. Class casting is an object-oriented design error
      7. Public static methods are suspect
      8. Abuse of utility classes
      9. God classes shall be forbidden
  7. Links
  8. Practical part
    1. IntelliJ IDEA IDE – Analyze code, Gradle, git
    2. SonarLint plugin
    3. You could also use SonarQube cloud account
    4. PlantUML – optionally plugin for IntelliJ IDEA -
    5. AsciiDoc – optionally plugin for IntelliJ IDEA -