mySagasoft MIS 架构
作者:[email protected],发表于:www.cnblogs.com/sagahu,2013-02-23
本人从事管理软件开发十几年了,从初学者到项目经理、系统分析员、软件研发部门经理,也参加、主持了多个项目。曾经困惑过技术的不足,痛苦过团队的合作,迷茫于软件公司的建设,苦恼业务的争取,呵呵,说多了。当然,本文的写作目的是要总结软件项目研发的经验方法,并为团队建设提供方法。
必须感谢一位姓袁的朋友,我不知道他的名字,只知道他是技术出身的软件公司老板。多年前与其面谈过几次,对他的一句话影响深刻——没有金刚钻,别揽瓷器活,这几年才算是明白了。
先看这几个问题,如何提高项目成功率?如何提高项目开发速度?如何提高项目成熟度?经常见到管理人员或者老板说加人,人多干的快。我的深刻教训是,对软件研发这种强脑力劳动工种来说,真不一定哦!就像下棋,一个人对一百人就不一定会输!那么团队没用吗,显然世界上确实有很多大软件是少数人甚至一个人搞出来的。我其实是认可团队合作的。对于许多团队合作失败,甚至一些软件公司搞项目失败,我认为一个重要的原因就是,团队缺乏合作的具体办法。一个项目组决不是建了一个总的解决方案,概念性地划分了功能任务,约定了界面标准与变量命名就行的。
这里,本人总结B/S模式管理软件的一些普遍性需求,建立一套技术架构,并把其中比较通用型的功能实现为成品。我认为,对于多数类似需求的项目来说,它首先是总的项目框架,其中包含了几项比较通用功能的成品,还为类似技术需求的编码提供了参照模版。这样就为团队提供了清晰的项目架构,提供了核心产品模块,还提供了编码标准与参照模版。这就回答了前面的那几个问题。
我曾经多年恶补技术,曾经多年思考为人处世来增进团队合作。最终发现,会的多最适合干培训师或者技术顾问,具体项目根本不需要那么多技术,而需要的某项技术还没有学到;会的专只适合攻关特种技术问题,常常没办法满足项目整体的技术要求;就算全会也不行,总不能项目的所有功能都从头做起吧,那样项目工期与产品成熟度实在堪忧。后来我终于明白了,所谓的“金刚钻”就是“套路”,对于具体项目,我有积累的类似项目成熟代码,甚至成品模块可参考、可现用,可用来规范团队合作!
再说那位姓袁的朋友,那时我与他竞争同一客户的合作,他对我说了那句话,也许当时他是质疑我的技术,但是我对他多年研发、升级同一套产品映像太深刻。后来想明白那是他们软件公司的核心产品与开拓新业务的平台,那也是其公司软件团队合作的参照与基础,就是他们的“金刚钻”。总之,他是曾经指点过我的一位高人,必须感谢他。
本人依托自己多年的行业实践经验,目前总结出了比较通用的两套技术架构,这里介绍的是针对桌面程序版的MIS架构,愿与同行共同探讨。本人还有一套B/S模式的WebMIS架构,与前者在界面上非常类似,底层几乎相同,在另一片文章里介绍。以后一定会挤时间会再总结工作流、会员服务、内容发布、产品展示型企业门户网站、购物车、在线交易等等。
这是总结c/s结构型管理软件的通用规律,编写的一套界面模版与代码模版,可以作为同类管理软件的程序框架:
(1) 内含最简单RBAC的底层与界面实现,对于此类需求不需要再花费时间实现;
(2) 内含登录日志与操作日志的底层与界面实现,对于相应需求也不再需要花费时间实现;
(3) 界面部分分为主界面部分与各功能模块部分,对于新项目只需要单独实现相应功能界面与功能模块,然后配置进程序框架即可为主界面部分调用;
(4) 底层ORM通用部分配以自动代码生成,大大减少重复规律性代码编写的工作量;
(5) 这套框架中的大部分代码与界面都可以作为类似功能的成熟界面模版与代码模版,为项目工作减少宝贵的时间。
使用这套成品框架,对于一些类似需求的简单项目,甚至一周就能完成编码工作。
这里的ORM,本人喜欢使用三层机构/企业服务技术。
本架构中的界面使用MDI父/子窗口来实现。在主界面框架中仅包含主窗口、登录窗口等通用性窗口,各具体业务功能的子窗口分离到单独的DLL模块中,主界面框架模块根据系统设置使用反射技术从相应模块中动态加载各功能子窗口等界面。