每次读第一章都觉得不是很好懂,这些概念在别的地方都见过,唯一让我觉得新颖的和流连忘返的就是品质关注点与功能需求的论述,先后关系。一般写程序,首先考虑的是功能分解,模块分解,实现,然后根据实际场景,再做出一些隐含的、默认的品质需求决定,无书面的思考和确认,而本书明确提出的品质关注点,并理顺其中的关系,让设计三思而后行。
架构之美 第一章
什么是架构?
架构应该是一组结构,来源于一组设计规则,能减少复杂性。常见定义是,每种结构由各种类型的组件和关系组成,它们如何组合、相互调用、通信、同步、及其其他交互。
以我的理解,简单讲:组件及组件间的关系。
架构存在的目的是什么?
确保利益相关人员的关注点能够得到满足,而在构想、计划、构建和维护系统时,系统架构能够处理复杂性。
为了对付复杂性,系统被分解为一些交互的组件。
而每种结构都有特定的关注点,如可变性和性能。各种关注点需要相互妥协、折中。
而架构师的工作就是:
1)满足客户需要
2)整个系统应用相同的设计原则
3)满足法规和安全性需求
架构与需求的关系?
外部行为的描述,展示了产品如何与它的用户、其他系统和外部设备之间的交互,这应该表现为需求。
结构描述,展示了产品如何划分为多个部分,以及这些部分的关系
内部行为描述,用于描述组件之间的交互接口
需求一般理解为系统的功能,但其隐含的品质性要求,也需要架构考虑。
架构与设计的关系?
这个是针对架构师和开发者的工作区别而言。
架构是系统设计的一部分,架构忽略了系统的一些细节,更侧重于系统如何组装起来。而开发者更侧重中部分组件的设计,不用太注意系统组件的装配问题。
如何创建一个架构?
两个优秀的实践:
1. 让利益相关人参与
2. 同时关注功能和品质
典型的利益相关人员:
1. 投资人、老板: 项目需要的资源、能否在工期内完成
2. 项目经理: 团队、项目计划、项目进度
3. 架构师、开发、测试人员: 项目的构建、以及维护和演进
4. 市场人员: 品质特点,超越竞争者
5. 用户(包括最终用户、安装、管理等人员): 可用性
架构师需要与利益相关人员协作,理解他们的品质关注点,然后考虑