大型软件项目的软件工程管理方法_第1页
大型软件项目的软件工程管理方法_第2页
大型软件项目的软件工程管理方法_第3页
大型软件项目的软件工程管理方法_第4页
大型软件项目的软件工程管理方法_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档你我共享 大型软件项目的软件工程管理方法 计研2郑震坤024891 摘要: 本文中介绍了软件配置管理的工具 CVS并阐述了如何利用CVS来实现对开 发文档和源代码的访问和版本控制。文中还设计了用于软件过程管理的软件工程 管理系统,它包括任务管理系统、Bug管理系统和用户认证系统,此系统为管理 软件生成过程和进行质量控制而建立,能够对软件项目的过程进行监控。此外, 文章中还讨论了软件测试的一些方法和原则。 最后,对组件技术以及基于组件的 软件工程学方法进行了简要的介绍。 1.概述 随着企业信息化的深入,对软件项目的需求日益复杂,并会产生频繁的变更, 传统的个人英雄主义的开发方式已经越来越

2、不能适应发展的需要。从软件企业的 发展战略来说,如何在技术日新月异和人员流动频繁的情况下,建立本公司的知 识库及经验库,把企业中分散的隐性的财富,即个人的知识及经验,转变为企业 的知识和经验,以便提高工作效率,缩短产品周期,加强企业的竞争力,具有至 关重要的作用。采用科学的管理思想,辅之以先进的管理工具,已经成为企业未 来发展必不可少的手段。 如果软件开发机构不能有效地控制和使用软件资源,则在面对风险时就可能 导致软件开发活动出现各种问题。由于不能很好地管理软件过程,会使得一些好 的开发方法和技术没有起到预期的作用。 项目的成功往往是通过工作组的杰出努 力来达到的,这种仅仅建立在依赖特定高素质

3、开发人员基础上的成功,不能保证 全组织的持续稳定的软件生产和质量的长期提高。因此,要降低软件开发过程的 风险、保证软件产品质量,就必须加强管理,而软件配置管理是企业过程改善和 能力提升的基础。本文中采用CVS作为软件项目中进行配置管理的工具,禾用它 来对项目文档和源代码实现有效的管理。 软件项目监控的目的是通过建立对软件项目过程的可视性,使项目管理者在 软件项目性能与软件计划出现偏差时采取有效的纠正措施,以确保软件过程的质 量满足要求。优秀的软件过程管理平台是实现在整个项目生命周期中进行项目过 程监控的工具保证,这一点尤其在现在大型软件协作开发中至关重要。本文中设 计了一个软件工程管理系统,它

4、由项目管理系统、Bug管理系统和用户认证系统 三部分组成,利用这个系统,开发者和项目管理者可以更好地了解到整个项目的 工作情况,对整个项目过程进行有效地监控。 信息技术的飞速发展,使软件产品应用到社会的各个领域, 软件产品的质量 自然成为人们共同关注的焦点。软件开发商为了占有市场,必须把产品质量作为 企业的重要目标之一,以免在激烈的竞争中被淘汰出局。 进行软件测试是质量控 制的必要步骤,建立起一套有效的自动测试系统,在软件的开发过程中对软件经 常地进行测试,这对软件的开发过程具有非常重要的意义。 最后,组件化的程序设计方法对于软件项目的开发也有着不少的帮助, 采用 组件技术,可以带来软件模块二

5、进制级的复用。 近几年来,组件在软件开发中得 到了广泛的应用,尤其是J2EE和.NET技术将组件应用于In ternet,进行各种事 务处理,显示出了强大的功能。本文将对组件技术和基于组件技术的软件工程学 方法进行简要介绍。 2. 基于CVSC具实现软件配置管理 对于一个软件企业或者一个软件开发团队来说,可能遇到过或者正在被版本 难以控制的问题所困扰。一个软件往往由许多的模块组成, 在不同的阶段(基础 功能、新增功能),很可能为了适应不同的环境(如不同的操作系统),并根据不 同客户的要求开发了特点各异的版本, 这些版本之间有大量的共享模块,以及属 于自己的模块。当最后将这些模块组装成系统的某个

6、版本时, 会发现所需模块版 本无法确定。 此外,还可能会有团队中并行开发引起的冲突问题。例如:编程人员A和B 共同修改同一个模块,两人经过几个昼夜的奋战之后,又都回存到服务器上,但 到了程序试运行的时候,才发现有一个人的修改被冲掉了,这会造成劳动力的严 重损失。 因此,需要在软件企业中实施软件配置管理,简称为SCM( Software Con figuration Man ageme nt )。SCM是一套规范、高效的软件开发基础结构,早 已被发达国家软件产业的发展和实践所证明是管理软件开发过程的有效方法。 SC刚以系统地管理软件系统中的多重版本;全面记载系统开发的历史过程;管 理和追踪开发过

7、程中危害软件质量以及影响开发周期的缺陷和变化;SCM对开发 过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更, 形成规 范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护 宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。 软件配置管理作为软件开发过程的必要环节和软件开发管理的基础, 支持和 控制着整个软件生命周期,同时对软件开发过程的宏观管理,即项目管理,也有 重要的支持作用。良好的配置管理能使软件开发过程有更好的可预测性, 使软件 过程具有可重复性,使用户和主管部门对软件质量和开发小组有更强的信心。 若 要有效地实施软件配置管理,必须要培养软件开

8、发者的管理意识, 结合开发组织 的实际情况制订出相应的配置管理规范,由开发人员依据规范,通过专业化的配 置管理工具来实现。 在这里,基于CVS工具实现软件配置管理,对文档和源代码进行访问和版本 控制。CVS(Concurrent Versions System ,并行版本系统)是基于 TCP/IP 协 议的版本控制工具,也是当前 Open Source中最重要的开发工具之一。CVS是典 型的Client/Server 结构的软件,它分为服务器端和客户端两部分,不过大多数 CVS软件中将它们和二为一了。在 CVS服务器端包含一个仓库(repository ), 用于存放处于版本控制下的所有目录和

9、所有各种版本的文件,它保存了对项目源 码每一次改动的记录,和改动的一些注释。CVS会完成对仓库的查询和更新,在 任何时候,你都可以找到仓库中任何文件的任何版本。它容许几个人同时工作在 同一个文件,在他们提交文件时来合并他们所做的修改。在修改冲突时会发出警 告来通知用户,是否确定将此文件的更新版本放入仓库内, 并且是否由某人解决 发生的冲突。 使用CVS最基本的开发流程如下所述: 某个用户把他的所有代码导入(import)到CVS中,生成一个新的模块, 然后其他人可以导出(check out)源码树的一个工作拷贝;每个人都工作在自己的本地计算机中,当源码树发生了改变,例如增添 了一个新的功能时,

10、他们必须更新(up date)他们的本地拷贝来保持和 当前版本同步。他们也会提交(commit)他们改变的文件到仓库中以生 成新的软件版本。 在提交时出现的问题CVS都会产生警告,然后用户必须仔细检查出问题 的文件并手工解决冲突。在文件中,改动的部分会在前面以“” 显示,并且列出两个版本的不同之处。由用户来决定是删除旧版本还是 做一些相应的修改。 Win CVS 是CVS的一个客户端软件,它运行在 Win dows上,用来在 Win dows 上登录CVS服K务器,然后进行一些CVS相关的操作与管理。由于当前很多的企业 内部都采用Lin ux/U nix做为服务器,用 Win dows做客户端

11、,所以,Win CVS与在 Linux上配置的CVS服务器配合使用将组成强有力的版本控制与管理的系统。 Win CVS的一些常用功能包括配置、登录、文件上传、文件下载、编辑文件、 文件比较、更新本地文件、合并文件、添加文件、删除文件、创建文件标签、查 看文件状态等等。 其中,WinCVS提供了修改后提交(commit)的功能,用户从服务器端拷贝 文件的某个版本,在本地修改后利用 commit命令即可将最新的文件保存到服务 端,并且文件版本号会自动加1。 当一个开发者试图commit某一修改的文件时,通常会发生如下两种情况之 对于此修改的文件,如果 CVS在库中没有检测到新的版本,那么直接 co

12、mmit,就可在库中产生一新的版本; 警告 如果CVS在库中检测到新的版本(比如多个人同时对相同的文件进行修 改,在你之前已有人将他的修改 commit而产生了新的版本),那么CVS 此时将给出警告并中断commit操作。 对于第二种情况,在CVS中断了 commit操作后,必须调用更新本地文件命 令up date,而调用up date命令后,会有两种情况发生,一种是不带冲突,另外 是带有冲突。冲突的产生是由于多人在修改同一个文件的时候修改了文件中的相 同的地方(如某一行)。在CVS中冲突几乎很少发生,而一旦发生了冲突,很大 的原因可能是开发小组的开发成员之间没有协调好。另外对于冲突需要强调一

13、 点,所谓的冲突仅是文本性的,而非逻辑性的。 对于不带冲突的情况,在执行up date命令将本地版本与服务器上的新版本 合并以后,直接执行commit命令就会完成提交操作。而对于带冲突的情况,则 需要手动地进行修改。例如文件 xlmage.h在库中的版本为1.4,文件内容为: while(1) i+; 本地的xImage.h版本为1.1,假设我们做了如下的修改 while( I 0) i+; 那么在执行up date命令之后,文件图标如图1所示。从图中可以看出版本号已 为库中版本号,文件状态为Conflict ,修改时间改为Result of merge,这说 明发生了冲突,我们打开文件,文件

14、内容如下: xImage.h while(i 1.4 在此CVS用虽调修改的相同部分,剩下的事情就看 用户怎么办了。在去掉这些标志,并改成所需要的文件之后,就可以进行commit 了。这时版本号又将升一级。 Name 1 Rev. 1 Option 1 Status 1 Tag 1 Timestamp JconBC Folder Foltter ILlqethostname Folcfer qetmckname Folder hostnet FoltJer Folder lrjonblock Folder SJooe Folder Fgldar Fdidar 0 Fl .tfxlmags.h.

15、kZ NOrtCVS File COMAC菜单正式 I.IJ.I kb Binary Fri Det2Q07;lB;4e 2O012 l.l -kb Binary fri Det20 07;9;l0Q2 號也t 1.11 File Moti Dec 23 M;3J; 043002 贰网 oob.txt 1.36 -kb Binary Wed Decs M;57;3(2 3302 readme, tsci 1.3 kb Binary Thu Dec M;37;3D2M2 sources 1.20 File Thu Dec 36 11;3S;52 2M2 nIC Image.h 1.4 Confl

16、ict Result cF merge 图1 Win CVS中对于带冲突的文件显示 CVS中还提供了分支功能,分支是基于软件的版本稳定性和开发的延续性考 虑的。一个软件产品会有一个比较稳定的版本(一般是正式发布版),这个版本 之前是不稳定的,而之后要对它继续开发,新的功能不断加入,问题也肯定不断 出现,在加入新功能的版本还没有比较稳定之前,这时用户可能对开发者提出要 求(比如发现了发布版中的问题要求修改),此时就应该进行分支。举个例子来 说,假定某一软件的1.0发布版已完成,开发者正在继续开发过程,计划在2 个月后发行1.1的版本。然而在不久以后,用户开始抱怨说1.0版的代码有些问 题,开发者

17、检查了一下1.0的发行版,并且找到了这个错误。但是,当前处于开 发中的版本处于一个不稳定的状态, 并且在下一个月才能有希望稳定下来。 这样 就没有办法去发行一个最新的现有版本去更正问题。这时就可以去创建基于这棵 版本树1.0版的分支,可以修改这棵树的分支而不影响到主干。当修订完成时, 开发者可以选定是否要把它同主干合并或继续保留在这个分支里。 CVS允许你独立出一个派生的代码到一个分离的开发版本。当你改变一个分 支中的文件时(修改了一些BUG,这些更改不会出现在主开发版本和其它分支 版本中,而这些BUG在主干(或叫主开发版本)中肯定存在(可能在别的分支中 也存在),那么就必须在主干中也要对这些

18、 BUG行修改,这就增加了额外的开 销。在CVS中,可以使用合并(merging )把这些变更从一个分支移动到另一个 分支(或主开发版本)。 综上所述,利用CVS的 commit可以解决并行开发中的冲突问题,实现有效 的访问控制;利用CVS中的分支和合并可以实现对软件灵活有效的版本控制。CVS 为软件开发的配置管理提供了一个可靠的工具。 3. 用软件工程管理系统实现软件项目过程管理 在软件项目的开发过程中,会存在资源变化频繁的问题。某些开发人员在软 件项目开发的过程中离去,由于他负责使用或维护的文档或者资源不完善,使得 后续人员接手他的工作时困难重重, 造成开发过程的停滞;由于没有控制好软件

19、变化过程,消耗了大量人力物力,导致项目严重超期、预算超支;项目经过了几 次大改动,几乎记不起原来是什么样子了,或者说,根据用户提出的多次变更要 求更改后的成型软件,与用户的需要相距甚远;软件变化未经控制进入开发或维 护活动之中,引入更严重的问题,例如某程序员未经正常的软件变化申请,自行 修改软件中的某一错误,虽然局部错误是改正了,但由于没有考虑到局部改动对 全局的影响,使得整个系统不能正常工作。 为了减小资源变化频繁问题对软件项目的影响, 更有效地控制软件质量,需 要对软件项目过程进行监控。这里设计了一套软件工程管理系统, 它主要针对于 软件生成过程的管理和软件质量控制。 这个系统包括以下三个

20、部分:任务管理系 统、Bug管理系统和用户认证系统。这个系统应当具有 Browser/Server的结构, 用 html、JSP和 SQL Server 实现。 3.1任务管理系统 任务管理系统主要用于软件生产的过程管理,对软件生产进行模块化管理, 并将软件产品生产的工作细化为不同的任务,比如代码实现、程序测试和文档写 作等;这样的系统便于细化工作,明确工作目的,同时也便于管理者对生产过程 进行管理,能够有效地把握产品的开发进度。 该系统从软件生产的特点出发,针对软件生产的特点进行设计。在该系统中, 最大管理单元是项目,最小管理单元是任务,在项目和任务之间有模块,这样的 划分能够使项目执行更加

21、有效。在任务之下有所有的具体工作记录,包括 Checkin (工作提交)、BugFix( Bug修复)、Comment(相关注释和评论)等。通 过项目能从整体上把握项目的执行情况,通过模块划分明确产品的结构和分工, 通过任务能明确具体工作的目标, 便于工作开展,通过记录反映具体的工作。这 种结构也便于项目的逐级管理,即项目有项目负责人,模块有模块负责人,任务 有任务负责人,实行单人负责的策略,管理范围由大到小、由整体到细节;并且 在项目执行过程中可以随时对项目、 模块、任务进行调整。需要注意的是该系统 为每个项目、模块都会生成一个相应的管理任务 (项目管理的任务、模块管理的 任务),强调了管理

22、工作在软件开发过程中的重要性;在任务管理系统中明确地 提出管理任务,便于管理人员在项目执行过程中进行管理。 另外,在任务管理系统中包含了一个周报告子系统,工作人员可以在周报 告中提交每一周的工作情况,工作计划等,并在系统中做记录,方便工作者记录 和汇报自己的工作情况和下一阶段的工作安排; 并提供周报告查询功能,同时系 统还可以对各个周报告进行汇总,以便管理者查阅。 这个系统中主要实现的功能包括:创建项目、查询项目、创建模块、查询模 块、创建任务、查询任务、提交多种记录、查询记录、提交工作报告以及系统管 理等。 任务管理系统用于记录、跟踪和管理项目开发的每个过程、 报告工作的进展 情况和帮助公司

23、的管理和决策人员对资源进行合理分配。通过管理系统对软件工 程项目的管理,可以避免软件公司因为人员的流动对公司造成的巨大损失。同时 因为管理系统记录了项目的详细过程信息, 也为项目以后的升级和完善提供了宝 贵的可供查询的第一手资料。 此系统应该具有如下的特点: 项目分级管理:将一个项目分解为小的模块,再将模块分解为具体的任 务,通过逐层细化,将工作落实到个人; 以任务为中心:整个系统的最终管理归结为人与任务的一一对应,明确 责任; 任务分类:按照任务的性质进行分类,同一个任务又可以通过从管理任 务、开发任务、测试任务到文档任务进行不同的任务分工; 记录细节:将与整个项目开发中相关的每一条信息记录

24、到系统中,产生 一个包括完成项目过程和记录的报告,这就是一份可供查询的,记录整 个开发过程的原始资料; 工作汇总:通过周报告子系统及时反映所有人员的工作进展和完成情 况,以便对人员进行评估; 项目控制:可以实时了解整个项目的完成情况和所有人员当前负责的具 体工作; Email自动发送:项目系统中任何一个添加和更改操作都会同时通过 Email告知相关人员。 3.2 Bug管理系统 Bug管理系统主要用于对软件的Bug进行管理,是软件测试和软件开发的工 程管理工具,这对提高软件产品的质量至关重要。Bug管理系统能实时反应出Bug 的出现、确认、修复、验证等各个阶段的情况。 软件产品中存在Bug是正

25、常情况,没有Bug的软件是不存在的。软件的规模 越大,Bug出现的机会就越大,Bug的数量也就越多,如果开发人员难以对付这 些成百上千的Bug,那么软件的质量就很难得到保证。为了有效地管理 Bug和修 复Bug,需要一个强大的工具对软件中的 Bug进行科学有效的管理。 Bug管理系统是存储、处理Bug的工具,也是开发人员,测试人员交流讨论 的场所,同时也是项目管理、工作评定的重要工具。Bug管理系统主要用于提交 Bug,并记录每个Bug的变化过程。每一个Bug都有负责人,或者可以被指定一 个负责人对其进行修复,这样有利于及时地处理Bug;如果软件产品的每一个Bug 都严格地利用Bug管理系统管

26、理,随着系统中的Bug一个一个被清除,产品也将 一止一步走向健壮。 Bug管理系统应具有如下的特点: Bug的流程控制:对一个软件中的 Bug进行从提交、确认、修复、测试 到最后关闭整个过程的管理; Email自动发送:Bug管理系统中任何一个添加和更改操作都要同时通 过Email告知Bug的负责人及相关人员,提醒大家对此 Bug的关注; 定期Bug汇总:根据条件产生统计报表,并可以通过图表的方式来描述 在一个时期内,Bug的增加和修复情况,这为产品的开发和控制提供了 依据; Bug提醒:将Bug管理系统中的Bug按照级别进行划分,定期发送给每 一个Bug的所有者和它的部门负责人,提醒Bug的

27、所有者及时修复Bug。 3.3用户认证系统 用户认证系统用于对整个系统中的用户进行统一管理,包括注册用户、为用 户发放其他系统使用许可等功能;还可以存放员工的其他信息,比如简历等等。 使用用户认证系统,可以管理整个系统中的用户,即用户只需要注册一次, 在获得其他系统的使用许可以后,就可以使用其他系统(例如CVS服务器登录权 限、项目管理系统和Bug管理系统),不必为每一个系统都注册用户。这样使得 用户管理更加集中、方便。 用户认证系统主要包括用户注册、用户授权、组管理、部门管理、系统管理 等功能。 4. 进行有效的软件测试工作 软件测试的基本过程是通过对软件功能的实际使用,观察使用的实际效果,

28、 然后把实际结果和期望值进行比较, 找出它们之间的差距。整个的软件测试过程 可以大致分为两部分: 设立期望值。软件应该具备的功能,实际上在编程之前就确定好了。 软件设 计可以理解为设立软件的期望值。对于测试人员来说,根据软件设计文档和用户 手册,可以整理出具体的,细化的期望值。这些期望值是评估软件质量的标准、 依据。这也附带说明了文档的重要性。 获得实测值。通过在特定的条件下运行软件,采集运行结果。然后把结果和 期望值进行比较,产生测试报告。通常讲的软件测试主要是指这部分的工作。 对于大型软件项目来说,其软件测试项目包含的具体任务大致有以下这几 项。 1. 建立自动测试运行体系 对于一个稍具规

29、模的软件,自动运行测试程序是必不可少的。因为测 试程序的代码量远远大于被测程序的代码量,不可能采用人工运行测试, 比较结果。自动测试体系的主要功能是运行测试程序,收集运行结果,把 结果和标准答案比较,并最后产生测试的结果和bug报告。 2. 设计测试方案 首先要建立测试环境。有些时候建立测试环境是一件很困难的事情, 例如网络环境,和某些极限环境,例如测硬盘溢出时的处理情况,设置线 程之间的竞争条件,等等。 在设计测试时,一般是根据“假定环境正确”的原则。要测一个程序, 需要假定测试程序中的辅助部分是正确的。例如测文件read()时,假定 open(),close()都是好的。否则的话在测试程序

30、中对于 open()和close() 的结果要检查,要处理文件打开有误的各种意外情况,使得测试程序非常 臃肿,读起来使人不得要领。 设计测试方案时还需要考虑结果的测量方法。一般情况下收集程序的 输出结果就够了,这样做也比较容易。但是有些测试的结果是很难测量的, 例如要测一个程序占用内存大小的峰值。 3. 设计测试情况 这是测试工作的主要部分。一般来说,一个软件不可能被“彻底”测 试。只能是尽量涵盖常用的功能和运行条件。 常用的测试情况设计思路为:首先考虑正常条件下正常工作,其次是 错误条件下正确处理,包括给出相应的错误码和错误信息。但是,考虑到 软件的效率和复杂性,并不是每一种错误都必须处理。

31、所以软件手册里可 以说明在某些输入条件下,结果不可预见,或者引起软件崩溃。其中,由 于边界是软件容易出错的地方,所以要特别注意进行边界测试。例如整数 中的0和65535,指针中的空指针和指到无效地址的指针等。以上所述为对程序进行正确性测试,通常还要进行性能测试,例如系统的响应时间,容 量等等。极限测试也很重要,例如,系统内最多可创建多少个进程,应用 程序最多可以使用的内存等等。 4. 编写测试程序 设计了测试情况之后,就可以编写测试程序。这是测试程序库的主要 来源。需要一支测试队伍,系统、全面、深入地编写测试程序。 5. 测试的运行 运行测试的方法可以分为人工运行和自动运行两种。 在不少情况下

32、人工测试是不可避免的。例如收集标准答案时,要人工 检查是否符合预期的值,如果符合预期值,就保存起来作标准答案。 有些程序有特殊的运行环境,例如人机交互方式,需要操作某些外部 设备。最常见的是有图形界面的程序,很难进行自动测试。 真正有用的是自动运行。测试程序通常都和 daily build相连,例如 每天build两遍,从源程序开始build ,然后运行程序获得报告,这等于监 护源程序,因此只有自动运行才能满足测试周期短的要求。 还有的时候需要子集运行,测试程序特别多的时候有可能运行较长时 间,在某些情况下每次只能运行一个子集。 6. 测试的结果和Bug报告 最常见的测试结果是测试报告:列出成

33、功,失败统计报表,失败详情, 输入情况,出错现象等。 有时候根据测试结果要立即采取行动。紧急情况要紧急抢修,关闭源 程序树,停止改动。解决两个纠缠在一起的问题比单独解决它们更难,因 为那样将无法发现新问题。所以要避免在一个有问题的系统上进行改动和 开发新程序。 测试队伍担负着质量纠察队的角色,测试中发现新问题时,要登录bug, 填写bug报告,并要跟踪此bug的解决情况。测试人员要对最终发布产品 的质量负责。 5. 组件技术以及基于组件技术的软件工程学方法 也可以运行在不同的机器 在理想的情况下,每台机器的运 按照组件化程序设计的思想,复杂的应用程序被设计成一些小的、功能单一 的组件模块,这些

34、组件模块可以运行在同一台机器上, 上,甚至可以运行在跨越太平洋的两台机器上。 只有组件程序遵守了这些共同的 行环境可以不同,甚至可以是不同的操作系统。为了实现这样的应用软件,组件 程序和组件程序之间需要一些极为细致的规范, 规范,软件系统才能正常运行。为此0M( Object Management Group,对象管 理组织)和 Microsoft 分别提出了 CORB(Com mon Object Request Breaker Architecture ,公共对象请求中介体系结构)和 COMComponentObject Model, 组件对象模型)标准,目前CORB模型主要应用于UNIX

35、操作系统平台上,而COM 则主要应用于Microsoft Windows操作系统平台上。 随着In ternet时代的到来,COM技术已经应用于越来越多的分布式系统当 中。COMffl范具有如下的一些特点。 语言无关性:这是指coMSi范的定义不依赖于特定的语言,编写组件对 象所使用的语言与编写客户程序使用的语言可以不同,只要它们都能够 生成符合COM规范的二进制代码; 进程透明特性:COM所提供的服务组件对象在实现时有进程内对象和进 程外对象两种进程模型,如果是进程内对象,则组件在客户进程空间运 行,如果是进程外对象,则组件运行在同一机器上的另一个进程空间或 者在远程机器的进程空间中,但这种区别对于客户来说是透明的,这就 是COM勺透明特性; 可重用性:COM的可重用性是建立在二进制代码级的,与C+4中所说的 可重用性不同,它使复杂的系统简化为一些简单的对象模块; 对于使用组件的集成开发者而言,一个组件就是一个接口集,只有通过接口 才能与组件进行通信;而对于组件来说,接口是包含一个函数指针数组的内存结 构,每个数组元素的内容是一个由组件所实现的函数地址。在一个应用程序中, 起决定作用的是组件的接口而不是组件本身。 只要组件的接口保持不变,组件可 以任意升级或更换,而应用程序不必做任何修改。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论