读书笔记1
架构问题一般包括商业问题、系统架构问题、设计问题以及编码实施问题,由于架构的最终目的是完成一个产品去满足客户的需求,所以商业问题是所有问题的核心。可以说商业问题的解决好坏直接决定了产品或项目的成败。
商业问题的解决一般有以下的一些模式:业务容错模型(业务错误的累积、报警、触发处理的方式)、责任关系模型(明确组织结构的层次与责任)、度量和观察模型、企业财务模型、对象的引用模型、库存与记账模型、应用财务模型、商业计划模型、商业交易模型、衍生合同模型、业务分解模型 。
系统架构的问题可以由系统架构模式来解决。架构模式是指一个架构模式表达了一个软件系统基本的组织结构方式或系统的构成方式。盖家沟模式帮助界定了子系统的组成,指定了各个子系统的职责,并且制定了组织各个子系统间关联关系的规则或指南。可以认为它是子系统与组件级的设计,主要关注以下问题:
子系统内部如何组成、如何工作的设计;
各个子系统是如何进行交互或通信的设计;
每个构件内部是如何组成、如何工作的设计;
各个构件是如何进行交互或通信的设计。
主要的模式有:客户端-服务器架构风格
分布式计算风格
对等计算架构风格
黑板架构风格
隐式调用架构风格
Pipes and filters架构风格
插件架构风格
整体化架构风格
分层架构风格
结构化风格(基于模块化)
系统组件化风格
面向服务的架构风格
面向搜索架构风格
基于空间的架构风格
SharedNothing架构风格(应用程序没有自己的数据缓存,完全依赖于对数据库的存取)
设计的问题一般可以由各种设计模式来解决。设计问题包括:
商业设计模式:用来识别商业参与者,帮助界定在不同商业场景下他们之间的交互关系。
集成设计模式:将各个商业模式集成为一体,形成统一的商业解决方案,并且识别了商业问题、 商业流程和规则。
组合设计模式:帮助准确的识别商业模式和集成模式的选用条件与组合形式。
应用设计模式:一个商业或继承模式可以由多个应用模式来实现。一个应用设计模式代表了应用的粗粒度结构,如主要构件的组成、处理功能的分布、数据的部署等。
运行时设计模式:应用设计模式可以被很多运行时设计模式来实现,但这些运行时设计模式主要用来保障质量方面的要求,如性能、容量、有效性等。
另外,还有我们经常提到和使用的23中设计模式。
编码实施问题的解决取决于程序员的经验和素质,但是也是有一些Idiom可以借鉴的。如内存管理、对象创建、接口应用、异常处理、并发处理等都一些被许多次实践证明有效的方法。
总而言之,商业概念模型与分析模型帮助架构师捕获商业结构、商业流程及商业规则;系统架构模式帮助架构师定义软件系统和各子系统的结构骨架;设计模式帮助人员构建构件结构及其联系;IDIOM设计模式这种底层经验能够确保编程实现的质量。