软件产品分层

作者: pig250 | 来源:发表于2019-02-21 14:59 被阅读9次

    一、产品分层的必要性

    解决产品共性与个性的矛盾:标准产品统一的要求与行业、客户个性化的要求的矛盾;

    解决产品扩展问题:将标准产品进行行业特色的扩展,进一步进行客户个性化的扩展;

    利于重用:每层共性的东西抽象后放到下一层,服务于上层;

    利于解耦:层次清晰,层间松耦合,产品可扩展性和可维护性高;

    利于形成不同的解决方案,满足不可客户需求:在标准产品的基础上组合行业和客户层的功能;

    利于行业产品向通用产品的转型:从众多的行业产品中抽象出共性的部分,将其下沉,逐渐丰富标准产品。

    二、产品分层维度

    1、产品的逻辑分层

    1)分层原则

    抽象原则:凡是本层共有的特性,应该抽象到下一层,能抽象的尽量抽象。

    标准化原则:能标准化的尽量标准化,标准层的东西越多,说明产品化程度越高,系统越好维护。

    增量原则:为了便于维护,每一层只保存本层特性的增量部分,不重复下一层的内容,以避免升级导致的重复修改。

    低耦合原则:层间依赖关系是简单的接口依赖关系、不允许依赖实现逻辑;单向的依赖关系,且只允许上层依赖下层。

    向下沉淀原则: 随着产品的发展完善,每一层具有共性的特性应该进行抽象、逐层下沉。

    2)分层模型

    由底层到高层:

    支撑层->标准层->行业层->客户层->自定义层

    支撑层:由所有业务模块的共性抽象而来,适用于所有业务模块的特性放在这一层,这一层也是模型的最低层,技术框架、公共组件和通用服务。

    标准层:由所有行业功能的共性抽象而来,适用于所有行业的功能特性放在这一层,各产品模块的标准功能都属于这一层,这些标准功能是适用于所有行业和所有客户的。

    行业层:仅适用于特定行业的功能特性放在这一层,各产品模块的行业功能特性属于这一层,这些功能体现了行业特色,且适用于该行业的所有客户的。

    客户层:仅适用于特定客户的功能放在这一层,各产品模块中针对特定客户的功能特性属于这一层,这些功能是这些客户特有的,不适用于其他客户。

    自定义层:为客户定制的功能或者实施地定义的功能属于自定义层,这一层不属于产品的范围,模型中出现此层仅为说明自定义部分与产品部分的界限。

    每一层都是本层特性的集合,是基于下一层特性的新增、修改或屏蔽。

    2、产品的结构分层

    1)分层原则

    MVC原则:模型-视图-控制器的模式构建程序。

    接口实现分离原则:接口与实现分开为不同的工程项目。

    DAO原则:单独的工程项目作为数据访问的载体。

    2)分层模型

    由底层到高层:service->dao->impl->web

    3、产品的数据分层

    1)分层原则

    空间分离原则:客制化需求数据存储空间与GRIS数据存储空间分离。

    用户分离原则:不同数据存储空间的访问用户独立创建。

    权限分离原则:数据库管理权限与数据库操作权限分离,限制数据库用户越权使用和部分跨层操作。

    业务领域(数据主题)部署划分原则:业务领域支持分用户分库,实现产品按数据主题解耦部署。

    单向依赖原则:支撑层、产品标准层、行业层、客户层、自定义层等(层次自下而上)数据实体单向的依赖关系,且只允许上层依赖下层。产品各层内各业务领域间关系实体只能归属到一个业务领域,并实现单向的依赖。

    2)分层模型

    由底层到高层

    平台支撑层->产品标准层->行业行业/客户层->定制层->开放交互层

    平台支撑层:技术平台与业务平台的数据。

    产品标准层:对应于“逻辑分层”中的标准层内容的数据。

    行业行业/客户层:对应于“逻辑分层”中的行业层和客户层的数据。

    定制层:对应于“逻辑分层”中的自定义层的数据。

    开放交互层:用于与外界交互的数据

    相关文章

      网友评论

        本文标题:软件产品分层

        本文链接:https://www.haomeiwen.com/subject/rbtxyqtx.html