1. Concept
    1. software element
    2. relation among them
  2. Purpose
    1. reducing software complexity
      1. abstraction
      2. separation of concerns
  3. Documentation
    1. facilitate communication
    2. reuse
  4. How
    1. a mix of art and science
  5. Views
    1. Functional/logic view
    2. Code/module view
    3. Development/structural view
    4. Concurrency/process/runtime/thread view
    5. Physical/deployment/install view
    6. User action/feedback view
    7. Data view/data model
    8. etc
  6. architectural styles and patterns
    1. Blackboard
    2. Pipes and filters
    3. Plug-in
    4. Peer-to-peer
    5. Event-driven
    6. etc