软件架构与设计 习题课 3 从不同视角描述系统
本页目录
这一次的作业,会在之前的基础上,通过不同的观察角度,更加科学系统来展示整个软件的架构和各个部分的关系。老师给出了一篇论文,这里也会简单总结下。
老师给出的论文叫做 Architectural Blueprints—The “4+1” View Model of Software Architecture,实话说,没啥用。作者用若干个例子来说明了我们需要从多个角度来审视和描述系统,整个思路基本上用下面这张图就可以概括:

因为论文是20多年前的,所以很多当时比较『新』的概念,其实在现在的软件开发中早已成为平常,甚至也已经过时了。至少在目前风口浪尖的移动互联网,等这些乱七八糟的文档画完,项目估计都黄了。更有意思的是,这篇论文和我们的作业并没有太大关系(你™是在逗我?)
这里补充一段自己在飞机上看时写的批注:20 年前的方法论,在很多尚未成熟的领域(比如移动互联网)不适用,因为需求本身不是明确的,而是要靠试错和挖掘的。而且需要撰写的文档太多,会导致启动/转向缓慢,并且保证文档实时更新也是难题,而不更新的文档,其实是毫无意义的。文档应当是开发的产出,反过来,开发不应是文档的产出。但是这种分层和切片的思想,是很有用的。不过在这个具体的场景中,对于已经理解了整个系统的人,这样写会更清晰,但是对于不理解的人来说,还是难以有全局概念(但是比传统的仍旧好一些)。就我个人的感觉,还是快速原型+迭代更新更有效。
那么现在我们来看看,这次的作业是要干嘛。简单来说,就是利用这种多个视角的方式来继续完成之前的设计,有以下角度:
- 功能视图:各个模块图,包括接口和依赖
- 系统中主要的功能模块是哪些
- 使用简化版的 UML 2.0 来描述
- 信息视图:展示 schema,数据模型和数据流,用状态机图来描述系统的信息模型
- 部署视图:软件的组件需要在哪里部署和运行
- 开发视图:主要的软件包是什么
- 并行视图:在不同地方运行时,系统是如何运行的。你会如何保证数据一致性?
以上是作业的第一部分(这句话的意思是,还有另外一部分,不过先从这里开始),下面是我的设计,但是用来描述的文字就不翻译了,就算是抛砖引玉,大家自己思考下。
Function View

Information View

Concurrency View

Deployment View

Development View

接下来的一部分是根据之前的设计,把每个架构风格的各个部件列举出来,如:
- 组件
- 连接器
- 数据元素
- 行为
- 需要注意的事项
基本上对着 PPT 改一下就好,这里也就不赘述了。
说了这么多,就是想要表达,在一门以实践为重的学科里,天天学理论,是有多™蛋疼。
本课完。
相关文章
- 软件架构与设计 习题课 2 不同架构风格应用2016-01-24
- 软件架构与设计 习题课 6 设计模式进阶练习2016-03-30
- 软件架构与设计 习题课 5 设计模式练习2016-03-20
- 软件架构与设计 习题课 4 面向服务系统架构设计2016-02-07