架构设计分为几个环环相扣的步骤:业务架构->领域架构->软件架构
业务架构:只关注整体的业务流程,不关注具体的业务需求细节。
领域架构:从业务架构中提取出来。
软件架构:与"设计模式"类似,基于"领域架构",应用架构设计原则和方法,精雕细琢,逐步迭代,得出最终的软件架构。
业务架构:
1.全新的业务系统
怎么知道用户业务系统呢,最简单的方法是问客户,如:
沃尔玛:仓库管理、物流、店面、支付等几个部分
铁路售票:订票、查票、支付等几个部分
简单的说,最初的架构就是对客户业务系统的模拟!
2.已有架构优化
在原有架构上增强即可。
3.业务架构实例
假设我们要创建一个商城,商城的业务架构可以简化如下:
业务功能要求
商城在电视上投放商品广告;
客户看电视获取商品信息;
客户打电话找商城客服下单;
客服下出货单;
仓库管理员出货,交给物流人员;
物流人员送货,客户支付;
物流人员将出货单和款项交给结算中心;
结算中心确认后,订单完成;
业务架构和用例模型一样,其实都是文字描述,比较抽象,不需要关注各种异常或分支处理流程,只需要描述出业务的整体结构即可。
业务约束和限制
性能 :每秒处理10w订单;
成本 :整套方案不超过1000w;
可靠性:全年中断5分钟;
技术性:使用JAVA
兼容性:与集团其他系统兼容;
领域架构:
在业务机构的基本要求中,提炼领域架构。提炼业务模块:广告、商品、订单、仓库、物流、支付、结算,并找出模块之间的关系;
软件架构:
第一步:照猫画虎
直接将各个模块映射为子系统。
可行的架构:功能需求和质量需求同时满足。
第二步:按图索骥
满足质量需求,业务的质量属性有很多,如性能、可靠性、成本等。为满足每秒10万订单,可以增加订单子系统的机器,也可以拆分订单子系统为接单子系统、下单子系统、商品查询子系统。
第三步:深思熟虑
深思:全面评估各个备选方法的优劣点;
熟虑:挑选最优方案;
哪个方案优点多,就选择哪个方案,当优点个数一样的时候,就需要找到更加靠谱的方法,就是按优先级选择:优先选择我们最关注的质量属性表现占优的方案,以此类推。
质量需求是架构设计的推动力。