有关18653-Software Architecture and Design的期中考试复习
Basic questions
What is Software Architecture
Software architecture is a level of design that involves
- the description of elements from which systems are bulit
- interactions among those elements
- patterns that guide their composition
- constraints on these patterns
Why software architecture is important
- It has been proved useful for families of system.
- It can make the complex system flexible and well organized
Various view points
4+1 Views
角度1:从作业2的要求中获取的名词与解析
- Function View: Show the component diagram, including interfaces and dependencies.
- Information View: Show the schema, data models and data flows.
- Deployment View: Where to deploy the software components
- Development View: main software packages
- Concurrency View: How do we ensure data consistency in the distributed system
角度2:从课件中获取的名词与解析
- Logical View: 让普通用户能看懂的示例图,介绍整个系统的主要模块与简单交互。包含了简单地类图,时序图等
- Development View: 从程序员的角度较宏观得介绍整个系统的组成。包含了包图,类图
- Process View: 介绍了系统事件处理的流程,介绍整个系统是如何运行的,今儿验证系统的性能。
- Physical View: 从系统工程师的角度介绍,从物理仪器角度介绍系统的架构。mapping the software to hardware
- Scenarios: Putting it all together and use them to show the important scenarios
What does it mean by architecture through software lifecycle?
- Requirements
- Design
- Implementation
- Analysis and Testing
- Evolution
- Development Process
Will architecture design allow creativity?
Yes
Stakeholders
Architects, Developers, Testers, Managers, Customers, Users, Vendors
Basic elements
Component
Defination
A software component is an architectural entity that
- encapsulates a subset of the system’s functionality and data
- restricts access to that subset
Connector
Defination
A software connector is an architectural building block tasked with effecting and regulating interactions among components
Taxonomy
4 main roles
Communication, Conversion, Facilitation, Coordination
8 main types
Event, Stream, Procedure Call, Arbitrator, Data Access, Distributor, Linkage, Adaptor
Benefits of first-class connectors
Software evolution, separation of concerns, modularity, pluggability
Configuration
An architectural configuration, or topology, is a set of specific associations between the components and connectors of a software system’s architecture
Rationale
Rationale is the information that explains why particular architectural decisions were made, and what purpose various elements serve
Architectural sytles and patterns
Architectural sytles
Defination
A set of architectural desgin decisions that
- are applicable in a given deveopment context
- constrain architectural design decisions that specific to a particular system within that context
- elicit beneficial qualities in each resulting system
Example
详见另一篇文章。
Architectural patterns
Defination
A set of architectural design decisions that are applicable to a recurring design problem, and parameterized to account for different software development contexts in which that problem appears.
Example
3-tier (Stage-Logic-Display), MVC, Sense Compute Control
Comparisons of style and pattern
Compared to styles, architectural patterns are at a coarser level of granularity (design decisions versus actual architectural elements) and are inherently more domain specific
Methods of evaluating design methods like styles and patterns
Vocabulary, structural patterns, computational model, invariants, common examples, disadvantages, specializations
Methods of design
Greenfield design
这里指的是大家对一个领域都没有经验,就需要用一系列方法不断学习或者试错找出最优解,常用的方法有:
Analogy searching, Brainstorming, Literature searching, Morphological Charts, Removing Mental Blocks, Insight from requirements/implementation
Architectural Modeling
Defination
- An architectural model is an artifact that captures some or all of the design decisions that comprise a system’s architecture
- Architectural modeling is the reification and documentation of those design decisions
How to choose what to model?
Cost/Benefit Decision
What do we model?
Structure (Architectural element), static/dynamic behaviors, functional/non-functional aspects, Views/Viewpoints
Important things to “get right”
- Ambiguity: A model is ambiguous if it is open to more than one interpretation
- Accuracy: A model is accurate if it is correct, conforms to fact, or deviates from correctness within acceptable limits.
- Precision: A model is precise if it is specific, detailed and exact.
How do we evaluate modeling techniques?
Scope/Purpose, Basic Elements, Style, Static/Dynamic Aspects, Dynamic Modeling
Service Oriented Architecture
Concept of SOA
SOA is a business IT aligned approach in which applications rely on available services to facilitate business processes. It guides the establishment of a loosely coupled system with flexibility and extensibility.
Services Computing
- bridges the gap between business and IT
- promises to benefit business
- enable reusable, scalable software as services on the internet
SOA on a Bilateral View
- Top-Down Approach: decompose business components into business process each been realized by IT process
- Bottom-Up Approach: provides SOA based IT resources, which can be seamlessly integrated to rapidly. Create new business processes that lead to new business opportunities.
Enterprise Service Bus(ESB)
ESB is a conceptual software infrastructure that facilitates dynamic integration, message routing and their interactions, which paves a new systematic way of constructing and deploying enterprise services.
SOA-RA
SOA-RA partitions an SOA-based system into a reusable architecture components
Enterprise SOA Abstraction Layers
- Business Process Layer
- Business Services Layer
- Component Layer
- Legacy Object Integration Layer
ATAM
Quality attribute
- Performance
- Modifiablity
- Availability
- Security
9 steps
- Step 1: Present ATAM
- Step 2: Present Business Drivers
- Business context for the system
- High-level functional requirements
- High-level quality attribute requirements
- Step 3: Present the Architecture
- Technical constraints such as an OS, hardware
- Architectural styles used to address quality attribute requirements
- Step 4: Identify Architectural Approaches
- client-server, 3-tier, proxy, publish-subscribe
- Step 5: Generate Utility Tree and scenario
- Step 6: Analyze Architectural Approaches
- risk & non-risk
- sensitivity: A property of a component that is critical to success of system
- tradoff: A property taht affects more than one attribute or sensitivity point
- Step 7: Brainstorm & Prioritize Scenarios
- Step 8: Analyze Architectural Approaches
- Step 9: Present ATAM results
- Architectural approaches
- Utility tree
- Scenarios
- Risk and non-risks
- Sensitivity points and tradeoffs
People, Roles and Teams
Architect desired skills
- Software development expertise
- Domain expertise
- Communicator
- Strategist
- Consultant
- Leader
- Technologist
- Cost estimator
- Cheerleader
- Politician
- Salesperson