`
javatar
  • 浏览: 1681844 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

模块划分方式回顾

阅读更多
模块的划分,一直是争议比较大的地方,各种方案相去甚远,
模块定义,范围,大小,分包,装配各不相同。
根据不同的产品,项目,可能都会有不同的设计。
如果一个公司自用的快速开发平台,它的模块应该如何设计?
简单确立一下设计目标:
1. 低耦合高内聚
2. 模块复用度高
3. 模块可扩展性强
4. 模块自描述,自包含
5. 模块自发现,自装配
6. 模块以业务为中心
7. 模块易于开发测试
8. 模块易于集成部署
.....
初步设想需要解决:
1. 模块的粒度多大
2. 是否区分功能模块与服务模块
3. 模块如何检测和加载
4. 如何描述模块间的依赖关系,并保证依赖关系稳定
5. 模块如何区隔上下文或名称空间
6. 模块如何统一处理全局风格整体置换
7. 模块间如何以对等的方式互相"侵入"
8. 模块如何统一暴露服务API
9. 模块如何识别SPI策略实现
10.模块扩展点如何设计
11.模块如何注册与发布事件
12.模块如何处理截面,拦截器
13.模块元数据如何定义,方便开发,也方便检测
14.模块如何控制版本
15.模块如何简化部署和分发
......
在刚做完的项目中,系统按主用户群使用范围,划分为运单管理,结算管理,巴枪管理,基础数据管理等子系统,
再按业务功能划分为几十个功能模块,按理论,每个功能模块都能部署到任意子系统中,
并且每个模块就是一个jar包,直接扔到lib目录下,即可使用,
框架自动发现模块,自动装配,自动释放访问资源,自动加载配置,
因为是以项目为中心搭建的框架,所以大量采用了命名约定方式,来处理装配过程,尽量减少配置,
但在开发过程中,因为开发人员较多,培训不够,各开发小组协调差,时间仓促等原因,
出现了命名冲突,循环依赖,开发环境搭建难,集成测试不过,等诸多问题,
最后框架为了应付各种情况,做了很多通容的处理,整体都有些变形,
这是设计之初写的blog文章:
http://javatar.iteye.com/blog/182149
当时和leadyu讨论,也觉得有些风险,但还是用上了。
现在想想,虽然不太完美,但在近半年的优化调整后,以及开发人员的磨合,也算比较通畅,
对下一步开发还是很有帮助的,也希望在此基础上作进一步思考。
1
0
分享到:
评论

相关推荐

    《JSP课程设计案例精编》

    每个实例都采用系统分析和模块划分的方法,讲解了各个系统是如何设计和实现的。 由于本书不是以理论介绍为重点,而更多侧重于实践应用,因此本书适合对JSP有一定了解或有一定Java编程基础的读者。本书可以作为高等...

    c#+方法类+飞行棋游戏+用来练习和回顾知识点

    模块化设计:使用方法可以帮助将游戏的不同功能模块分解为更小、更易于管理和测试的部分。每个方法可以负责特定的任务,例如移动玩家、检查胜利条件、处理特殊事件等。 可重用性:通过将游戏逻辑封装在方法中,可以...

    python入门到高级全栈工程师培训 第3期 附课件代码

    01 ip地址与子网划分 02 ip地址配置 03 虚拟机网络模式 04 三层隔离验证试验 第8章 01 上节课复习 02 软件包介绍 03 rpm软件包管理 04 yum软件包管理 05 源码安装python3.5 06 ssh服务 07 apache服务 08 samba服务...

    WinHex应用与数据恢复

    全书根据WinHex 菜单来划分章节,详细描述了WinHex 的全部功能和使用方法,对于那些晦涩难懂 的知识点,利用编写实验代码的方式直观地展示其原理。本书还揭示了WinHex 脚本编程及WinHex API 函数的秘密,这在相关...

    Hbase+Spring boot实战分布式文件存储

    9-1 Zookeeper安装与HBase配置优化 9-2 Hos开发逻辑梳理 9-3 Hos模块划分及mybatis配置 第10章 子模块-用户管理模块 Hos服务用户管理模块开发,基于第九章的数据库操作模块,开发相关的实体类对用户的增删改查操作...

    互联网创意产品众筹平台

    │ 11.Maven项目模块划分-引用依赖包( f- {5 L4 F2 i8 z+ c* U │ 12.项目环境搭建细节-监听器 │ 13.项目环境搭建细节-过滤器 │ 14.项目环境搭建细节-核心控制器 │ 15.项目环境搭建细节-spring-springmvc相关配置...

    计算机辅助机械设计V带轮设计.pptx

    设计软件结构,就是划分程序的功能模块,确定相互之间的调用关系。 如同写文章要先列文章的提纲一样,设计软件要先设计软件的结构。 计算机辅助机械设计V带轮设计全文共147页,当前为第8页。 普通V带传动程序可设置...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,...

    《Java-Web应用开发基础》教学课件08课程设计实例.pptx

    8.3设 计 思 路 用户登录模块设计可划分为前台登录界面设计和后台数据验证设计两部分。 《Java-Web应用开发基础》教学课件08课程设计实例全文共73页,当前为第7页。 8.3设 计 思 路 8.3.1登录界面设计 登录界面要...

    LINUX设备驱动第三版_588及代码.rar

    内核功能划分 设备和模块的分类 安全问题 版本编号 许可证条款 加入内核开发社团 本书概要 第二章 构造和运行模块 设置测试系统 Hello World模块 核心模块与应用程序的对比 编译和装载 内核符号表 预备...

    系统架构师谈企业应用架构之系统建模4

    分析系统可划分的子功能模块,每个功能模块内部的运行步骤等等。上面的2个不同类型的进行划分的建模图,本章将对上述6个建模图进行分别举例讲解。1、上章回顾。2、摘要。3、本章内容。4、结构图。5、行为图。6、本章...

    Linux DeviceDrivers 3rd Edition

    内核功能划分 12 设备和模块的分类 14 安全问题 15 版本编号 17 许可证条款 18 加入内核开发社团 19 本书概要 19 第二章 构造和运行模块 21 设置测试系统 21 Hello World模块 22 核心模块与应用程序的对比...

    本科毕业设计开题报告(飞翔的小鸟游戏的设计与实现V3)

    正确理解实际运行中玩家的感受,解决游戏中模块的科学划分与结构组织,更好更快的开发设计游戏。 五、课题设计的实现方案 (1)本游戏开发语言的选 飞翔的小鸟游戏以纯java语言来开发编写。Java是由Sun ...

    计算机网络基础应用.pptx

    模块六 计算机网络基础应用 计算机网络基础应用全文共31页,当前为第1页。 李军进入公司后,公司分配给他一台电脑,要求安装公司所用的财务管理软件T6,同时将这台计算机接入部门网络。 李军在安装好软件后,准备将...

    用C编写班级成绩管理系统

    课题的功能模块的划分: 开始 菜单界面 功能选择 初始化函数 输入学生信息 删除学生信息 显示学生信息 查找学生信息 按成绩排序 保存到文件 从文件读数据 插入学生成绩 分类合计 退出系统 结束 详细...

    ZendFramework中文文档

    3.4.2. 设计回顾 3.4.3. 配置选项 3.4.4. Resolvers 3.4.4.1. 文件 Resolver 3.4.5. 基本用法 4. Zend_Cache 4.1. 简介 4.2. 缓存原理 4.2.1. Zend_Cache 工厂方法 4.2.2. 标记纪录 4.2.3. 缓存清理 4.3. ...

    linux设备驱动程序第三版

    划分内核 ..................................................................................................................... 17 2.3 1.3. 设备和模块的分类 ..............................................

Global site tag (gtag.js) - Google Analytics