1.关于概念架构和细化架构 1)层次:系统 用户 业务 角度:功能 约束 质量属性 2)架构=组件+交互 3)概念架构仅关注高层组件,对高层组件的“职责”进行了笼统的界定,并给出了高层组件之间的相互关系,其不涉及接口细节(只有抽象组件和抽象交互机制)。这些都是预习书本时玉带的知识点。
对于什么是架构?每个角色都有自己的关注点,不同涉众看待软件架构的视角自然也是不同的。不过也不是无迹可寻,大致可以从五个角度来划分:逻辑(职责划分) 物理(物理节点安排) 开发(程序单元组织) 数据(持久化设计) 运行(控制流组织)。也就是五视图,每个试图,一个思维,一组技术关注。这便是细化架构。
架构最重要的一点,就是它能把难以处理的大问题分解成便于管理的小问题。就划分子系统策略,可归纳为3种:
分层的细化:可简单地概括为MVC模式,模型(model)-视图(view)-控制器(controller),它们各自处理自己的任务
分区的引入:引入分区,以便于支持深度优先的迭代开发
机制的提取:基于具体类的协作则算不上机制、基于具体类的协作则算不上机制、基于接口(或抽象类)的协作是机
制,实现不同的最终功能可以重用同一个机制。
而划分子系统的依据4个重要原则:
职责不同的单元划归不同子系统
通用性不同的单元划归不同子系统
需要不同开发技能的单元划归不同子系统
坚固工作量的相对均衡,进一步切分太大的子系统
协作决定接口,"分"是手段,"合"是目的,不能合在一起支持更高层次功能的模块,有何用?
设计模式是基础,要站在各个角度看软件架构。并且通过质疑“对不对”和“好不好”,可以发现新职责,或者调整协作方式。
开发架构的设计内容:(1)将“逻辑结构”映射为程序单元开发技术选项:开发语言,平台工具
要自主编写的源程序可重用的库、框架其他方式(shell脚本,平台配置文件)
此外重用也是一个重点。