【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“跨平台软件安装程序 - 硕士论文“提供大家参考,希望对大家有所帮助!
东南大学 硕士学位
论文跨平台软件安装程序 别:硕士 专业:软件工程 指导教师:吴介一李江浩 20050601 摘要 摘要 软件的安装是软件进入应用领域的第一步,安装程序的好坏决定了用户对软件的第一印象,对软件的整体质量有着重要的影响。
目前软件的功能不断增多,应用范围越来越广,相应的复杂性也不断增高,因此安装程序也越加复杂。
作者对Installs}lield Multiplatfom安装程序开发框架和JavaBeaIl组件技术进行研究,介-NT OS/400和z/OS系统特性,在此基础上成功的为ScanMail for Domino开发出跨平台的安装程序,为跨平台安装程序的开发提供了解决方案和具体的开发实例。
在ScanMail for Domino安装程序的分析和设计过程中,采用面向对象的分析与设计方法。
在Windows,Linux,Solaris,AIX和0S/400操作系统上采用基于Java组件技术的InstallShieIdMultiplatform来开发安装程序,只需一份
代码就可以支持以上平台。
而在z/OS操作系统上,基于z/OS提供的Unix系统服务采用Shell脚本来开发安装程序。
采用文中的开发方法为ScanMail for Domino开发的安装程序在各个平台上都达到了产品的需求,并且有很高的质量,尤其是安装程序的模块化使得程序的后期维护简单和高效,从而降低了整个软件开发和维护的成本。
关键词:安装程序,面向对象分析与设计,JavaBean,lnstallShield Multiplatform,集成文件系统 Unix系统服务 Abstract Installation is the first step of use the software.The quality of the Installation program determines thefirst impression of for t|le software.It plays important role in the software quality.Nowadays.the user ansoftware has more feamres;the range of software application has larger and larger and the complexity ofsoftware is grows.So the Installation becomes more complexity.The author rearches the InstallShieldMulfiplatform development ffamework,the JavaBean technolog and introduces the OS/400 and z/OSoperate system Base on this the author successed to develop血e multi-platform installation for theScanMail for Domino.That provides the solution for the mnti.platform installation development and givesthe example. In the development of installation of ScanMail for Domino,the author use obiects.oriented analysisand design.In Windows,Linux,Solaris,AIX and OS/400 platf01TU use the InstallShiled Multiplatform todevelop the installation program.In the z/OS platform use Shell script to develop the installation base onthe z/OS Unix System Service. The installation program of ScanMail for Domino meets the requirement on all platforms and has hJi2hquality.The modularization of the installation program makes the maintenance easier and more efficiencyReduce the cost ofthe software development and maintenance.Keywords:Installation,Object—Oriented analysis and design,JavaBean,InstallShield Muliplatform, Imegration File System,Unix System Service II 绪言 随着软件规模的不断扩大,功能越来越复杂,相应的对于软件的安装也提flIT更高的要求,安装也呈现出复杂化的趋势。
许多大型的应用软件都需要支持各种不同的操作系统和不同的语言,这对于软件的安装也提出了挑战。
安装程序是软件进入应用的第一个步骤,是用户对软件的第~印象,它的好坏影响到用户对软件的整体评价。
而且在软件的维护阶段有很大一部分的软件错误都和安装程序相关。
因此,安装程序的好坏对于软件整体质量有十分重要的影响。
目前安装程序的开发方法和工具也在不断增多,但是只靠工具并不能解决所有问题,如何设计和开发优秀的安装程序也成为一个有待解决的问题。
当前软件安装程序的开发方法以及相应的工具有很多,通常的软件开发平台如Visuafstudio,JBuilder,Delphi等都提供了对程序进行打包的功能,从而产生软件的安装包。
但Visual studio所生成的安装程序只能支持Windows平台而且功能有限,不能对用户自定义的安装过程提供支持。
而JBuilder历f湖jar包也不能提供良好的可视化安装过程。
对于一些功能较少,平台唯一的或是自己开发的
免费软件、共享软件等,采用开发工具自带的安装程序制作功能来开发安装程序已经足够,但是对于商业
软件,特别是企业级的软件产品而言,往往要支持多种不同的操作系统和多种语言,因此就必须使用专业的安装程序开发工具来进行开发,相应的也要有专门的设计和开发过程。
目前应用较多的安装程序开发工具是Install Shield系列的专业安装程序开发工具,针对不同用户的需求Install Shield公司提供了一系列功能不同的安装程序开发工具。
对于开发支持跨平台的安装程序,InstallShield Multiplatform 5.0应该是比较好的选择,它是基于JavaBean组件技术的,这款开发工具提供了对多平台和多语言的支持,并且提供了强大的开发类库,使得开发人员可以开发出符合自己需求的安装程序。
而在许多Unix平台上开发人员往往选择用Unix Shell脚本来开发安装程序,因为采用Shell脚本开发十分简单和快速,并且在Unix平台上具有很高的通用性和移植性。
本文的研究目的就是为企业级大型软件提出跨平台安装程序的开发方法,使安装程序的开发变的简易和高效,并且使得安装程序的后期维护更加容易。
本文主要对InstallShield Multiplatform的安装程序开发框架和JavaBean组件技术进行研究,用面向对象的方法来分析和设计软件的安装程序,在此基础上进行产品ScanMail for Domino的安装程序的设计和开发,并且在z/OS上用Shell脚本来移植安装程序。
文章总共分为五章。
第一章主要介绍面向对象程序开发的一般方法和JavaBean组件技术,包括JavaBean的特性和事件机制。
第二章中详细介绍了如何用lnstallShield Multiplafform安装程序开发平台来开发跨平台的软件安装程序,并且给出了ProductBean和WizardBean的开发方法和实例。
第三章主要进行ScmlfMail for Domino安装程序的需求分析和设计,在设计的过程中采用面向对象的分析和设计方法。
第四章主要是安装程序的实现,介绍了每一个安姨模块,即JavaBean的具体实现。
第五章介绍安装程序的移植,包括对OSN00和z/OS操作系统的介绍,并且讲述安装程序在这些操作系统上的移植方法和步骤。
此课题的研究,为大型软件的多平台安装提出了方便、易用的解决
方案,同时对InstallShieldMultiplatform的安装程序开发框架和JavaBean组件技术进行深入分析,并且在ScanMail for Domino的安装程序的设计和开发过程中对各种不同的操作系统的特性进行研究,特别是一些IBM大型机的操作
系统,如0S/400和z./OS,这些对于实际的跨平台软件安装程序的开发有很大的指导作用。
文中米用JavaBean组件技术实现模块化的安装程序使后期的维护工作会变的容易,而且在设计中许多通用的安装模块可以在以后的开发中进行重用,间接的节省了开发时间。
东南大学硕士学位
论文 第一章面向对象技术和Java组件技术1.1面向对象程序设计介绍1.1.1面向对象的发展 对于程序设计的方法而言存在着两种主要的方法,一种是结构化程序设计,另一种是面向对象程序设计。
面向对象程序设计是软件系统设计与实现的新方法,这种新方法是通过增加软件可扩充性和可重用性,来改善并提高程序员的生产能力,并控制维护软件的复杂性和软件维护的开销【l J。
结构化
程序设计在60年代诞生,在70年代到80年代以遍及全球,成为所有软件开发设计领域及每个程序员都采用的程序设计方法。
结构化程序漫计的设计思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构:各模块之间的关系尽可能简单,在功能上相对独立;每一个模块内部均是有顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的思想,从而有效地将一个较复杂的程序系统的设计任务分成许多易于控制和处理的子任务,这些子任务都是可独立编程的子程序模块。
这些子程序中的每一个都有一个清晰的界面,使用起来非常方便。
结构化程序设计方法虽然具有很多的有点,但它仍是一种面向数据和过程的设计方法,它把数据和过程分离为相互独立的实体,程序员在编程时必须时刻考虑所要处理的数据的格式。
对于不同的数据格式即使要做同样的处理或相同的数据格式要做不同的处理都需要编写不同的
代码。
因此可重用性不好。
另~方面,当数据和过程相互独立时,总存在着用错误的数据调用正确地程序模块或用正确的数据调用了错误的程序模块的可能性。
面向对象程序设计既吸取了结构化程序
设计的一切优点,又考虑了现实世界与面向对象解空间的映射关系,它所追求的目标是将现实世界的问题求解尽可能简单化。
面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用数据抽象和信息隐藏技术。
它将对象及对对象的操作抽象成一种新的数据类型——类,并且考虑不同对象之间的联系和对象类的重用性。
面向对象程序设计优于传统的结构化程序设计,其优越性表现在,它有希望解决软件工程的两个主要问题一~软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自然地表现现实世界的实体和
问题。
面向对象方法,尤其是它的继承性,是一种
代码重用的有效途径。
开发者在设计软件时可以利用一些已经被精心设计好并且经过测试的
代码,这些可重用的
代码被组织和存放在程序设计环境的类库中。
由于类库中这些类的存在,使以后的程序设计过程变的简单,程序的复杂性不断降低、正确性不断加强,也越来越易于理解、修改和扩充。
1.1,2面向对象的特性 面向对象系统最突出的特性就是封装性、继承性和多态性吐 封装性是建立在类的基础上,类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。
类实际上就是数据类型,例如,浮点数也有一组特性和行为。
区别在于程序员定义类是为了与具体问题相适应,而不是被迫使用已存在的数据类型。
这种抽象的数据类型是面向对象程序设计中的一个基本概念。
简而言之封装性就体现在类的设计上。
2 第一章面向对象技术和Java组件技术 封装应具有几个特点:首先,具有一个清楚的边界,对象的所有私有数据、内部程序细节都被固定在这个边界内。
其次,具有一个接口,这个接口描述了对象之间的相互作用、请求和相应,它就是消息。
最后,对象内部的实现
代码受到封装壳的保护,其它对象不能直接修改本对象所拥有的数据和
代码。
类型不仅仅说明一组对象上的约束,还说明与其他类型之间的关系。
两个类型可以有共同的特性和行为,但是,一个类型可能包括比另一个类型更多的特性,也可以处理更多的消息(或对消息进行不同的处理)。
继承表示了基本类型和派生类型之间的相似性。
一个基本类型具有所有由它派生出来的类型所共有的特性和行为。
程序员创建一个基本类型以描述系统中一些对象的思想核心。
由这个基本类型派生出其他类型,表达了认识该核心的不同途径。
继承关系具有以下几个特性:·类间具有共享特征(包括数据和程序
代码的共享):·类间具有细微的差别或新增的部分(包括非共享的程序
代码和数据);·类间具有层次结构。
继承所具有的作用有两个方面:一方面可以减少冗余
代码;另一方面可以通过协调性来减少相互之间的接口和界面。
对于面向对象的程序设计语言,多态性是第三种最基本的特征,“多态性”从另~个角度将接口从具体的实施细节中分离出来,亦即实现了“是什么”与“怎样做”两个模块的分离。
利用多态性的概念,
代码的组织以及可读性均能获得改善。
此外,还能创建“易于扩展”的程序。
无论在项目的创建过程中,还是在需要加入新特性的时候,它们都可以方便地“成长”。
1.1.3面向对象程序设计的一般方法 面向对象的程序设计首先关注在抽象数据类型的建立上,也就是我们通称所说的类的设计。
面向对象程序设计方法模拟了人类认识问题中较高、较广层次的过程,即分类过程,并综合了功能抽相与数据抽象,将解决问题看作是一个分类演义的的过程。
面向对象程序设计主要分为面向对象分析和面向对象设计两个主要阶段,OOAD的工作描述如图1-1所示。
图中前两个步骤属于面向对象分析(OOA)的范畴,后两个阶段属于面向对象设计(OOD)的范畴。
分析与设计的基本任务就是:分离对象,在微观上研究对象的内部结构,在宏观上研究和描述对象之间的关系,而且这一思想从需求分析到实现阶段都是一致的口l。
需求分析是面向对象分析的第一步,它是用文本方式如实描述要实现的领域的情况。
描述的内容一般包括系统要实现的目标、拟开发的系统的主要特点、领域的核心活动范围;记录可能发生的例外情况(如出错、指标异常等)。
从需求文本描述确定语义对象是工作的第二步。
语义对象是组成一个系统的基本实体,他有固定的属性和处理数据的方法。
实体之间的协调工作构成一个系统的有机整体。
实体之间的关系是有“主”有“从”的,即一个实体可能是完成某一动作的“启动者”,另一实体就是“参与者”。
“启动者”负责调用另一个实体“服务”, “参与者”是提供服务的实体。
应该对需求文本做全面的分析理解,分析出问题空间内的全部实体和实体之间的关系。
面向对象的设计阶段的主要
工作是根据分析阶段得出的各种实体和关系来创建对象模型图和状态图,精确的定义类和类的层次
网络图。
面向对象设计方法是一种直观方法,通常可归结为下述三步。
l,发现对象:所有的对象都有唯一的标识,对象之间是可区分的。
具有共同特性的对象组成了类。
2.发现对象间的关系:对象之间存在着许多关系,主要要寻找的有两种,即委托关系和继承关系。
3.发现类:类所描述的是具有相似性质的一组对象,这组对象具有相似的行为模式、相似的关系和相似的语义;识别类可用直观的方法,即将现实世界中的类映射到软件解空间的类;我们还可以用抽象的方法识别类,通过观察多个对象或多个类之间的共同特性,抽象出新的类:还有一种发现 东南大学硕士学位
论文类的方法为特殊化方法,即通过找出在基类中并未出现的某些附加特性来发现派生类。
图1-1面向对象分析与设计流程图1.2 Java组件技术1.2.1组件的概念和分类 所谓组件就是可以自行进行内部管理的一个或多个类所组成的群体。
除了群体提供的外部操作界面外,其内部信息和运行方式外部不知道,使用它的对象只能通过接口操作它”’。
每个组件包含一组属性、事件和方法,组合若干组件就可以生成设计者所需要的特定程序。
组件往往设计成第三方厂家可以生产和销售的形式,并能集成到其它软件产品中。
应用程序开发者可以购买现成的组件,他们只要利用现有的组件,再加上自己的业务规则,就可以开发出一个应用软件a总之,组件开发技术使软件设计变得更加简单和快捷,并极大地增强软件的重用能力。
目前常用的组件模型可咀分为两种:一是微软公司的COM组件模型(包括Automation和ActiveX):一是Sun公司的JavaBean〔”。
ActiveX并不是微软公司推出的最新技术,而是微软公司开发多年的一个产品:首先是“动态数据交换”(DDE),它是Window程序之间传递消息的最原始的协议;接着出台的是“对象链接与嵌入”rOLE),这是对DDE的一种扩展,利用OLE可在应用系统的各程序间创建可视的链接关系;OLE 之后是‘r部件对象模型1coM),它几乎成为使用和设计OLE应用程序的工业标准;最后抵达ActiveX, 4 第一章面向对象技术和Java组件技术它是COM的修改形式,是COM标准的一种升华,它引入了“组件”的概念。
所谓ActiveX部件是指一些可执行的
代码,如exe、dll或OCX文件,通过ActiveX技术,程序员能把可重用的软部件组装到应用程序中去。
以VisualBasic为例,VisualBasic中的控件是控件部件(即,OCX文件)提供的对象,一个控件部件可以提供多种类型的控件。
控件制作者把控件工程编译成一个控件部件后,程序开发者就可以重用这些控件来创建新的应用程序。
控件由三部分组成:控件的外观是公有的,用户能看到并能同它进行交互;控件的接口,包括控件的所有属性、方法和事件也是公有的;任何包含该控件实例的程序都会用到:控件的私有部分是它的实现,即控件工作的
代码。
也就是说,控件的实现效果是可见的,但
代码本身不可见。
用户通过继承控件私有部分、修改其可见部分就能匹配新的应用需求。
JavaBean类似于ActiveX控件,它们都能提供
常用功能并可重复使用。
JavaBean是基于Java的组件模型。
在该模型中,它可以被修改或与其他组件结合生成新的组件或应用程序。
JavaBean具有完全的OOP编程风格,可以针对不同业务建立一套可重用的对象库。
与其他模型相比,JavaBean组件没有大小和复杂性的限制。
JavaBean组件可以是简单的控件(如按钮、菜单),也可以是不可见的应用程序,用来接收事件并完成幕后操作。
与COM组件模型相比,虽然JavaBean只能用Java语言开发,COM可由符合标准对象模型的任何语言(c+_,VB等1开发,但相对而言,JavaBean比COM更容易开发;另外,COM组件需要在服务器上注册,如果修改了现有组件,服务器需要重新启动才能使用它,而JavaBean不需要重新
注册;同时JavaBean符合结构化对象模型:每个Bean由一个不带参数的构造函数控制,可以使用内省(introspection)来设置其属性。
1.2.2 JavaBean组件特性 JavaBean组件是可重用的软件组件,使用标准的“方法”命名规则。
这使得用户只要看到JavaBean组件的名字,就可以预测它的功能,并可在应用程序中轻松使用。
JavaBean其实就是符合JavaBeans组件模型规范的Java类。
JavaBeans组件模型规范是Sun、Borland及其他公司为了建立一个平台无关性的组件模型API而协作开发的,它是编码组件的一个规范”J。
JavaBeans将Java语言本身所具有的“一次编写,到处运行”特性沿用到
代码组件Bean,使Bean也具有平台无关性p J。
Bean是特殊的Java类。
它具有一般Java类所没有的特性。
按照JavaBeans的规范,一个JavaBean(以下简称Bean)应该具各以下的成分和特性: (1)方法:指在Bean类中定义的,完成各种特定任务的公共方法,这些方法提供给外部调用。
事实上,包括JavaBeans所支持的、以可视化方式重用Bean的那些特性是由定义在Bean中的方法来实现的。
虽然不同的可视化应用程序构造工具可以为用户提供各种不同的使用Bean的方式,但是在工具内部都是通过驱动定义在Bean中的方法来完成。
(2)属性:Bean属性是Bean类中的成员变量,但它们同时又不是普通的成员变量。
首先,Bean属性是与Bean的外观和行为有关的成员变量;其次,Bean必须提供访问这些属性的公共方法一访问者方法,而且命名这些方法时,要么必须遵循Bean的设计模式,要么必须对这些方法进行统一的显式说明。
JavaBcans特别规定Bean外部不能直接访问Bean属性,Bean外部必须使用Bean中定义的访问者方法,来访问这些属性。
Bean属性可以属于任意的数据类型。
除一般属性外,Bean还可以具有索引属性、关联属性和约束属性。
索引属性是以数组形式存在的一组属性;关联属性是当自身的值发生改变时,能够向Bean外部对此感兴趣的部分发送事件通知的属性;约束属性是在改变它的值之前,必须由Bean外部对此感兴趣的部分进行有效性确认的属性。
这些属f生使得Bean的成员变量具有更强的语义表达能力。
(3)事件:在JavaBeans中,事件及其处理机制是十分重要的。
因为通过事件处理机制,Bean与Bean之间才可以相互连接起来并进行互操作。
JavaBeans直接继承了Java 1.1 API中以事件源/收听者模型为基础的事件处理机制。
事件用于传递Bean状态变化的通知,以及用户与Bean之间的交互 东南大学硕士学位
论文信息。
Bean既可以产生事件,也可以收听并处理事件。
作为事件源的Bean,既可以产生低层事件,也可以产生语义事件。
作为收听者的Bean,向外部提供了响应并处理事件的公共方法。
(4)自查(introspection):自查是指软件工具能够从外部分析Bean是如何工作的。
Bean之所以能支持自查是因为在JavaBeans中规定:当定义Bean的属性、事件和方法时,要么利用标准的Bean信息类进行显式的定义,要么使用以命名约定为基础的设计模式来定义,两者必居其一。
这样无论使用那种形式,或是混合使用两种形式,应用程序构造工具都能分析Bean具有哪些属性、事件和方法,以及使用它们所必需的信息。
自查对于重用
代码组件来讲是至关重要的,因为只有
代码组件支持自查,重用者才能真正地以“黑盒”方式重用它们…。
(5)对应用程序构造器的支持:应用程序构造工具可以在Bean类支持自查的基础上,为软件开发人员提供直观的重用Bean的可视化方式,从而使重用
代码资源的过程变得简单、灵活和有效。
例如,虽然应用程序构造工具在其内部同样只能通过访问者方法来访问Bean的属性,但是它可以在此基础上进一步利用Bean属性自查和Bean自身的属性编辑器,为应用程序构造工具的用户提供利用可视化的属性
列表,编辑Bean属性的手段。
(6)客户定带lJ(customization):开发人员可以利用应用程序构造工具,设置Bean的属性值,以定制Bean的外观和行为。
(7)永久性存储:可以在永久性的存储设备上保存Bean类,以供今后重用。
在上述特性中,使得Bean类比一般Java类更容易重用的两个主要特性是自查和支持应用程序构造器。
1_3 JavaBean的事件机制1.3.1 JavaBean事件机制概述 “事件”机制是JavaBean的重要特性之一,它使原本相互之间毫无关系的一堆组件构建成为一个能够协同工作的有机整体。
一个应用被分解为若干功能相对简单而集中的小模块,当满足一定的条件时,各模块完成各自的职责,并启动下一个模块接替工作下去。
构件就是实现特定功能的小模块,而“事件”是控制任务执行顺序的机制,把一个源构件上发生的状态变化情况通知应该获取该消息的其它目标构件,使得各个构件之间的行为有一种因果关系,控制整个应用功能的实现”1。
事件机制有许多不同的用途,例如,在Windows系统中常要处理的鼠标事件、窗口边界改变事件、键盘事件等。
在Java和JavaBean中,则是定义了一个一般的、可扩充的事件机制,这种机制能够: (1)对事件类型和传递模型的定义和扩充提供了一个公共框架,并适合于广泛的应用。
(2)完好的集成到Java环境中,充分利用Java的长处。
(3)事件能被描述环境捕获和触发。
(4)能使其它应用生成工具采取某种技术,在设计时直接控制事件,以及事件源和事件监听者之间的关系。
(5)事件机.