本文根据华南理工大学软件学院《软件体系架构》课程及相关教材《软件构架实践》总结,作复习回顾用。
很抽象的课程……不知道开给本科生干什么,而且是跟项目管理一起上的,安排很不科学。这门课学起来能听懂,也知道要干什么,就是没体会。
Chapter. 1 What is software architecture?
1. 软件体系架构的定义
The software architecture of a system is the set of structures neeed to reason about the system, which comprise software elements,relations among them, and properties of both.
2. 软件系统有哪几类结构?
Module; component and connector; Allocation
3. Module structure 模块结构
Structures partition systems into implementation units are called modules. Modules are assigned specific responsibilities, and are the basis of work.
常见的模块结构: decomposition structure / uses structure / layer structure / class structure / data model
4. Component-and-connector structure 组件与连接件结构
Structures focus on the way the elements interact with each other a runtime to carry out the system‘s functions are called C&C structures. A component is always a runtime entity.
常见的C&C结构: service structure / concurrency structure
5. Allocation structures 分配结构
Allocation structures describe the mapping from software structures to the system‘s environments.
常见分配结构: deployment structure / implementation structure / work assignment structure
6. What‘s the relationship between structures and views?
A view is a representation of a structure. Architects design structures. They document views of those structures.
Chapter. 2 Why is Software Architecture Important?
Thirteen reasons
Influence quality attributes
Help reason about and manage change as the system evolves
Early prediction of a system‘s qualities
Enhances communication among stakeholders
Capture the earliest and hence most fundamental, hardest-to-change design decisions
Defines a set of constraints on subsequent implementation
Dictates the structure of an organization, or vice versa
Provide the basis for evolutionary prototyping
Allows the architect and project manager to reason about cost and schedule
As a transferable, reusable model that from the heart of a product line
Architecture-based development focuses attention on the assembly of components, rather then simply on their creation
Reducing design and system complexity
Be the foundation for training a new team member
Chapter. 3 The Many Contexts of Software Architecture
1. Contexts of Software Architecture
Technical, project life cycle, business, professional
2. Technical context
A serious quality attributes (most important).
3. Project life-cycle context
瀑布模型、迭代开发、敏捷开发、模型驱动开发
4. Business context
没啥可说的
5. Professional context
也没啥可说的
6. Stakeholder
A stakeholder is anyone who has a stake in the success of the system, such as developing organization‘s management stakeholder, marketing stakeholder, end user stakeholder, maintenance organization stakeholder and customer stakeholder.
7. How is architecture influeced?
需求影响架构。一个软件架构是受商业、社会、技术的影响。一个架构的存在反过来影响未来架构的商业、社会、技术等因素。每个架构的上下文环境都影响架构师和架构本身。
Chapter. 4 Understanding Quality Attributes
1. Functional requirements
Functionality is the ability of the system to do the work for which it was intended.
2. Quality attribute scenarios
Stimulus 刺激:到达时要求系统作出响应的一个条件
Stimulus source 刺激源:产生刺激的一些实体(人、计算机系统等)
Response 响应:系统在刺激到达时采取的活动
Response measure 相应度量:当响应发生时,应该以某种方式测量,以便可以测试该需求
Environment 环境:刺激发生的某些特定条件
Artifact 制品:受到刺激产生的制品
3. Tactics
Acollection of primitive design techniques that an architect can use to achieve a quality attribute response.
4. Quality design decisions
Allocation of responsibilities
Coordination model
Data model
Management of resources
Mapping among architectural elements
Binding time decisions
Choice of technology
Chapter. 5 Availability
1. Concept
Availability refers to a property of software that it is there and ready to carry out its task when you need it to be.
2. Formular
t=MTBF/(MTBF+MTTR)
MTBF=平均故障间隔时间 MTTR=平均修复时间
3. Tactics
Detect faults: Ping/Echo / monitor / heartbeat / timestamp / sanity checking / condition monitoring / voting / exception detection / self-test
Preparation and Repair: actice redundancy / passive redundancy / spare / exception handling / rollback / software upgrade / retry / ignore faulty behavior / degradation / reconfiguration
Reintroduction: shadow/ state resynchronization/ escalating restart / non-stop forwarding
Prevent faults: removal from service / transactions / predictice model / exception prevention / increase competence set
Chapter. 6 Interoperability
1. Concept
INteroperability is about the degree to which two or more systems can usefully exchange meaningful information.
2. Tactics
Locate: discover service
Manage interfaces: orchestrate tailor interface
Chapter. 7 Modifiability
1. Concept
Modifiability is about change and out interest in it is in the cost and risk of making changes.
2. Tactics
Reduce size of a module: split module
Increase cohesion: increase semantic coherence
Reduce coupling: encapsulate / use an intermediary / restrict dependencies / refactor / abstract common services
Defer binding
Chapter. 8 Performance
1. Concept
Performance is about time and the software system‘s ability to meet timing requirements.
2. Tactics
Control resource demand: manage sampling rate / limit event response / prioritize events / reduce overhead / bound execution times / increase resource efficiency
Manage resources: Increase resources / introduce concurrency / maintain multiple copies of computations / maintain multiple copies of data / bound queue sizes / schedule resources
Chapter. 9 Security
1. Concept
Security is a measure of the system‘s ability to protect data and information from unauthorized access while still providing access to people and systems that are authorized.
Three mainly features: confidentiality、intergrity、abailability.
Other features: Authentication、nonrepudiation、authorization.
2. Tactics
Detect attacks: detect intrustion / detect service denial / verify message integrity / detect message delay
Resist attacks: identify actors / authenticate actors / authorize actors / limit access / limit exposure / encrypt data / separate entities / change default settings
React to attacks: revoke access / lock computer / inform actors
Recover from attacks: maintain audit trail / restore(see abailability)
Chapter. 10 Testability
1. Concept
Software testability refers to the ease with which software can be made to demonstrate its faults through testing. Specifically, testability refers to the probability, assuming that the software has at least one fault, that it will fail on its next test execution.
2. Tactics
Control and observe system state: specialized interfaces / record or playback / localize state storage / abstract data sources / sandbox / executable assertions
Limit complexity: limit structural complexity / limit non-determinism
Chapter. 11 Usability
1. Concept
Usability is concerned with how easy it‘s for the user to accomplish a desired task and the kind of user support the system provides.
2. Tactics
Suport user initiative: cancel / undo / pause or resume / aggregate
Support system initiative: maintain task model / maintain user model / maintain system model
原文:https://www.cnblogs.com/JHSeng/p/11795780.html