Outline
- Software Architecture
- Quality Attributes
- Architecture Patterns
- Designing Software Architecture
- Documenting Software Architecture
- Evaluating Software Architecture
- Describing Architecture
- Microservice Architecture *
Software Architecture in General
- What is software architecture?
- Structure, Elements, Relationships, Design
- What does a software architect do?
- Liaison, Software engineering Tech, knowledge, Risk mgmt
- Where do architectures come from?
- NFRs, ASRs, Quality Requirements; Stakeholders, Organizations, Technical Environments...
- Architecture (4+1)Views
- Logical view, Process view, Physical view, Development view + Use case scenarios...
- Architectural activities and process
- Software architecture knowledge areas
Architecture Process
Quality Attributes
Software Requirements
- Functional requirements, Quality requirements (NFRs), Constraints
Quality Attributes
- Internal vs. External Attributes
- Modeling quality attribute scenarios: Source, Stimulus, Artefact, Environment, Response, Measure
- Availability, Interoperability, Modifiability, Performance, Security, Testability, Usability, X-ablility...
- Tactics for quality attributes
Architecturally Significant Requirements
- How to gather and identify ASRs: Requirements, Interviews, Business goals, Utility tree
Architecture Patterns
- Architecture Patterns
- Context, Problem, Solution: elements + relations + constraints
- Module Patterns
- Layered pattern (micro-kernal pattern)
- Component-Connector Patterns
- 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
- Allocation Patterns
- Map-reduce pattern, Multi-tier pattern
- Patterns vs. Tactics
Designing Architecture
General Design Strategy
- Abstraction, Decomposition, Divide & conquer, Generation and test, Iteration, Reuse
Categories of design decisions
- Responsibilities, Coordination, Data, Resources, elements mapping, Binding time, Technology
Attribute-Driven Design (ADD 2.0)
- Inputs to and outputs of ADD
- 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
- 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
- Views:
- Styles (viewpoints), patterns and views
- Structural views: module views, component-and-connector views, allocation views
- Quality views
- Documenting views: 1. build stakeholder/view table, 2. combine views, 3. prioritise & stage
- Beyond views: documentation info & architecture info (mapping between views)
- Documentation : views + beyond
Evaluating Architecture
ATAM: Architecture Tradeoff Analysis Method
- Stakeholders involved in ATAM
- Inputs to and outputs of ATAM
- Phase 0: Partnership & preparation
- Phase 1: Evaluation - 1
- present ATAM
- present business drivers
- present architecture
- identify architectural approaches
- generate utility tree
- analyse architectural approaches
- Phase 2: Evaluation - 2
- present ATAM & results
- brainstorm & prioritize
- analyse architectural approaches
- present results
- Phase 3: Follow-up
Final Exam
- 简答题、论述题、设计分析题
- 英文题目、中文或英文答题
- 个别题目可能需画图
- 卷面分数 = 基础内容 60% + 高阶内容 40%
- 总评成绩 = 平时作业 40% + 期末考试 60%