EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

软件架构设计-08-复习

Outline

  1. Software Architecture
  2. Quality Attributes
  3. Architecture Patterns
  4. Designing Software Architecture
  5. Documenting Software Architecture
  6. Evaluating Software Architecture
  7. Describing Architecture
  8. Microservice Architecture *

Software Architecture in General

  1. What is software architecture?
    • Structure, Elements, Relationships, Design
  2. What does a software architect do?
    • Liaison, Software engineering Tech, knowledge, Risk mgmt
  3. Where do architectures come from?
    • NFRs, ASRs, Quality Requirements; Stakeholders, Organizations, Technical Environments...
  4. Architecture (4+1)Views
    • Logical view, Process view, Physical view, Development view + Use case scenarios...
  5. Architectural activities and process
  6. Software architecture knowledge areas

Architecture Process

Quality Attributes

  1. Software Requirements

    1. Functional requirements, Quality requirements (NFRs), Constraints
  2. Quality Attributes

    1. Internal vs. External Attributes
    2. Modeling quality attribute scenarios: Source, Stimulus, Artefact, Environment, Response, Measure
    3. Availability, Interoperability, Modifiability, Performance, Security, Testability, Usability, X-ablility...
    4. Tactics for quality attributes
  3. Architecturally Significant Requirements

    1. How to gather and identify ASRs: Requirements, Interviews, Business goals, Utility tree

Architecture Patterns

  1. Architecture Patterns
    1. Context, Problem, Solution: elements + relations + constraints
  2. Module Patterns
    1. Layered pattern (micro-kernal pattern)
  3. Component-Connector Patterns
    1. Broker pattern, Model-view-controller pattern, Pipe-and-filter pattern, Client-server pattern, Peer-to-peer pattern,Service-oriented pattern, Publish-subscribe pattern, Share-data pattern
  4. Allocation Patterns
    1. Map-reduce pattern, Multi-tier pattern
  5. Patterns vs. Tactics

Designing Architecture

  1. General Design Strategy

    1. Abstraction, Decomposition, Divide & conquer, Generation and test, Iteration, Reuse
  2. Categories of design decisions

    1. Responsibilities, Coordination, Data, Resources, elements mapping, Binding time, Technology
  3. Attribute-Driven Design (ADD 2.0)

    1. Inputs to and outputs of ADD
    2. 8-step process: 1. confirm requirements, 2. choose an element to decompose, 3. identify ASRs, 4. choose a design satisfying ASRs, 5. instantiate elements & allocate responsibilities, 6. define interface, 7. verify & refine requirements, 8. repeat step 2-7 until all ASRs satisfied
    3. Step 4: 4.1 identify concerns, 4.2 list alternatives, 4.3 select patterns/tactics, 4.4 determine relations, 4.5 capture views, 4.6 resolve inconsistencies

Documenting Architecture

Views and Beyond

  1. Views:
    1. Styles (viewpoints), patterns and views
    2. Structural views: module views, component-and-connector views, allocation views
    3. Quality views
  2. Documenting views: 1. build stakeholder/view table, 2. combine views, 3. prioritise & stage
  3. Beyond views: documentation info & architecture info (mapping between views)
  4. Documentation : views + beyond

Evaluating Architecture

ATAM: Architecture Tradeoff Analysis Method

  1. Stakeholders involved in ATAM
  2. Inputs to and outputs of ATAM
  3. Phase 0: Partnership & preparation
  4. Phase 1: Evaluation - 1
    1. present ATAM
    2. present business drivers
    3. present architecture
    4. identify architectural approaches
    5. generate utility tree
    6. analyse architectural approaches
  5. Phase 2: Evaluation - 2
    1. present ATAM & results
    2. brainstorm & prioritize
    3. analyse architectural approaches
    4. present results
  6. Phase 3: Follow-up

Final Exam

  1. 简答题、论述题、设计分析题
  2. 英文题目、中文或英文答题
  3. 个别题目可能需画图
  4. 卷面分数 = 基础内容 60% + 高阶内容 40%
  5. 总评成绩 = 平时作业 40% + 期末考试 60%