随笔分类 -  架构设计

摘要:软件系统中常见的资源有内存、文件句柄、数据库会话、线程、服务等,资源管理是资源使用者对资源进行有效控制的过程。资源管理的设计往往影响软件的非功能性需求:性能:软件系统中操作往往涉及很多资源,如何保证资源可用、避免浪费、高效获取。可扩展:如何设计资源管理架构保证向上、向下兼容。可预测:如何保证资源操作的时间是可以预期的。灵活性:如何设计保证系统易于定制和配置。稳定性:如何设计保证资源的频繁操作不会导致系统的不稳定。一致性:如何设计保证系统处于一致的状态。软件系统的设计往往需要考虑以上多个方面,而某些方面本身是互相矛盾的,比如灵活性和性能本身可能冲突(分层架构设计),针对实际的问题在不同的影响之间 阅读全文
posted @ 2014-01-07 22:11 平凡之路 阅读(1471) 评论(0) 推荐(1) 编辑
摘要:组件:提供特定功能的软件实体,能够独立编译,通过不同的接口表现不同的行为。目标是实现组件开发和产品开发分离,接口和实现分离。通过注册组件可以在产品中快速的定制组件相关的功能。1:组件定义:明确组件的性质、用途、包含的接口实现接口中的方法一个组件通常由一个外部头文件和若干个实现文件组成,通过库和头文件形式发布//组件ID,组件管理机构统一分配#define CID_TRACE 0x00000001//组件实例化接口,由组件提供者实现ICOMP* insTraceComp();2:接口定义:明确接口的用途、范围确定接口中的方法接口由头文件组成,包括接口ID定义和接口定义//接口ID,组件管理机构统 阅读全文
posted @ 2013-09-08 14:00 平凡之路 阅读(2739) 评论(0) 推荐(2) 编辑
摘要:基本框架MDU(消息分发单元):包含一个消息处理任务,包含自身的消息队列,是一个消息调度的基本单位。PID (功能子模块) :框架中用PID作为模块的划分,每个模块具有自己的PID编号,根据功能和调度需求可以安排多个PID到一个MDU中,PID是消息通信的一个基本单位,每个PID提供一个消息处理入口。MQ (消息队列) :使用消息队列作为任务通信的数据结构。消息处理流程构建一个MDU模块,注册入框架中,初始MDU没有注册PID,未构建消息处理任务。构建PID,注册入对应的MDU中,如果是MDU中第一个PID,构建消息处理任务。消息处理任务从该MDU对应的消息队列中取消息处理。消息处理任务获取消 阅读全文
posted @ 2013-08-18 10:24 平凡之路 阅读(3485) 评论(0) 推荐(5) 编辑
摘要:通常一个软件系统都包含不同部分互相交互耦合,我们希望设计能够将系统划分为有意义的各个部件,各个部件能够独立的开发、演进、部署。这时整体性的设计已经无法满足这些挑战,这就需要我们对系统进行合理清晰的划分。通常我们为待开发的系统定义多个层次,每一层完成独立的功能。设计原则:1:系统分为多层,每层完成独立的功能,层内部继续细分子模块,每层能够独立演进、部署。分层原则可以基于业务抽象、硬件、变化性等来划分,比如sqlite就是基于业务抽象来进行分层的。实际的框架设计可能同时结合多种维度比如常见的表示层、逻辑层、数据层就结合了业务抽象和变化两个维度。2:各层的功能基于同层和底层的功能之上,如图所示L1的 阅读全文
posted @ 2012-07-05 00:25 平凡之路 阅读(10198) 评论(1) 推荐(0) 编辑