关于系统集成的设计方案(一)

1、系统集成定义

    既然要说系统集成那么就应该给系统集成做个定义,这要做的好处很明显,至少可以避免我们对集成的概念理解的不同而造成异议,对吧?

     那么什么是系统集成呢?我给出的定义就是将两个或两个以上的由同一个公司或不同公司开发的两款或两款以上的软件进行整合最终形成一套完整的具有被集成的所 有系统的大部分功能的系统的过程,所有被集成的系统被称作集成子系统,集成后所得系统叫做集成系统;如果集成过程中以某个子系统为主进行整合,那么这个子 系统就被称作主子系统。

    概念明确了,以后文中论述的所有涉及到的子系统 、主子系统和集成系统的概念均已此处定义的为准。

2、案例给出及方案论述

    既然论述系统集成,那么首先我们得至少有两个系统作为我们的集成子系统对吧?好,既然这样那就请允许我虚构两个系统(我们主要是讲理论,那么对于采用什么样的系统对于理论的讲解来说影响是不大的)。 

                                图1 系统A架构 

                                图 2 系统B架构

    首先我们给出系统A,它的系统架构如 1所示,其次我们给出系统B,它的架构如 2所示。

    也许大家已经发现了,这两图有啥区别呢?这不长成双胞胎了吗?没错就是双胞胎,虽然是双胞胎但是他们还是有区别的,那么区别在哪里呢?很简单一个是系统A一个是系统B,很明显是两个系统,既然是两个系统那么无论他们长的在怎么相像也终归是两个系统,就像两个双胞胎兄弟,他们再像我们也不能说他们是一个人对吧?所以我完全有正当理有来以两个架构类似或相同的系统进行理论的讲述,毫无疑问这是合法的,哈哈。

    话说的有点远了,起始采用两个结构类似的系统是有一定道理的,我们不防考虑一下,在我们接触过的软件中所采用的架构有哪些是我们没见过的,无论它采用的是 多么高深的设计模式归根结底拆分到最后也都是些简单的基础的模型而已。比如我们熟悉的软件架构,至今也就两种大的模型而已 C/S B/S 再复杂点的会采用C/S B/S两种结构相结合也不是不可能的,这完全取决与我们业务的需要,只要需要或者说只要能解决问题的方案都是好的解决方案。回过头来我们继续说我们的系统A 和系统B,他们是两个完全不同的系统,但是采用系统架构是相同的,都是C/S的系统,他们都有各自的业务服务器和客户端,业务服务器仅能为各自的客户端提供业务处理服务器,而且系统A 和系统B他们所实现的业务逻辑是不同的,至少他们的核心业务是不同的,说的通俗点就是他们处理业务的侧重点不同。这两个系统在各自的应用领域都工作的很好均能满足各自领域的业务需求。但是好景不长,突然有一天系统A 或系统B有了新的需求,新的需求是什么呢?新的需求是 系统A 需要具有处理系统B所能处理核心业务的能力,或者系统B具有处理系统A 的核心业务的能力。此时问题出现了?倘若系统A 和系统B恰好是同一家公司研发的,那么这家公司有两种选择,要么在系统A或系统B上实现BA的核心业务,或者将两个系独立的系统整合用最少的时间做最少的修改来满足用户的最新需求。当然还有一种情况就是系统A 和系统B是由两家独立的公司研发的,此时解决方案和同一家公司研发的系统A 系统B 的解决方案是一样的要么在原有的系统上实现另一个系统的功能,或者两家公司合作将系统进行集成,当然这是商业上的问题我们不做考虑,我再此仅研究如何尽快的满足用户的需求。

    至此,两个软件已经介绍完了同时也提出了用户的需求:在同一个系统上实现系统A和系统B的全部核心业务。当然用户完全可以同时使用两个独立的系统,我们也完全可以这样建议,但是本 着客户是上帝原则我们要无条件的满足客户的合理的需求,那么客户提出的上述需求是否合理呢?当然合理,一没有违法二没有损害谁的利益,相反可能由于系统的 集成回事他们的工作效率提高减少不必要的成本也说不定(因为很可能由于高度的合理的集成而使客户的重复劳动减少,同时降低了出错的概率),因为我们要无条 件的满足客户的需求。

为了满足用户提出的需求,我们前面已经提出了两种解决方案,一是在系统A 或系统B上面实现另一个系统的核心业务,另一种解决方案是通过系统集成对系统A和系统B进行整合形成一套新的系统以满足用户的需求。那么,很明显后一种方案就是系统集成,我们最终也会采用系统集成的方案来解决,但是在此我想还是先对两种方案进行一下简单的比较。

    首先,采用在系统A 或系统B上面重新设计实现另一系统也是一种很不错的方案,因为这种做法可以使最终得到的系统更像是一个完整的系统,而且我们还可以在实现的过程中采用新的算法以优化已有的业务处理流程提高系统工作效率,但是无法否认重新编码会引入新的bug,因为代码毕竟是人写的,人都是普通人谁也无法避免犯错,既然无法避免犯错那么引入新的bug 就是在所难免的,不仅如此在重新编码实现的是 我么还要对数据库进行兼容性设计,不仅要兼容原系统中已有的数据更要能满足新的系统里数据共享的问题,因为原本一个系统数据库中的数据由于业务的整合难免 不造成数据库层面的变动,因此数据库重构也是难免的,因为我们都知道数据库和应用程序是耦合度最高的,虽然我们已有很好的策略和技术如ORM 数据访问层技术等,但是这在本质上并没有将耦合度降低多少,试想当我们的表结构发生一点变动的时候我们同样要对ORM做新的映射,因此导致的问题是系统中所有涉及到变动的地方都要重新实现,虽然很简单但是量很大,量大就可能导致问题的出现,进而增加研发调试成本,延长软件研发周期,因此重新开发我认为在没有新的或更合适的解决方案的时候更合适。

     其次,是系统集成,系统集成是通过某种手段将已有的系统做最少的改动而达到整体一致统一的效果,在外观或使用效果上是一致的。那么集能带来哪些好处呢?当然好处是大大的,因为既然是集成那么我们改动的地方那个就不会有开发时候造成的改动大,进而引入新的bug 的可能性也会降低,不仅如此更因为我们实在已有的系统上面进行整合,那么我们就有能里保证用最少的时间最高的质量来满足用户的新的需求。这些好处所带来的好处已经很可观了,因为引入的bug 少就可以保证系统的尽可能稳定,也就是说可以保证用户使用的过程中系统会稳定高效的运行。以我的经验来看系统的稳定有时候不高效率更重要,因为对于数据敏感的行业是不容出现半点错误的。

   (注:未完,请看下一篇 关于系统集成的设计方案(二))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章