怎么样产品化一个现有项目?
有一个为某家公司开发的项目忽然被另一家公司相中表示要买,可是他们对业务的需求与原先的那家公司有一些差异,但总体框架基本相同,而且这个项目有希望在更多的公司中投用,这样就会有更多的个性化需求。我以前都是做定制化开发的,虽然在设计阶段也考虑过有这样的可能性,但因为时间关系只封装了与业务无关的功能。我现在可以把业务中有关用户管理、权限管理等基本功能抽取出来作为基础服务,因为对这些功能的需求基本上是相同,但是具体业务逻辑要怎么封装就实在是难倒我了。
所以向各位大牛求教,有什么样的办法可以很方便地实现差异化需求(包括业务和界面,WinForms),并且维护也不会太复杂,是否这现成的框架可供参考?
--------------------编程问答-------------------- 我们公司的做法是:框架+业务融合器+基础设施服务 --------------------编程问答-------------------- 主要是接口,编程时面向接口编程,如果接口一致就可以 --------------------编程问答--------------------
业务融合器是个什么东西,能简单的说一下吗? --------------------编程问答--------------------
接口的运用要看整体框架的设计了,并不是所有场合都适用,少量的业务差异用接口会有一种杀鸡用牛刀的感觉。 --------------------编程问答-------------------- 不建议封装,建议拆分后重用。
报表、界面、工作流、实体结构都可以重用。 --------------------编程问答--------------------
关于拆分能说得具体点吗? --------------------编程问答-------------------- 如果你不说明你的业务接口,这无法空洞去说。
就好像一个工地板砖的(丝毫没有考虑过抽象扩展机制),现在要学习做建筑师,那么你就从头开始重新设计你的产品。
假如你在设计上原先根本没有讨论过所谓“接口”中有什么内容,只是空洞地说技术,那么自然也不可能对你起作用。 --------------------编程问答-------------------- 你在题目中扔出一个问题,然后又说自己的这个问题是“少量的业务差异用接口会有一种杀鸡用牛刀的感觉”,我觉得是自相矛盾的。可能除了别人免费给你写个最终代码以外,别的方面(设计上的讨论)的意见你全都无法接受。 --------------------编程问答--------------------
最近心情不太好吗,刚被老板骂过吧,火气不要这么大,乖了,结帖的时候多给你点分就是了。 --------------------编程问答-------------------- 尽管这样说可能有点易做图--- 不过你在做第一个项目时请忘记产品化之类的事,过滤泛化带来的损失永远大于重新修改代码架构的成本,亲身经历
从第2个项目开始,每遇到一个点就只修改那一处,尽量控制泛化的范围。比如增加第一个特殊字段时,你才去考虑在系统中增加自定义字段功能(虽然这几乎一定是早晚要做的);每遇到一种不同的处理,就去考虑增加一个系统参数,在这之前,当项目做 --------------------编程问答--------------------
+1
我认为前三个都应按项目做,有了足够经验才能明白这类项目的共性,开始产品的设计。
--------------------编程问答--------------------
说得好,其实我也是这么做的。项目现在已经投用了,接下来就是遇到大量的个性化需求冲击原先的项目,有对数据的影响,也有对业务逻辑的影响,所以需要寻求一种方法,既保留原来项目的完整性,又要响应新增的变化。 --------------------编程问答--------------------
这个项目从第一期开始已经做了好几年了,经验已经足够了,接下来要做的就是产品化。关于产品化软件的设计模式,有比较好的推荐吗? --------------------编程问答-------------------- 整个项目需要重构,抽出核心逻辑和相关代码。将所有可能的变化作为插件功能。
其实这里怎么说都是白说,撸主自己试着去做吧,这种东西没有什么可用的框架,因为没人知道你的业务逻辑到底怎么样的。 --------------------编程问答-------------------- 高度抽象框架 产品化 --------------------编程问答-------------------- 功能插件化 很好用哦
补充:.NET技术 , C#