软件架构系列感想(五)

1、通用的抽象集合。

可以将软件系统简单的理解成由多个容器构成,容器又由多个组件构成,组件由一个或多个类实现。

类(在一个面向对象系统里,类是最小结构单元)

组件(组件可以想象成一个或多个类组成的逻辑群组,通常由多个类在更高层次的约束下组合而成)

容器(指一个在其内部可以执行组件或驻留数据的东西)

系统(系统是最高的抽象层次,代表了能够提供价值的东西)

2、软件的静态视图。

语境(设定场景的高层次图,包括关键的系统依赖和参与者)

容器(容器图显示了高层次的技术选择,容器如何分担职责、如何通信)

组件(组件图可以看到每个容器的关键逻辑组件及之间的关系)

类(这是一个可选的细节层次)

3、语境图能回答以下问题:

(1)我们构建的(或已经构建的)软件系统是什么

(2)谁会用它

(3)如何融入已有的IT环境

4、容器图能回答以下问题:

(1)软件系统的整体形态是什么样的

(2)高层次技术决策有哪些

(3)职责在系统中如何分布

(4)容器之间如何相互交流

(5)为了实现特性,作为一个开发者,我需要在哪里写代码

5、容器间的通信通常是进程间通信。

交互的目的(如读写数据、发送报告)

通信方法(如Web服务、远程方法调用、消息服务)

通信方式(如同步、异步、批量、两阶段提交等)

6、语境图展示的软件系统是一个盒子,而容器图是打开盒子展示里面的东西。

(1)让高层次的技术选择更明确

(2)展示了哪些容器之间有关联,以及他们如何沟通

(3)提供了一个放置组件的框架

(4)展示了高层次的语境图和通常很乱的组件图之间经常缺失的连接,组件图画的是整个软件系统中所有的逻辑组件

7、组件图可以回答以下问题:

(1)系统由哪些组件/服务组成

(2)在高层次上,系统如何工作是否清晰

(3)所有组件/服务都驻留在一个容器中吗

组件图展示了驻留在每个容器中的逻辑组件,展示了在高层次上将软件系统分解为职责不同的组件;展示了组件之间的关系和依赖;为软件开发的高层次预估和如何分解交付提供了一个框架。

8、明确技术选择。

(1)这个组件如何与运行在单独进程中的另一个组件沟通

(2)这个组件如何初始化,职责又是什么

(3)为什么这个进程需要和另一个进程沟通

(4)为什么这个组件要用X技术而不是Y技术实现

9、职责驱动设计和组件分解。

对于软件架构,一个重要的方面是理解软件系统的重要元素是如何结合在一起的,这意味着深入组件、服务或模块的层次,他们各自有一组特定的职责。组件是接口背后的一组相关行为,可以用一个或多个协作类实现。好的组件和好的类有一些共性,应该高内聚、低耦合、有良好定义的公共接口、良好的封装等。

10、用层封装代码。

如果你打开一个代码库,就会看到域类包、UI素材包、业务服务包、数据访问包、集成包等。

11、架构和设计软件并不需要UML工具。但如果你不使用工具,就需要明确地思考各个抽象层次之间的可追溯性、规约和一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值