摘要:

在我所担任的某移动短消息增值应用系统的规划和开发工作中,面对移动短消息广阔的应用领域,和众多不同行业的ASP,巨大的软件开发工作量。我们选择了组件式软件开发方式,在系统的功能、性能、开发效率和投资等方面都达到了理想的效果。

正文:

2000年10月我开始担任四川某网络公司移动短消息增值应用系统(简称SMASP)开发部的负责人,主要工作是对SMASP进行规划并实施开发,为总经理提供SMASP开发的参考方案。SMASP的通信服务提供商为中国联通公司,服务内容提供商为如:出租车调度系统的出租车管理公司;电码防伪系统的商用电码公司;水电气三表抄表系统的水电气公司;移动证券系统的证券公司等,还有许多已知的和未知的对移动短消息增值应用有潜在需求的应用领域会不断地加入到SMASP中来。SMASP首期工程应用到联通四川公司,二期工程将推广到山东、河南、广东、福建、湖北等省市,并逐步推广应用到全国联通。由于项目处于起步阶段,还没有定型的系统模型及成功的应用模式,因此,选择一个好的系统体系结构和开发模式就成为当务之急。

(交流备考794896774)

  对领域的选择。通常一个领域的专用资产要应用到不相关的领域是比较困难的,组件式开发的首要工作是领域工程,在这个领域内提取可被复用的系统对象,创建可复用资产,开发复用组件。而SMASP正好是这样一个面对具体应用领域的,系统需要不断升级,有着长期的持续开发需求。因此,在SMASP建设的初级阶段,为SMASP创建复用资产是可行的,有回报的。

  对组件(COM)式体系结构的选择。SMASP已经有一部分应用是建立在Windows/NT服务器上了,但考虑到本系统将推广到全国各地联通公司,将来的远程系统维护和远程操作控制以及系统整体性能的需要,我建议公司将系统后台应用部分移植到以SUN系统为主的UNIX系统上来,这一建议得到了公司的支持。我们的服务内容提供商是各式各样的,处在不同的行业,有不同的应用系统在运行,对UNIX、WINDOWS、WINDOWS/NT、LINUX、NETWARE等都有应用,是一个多平台系统。为对这样一个多平台、多应用、长期持续开发的系统选择一个良好的体系结构和开发方式,将决定在将来的开发实践中SMASP的质量、连续可用性、可升级维护性、可扩展性、开发工作量和投资等各项指标。经过反复考虑,我们将整个系统划分为各个独立的组成对象,各对象独立工作又相互协调来完成系统的功能,这样各个独立的对象就形成了系统的组件。在这些组件中,有些是SMASP内通用的,其功能定义在系统内长期稳定;也有面对不同ASP(服务内容提供商)的各式各样的组件。这些组件的开发工作均相对独立,互不干扰,因此可以实现系统的无代演进。

  创建复用资产和复用组件。通常可以被复用的资产是在领域内通用性比较好的对象。通过深入的分析,我们决定建立短消息增值应用系统平台MISPlatform。MISPlatform本身是由多个组件构成的多层次的、组件化的体系结构,在他上面运行的ASP的各种应用也可看作MISPlatform的各个组件。MISPlatform的体系结构,各组件的详细定义,接口定义,专化规范,大量代码以及各部分的文档都是潜在的可复用资产。复用资产和复用组件之间有一定区别,复用资产的范围相对广泛,而复用组件则更为具体,通常指可以直接嵌入到目标系统内或独立运行以完成某一特定功能的程序模块或对象。并不是所有可复用资产都可以制作成复用组件的,在划定了复用资产后还要进一步提炼,如我们在MISPlatform中创建的基本表管理组件、索引管理组件、TCP/IP通信组件、接口组件、加密组件等,都具有很好的通用性。

  通用接口的定义。在组件式开发中,由于系统是依靠预制的或独立运行的组件协同工作来达到系统功能目标,各组件之间对信息的交换就成为必然,而要使各组件之间顺利交换信息,就需要定义一个各组件都能解析的通信接口。在我们的系统中SORBA(短消息对象请求代理结构)承担了这个角色,他的定义能为MIS Platform中所有组件识别和解析,成为组件协同工作的纽带。SORBA的定义要考虑到独立于平台、独立于操作系统、独立于编译系统、独立于开发工具,因为在这个应用范围广大的多平台、长期持续开发的应用系统中,我们无法保证大家都使用相同的开发工具,即使开发工具相同,也不可能保证通信的数据结构绝对不发生改变,因此SORBA的定义的独立性和灵活性就相当重要。

  在各种平台下实现组件。由于我们的系统是多平台的,所以复用组件也需要在多平台下实现。而目前大家讨论得多的如COM、CORBA、ActiveX等是以WINDOWS为平台的,WINDOWS能够提供给组件的实现方式为DLL或OLE技术。而我认为,这个理解是狭隘的,组件可以以多种方式在多种平台下实现。在WINDOWS系统上除了DLL和OLE外,还可以使用静态连接、消息队列等方式来实现;在UNIX上可以采用静态连接、消息队列、共享内存等技术来实现。可以看出,在UNIX和WINDOWS(2000以上版本)上均提供了消息队列。MISPlatform中独立运行的组件是通过消息队列联系起来的,在UNIX和WINDOWS下均采用这个机制,如加密组件和通信组件之间、短消息处理中心和通信组件之间、通信组件和ASP应用组件之间均通过消息队列通信。而嵌入式组件如基本表、索引、SORBA接口协议等组件在UNIX下的实现采用的是静态连接技术,在WINDOWS下采用静态连接和DLL两种技术。不管是嵌入组件还是独立运行的组件,在实现的时候都应当考虑多平台的需求,组件要独立于开发工具、具有高度的可塑性、接口清晰可靠。

  对第三方开发的支持。我们不能保证在整个SMASP的建设过程中始终都由我们一家承担所有的软件开发工作,MISPlatform提供对第三方开发的支持是必须的。第三方开发者只要得到SORBA接口组件“DataPack.DLL”(在Windows下)或“DataPack.Lib”(在Windows下或Unix下),及相关的文档资料,他们即可访问MISPlatform,不管MISPlatform如何升级换代,也不管MISPlatform是由什么平台来提供服务,我们的客户都不必修改他们的应用系统。

  重视培训工作。我们的多层次组件式体系结构首先是由极少数的几个核心开发人员所掌握的,而在SMASP的建设工作中,其他软件人员的工作也是不能忽视的,还有人员的流动更新。大家在SMASP中的工作是协作性的,为了把大家都纳入到整个系统的应用体系结构中,必须首先让大家了解体系结构,熟练掌握可复用资产和复用构件,这样才能使大家知道自己所做的工作在整个系统中的位置,以及怎样使自己所做的软件和整个系统有机地结合起来,怎样进行组件的专化。最初,我们认为只要将构件的设计文档等资料共享给大家,我们的程序员就知道去学习和使用,而实际上,这些程序员都养成了不爱看别人软件及文档的习惯,他们喜欢无论什么都自己做,所以,尽管我们的SORBA接口和系统体系结构的相关文档都共享了,但大家只对SORBA接口看了一些,而对体系结构就不怎么关心了,更谈不上遵守系统体系结构。培训工作实际上是非常重要的,没有培训工作,大家就很难理解整个系统的体系结构,复用资产也形同虚设。在SMASP的开发中,组件也不是一成不变的,需要升级和增加新的内容,大家对体系结构的认识应当不断强化,因此,我们培训工作也需要不断的开展,持之以恒。

结尾:

  综上所述,在组件式软件系统开发工作中,我们首先要选定一个领域,然后确定软件的体系结构,挖掘潜在的可复用资产,创建复用构件,持之以恒的培训工作,让我们的软件人员都在充分理解系统体系结构以后随心所欲地使用复用构件,我们的组件式开发工作就能达到满意的效果。

系统分析师范文1:论软件的组件式开发相关推荐

  1. Agile.Net 组件式开发平台 - 平台系统介绍

    平台介绍 Agile.Net 组件式开发平台是一款针对企业级产品的开发框架,平台架构基于SOA服务体系,多层组件式架构打造.平台提供企业应用开发所需的诸如ORM.IOC.WCF.EBS.SOA等分布式 ...

  2. Vue3+TypeScript+ElementPlus 组件式开发思路分享

    项目类型 移动端 写代码 三思而后行 工单模块 对比其他设计图可以发现重复利用的组件 1.开启设计思路(提取相同参数) Header.vue <template><div class ...

  3. Vue入门 ---- 组件式开发

    ##组件 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8 ...

  4. SuperMap Objects组件式开发

    文章目录 Form1.Designer.cs Form1.cs Form1.Designer.cs(附) Form1.Designer.cs namespace experiment10 {parti ...

  5. 组件式GIS开发总结(一)

    一.组件式开发的优缺点 1)优点 (1)高度的伸缩性 (2)灵活的拓展性 (3)易于开发 (4)易于集成 (5)更高的性价比 2)缺点 (1)与专业的GIS客户端软件相比,组件式GIS的效率相对低下 ...

  6. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  7. 360奇舞团钟恒:选用Vue.js进行组件化开发,我们遇到了哪些坑?

    责编:陈秋歌,关注前端开发领域,寻求报道或者投稿请发邮件chenqg#csdn.net. 欢迎加入"CSDN前端开发者"微信群,参与热点.难点技术交流.请加群主微信「Rachel_ ...

  8. 一文搞定软件过程模型——瀑布模型、增量式开发/增量开发与迭代开发的区别

    软件开发比较经典的过程模型有: 瀑布模型:该模型将基本的过程活动.描述.开发.有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段.软件设计阶段.实现阶段.测试阶段等. 增量式开发 ...

  9. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

最新文章

  1. spring中@Transaction注解解析
  2. python PyQt5中文教程☞【第八节】PyQt5控件(II)
  3. Servlet容器中web.xml配置context-param与init-param
  4. 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
  5. 淘宝H5移动端解决方案
  6. 信息——人类现代文明的奇迹
  7. 让Fiddler调试localhost和127.0.0.1
  8. EXCEL常用函数之统计函数
  9. MAX to UE4 单位设置
  10. 怎样给word插入页码,点击进来有惊喜
  11. 记忆拼图·心灵风暴·黑洞生死书
  12. Online Object Tracking: A Benchmark
  13. C#-进击Hangfire
  14. JAVA进阶—注解,对象克隆,设计模式
  15. 持续造风,快手为品牌、商家提供“保姆式”服务
  16. Google MLOps白皮书:MLOps实践者指南Part I MLOps生命周期及核心能力
  17. 微信小程序【生命周期】
  18. 新库上线 | CnOpenData 新三板公司专利及引用被引用数据
  19. 安卓运营商定制手机锁卡方式研究
  20. Springboot中new出来的实例中含有@Autowired注入时的Spring Bean为NULL

热门文章

  1. 热力学成像原理系统及应用综述
  2. [转载]亲历:探访乔布斯的低调豪宅(组图38)_我是亲民_新浪博客
  3. QT 笔记4 | 资源和图像 目录(QDir)和定时器(QTimer) 鼠标和键盘
  4. 概率机器人——多元正态分布密度函数
  5. 探秘福特,科技造就节油王
  6. 【SD卡高级清理】使用教程!
  7. 解决:You have 18 unapplied migration(s). Your project may not work properly until you apply
  8. “选择性粘贴为无格式文本”(Paste Special as Unformatted Text)的快捷方法
  9. Java中大括号的作用
  10. Android平台Camera实时滤镜实现方法