




已阅读5页,还剩61页未读, 继续免费阅读
(计算机软件与理论专业论文)中国软件企业使用开源(oss)组件现状的经验研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 经验软件工程是一个新的研究热点,目前已经引起很多人的关注。在过去l o 几年,经验研究发展非常迅速,而且也逐渐变得成熟起来。目前国内从事这方面 研究的人还很少,所以我们首次采用经验研究的方法对中国的软件企业的组件复 用情况进行了研究。 在构建新系统时使用预制组件可以达到降低开发成本,缩短投放市场的时 间,提高软件质量,遵循业界标准等目的,这种方式越来越受到重视。近来,在 系统开发中使用开源( o s s ,o p e ns o u r c es o f t w a r e ) 组件逐渐流行起来。这种组 件有很多优点,例如可以免费获得源代码并且可以修改源代码。事实上,很多 o s s 组件具有很高的可靠性,高性能性和鲁棒性。另一方面,在系统中复用o s s 组件( 一般指外部组件) 在很多方面也存在一系列的挑战,例如从正确选择组件 到将组件成功地集成到系统中,再到测试选择的组件。此外,如果开发的系统要 重新发布或者在市场上销售,在选择和集成o s s 组件时,选择合适的开源许可证 很重要。 以前的很多关于基于o s s 组件开发的研究主要是理论研究( 特别是围绕如何 选择组件) 和一些关于业界的案例研究。最近,为了研究基于o s s 组件开发的实 际状况,一些研究者在欧洲三个国家进行了一项大范围调查研究。在中国,业界 越来越多地使用和部署开源软件,特别是软件平台,像l i n u x ,但是,国内关于 业界如何高效地复用o s s 组件的研究却很少。 为了研究国内软件企业在系统开发中使用o s s 组件的状况,我们设计了一项 基于问卷的调查。研究的主要内容在三个方面,也就是组件选择,开源许可条款 和系统维护,当然我们也研究了软件企业使用o s s 组件的动机问题。我们利用合 作关系从国内的软件行业协会获得了一份中国软件企业的名单。在调查的最后, 我们得到了4 3 家公司反馈的4 7 份已完成的项目的信息。调查结果表明,在定位 o s s 组件时,使用搜索引擎是最常用的方法。在评估候选的组件时,当地专家的 意见结合需求的满意度是最主要的决定因素。为避免法律方面的麻烦,公司在使 用o s s 组件时所采取的策略是使用没有许可证限制的组件或者将自己的私有代 码分别打包。有大约9 4 的组件需要修改b u g s 或者更改代码,但做这些修改基本 上不依赖于开源社区的支持。另外,尽管很多开发者认为与开源社区建立密切关 系对于系统维护很重要,但调查结果表明有很少的公司这样做。最后,关于使用 北京工业大学工学硕士学位论文 o s s 组件的动机问题,调查结果表明降低开发费用是主要的原因,另外o s s 组件 的高质量也是一个重要原因。 关键词经验研究;组件复用;开源( o s s ) 组件;开源许可证 a b s t r a c t a b s t r a c t e m p m e a ls o f t w a 而衄g i a e e r i n gi s an e w 代s e a r e hb r a n e kh 慨a n d 眦 r e s e a r e h e r sh a v eb e c o m ev e r yi n t e r e s t e di nt h i sa 吼ht h el a s td e e a d 鹤,i th a sb e e n g r o w i n gv e r yf a s ta n dh a sm a t u r e dc o m i d e r a b l y h o w 船, t h e r ea f ef e wr e s e a r c h e r s d e d i c a t e di nt h i sa r e ai nc h i n a a sf a r 蠲w ek n o w , w ea r et h ef i r s tt e a mt ol l 船 印1 p i r i c a ls t u d yt od or e s e a r c h 曲o l i tc o m p o n c n tr c l l s ei nc h i n e s e f t w a l ei n d u s t r y b u i l d m gn e w t t w a r es y s t e m sb yt n c - f 曲r i e a t e dc 0 衄p o n 蜘临i s 越i i 拖 i i c t i v cw a y t 0a 蜘l o w e rc o 鸡s h o r t e rt i m e - t o - m a r 量【c t ,h i g h e rq l l a l i t y ,a d l a e m n e et 0m d u s l a i a l s t a n d a r d se r e i th a sr e e f l yb e 4 7 , o m em o l ea n dm o 砧p o p u l a rt 0t e l l s e0 p e s o u r c e s o t h a r e ( o s s ) 咖础恤地i s y s t e md e v e l o p m e n t s u c h m p o n e n t so f f e rm a n y 缸l v 卸嘲,s u c h 部丘a n dc h a n g e a b l ec o d e i n d e e d , m a n yo s sc o m p o n e n t s r e c o 孕i i z e d 丘玎t h e i rh i g hm l i a b i l i 饥班d 研衄c e ,跚dr o b u s m e s s o nt h eo 也e rh a n d , 圮u 幽呜o s sc o m p 0 删m ( 缸d e l x t e m a l c 蛐p o n e n ti ng e n e r a l ) r a i s e 3 则蜘孥瞎i n 辩l t h l gt h er i g h tc o m p o n e n ta n dt os u c c e s s f u l l yi n t e g r a t ea n dt e s tt h e 辩l e e t e d m p m 敷i lha d d i d ,i ti si m p o r t a n tt o l e e ta n dm t c g r a t eo s sc o m p o n c n t 讹 p r o p e rl i c 黜,f f t l a ed e v e l o p e ds y s t e mi sg o i n gt ob cd i s t r i b u t e d 盯l dt 0t h eg e n e r a l n 姐e k 吮 m a n yp | 譬肌s t u d i 船o fo s s - b a s e dd e v e l o p m e n t 躺b a s e do nt h 伽幡c i c a l p r o p o s a l s ( e s p e e i a l l y 盯o u n dc o m p 咖t l e e t i o n ) a n di n d u s t r i a lc a s t u d i 船o n e m a j o rs u r v e yh a sb e e np e r f o r m e dt 0i n v e s t i g a t et h es 乜t c _ o - p m 曲o f o s s - b a s e d d e v e l o p m e n ti nt h r e ee u r o p e a nc 0 岫曲e s a l t h o u g hc h i n ah a sb e c , o m cam a j o rl l c t o f t oe m p l o y0 $ ss o n w a j ni n c l u s 扛y , e s p e c i a l l yr e g a r d i n g t t w a r ep l a t f o r m sl i k e l m u x , l i m er e s e a r c hh a sb e e n 刚涮o n 恤e l a a l l e n g 韶o f e 伍c i 龃t 峨o f o s s c o m p 叫础i nc h i n e s e f t w a r ei n d m t r y o u rq u e s t i o i m a i r e - b a s e ds u r v e y 矗 c u s 船o nt h r e em a i ni s s u e s i nr e u s i n go s s c o m i 翮搬i t sf o f t t w a r ed c v e l o p m 锄t i nc h i n e s e f t w a r e i n d u s t r y ,m e l y c o m p o 删t 辩i 6 ,f i c e m i n gt c 皿s ,a n ds y s t e mm a i n t e n a n i na d d i f i o n w ea l s o i n v e s t i g a t e dt h em o f i v 如o fr e u s i n go s s m p 0 n t si ns y s t 锄d e v e l o p m e n t w e b j w eu s e dm e m b e r s h i pf i s t s 丘眦an a t i o n a lc h i n e s e 脚a r eo r g a n i z a t i o n ( c s of - o r h o mt o 扯址e 、r e 衄a l m o s tr e p r e - - n t a t i v es u b s e to f f h a 坞蛐p a n i w eh a v e 掣:i h 硎i n f o r m a t i o nf r o m4 7f m i s l a e dp f o j e , z t si n4 3 m p a n i 髑t h er e s u l t ss h o wt l i n t 北京工业大学工学硕士学位论文 u s eo fw e bs e a r c he n g i n e sw a st h em o s tc o m m o nm e t h o dt ol o c a t e0 s sc o m p o n e n t s l o c a le x p e r t i s ec o m b i n e dw i t hr e q u i r e m e n t sc o m p l i a n c ew a st h em o s td e c i s i v e f a c t o r si nd e c i d i n gu p o na l li d e n t i f i e dc o m p o n e n t t oa v o i dl e g a le x p o s u r e ,t h e e n m l n o ns t r a t e g yw a st ou s ec o m p o n e n t sw i t h o u tl i c e n s i n gc o n s t r a i n t so rt op a c k a g e p r o p r i e t a r yc o d es e p a r a t e l y a b o u t8 4 o f t h ec o m p o n e n t sn e e d e db u gf i x i n go ro t h e r c o d ec h a n g e s ,r a r e l yr e l i e s0 1 1s u p p o r tf r o mt h eo s s c o m m u n i t y i na d d i t i o n , c l o s e p a r t i c i p a t i o nw i t ht h eo s sc o m m u n i t yi ns o - c a l l e do s sp r o j e c t sw a sr a r eo nm o s t i s s u e s ,a l t h o u g hm o s td e v e l o p e r sm e a n tt h a tt h i sw a si m p o r t a n t a b o u tt h em o t i v a t i o n o fr e u s i n go s sc o m p o n e n t s , t ol o w e rc o s ti st h em o s ti m p o r t a n ti s s u e i na d d i t i o n , o s s c o m p o n e n t sw e a l s or e c o g n i z e dh i g hq u a l i t y k e y w o r d s 叩i r i c a ls t u d y ;c o m p o n e n tr e u s e ;o s sc o m p o n e n t ;o s sl i c e n s e 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 关于论文使用授权的说明 珈7 彳,2 , 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:塑垫塾至 导师签名: 第1 章绪论 1 1 研究背景 第1 章绪论 经验软件工程是一个新的研究热点,目前已经引起很多人的关注。在过去1 0 几年,经验研究发展非常迅速,而且也逐渐变得成熟起来( 第2 章将详细描述) 。 目前国内从事这方面研究的人还很少,所以我们首次采用经验研究中的调查方法 对中国软件企业复用开源组件的情况进行了研究。 1 1 1 开放源代码运动 早在1 9 8 4 年,开发软件的有识之士r i c h a r dm a t t h e ws t a l l m a n ( 理查德马 修斯托曼,简称s t a l l m a n ) 提出了一个自由软件运动的计划软件程序员把 他们的产品( 软件及代码) 开放出来,让大家可以自由使用、复制分发、研究学 习。自由软件运动主要项目就是著名的g n u 项目,这一项目的宏伟计划是创造 一套完全自由、免费兼容于u n i x 的操作系统g n u 。1 9 9 1 年,芬兰大学生l i n u s b e n e d i c t t o r v a l d s ( 莱纳斯本纳第克特托瓦兹,简称l i n u s ) 在g n ug p l 许 可证下发布了他自己创作的操作系统内核,该操作系统内核被命名为 g n u l i n u x ,简称l i n u x 。1 9 9 7 年,美国电脑黑客e r i c s t e v e n r a y m o n d ( 埃里克嘶 蒂芬雷蒙德,简称r a y m o n d ) 在他的著作大教堂与市集( t h ec a t h e d r a la n d t h e b a z a a r ) i l j 一文中首先提出了开放源代码软件这个概念,并用一系列论文加以 描述和讨论。1 9 9 8 年2 月,r a y m o n d 成立开放源代码促进会( o s i ) ,提供了o s s ( o p e ns o u r c es o f t w a r e ) 的定义与认证。随着一些商业公司的加入,o s s 运动 的声势越来越大,发展速度越来越快。开源运动带来众多的非常优秀的项目,我 们比较熟悉的l i n u x 操作系统,a p a c h e 服务器,m y s q l 数据库,p h p ,p e r l 等 脚本语言。 开源运动对于中国软件业的发展来说是一个难得的机遇,我们应当利用自身 巨大的内需市场优势,建立一个自主、完整的软件产业体系。总之,中国软件产 业的发展决不能简单地“拷贝。印度的模式,而应走一条有中国特色的道路( 倪 光南) 。 1 1 2 复用技术 为了增大市场竞争力,许多软件开发商需要提高软件的开发速度,提高软件 北京工业大学工学硕士学位论文 的质量,降低开发成本。因此,复用成为满足这一目标的重要的技术。复用的概 念早在计算机科学产生之初就有了( 例如:复用指令序列) ,而且现在这个概念 已经被提升到组件级的水平( 例如:某个组件可以很容易地以较低的费用与其它 组件集成在一起) 。组件可以是由自己本地开发的,也可以是从第三方获得的, 或者是由子承包商定制的。来自于第三方的组件主要有两种:商业成品组件 ( c o t s ,c o m m e r c i a l o f f - t h e - s h e l f ) 和开源软件( o s s ,o p e ns o u r c es o f t w a r e ) 组件。在将这两种组件集成到系统中时,一个主要的研究问题就是:在开发过程 中,有什么样的方法直接可以采用或者经过改编后可以采用,可以使组件成功地 集成到系统中? 基于组件的软件开发过程的研究已经有很长一段时间了,一些研究者和实践 者也提出了一些针对开发过程的解决方法,但是这些研究大部分是基于一些大型 航空项目或者相似的大型项目,或者是基于案例研究,而经验研究的却很少。 1 1 3 基于0 t s 组件的开发 w h i t e h e a d 将组件定义为:一个软件组件是可执行软件的一个可分离的部分, 作为一个单元来说也是有意义的,可以与其它组件实现互操作,需要某种环境支 持,只能通过组件的接口来访问它,在进行了必要的安装和配置过程之后,它就 能以接口规定的方式来使用为了能与其它组件一起共同工作,必须能够得到其 接口的细节1 2 1 。组件可能是由内部开发的,或者是购买的商业成品组件( c o t s , c o m m 俄i a l - o f f - t h e s h e l f ) ,甚至可以开源( o s s ,o d s o u r c es o f t w a r e ) 组件。 ( 1 ) 商业成品组件( c o t s ) 的定义及分类 c o t s 的定义存在很多,目前,比较新的定义是由t o r c h i a n o 和m o r i s i o 给出的,他们将组件定义为 3 1 : 由本公司其它机构提供的,或者由其它公司提供的外部商业产品; 将集成到最终交付系统中; 不是商品,即:不是绑定在操作系统中的,不是由开发环境提供的,也不 包含在任何先前存在的开发平台中; 对于用户来说,组件的特征和进化是不可控。 根据不同的属性,我们可以将c o t s 分类,m o r i s i o 等人提出一些属性并 将其分为四类1 4 j : 来源:产品是从哪里获得的; 定制:产品在多大程度上需要定制: 绑定:组件是以何种形式交付给集成者或系统客户的; 角色:在最终系统中产品将呈现何种固有属性。 2 第1 苹绪论 ( 2 ) 基于c o t s 组件的开发过程 典型地,基于c o t s 组件的开发过程包含四个阶段: c o t s 组件的评估和选择; c o ,r s 组件的裁减; c o t s 组件的装配; 系统的c o t s 部分和非c o t s 部分的维护。 ( 3 ) 开源( o s s ) 组件 开放源代码软件给基于组件开发的组织提供了一种新的选择,像使用商业成 品组件c o t s 一样,项目开发者可以从供应商或者开源社区获得o s s 组件,并 且大部分以“黑盒( a s - i s ) ”方式使用,或者只做少量更改。虽然他们可以获得 组件的源代码,但开发者通常不需要修改源代码。如果提供组件的开源社区规模 比较大而且目前比较活跃,则使用者可以获得一些保障:软件更新频繁,合理的 质量保障,及时修改缺陷( b u g ) ,还有可靠的技术支持等。相比之下,虽然部分 c o t s 组件也可以获得源代码,但使用这种组件时也存在两个顾虑:未知的组件 质量和供应商长久可靠的支持嘲 尽管开放源代码软件也存在一些缺点( 例:缺少架构和设计) ,但o s s 组件 越来越多地被商业开发商采用然而,使用o s s 也存在一系列问题:从需求谈 判到组件选择再到组件集成 1 2 研究目的和意义 越来越多的软件开发组织开始放弃。一切从头开发”的传统开发方法,将目 光转向集成现有的o t s 组件( 包括c o t s 组件和o s s 组件) 使用o s s 组件的 好处是可以提高软件开发速度,降低开发成本,有更高的质量和更高的标准。然 而,在基于o s s 组件的开发中也存在一些风险和问题,为了使基于开源( o s s ) 组件的软件开发过程更顺利的进行,我们必须了解现在开发过程中存在哪些具体 的问题和风险,然后根据这些问题和风险提出相应解决方案,并将这些解决方案 应用于实际的开发过程。同时,我们还要对这些方案进行系统的评估,并提出对 产业业界有效的指导方针。本研究采用调查的形式从业界收集数据,并对数据进 行分析,提出了一些指导性建议。 北京工业大学工学硕士学位论文 1 3 国内外研究现状 1 3 1 国外研究现状 ( 1 ) 开放源代码运动的研究 开放源代码软件( o p e ns o u r c es o f t w a r e ,o s s ) 运动一一被称为开发软件的 新方法,它的出现和成功,对传统软件工程开发方法提出了一系列挑战。在大部 分开源项目中,开发者分布在全世界的各个地方,几乎或者从没见过面,他们唯 一交流合作的媒介就是互联网。他们通过普遍使用的基于文本方式的电子邮件交 流信息,通过版本控制系统( 例:c v s - - c o n c u r r e n tv e r s i o n i n gs y s t e m ) 存储开 发的源代码等。开源运动已经激起了社会科学家和软件工程相关人士广泛的研究 和兴趣,他们研究与开源相关的经济学上的,组织结构上的及其制度上的课题【6 j 。 首先,从经济学角度的观点出发,开放源代码运动可以分解为一系列的创新 过程:一种新的而且革命性的基于不受限制的访问源代码的软件开发过程,与此 相对应的是商业界传统封闭( c l o s e d ) 的和基于产权的开发方法【刀针对经济上 的这种创新过程,可以整理出三个比较重要的问题: 动机在没有任何报酬的情况下,为什么会有这么多开发者编写开放源 代码【9 】? 合作一一在缺少基于资产所有的等级结构的社区里,分布在世界各地众多 参与者如何有效地相互合作,生产出包含上百万行代码的程序 8 9 1 7 传播在微软强加标准或者更一般的所有权标准统治的情况下,开放源 代码程序如何传播的如此广泛? 其次,一些人比较关心社会学和等级结构方面的问题,他们从开源社区的参 与者扮演的不同角色出发,研究开源社区可能存在的等级结构。他们认为在开源 社区中虽然不存在严格等级结构,但由于参与者担任的角色不同,社区内的结构 也不是平坦的。很多人提出了类似“洋葱( o n i o n - l i k e ) 式”的由一系列同心圆 组成的层次结构,如图1 1 嘲所示。位于中心的是核心开发者;包围核心的外层 是维护者,主要负责一些项目的子模块;再外层有负责报告和修改b u g 的,还有 文档撰写者等;最外层是使用者。使用者是一个笼统的概念,其中有的使用者也 是项目的开发者,其他可能只是使用者 4 第1 章绪论 图1 - 1 开源社区的一般结构 f i g t n1 - 1t h eg e _ m a ls t r u c t u o f o p e ns o i 嗽o m m u n i t y 再次,其他人调查研究开源运动的制度方面,举例来说,把开源社区描述为 一个比较大生态系统来研究其行政上的组织,或者将开源社区与其它公共机构 ( 例:科学机构) 对比研究。 除此之外,还有一些人研究为什么开源软件有如此高的质量,开源软件是如 何进化的等等。这些研究的共同点都是从开源社区和其参与者角度出发来研究问 题。 ( 2 ) 基于o r s 组件的软件开发 在基于组件的软件工程( c b s e ) 中,有很多工作讨论如何使用c o t s 和o s s 产品,并且调查基于c o t s 开发系统中的现象 3 0 l 。其中在使用c o t s 和o s s 过 程中存在一个共同的最重要问题是:c o t s o s s 产品的获得,选择中存在的问题 和风险及对这些组件的评估过程。由于缺乏标准的且定义明确的c o t s o s s 产 品辨别、选择和评估方法,这导致很多组织做出了错误的选择。研究者提出了下 列一些存在的问题【1 川: 。一 产品的选择过程; 一种可定制选择产品的方法; 产品选择的搜索技术; 为了达到高效可靠选择过程,将可以利用的产品分类; 产品选择的工具; 产品评估的一般过程 尽管在一些研究论文和书中提出了很多关于基于组件的软件工程( c b s e ) 和 开源( o s s ) 的方法,但研究这些方法在实际中的应用的实践研究却很少。在2 0 0 4 年,一些研究者在挪威,德国和意大利的信息与通讯技术( i c t ) 产业内进行了 5 北京工业大学工学硕士学位论文 一项调查,调查的对象是基于c o t s o s s 组件的开发项目【1 1 1 2 13 1 。这份问卷也 将在中国软件企业内进行调查,以了解中国企业内部基于c o t s o s s 组件的开 发的实旌状况。除了这项调查之外,欧洲还有其它一些研究基于组件的开发的项 目。 ( 3 ) 其它欧洲和国际的研究活动 目前,在o s s 研究领域,欧洲有三个相互补充的研究项目,这些项目从不同 角度出发研究o s s 。表1 1 列出了这三个项目的简单对比。 1 3 2 国内研究现状 目前,国内对组件复用的研究主要集中在c o t s 组件【1 4 , 1 5 , t 日,对于复用o s s 组件的研究还相对较少。我们的此次研究主要是借鉴国外的一些研究经验,并结 合中国的实际情况运用调查研究的方法去研究问题。据我们了解,在软件工程领 域,这种研究方法在国内还是第一次使用。 表i - 1 开源项目的主要特征 t a b l e1 - im a r ef e a t u r e so f o s sp r o j e c t s 项目( p r o j e c t )类型( t y p e )角度( p e r s p e c t i v e ) 主要研究内容( f o c u s ) g u 哟s s s 们r e p 装配者( i n t e g r a t o r ) 为基于开源( o s s ) 组件的软件开 发扩展、传播并实践检验改进的指 导方针,目的是为欧洲的软件开发 提供帮助 c a l m r ec a 制造者( p r o d u c e r )协调一些研究,包括开源项目产 品、和过程的特征,异地式开发, 及敏捷开发方法 ( h t t o w w w c a l i b r e i e ) c o s p i as t r e p 最终用户目标是分析将开放数据标准 ( e n d - u s e r ) ( o d s ,o p e nd a t as t a n d a r d s ) 和 开源软件应用到欧洲公共行政部 门( p a s ,p u b f i ca d m i n i s t r a t o r ) 产 生的作用 ( h t t p 1 w w w c o s p a - p r o j e c t o r g ) 6 第l 章绪论 1 4 本课题的研究内容 本课题研究的核心是中国软件企业使用o s s 组件的现状。我们通过阅读相关 的参考文献,了解目前国际上对此研究领域取得的一些成果,并针对一些比较热 门且需要深入研究的几个方面,提出了我们的研究问题。我们的研究问题主要分 为以下四个部分: 首先研究软件企业在开发中使用o s s 组件的动机问题; 其次研究企业在定位和评估o s s 组件时使用了哪些方法; 接着是关于企业在使用o s s 组件后如何维护组件和系统i 最后研究的是与o s s 组件密切相关的开源许可证问题。 1 5 论文的组织结构 本文共分为6 个部分,各部分的主要内容如下: 第l 章主要介绍了本课题研究的主要背景和意义,讨论了目前国内外的研究 现状,接着指出了本课题的主要研究内容。 第2 章对经验软件工程进行了介绍,并介绍了研究经验软件工程的相关策略, 最后研究了国内外的研究现状 第3 章主要是调查设计,描述了我们研究的相关步骤,最后我们对实际调查 收集数据的情况进行了描述。 第4 章是主要描述了相关概念和研究内容,研究内容分为四个部分,使用组 件的动机问题,如何选择组件,如何维护组件及如何避免许可证相关的麻烦。 第5 章对研究是分析数据,对结果进行描述并进行讨论。 最后是本研究的结论,对全文进行了总结,并且展望了将来的工作。 7 第2 章经验软件工程简介 第2 章经验软件工程简介 2 1 软件工程上下文( c o n t e x t ) 软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一 直到使用后的系统维护,都属于其学科范畴。软件过程是指制作软件产品的一组 活动及其结果。这些活动主要由软件工程人员完成。所有的软件过程都包含4 项基本活动删,它们是: 软件描述:必须定义软件功能以及对其使用的限制 软件开发:必须制作出满足描述的软件 软件有效性验证:软件必须经过验证以保证能满足客户要求 软件进化:软件必须随客户需求的变化不断改进。 软件过程模型是从某一特定角度提出的软件过程的简化描述,模型的本质就 在于简单化。软件过程模型就是对被描述的实际过程的抽象,它包括构成软件过 程的各种活动、软件产品以及软件工程参与人员的不同角色。一些典型的软件过 程模型有:瀑布型开发方法,增量式开发方法,进化式开发方法,螺旋型开发方 法及基于可复用组件的系统组合 一个简单软件开发过程示意图如图2 1 所示。需要注意的是,不管我们是开 发一个新的产品还是维护一个现有的产品,软件过程是非常关键的。 产品计划 资源 图2 - 1 软件过程图解 软件产品 图中的产品计划和资源最初都是由相关人员提供,他们作为软件过程的输入, 开发人员通过在软件开发过程中采用不同的步骤和活动开发出最终的产品。 软件产品的开发是一项及其复杂的任务。软件产品可能运行很长的一段时间 而且会涉及许多人,这就决定了开发的软件产品的复杂性,也暗示着软件开发过 程经常变的非常复杂。在最终产品交付之前,整个开发过程包括很多不同的活动 并且需要撰写很多文档。软件过程的复杂性意味着它很难被优化,甚至很难找到 9 北京工业大学工学硕士学位论文 足够好的开发过程。因此对于公司来说,他们为了保持竞争性,就必须努力改进 他们的商业运作模式。换句话说,大多数公司为了提高产品质量,降低开发成本 等,就必须不断地改进他们的软件开发过程。软件开发过程突出了需要一种系统 的学科性的工作方法重要性。在改进工作过程时也需要这种方法,并且也需要一 种过程改进的过程。为软件开发设计的一种过程改进的典型例子就是质量改进范 型( q i p ,q u a l i t yi m p r o v e m e n tp a r a d i g m ) 4 7 1 。这个范型包括几个步骤,支持前 面提到的系统的学科性的改进方法。 2 2 质量改进范型( q i p ) q i p 是为软件业务量身定做的一种改进策略,它可以分为六个过程,如图2 - 2 所示。 图2 - 2 质量改进范型的六个步骤 4 4 1 f i g u r e2 - 2t h es i xs t e p so f t h eq u a l i t yi m p r o v e m e n tp m i d i g 这些步骤的解释如下: 。 ( 1 ) 描述特征( c h a r a c t e r i z e ) :基于可以获得的模型,数据,直觉知识等,了解 开发环境。根据组织内现成的业务过程建立基准并描述其临界状态。 ( 2 ) 建立目标( s e tg o a l s ) :根据最初的特征描述和与组织策略相关的能力, 为成功项目与组织业绩和改进建立可以计量的目标。基于描述特征阶段提供 的基准,定义合理的期望。 ( 3 ) 选择过程( c h o o s ep r o c e s s ) :基于环境的一些特性和已经设立的目标, 为改进可支持的方法和工具选择合适的过程,确保与已经设立的目标一致。 ( 4 ) 执行( e x e c u t e ) :执行产品的开发,并且基于已经收集的数据和所要达 到的目标提供项目反馈。 ( 5 ) 分析( a n a l y z e ) :在每个特定项目结束时,对数据和收集到的信息进行 分析,评价目前的实践方法,确定存在的问题,记录研究结果。并为将来项 目的改进提供建议。 1 0 第2 章经验软件工程简介 ( 6 ) 包装( p a c k a g e ) :巩固已经得到的经验,这些经验以新的或已更新的和 已改善的模型的形式,还可能以其它形式( 例如:从先前的项目中得出的结 构化知识) 得到的。 这种改进过程包括两个活动,尽管相同术语不常使用,但还是有必要强调一 下: 软件过程评价 软件过程改进提议评价 现在出现了一个问题,在没有人工直接参与的情况下,一个过程改进提议很 难评价。对于一个产品来说,我们可以先建立一个原型来评价,而且这个模型在 以后的工作中可以继续使用。但是对于一个过程来说,先建立一个原型是不可能 的。我们可以建立模拟的过程并对不同的过程对比,但是我们必须明白这仍然是 基于模型的评价。唯一真正的过程评价或过程改进提议就是让人们使用过程,因 为在人们真正使用过程之前,过程只是一种描述。经验研究对于过程和基于人类 活动的评价非常关键。当我们需要对软件和工具的使用进行评价时,使用经验研 究也是非常有益的。 2 3 软件工程中的经验主义 ( 1 ) 为什么要进行经验软件工程的研究 所有的大型软件开发项目遵从以下的开发过程:需求定义,功能设计,单元 实现,集成等步骤。然而在每个阶段采用的方式,使用的工具和使用的基本原理 却大相径庭。一些公司对所有项目采用固定的开发过程,另一些公司则可能是某 个经理根据其个人经验做决定;还有一些可能由于没有选择的余地,只能简单地 采用制度上的惯例。不管采用哪种方法,在大部分情况下,几乎没有有利的证据 可以支持决策。这种情况产生的一个原因是软件工程研究没有好的模型和分析工 具,这些模型在其它学科很普遍。那么我们为什么要进行经验软件工程的研究? 实行定量经验研究的一个主要原因是,它是为理解,控制,预测和改进软件开发 而得到客观的和概率统计有效性的结果的有效手段。在引进新的技术,方法或者 其它工作方式之前,对这些更改的优点进行一次经验评估是非常好的选择。 ( 2 ) 经验研究的结构 这一节我们将讨论经验研究的结果和组成元素。文献【4 9 】作者描述了这些组 成元素,并指出好的经验研究应该包括这些组成元素并在论文中讨论这些组成元 素。这些元素如下: 研究上下文 假设 北京工业大学工学硕士学位论文 研究设计 效度威胁 数据分析和陈述,和 结果和结论 a 研究上下文:研究的主要焦点是课题。这节与目前对课题的理解程度和 研究目标有关,并且包括两个部分: 一课题定义:我们对课题进行定义并且解释重要性术语。 一研究回顾:我们围绕课题提供一个历史的上下文,并描述我们已经对课 题的了解,以前做过哪些工作,还有哪些问题没有答案,还有就是我们 问题的侧重点在什么地方。 b 假设:假设是本质。它陈述我们正在研究的研究问题。 c 研究设计:研究设计是对我们如何收集数据,检测我们的假设做出计划。 它包括两部分:其中一部份是设计与我们的研究问题因果相关的变量。 典型地,有自变量和因变量两种。另一部份是研究操作的上下文,也就 是描述研究发生的物理的,智力的和文化的外界环境。它的目的是使研 究的用户可以更好地解释数据。 d 效度威胁:对于研究结果的一个基本讨论就是它的效度怎么样。对于经 验研究,通常使用效度威胁进行分析。效度威胁是从统计学引出的,但 并不是所有的威胁适用于所有的研究类型。w o h l i n 等人【2 5 】定义了4 种效 度威胁: 一结论效度( 为统计分析) 一。正确的分析”:这种效度主要关心处理( 研 究中的自变量) 和结果( 因变量) 之间的关系。我们的目的是确保存在 显著性统计关系。威胁可能与统计检验的选择,样本大小,量度的可靠 性等相关 一内部效度( 为解释性或临时性研究,而不是为探索性或描述性研究) 一 。正确的数据”:我们必须确保处理与结果之间存在临时性关系,而不 是与未被测量的因素的结果之间的关系。威胁可能与历史,成熟度,主 题的选择,未预知的事件和相互干扰,临时性影响方向的不确定性等有 关系。文献【2 6 】的作者y i n 对此增加( 根据实验) 了可靠性:论证研究 的可操作性在相同的结果( 如数据收集) 下可以重复。 一结构效度一。正确的度量”:我们必须确保处理能反映出原因而且结果 能反映出影响。威胁可能是单一操作偏差( 一个单一的案例不能反映出 结构) ,单一方法偏差( 一种单一类型的度量可能有误导) ,假设猜测等。 一外部效度一“正确的上下文”:这种效度关心的是在研究范围外结果的 普遍性。可能存在三种类型处理交互:人物( 研究的对象不能代表整体) , 第2 章经验软件工程简介 地点( 背景不具代表性) ,时间( 实验是在一个特殊的时间进行,如恰 在一个大型软件崩溃后) 。文献【2 6 】的作者y m 把这称为建立一个可以使 研究结果具有普遍性的领域。 e 数据分析和陈述:采用的主要方法是对数据进行定量或定性分析。 结果和结论:对数据分析完之后,我们应该使它变得有意义,也就是对 结果进行讨论。在这一步,我们将回到最初的问题,需要关注以下的事 情。 我们必须懂得并解释研究的局限性,我们可以得出什么样的结论? 我们 得出结论的局限性在什么地方? 哪些因素会影响我们的结果? 假如我们知 道效度局限性和其它我们掌握的信息,那么数据真正表示什么? 我们的解释 是否有二义性? 从我们的数据中是否还可以猜测到其它的解释? 我们的结 果可信程度怎么样? 将我们的数据与最初的问题联系起来,尽力解释我们回答了哪些问题, 不要只是简单地列举数据。我们还应确保给其它人提供足够的信息,如果他 们想重复这项研究,这些信息可以帮助完成研究。 2 4 经验软件工程研究策略 经验研究是基于观察,反射和实验手段上的科学范例,目的是改进知识。经 验研究有很多不同的目的,有探索性研究( 研究参量或者通过p r e s t u d y 来确定 研究的所有参量是否是可遇见的) ,描述性研究( 发现某一特征的分布状态) ,或 者解释性研究( 研究某一现象发生的原因) 对于经验研究有三种不同类型的研究范例 2 5 4 0 4 1 】: 一定性研究( q u a l i t a t i v er e s e a r c h ) 感兴趣的是研究对象的自然状态。定性研究 者试图通过人们的各种辩解来解释某一现象1 4 2 。 一定量研究( q u a n t i t a t i v er e s e a r c h ) 感兴趣的是发现被研究的客观事物被关心 的原因,并理解所掌握问题的见解。一般,定量研究主要用于研究对比两个 或多个组之间的定量关系【柏】。定量研究主要是通过搭建可控实验环境或者通 过案例研究或调查收集数据实现的。 一混合的研究方法( t h em i x e d - m e t h o da p p r o a c h ) 主要是为了弥补上面两种方 法的局限性和偏差,将两者的优势结合起来。这种将两者结合起来的研究方 法比两者单独使用更富有成效。文献【4 3 】描述了在设计时如何将定性和定量 这两种方法联合起来。 在经验软件工程领域,有三种主要的研究方式被经常使用圈。 北京工业大学工学硕士学位论文 一调查( s u r v e y ) :调查通常是调查研究过去已经完成的任务,例如:一种工具 或技术已经使用了一段时间。调查收集数据的手段是采访( i n t e r v i e w s ) 和问 卷( q u e s t i o n n a i r e s ) ,通过在研究对象的总体( p o p u l a t i o n ) 中抽取一定数量 的样本( s a m p l e ) 而完成。然后通过分析调查的结果得出描述性的或探索性 的结论,这些结论可以推广到研究样本的总体中去。 一案例研究( c a s es t u d y ) :案例研究用于跟踪项目、活动或者任务。根据某种 明确的目的收集数据,而且贯穿于整个研究过程。我们可以用统计学分析方 法分析收集到的数据。案例研究通常目的是跟踪一种特殊的属性或者在不同 的属性间建立关系。 一实验( e x p e r i m e n t ) :实验一般是在实验室环境下完成的,提供了较高的控制 水平。在某些情况下,我们可能无法完成真正的实验,我们不得不采取准实 验( q u a s i - e x p e r i m e n t s ) 。准实验是指对研究目标的衡量准则不能随机赋值的 情况下而采取的实验方法。在软件工程中一个典型的实验的例子是对比两种 不同的方法。对于这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司温馨年会活动方案
- 公司老客户慰问活动方案
- 公司激励活动策划方案
- 新建房屋租赁合同模板参考
- 微课资源及其在教学中的实际应用
- 公司物流节团建活动方案
- 公司晚餐环节活动方案
- 应对紧张情绪的演讲方法
- 2025年中国软盘驱动器市场竞争格局分析及投资方向研究报告
- 投资理财与金融风险控制
- 新修订《土地管理法》考试题库及答案
- 小老虎过生日
- 2023-2024学年广西壮族自治区南宁市小学语文六年级期末深度自测试卷详细参考答案解析
- 国开《学前儿童语言教育活动指导》形考1-4试题及答案
- 海康2023综合安防工程师认证试题答案HCA
- 浊度仪使用说明书
- GB/T 14404-2011剪板机精度
- GA 1517-2018金银珠宝营业场所安全防范要求
- 提高痰留取成功率PDCA课件
- 伊金霍洛旗事业编招聘考试《行测》历年真题汇总及答案解析精选V
- 深基坑支护工程验收表
评论
0/150
提交评论