信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1728|回复: 0
打印 上一主题 下一主题

[推荐]复用的基本概念

[复制链接]

该用户从未签到

升级  30.8%

跳转到指定楼层
楼主
发表于 2006-3-31 14:33:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<h2 style="MARGIN: 13pt 0cm;"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial;"></span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; mso-hansi-font-family: Arial;"><p></p></span>&nbsp;</h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用可以有效地节省软件开发成本,提高软件质量。本章介绍了在本文后面用到的复用的基本术语和概念,并解释了制定这套标准的实际目的,为读者理解软件复用的收益和挑战提供了一个参考性的框架。</span></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">1. </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">有关的术语定义</span></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: 0cm;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">下面是这套标准中使用的关键术语的简要定义:</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用</span><span lang="EN-US"><font face="Times New Roman">(Reuse)</font></span></b><span lang="EN-US"><font face="Times New Roman">—</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在一个新的语境</span><span lang="EN-US"><font face="Times New Roman">(context)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">中(同一系统的其它地方或另一个系统中)使用已有的软件构件。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可复用性</span><span lang="EN-US"><font face="Times New Roman">(Reusability)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件构件可以被复用的程度或范围</span><span lang="EN-US"><font face="Times New Roman">(extent)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。遵循一个适当的设计和编码标准将增强构件的可复用性。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可复用软件构件</span><span lang="EN-US"><font face="Times New Roman">(RSC)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可以被复用的软件实体;它可以是设计、代码或软件开发过程的其它产品。</span><span lang="EN-US"><font face="Times New Roman">RSCs</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">有时称为“软件资产”</span><span lang="EN-US"><font face="Times New Roman">(software assets)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用者</span><span lang="EN-US"><font face="Times New Roman">(Reuser)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用</span><span lang="EN-US"><font face="Times New Roman">RSC</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的个人或组织。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可移植性</span><span lang="EN-US"><font face="Times New Roman">(Portability)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">原来在一台计算机和操作系统上开发的软件构件可以在另一台计算机和(或)操作系统上使用的程度。若构件可移植性好,则它的复用潜力就大。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">领域</span><span lang="EN-US"><font face="Times New Roman">(Domain)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">指一类相关的软件应用。领域有时可划分为“垂直的”</span><span lang="EN-US"><font face="Times New Roman">(vertical)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">和“水平的”</span><span lang="EN-US"><font face="Times New Roman">(horizontal)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">。“垂直的”领域包括某个应用范围内的所有开发层次(如</span><span lang="EN-US"><font face="Times New Roman">MIS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">领域),而“水平的”领域则指一种特定类型的、不限于某类应用的软件过程(如对堆栈的操作)。一般来说,构件在同一个领域中复用的潜力较大。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">领域分析</span><span lang="EN-US"><font face="Times New Roman">(Domain analysis)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对一个选定的领域进行分析以标识出其中通用的结构和功能,目的是提高复用的潜力。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">构件库</span><span lang="EN-US"><font face="Times New Roman">(Library)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可复用软件构件的集合,包括向用户提供构件时所需的过程和功能。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">检索系统</span><span lang="EN-US"><font face="Times New Roman">(Retrieval system)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">支持可复用软件构件分类和检索的自动化工具。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件生命周期</span><span lang="EN-US"><font face="Times New Roman">(Software life cycle)</font></span></b><span lang="EN-US"><font face="Times New Roman"> —</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件系统在开发和配置时所经历的一系列阶段。尽管不同项目在具体阶段上会有差别,但通常都会包括下列阶段:需求分析、设计、编码、测试和维护。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">2. </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用的优越性</span></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用可以提高软件生产率并减少开发代价,还可以提高软件系统的质量。具体来说,可以归纳为下列五个方面:</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><font face="Times New Roman">1)<span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">提高生产率。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用最明显的好处在于提高生产率,从而减少开发代价。生产率的提高不仅体现在代码开发阶段,在分析、设计及测试阶段同样可以利用复用来节省开销。用可复用的构件构造系统还可以提高系统的性能和可靠性,因为可复用构件经过了高度优化,并且在实践中经受过检验。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><font face="Times New Roman">2)<span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">减少维护代价。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">这是软件复用另一个重要的优越性。由于使用经过检验的构件,减少了可能的错误,同时软件中需要维护的部分也减少了。例如,要对多个具有公共图形用户界面的系统进行维护时,对界面的修改只需要一次,而不是在每个系统中分别进行修改。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><font face="Times New Roman">3)<span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">提高互操作性。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用一个更为专业化的好处在于提高了系统间的互操作性。通过使用接口的同一个实现,系统将更为有效地实现与其它系统之间的互操作。例如,若多个通讯系统都采用同一个软件包来实现</span><span lang="EN-US"><font face="Times New Roman">X.25</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">协议,那么它们之间的交互将更为方便。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><font face="Times New Roman">4)<span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">支持快速原型。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用的另一个好处在于对快速原型的支持,即可以快速构造出系统可操作的模型,以获得用户对系统功能的反馈。利用可复用构件库可以快速有效地构造出应用程序的原型。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><font face="Times New Roman">5)<span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">减少培训开销。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用的最后一个好处在于减少培训开销,即雇员在熟悉新任务时所需的非正式的开销。如同硬件工程师使用相同的集成电路块设计不同类型的系统,软件工程师也将使用一个可复用构件库,其中的构件都是他们所熟悉和精通的。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">3. </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用的维</span><span lang="EN-US"><font face="Times New Roman">(Dimensions)</font></span></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用有多个维,可从不同角度对复用进行划分。</span><span lang="EN-US"><font face="Times New Roman">NATO</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用标准用以下方式对复用进行了分类:</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">组装式</span><span lang="EN-US"><font face="Times New Roman">(Compositional)</font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用与生成式</span><span lang="EN-US"><font face="Times New Roman">(Generative)</font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">也可以称为产品复用与过程复用。组装式方法利用库中的底层构件自底向上地开发系统,关键是要解决构件的分类和检索技术,以及开发出一个自动化系统以支持组装过程。生成式方法是特定于应用领域的,它采用标准的领域构架</span><span lang="EN-US"><font face="Times New Roman">(architecture)</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">模型(即类属的构架)和一致的构件接口,目的是根据一个适当的参数规约生成新的系统。(目前在商业软件中使用的第四代生成语言</span><span lang="EN-US"><font face="Times New Roman">[4GLs]</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">可以被认为是生成式复用的一个例子。)这种方法在成熟的领域中非常有效,但在开发初始模型时需要很大的努力。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">小规模复用与大规模复用。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用的另一个维是可复用构件的规模。小规模复用(例如使用数学函数库)现在已得到了广泛的应用,但个别的复用节省的代价并不大,必须要普遍地复用才能获得收益。大规模复用针对的是整个子系统(例如飞机导航或消息处理子系统),这时个别的复用即可获得很大的收益,因为复用了成千上万行代码。但是对一个特定的大构件来说,复用的机会是非常有限的。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">原样</span><span lang="EN-US"><font face="Times New Roman">(As-is)</font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">复用与带修改的复用。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">构件既可以原样复用,也可能需要修改。一般来说,可复用构件应设计得比较有弹性,例如可以设计成参数化的构件,但为了满足复用者的需求,适当的修改也是必要的。易修改性(软件构件易于修改的能力)是可复用软件中尤为重要的性质。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">通用性与性能。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">在构件的通用性与性能之间常常存在折衷。设计得通用和灵活的构件常常包括为了支持通用性而增加的额外开销。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><h3 style="MARGIN: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">4. </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">实现复用的困难</span></font></h3><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用需要改变传统的软件开发方法。为了达到完全的收益,就得克服下面一系列挑战:</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">识别复用机会。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">识别复用机会是一个主要的技术问题。软件工程师可能知道类似的软件已经编写过,但如何找到它是一个问题。复用库有助于解决这个问题。当找到一个构件时,可能很难判断它是否真的满足自己的需求,要进行修改也是很困难的。不少看上去可复用的软件实际上是不可复用的,因为它可能有不适当的接口、隐含的依赖、不可改变的功能限制等,或者仅仅是由于它难于理解而使得复用者宁愿重新开始开发。</span><span lang="EN-US"><font face="Times New Roman">NATO</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的软件复用标准有助于避免这些问题。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">投资。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">制作可复用软件通常比开发一次性的系统需要更多的投资,这些投资包括使得软件更具有弹性、保证它的质量、提供所需的额外文档等。每个组织必须决定如何支持这项投资。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">“</span><span lang="EN-US"><font face="Times New Roman">Not Invented Here</font></span></b><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">”(不是自己发明的)综合症。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">开发者常常不愿复用别人的软件。软件工程师喜欢创造性的劳动,复用软件时就会感到创造性的消失。有效的管理、鼓励以及培训等措施有助于让工程师们将创造性的视角转向更大的“构造块”-可复用软件构件。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">评价和度量。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">对软件开发行为进行评价和度量总是很困难的,怎样才算是一个“好”软件?评价的标准很多。已经有一些比较有效的管理性方法,但在复用环境中这些传统的度量方法还需要修改,在这方面几乎没有什么经验。</span><span lang="EN-US"><p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.3pt;"><b style="mso-bidi-font-weight: normal;"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">合同、法律和所有权问题。</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">软件复用还受到大量关于合同、法律和所有权问题的影响。现在这种订合同的方式使得承包商不愿复用已有的软件或提供软件给别人复用,在对软件构件质量的责任和保证上也会引发法律纠纷,而且还应确定由谁来负责维护软件构件。</span><b style="mso-bidi-font-weight: normal;"><span lang="EN-US"><p></p></span></b></p>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 顶 踩
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

GMT+8, 2025-7-7 00:43

Software by Discuz! X3.2

© 2001-2013 SKIN BY DSVUE

快速回复 返回顶部 返回列表