软件体系架构复习要点

本文根据华南理工大学软件学院《软件体系架构》课程及相关教材《软件构架实践》总结,作复习回顾用。

很抽象的课程……不知道开给本科生干什么,而且是跟项目管理一起上的,安排很不科学。这门课学起来能听懂,也知道要干什么,就是没体会。


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

扫描二维码关注公众号,回复: 7981004 查看本文章

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

  1. Influence quality attributes
  2. Help reason about and manage change as the system evolves
  3. Early prediction of a system's qualities
  4. Enhances communication among stakeholders
  5. Capture the earliest and hence most fundamental, hardest-to-change design decisions
  6. Defines a set of constraints on subsequent implementation
  7. Dictates the structure of an organization, or vice versa
  8. Provide the basis for evolutionary prototyping
  9. Allows the architect and project manager to reason about cost and schedule
  10. As a transferable, reusable model that from the heart of a product line
  11. Architecture-based development focuses attention on the assembly of components, rather then simply on their creation
  12. Reducing design and system complexity
  13. 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

  1. Stimulus 刺激:到达时要求系统作出响应的一个条件
  2. Stimulus source 刺激源:产生刺激的一些实体(人、计算机系统等)
  3. Response 响应:系统在刺激到达时采取的活动
  4. Response measure 相应度量:当响应发生时,应该以某种方式测量,以便可以测试该需求
  5. Environment 环境:刺激发生的某些特定条件
  6. Artifact 制品:受到刺激产生的制品

3. Tactics

Acollection of primitive design techniques that an architect can use to achieve a quality attribute response.

4. Quality design decisions

  1. Allocation of responsibilities
  2. Coordination model
  3. Data model
  4. Management of resources
  5. Mapping among architectural elements
  6. Binding time decisions
  7. 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

猜你喜欢

转载自www.cnblogs.com/JHSeng/p/11795780.html
今日推荐