产品架构设计问题
目前单位产品的架构设计问题:单位的产品目前主要是面向教育产业的软件产品。在开发的过程当中,遇到一些设计架构的瓶颈问题。
单位在办公类产品中有多个子产品:
人事管理系统:主要管理学校教育局的教师以及其他员工的管理系统
学籍管理系统:主要是对学生信息进行管理的系统。
教务系统:主要是对日常教学进行管理的系统。
考试系统:考试相关的系统
题库系统:需要学科年级信息
在各个系统当中有一些可能会公用的信息,比如教师和学生的信息再教务系统当中都需要。
学科,年级班级信息在不少系统当中也是都需要的信息。
要求各个系统可以形成单独的产品进行销售。也能整体协调工作。
架构设计 产品 --------------------编程问答-------------------- 重构吧。。。。。。。。。。。。。。 --------------------编程问答--------------------
嗯,现在的问题就是怎么重构?具体的功能划分,设计应该是啥样的。 --------------------编程问答-------------------- 1、可以将重要或公共功能的部分按模块及可扩展的方式重构,将需要使用这些模块的系统修改为调用此模块。
2、逐步调整其他系统。
1、初期可以考虑统一门户、身份认证;
2、后期整合业务,统一业务流程
3、构建服务,细分模块。 --------------------编程问答-------------------- 任何子系统必须包含其数据交互模块。
子系统自己独有,不需要和其它子系统交互的的功能就不用说了,自己做。
买易做图,与其它子系统的功能/数据交互用WebService或者SessionBean实现。
因为你要拆开来卖,所以,肯定出现下面的情况,不买A,买了B,没有A的数据录入功能,但是B需要A里的数据,两种实现:
1 需要录入的A数据,用买B提供的lisence登录公司的产品平台,录入A的数据,返回一个storeKey,在本地输入storeKey就可以链接平台,使用平台上自己的A数据。
2 所有数据都可以用固定excel模板的方式导入,只要本地导入了excel模板数据,就可以在没有A数据录入模块的情况下使用A的数据 --------------------编程问答-------------------- 一个控制层(或者是webservice)的project(命名为A)
+一个所有项目都公用的project(命名为B)
+然后每一个子系统的project(作为业务层,命名为Cn,如C1,C2,C3...)。
A的主要任务:总系统人口,比如一些资源的初始化,web.xml的配置等..
B的主要任务:所有子项目需要用到的公共的地方。比如,C1需要用到C2里面的class,C2也需要用到C1里面的东西,这样你就可以把这些冲突的放进到B项目中。
Cn的作用:Cn里面写action,用annotation定义这个action的访问路径,这样就实现了系统分离。
这样设计,你以后想扩展多少就扩展多少,分开卖一起卖 都可以...
如果你你只需要C1的功能,把C1打成jar包添加到A项目中,如果需要C2,就把C2打成jar包添加到A项目中。
如果你都需要,就全部添加到A项目中去。
打包比较复杂,建议用ant来发布。
这种方案我参与过开发,和楼主的需求是一样的,可以详细考虑..
补充:Java , Web 开发