模块的划分,一直是争议比较大的地方,各种方案相去甚远,
模块定义,范围,大小,分包,装配各不相同。
根据不同的产品,项目,可能都会有不同的设计。
如果一个公司自用的快速开发平台,它的模块应该如何设计?
简单确立一下设计目标:
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讨论,也觉得有些风险,但还是用上了。
现在想想,虽然不太完美,但在近半年的优化调整后,以及开发人员的磨合,也算比较通畅,
对下一步开发还是很有帮助的,也希望在此基础上作进一步思考。
分享到:
相关推荐
功能模块图是软件工程中一种重要的设计工具,它通过图形化的方式清晰地展示了系统的各个组成部分及其相互关系,有助于开发者理解和构建复杂的系统。在宿舍备忘录管理系统中,功能模块图扮演着至关重要的角色,它将...
按照组装方式划分,PCB可分为通孔安装板、表面贴装板等。 PCB技术的发展历程可以分为雏形期、成长期、发展期。在PCB技术发展的每一个阶段,都有相应标志性的技术被开发出来。例如,随着HDI技术的出现和成熟,电子...
4. **模块化构建**:项目被划分为不同的模块(如M400 SMS和Portal),有单独的构建脚本处理每个模块。 5. **部署流程**:`deploy.cmd`脚本展示了自动化部署的过程,可能包括复制文件、启动服务、配置检查等环节。 6....
7. **总体设计文档**:总体设计更关注系统的宏观架构,包括模块划分、接口定义、系统流程图等,它提供了系统设计的全局视角。 8. **系统测试报告**:在开发完成后,通过系统测试来验证软件是否满足需求。测试报告...
每个实例都采用系统分析和模块划分的方法,讲解了各个系统是如何设计和实现的。 由于本书不是以理论介绍为重点,而更多侧重于实践应用,因此本书适合对JSP有一定了解或有一定Java编程基础的读者。本书可以作为高等...
- **应用模块无法启动或异常退出**:关键模块的启动失败或非正常退出,阻碍了系统的正常使用。 - **无法测试**:由于bug的存在,测试人员无法进行正常的测试流程,严重影响了测试进度。 - **造成系统不稳定**:bug...
- 这种将测试按功能层划分的组织方式有助于保持测试代码的清晰性和可维护性。每个模块都有对应的测试类,使得定位和修复问题变得更加容易。例如,如果`DepartmentController`出现问题,开发者可以直接查看`...
软件设计关注于软件体系结构的构建,体系结构包括模块划分、接口设计、数据结构设计等。软件概要设计关注于系统的整体结构,包括数据库设计、用户界面设计等。 最后,软件工程还涉及软件的测试、部署以及维护,这是...
架构设计确定软件的整体结构,模块划分将大任务分解为可管理的小部分,数据库设计则确保数据的有效存储和访问。 3. 编码实现 编码是将设计转化为实际代码的过程。开发者依据设计文档,选择合适的编程语言和框架进行...
2. **聚点模块研究**:在理解单元整体的基础上,教师聚焦关键知识点,将其划分为若干个模块,逐个进行深入研究。这样可以避免知识点的孤立,增强知识的连贯性,帮助学生逐步构建数学概念和技能。 3. **整理回顾提升...
2. **概要设计说明书**:基于需求说明书,概要设计说明书描绘了系统的整体架构,包括模块划分、模块间的关系、数据结构和算法选择,以及主要界面设计。 3. **数据库设计说明书**:这部分描述了数据库的逻辑结构、...
3. **详细设计文档**:基于需求文档,详细设计文档进一步描绘了软件的具体实现方式,包括系统架构、模块划分、接口设计、数据结构、算法选择等。它是开发人员进行编码的依据,有助于保证代码质量和项目的可维护性。 ...
报告详细介绍了从需求分析到详细设计的整个过程,包括模块划分、数据结构定义、测试与调试,以及最终的用户使用说明。 1. **磁盘文件结构**: 在UNIX系统中,磁盘文件被组织成一系列的块,每个块通常包含固定大小...
首先,多媒体教学软件设计的关键要素包括超媒体结构设计、总体风格设计、模块划分以及系统功能模块的构建。超媒体结构设计涉及到节点、链和网络结构,其中节点代表特定主题的信息单元,链则连接不同节点,形成非线性...
历史任务管理模块提供了对过去任务的查询和回顾功能,帮助用户总结经验教训。 **4.6 流程统计** 流程统计功能能够提供关于工作流程的数据分析报告,帮助企业了解流程效率并作出改进决策。 **4.7 流程设计** 流程...
在此基础上,学者们提出了模块化课程结构的概念,它将课程内容划分成若干个相对独立的单元,这些模块与职业岗位能力要求紧密相关,能够根据标准编制为课程模块。 模块化课程体系的划分方法多种多样,根据不同的视角...
综上所述,《二年级上册英语录音mp3.rar》这一压缩文件中的音频资源,以其丰富的内容、清晰的模块划分和实用的教学设计,成为了小学二年级学生英语学习的得力助手。它不仅提供了重复性的听力训练,还通过不同单元的...
软件设计是计算机科学的一个关键分支,涉及到从需求分析到实现的整个过程,包括架构设计、模块划分、接口定义、算法选择、用户体验等方面。软件设计师需要具备扎实的编程基础,良好的问题解决能力,以及对软件工程...
系统主要涵盖需求分析、架构设计、模块划分、数据库搭建等方面,通过前端界面的友好设计及后台功能的强大支撑,解决了传统排队中存在的问题。 适用人群:软件工程师、IT项目经理、金融服务提供商、高校师生。 使用...
2. **体系结构设计**:详细描述软件的模块划分,解释各模块之间的关系和交互方式,包括主模块和子模块的功能定义。 3. **接口设计**:定义系统与其他系统、硬件设备、用户界面等的交互接口,包括输入输出数据格式、...