(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf_第1页
(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf_第2页
(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf_第3页
(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf_第4页
(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(管理科学与工程专业论文)面向客户的mis系统开发方法研究.pdf.pdf 免费下载

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

文档简介

摘要 软件开发方法作为一种方法,有它形成的原因和发展历史。本文 首先阐述了开发方法是软件工程的一个重要部分,论述了工程化思 想、管理思想和编程思想在开发方法的发展过程中所起到的作用。然 后,对一些开发方法进行了简述,将它们进行分类,如:“重型”方 法和“敏捷”方法,并对它们进行对比分析,提出了“敏捷”将是开 发方法发展的趋势之一。 接着作者论述了在软件开发过程中为什么要使用“敏捷”方法, 以及方法的选择和实施问题。从实际使用中,作者归纳了这些新方法 的优点,以及它们在实际应用中的一些缺陷,并进行了论证。 最后,根据我国软件开发人员和客户的特点,并通过作者实际软 件开发过程中的经验教训和总结,结合一些主流开发方法的优点和一 些已被开发人员普遍接受的观点,在上述分析的基础上,提出了一种 面向客户的信息系统开发方法,同时以此方法指导开发了一个实际系 统,系统的良好性能证实了这种方法的可行性。 关键词管理信息系统,软件开发方法,敏捷开发方法,面向客 户开发方法 a b s t r a c t a sam e t h o d ,s o 鼽a r e d e v e l o p m e n tm e t l l o d ,w h i c h i sav e r y i m p o r t a n ti n g r e d i e n t o fs o 最w a r ee n g i n e e r ,h a si t so w nr e a s 伽sf b r f o n n a t i o na 1 1 dh j s t o r yo f d e v e i o p m e m a tf i r s t ,m ep a p e r f 0 咖u l a t ei t s i m p o n a n c e ,a 1 1 d m e nd i s c u s st h a te n g i n e e r i n gt h e o 可,m a j l a g e m e n t t h e o u a i l d p r o 盯眦m i n gt 1 1 e o r yp l a y a i l i r r l p o r t a n t r o l e i nm ec o u r s e o f d e v e l o p i n g o fd e v e l o p m e n tm e t h o d b yb r i e f i n g ,c l a s s i 母i n g s o m e d o m i n a l l td e v e l o p m e n tm e t h o ds u c ha s “h e a v y w e i g h t ”m e t h o da n d “a g i l e m e t h o d ,c o m p a r i n g 柚da 1 1 a l y z i n g t h e m ,t h ea u t h o r p o i n t so u t t l l a t “a g i l e i so n e o ft l l ed e v e l o p i n gt r e n do fd e v e l o p m e mm e t h o d t h e nm ea u t h o re ) ( p l a i n sm er e a s o n sf o ru s i n g “a g i l e ”m e t h o da 1 1 d a c c o u n t sf o r血ei s s u e也a th o w t oc h o o s ea n d c a r r y o mm e m e t h o d s t h r o u g hp r a c t i c a lu s i 工1 9 ,t h ea d v a n t a g e so f t h en e wm e m o d s a n dw h a ta r ei n c o n s i s t e mw i t l lt h ep r a c t i c a ls i t u a t i o na r ep u tf o n v a r da 工1 d p r o v e d a c c o r d i n g t om ec 1 1 a r a c t e r i s t i co ro u rc o u n t r y sp r o g r a m m e ra i l dt h e c u r r e n ts m l a t i o no f 也es o r w a r em a r k e t , b a s i n g o nw h a th a sb e e n a n a l y z e da b o v e ,t h ea u t h o rc o m b i n e s h i se x p e r i e n c e sa n d t h o u 曲t sw i t h t h e a d v a n t a g e so fs o m ed o m i n a n td e v e l o p m e n tm e m o da n dg e n e r a l l y a c c e p t e dv i e 、v p o i n t s ,p 嘣i n gf o r w a r d a ni 1 1 f o n l l a t i o ns y s t e m d e v e l o p m e n t m e m o d c u s t o m o r i e m e dd e v e l o p m e n tm e t h o d ,m e np r o v em e f e a s i b i l 时a i l da d v a j l t a g e so f t h em e t h o db ym e a r i so fa w e i i 一印p l i c a t i o n s y s t e md e v e l o p e d u n d e ri t sg u i d a i l c e k e yw o r d sm a n a g 锄e n ti n f o m l a t i o ns y s 衄n ,s o f t w a r e d e v e l o p m e n tm e t h o d ,a g i l ed e v e l o p m e m m e t l l o d ,c u s t o m - 0 r i e n t e d d e v e l o d m e n tm e t h o d 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的 地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得中南大学或其他单位的学位或证书而使用过的材料。与我共 同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。 作者签名: 犁蕴 日期:! ! 年上月卫日 关于学位论文使用授权说明 本人了解中南大学有关保留、使用学位论文的规定,即:学校有 权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位论 文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论文; 学校可根据国家或湖南省有关部门规定送交学位论文。 作者签名:驾生寥b 师签名: 日期:! 鱼年月监日 硕士学位论文前言 月u 吾 在我国软件行业正在逐渐的成为振兴经济的主导产业之一,作为一种高科 技产业,它的发展将像第二次工业化革命一样,推动其他产业的发展,而这也 是一些发展中国家快速发展经济、赶上发达国家的一次机遇,如印度通过软件 产品的出口,每年为其创造了大量的外汇收入,而且这个数字还呈上升趋势, 同时它也带动了印度其他产业的发展。有数据表明,我国也将加快这个行业的 发展。 既然成为了一个产业,软件的生产就不能再是小作坊式的进行。因为在那 种管理混乱、不统一的开发环境下所生产出来的软件产品,一般来说它的可维 护性和扩展性不是很好,而且在没有个合适的软件开发方法的指导下,所开 发出来的产品在交付客户使用时,往往难以满足客户的需求。虽然现在已经出 现了很多软件开发方法,但是它们都存在难以使用或和实际情况不相符合等问 题,因此我们有必要探索一种合适的方法来解决软件开发过程中的这些问题。 本文的结构如下:第一章阐述了软件开发方法产生的原因以及在它的发展 过程中起着重要推动作用的三个因素:工程化思想、管理思想和编程思想。接 着对一些主流开发方法进行分类,并对比分析国内外的研究状况,提出开发方 法的发展趋势。第二章作为理论分析的重点,首先对一些主流开发方法进行分 析,阐述了它们各自的优缺点;然后对敏捷方法的使用进行了分析,阐述了敏 捷方法的选择和实施问题,并指出敏捷方法的缺陷和不足。第三章通过总结软 件行业以往的软件开发方法,借鉴国外较流行的软件开发方法以及现代化的管 理方法和手段,结合我国软件行业的现状、市场环境和开发人员的性格。以客 户为中心,在迈克康奈尔提法的基础上探讨性的提出面向客户的开发方法 ( c u s t o m e l o r i e n t e dd e v e l o p m e n tm e t h o d ,简称c o d m ) 。接着论述了该软件开 发过程的主要框架,以及在开发过程中的十个指导性过程。第四章对c o d m 方 法的十个指导性实施过程进行了阐述,并且对比它和其它软件开发方法的关系。 第五章对提出的c o d m 进行实证分析。第六章对全文进行总结与展望,指出本 文的创新以及有待改进的地方。 本文观点是经历若干个软件项目之后逐渐形成的。通过对历史项目的反思, 我们有意识的将该方法中的一些观点应用到后来的项目中,结果发现对后期项 目的实施帮助很大,因此逐渐地将它们汇集成一种软件开发方法。应用这种方 硕士学位论文前言 法进行软件开发时,不但能够经济合理的开发出满足客户需求的软件,而且能 够提高开发小组乃至软件公司的软件开发能力和市场竞争力。希望本文所提出 的方法能够为我国软件开发方法学这个新兴领域起到一定的作用,为我国软件 产业的发展做出一定的贡献。 2 硕士学位论文第一章软件开发方法的演进 第一章软件开发方法的演进 1 1软件开发方法的产生 六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大 的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的复杂性和 高成本,使大型软件的生产出现了很大的困难。即出现软件危机【l 】。 软件危机主要表现在:软件需求增长得不到满足:软件生产高成本,价格 昂贵;软件生产进度无法控制;软件需求定义不准确,易偏离用户需求;软件 质量不易保证和软件可维护性差。 归结起来,软件危机主要表现在两方面:一方面是无法满足日益增长的对 软件的需求;另一方面是难以满足对已有的软件系统的维护需要。软件危机的 原因可归纳为两方面,一方面是由软件生产本身存在着复杂性决定,另一方面 与软件开发所使用的方法和技术有关。 随着更好的软件开发方法的应用,软件开发人员越来越能够生产出低成本、 高质量的软件产品。在此过程中,人们研究和借鉴了工程学的某些原理和方法, 并形成了一门新的学科软件工程学。 软件工程学包含的内容可概括为1 2 j : 1 ) 软件开发技术:包括软件开发方法学、软件工具和软件工程环境。 2 ) 软件工程管理:包括软件管理和软件工程经济学。 软件开发方法是指软件开发过程中的一套规则和惯例,它指导着软件开发 的整个过程,从软件重用的思路来说,方法重用的价值远非某些程序组件重用 可比。 软件开发方法是整个软件工程学的重要组成部分,也是软件工程学中最重 要的研究和应用内容。它是一门从事研究软件开发的模式、内容、步骤和操作 的学问,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的生 产方式中的随意性和非规范性做法,并提升公司的软件开发能力。 近四十年来形成了软件开发的多种模式。大致可归纳为规则较多、灵活性 不大的“重型”开发方法( 如结构化开发方法) 和规则较少、轻灵性的“敏捷” 3 1 【叼开发方法( 如极限编程( e x t r e m ep r o 掣a 删血n g ,简称x p 【5 1 ) 开发方法) 。 软件开发方法作用的对象随着它的发展有所变更。以往主要是软件开发人 硕士学位论文第一章软件开发方法的演进 员,现在它作用的对象不再只是软件开发人员,而是整个项目组,包括:项目 经理、系统分析员、高级程序员、程序开发人员、文档人员和客户代表。客户 代表作为其中一员是软件开发方法的一个进步,它使得客户需求变更软件 界最难以解决的问题之一,得到了一定的缓解。 软件产品不像工业产品,它是“软”的,产品不具有可见性,是人们脑力 劳动的产物,这就导致了它在生产过程中不可能像工业产品那样通过严格的生 产方法就可能生产出理想的产品。但是软件开发方法的应用还是起到了以下的 作用: 1 缓解软件危机:软件开发方法产生的主要原因就是解决软件危机问题。 2 协调项且团队:软件开发方法指导着项目成员在项目的各个阶段的工 作以及所要达到的标准,并且提供一些技术与技巧,通过成员之间的 分工协作,高质量的完成项目任务。 3 生产出高质量的产品:它的应用能够减少软件开发过程中所发生的一 些错误,如文档的不一致、代码b u g 多、编程不规范,甚至脱离客户 需求等错误。 4 提升公司市场竞争力和软件开发能力:在这方面最好的说明可以参看 c m m ( 软件成熟度模型) ,从它的五个等级划分中我们可以看出软件 开发方法在这方面所能够起到的作用。 5 有助于项目成员的学习和发展:一个好的软件开发方法在为公司获利 的同时,也应该能够帮助项目成员从中学到一些东西。这实际上也是 从人员素质方面来提高企业的竞争力。 1 _ 2三个推动因素 软件开发方法自从产生以来,就在实际应用中不断的得到补充、修改和发 展,人们希望它能够解决开发过程中出现的一切问题。我们可以从以下三个方 面来分析它的发展历程n 】。 1 2 1工程化思想的引进 随着计算机技术的发展和应用领域的扩大,软件规模越来越大,复杂程度 不断增加,无序化的软件生产方式已不能满足软件的数量和质量要求,软件危 机的产生导致人们致力于摆脱这一困境的研究。1 9 6 8 年、1 9 6 9 年北大西洋公约 组织成员国软件工作者两次召开n a t o 会议,讨论摆脱软件危机的办法,并提 硕士学位论文 第一章软件开发方法的演进 出软件工程的概念。 他们发现将传统工程学的原理、技术和方法应用于软件开发可以使软件生 产规范化。它有利于组织软件生产,提高开发质量,降低成本和控制进度。他 们曾从不同的角度给软件工程以定义,但它们的核心内容都是“以工程化的方 式组织软件的开发”,其中涉及软件计划、开发和维护各个阶段。 工程化思想使软件开发工作有序的进行,解决了软件危机中的一些问题。 如:“先设计,后开发”的思想使客户的要求得到保证:严格统一的编码标准使 程序代码的可读性和可维护性都得到了改善。 但是随着软件工程研究的不断深入,入臂 发现软件产业并不像一般的工程 化行业。比如:建一座桥梁时,设计费用一般占整个工程的1 0 左右,余下的 9 0 左右为旌工建造费用。而在软件开发中,编码所占的时间只有1 5 左右。这 就产生了一个重要问题,用传统工程模式来进行软件开发的做法是否可行。 1 2 2管理思想的引进 1 无管理阶段 这一阶段主要表现在上个世纪5 0 7 0 年代,软件开发人员一般都是独自地 进行软件开发,而所开发的程序也比较短小,多数程序只是完成单个功能,所 应用的编程语言主要是机器语言和汇编语言。 这个阶段所开发出来的程序一般难以维护和扩展,主要原因是文档的缺乏 和程序无序化的开发。文档的缺乏使开发人员在进行程序的维护时只有对程序 代码逐行的阅读及修改:程序无序化的开发导致每增加一个程序功能的同时都 有可能在增加程序的错误。 2 泰勒式管理阶段 这一阶段主要表现在上个世纪7 0 9 0 年代,由于前一阶段所产生的软件开 发中的一些弊端,特别是无规范化的程序文档、客户需求的频繁变更,爆发了 软件产业界著名的软件危机,于是这时候,很多软件开发人员都在努力寻找解 决这个问题的办法,最终他们发现软件产业的生产应该类似工程建筑。就比如 建房子,它并不是由工匠们随便砌砖块,而是依据建筑设计师们所设计出来的 图纸进行工作。 因此,这时候软件行业也就衍化出了一些不同的工作岗位,如专门进行工 程管理的项目经理或产品经理、专门进行“图纸”设计工作的系统分析员和专 门进行“砌砖”工作的程序员。从职位的划分来看,有点类似流程细化、分工 合作的产品生产。从管理的角度上来说,这是泰勒式管理,开发人员像生产行 硕士学位论文第一章软件开发方法的演进 业的工人一样,只需要按照系统设计人员的描述将系统进行代码化实现就可以, 而不需要进行创造性思维。从短期上来说,这样的管理方式有利于系统的整体 控制,但是它不利于开发人员的发展和软件公司整体软件开发能力的提升。 3 以人为本和客户参与管理阶段 这一阶段主要表现在上个世纪9 0 年代至今,经过几十年的软件产业的发 展,软件行业的有识之士发现软件产业和建筑工程行业并不相同,它们的不同 如下: 第一点是从设计图纸到工程实施时的不同。建筑行业只要将图纸设计好了, 施工队伍就能够依据这张图纸将工程建设好;而软件行业却不同,用如u m l ( 统 一建模语言) 做出的设计在纸上看起来很好,而实际编程时可能会出现严重的 缺陷。土木工程师使用的模型是基于多年的工程实践,并结晶在工程典章中。 更进一步来说,一些设计上的关键部分,如应力作用,都是建立于坚实的数学 分析之上。而在软件设计中,我们对u m l 图纸所能做的只是请专家审阅。这当 然是很有帮助的,但是往往一些设计错误只能在编码和测试时才能发现。 第二点是需求变更程度的不同。建筑行业的需求变更较少,就算有的话, 也一般在图纸设计时就能够将它确定下来:而软件行业却不同,客户在需求分 析阶段一般提不出关键问题,往往需要系统分析人员依靠经验提出问题或者引 导他们提出问题。但是在系统的实施过程中以及实施之后,客户却会根据自己 的想法提出不同的问题。 从第一点我们可以发现泰勒主义在软件开发中的不适应性,因为它的一个 关键理念是认为干活的人并非是那些知道怎样才能把活干好的人。但是在软件 行业这个高科技的行业里,大多数人员都很优秀,是社会精英,他们都有头脑 知道怎样去把件事情做好,同时软件工作的特殊性,它也要求只有优秀的人 员才能创造出优秀的产品。因此这时候就引入了以人为本的观念,目的是为了 充分发挥软件开发人员的作用。 之所以强调开发人员的作用,一个重要原因是i t 行业的技术变化速度非常 之快。今天的新技术可能几年后就过时了。这种情况完全不同于其他行业。即 使管理层里的以前干技术的人都要认识到:进入管理层意味着他们的技术技能 会很快消失。因此必须信任和依靠当前的开发人员。 从第二点我们引入了客户参与的方式,主要目的是为了解决需求的频繁变 更。通过引入工程化的思想,软件开发人员发现还是不能从根本上解决软件需 求变更的问题,于是提出了客户参与的方式。通过将项目的相关客户或典型客 6 硕士学位论文第一章软件开发方法的演进 户加入项目组中,要他们参与需求问题的确定以及对系统分析和设计提出意见 和建议,并且参与系统测试,使开发人员能够较早的纠正系统功能和发现系统 b u g 。 总之,我们发现软件产业在不断的寻求一种适合自己的管理方法,它将参 考其他行业成功的管理方式,并加以检验和验证,对它们进行有选择性的吸收。 1 2 3编程思想的推动 软件开发方法作用的对象之一是软件产品,而编程思想作用的主要对象也 是软件产品。编程思想通过软件产品作为媒介,推动着软件开发方法的发展。 下面的表格对比了两者的发展关系。 表1 1 编程思想与软件开发方法的关系 l第一阶段第二阶段第三阶段 编程思想无结构化、模块化面向对象 软件开发方法无瀑布法、原型法等面向对象法、r u p 、x p 等 在每一个编程思想阶段,都有对应的一些软件开发方法来对它进行实现。 众所周知,在结构化编程阶段,瀑布型的生命周期法和快速原型法几乎是软件 产业界常用的软件开发方法,它们的影响很大,至今仍有一些软件公司用它们 进行软件开发。在面向对象编程阶段,瑞理公司的影响很大,它是一家专门研 究面向对象技术的公司,它所提出的统一开发过程删p ) 被很多软件公司应用或 借鉴。后来一些开发人员在实际开发过程中意识到以往方法难以实施,于是他 们凭借自己的开发经验和参考别人的研究成果,纷纷推出自己的软件开发方法, 在众多的敏捷开发方法中,极限编程( x p ) 是影响最为广泛的一种。 但是也有一些软件开发方法偏重于软件过程管理,很少牵涉到编程技术的 处理,如s c r u m 方法,它只是阐述开发人员和项目管理人员怎样去进行一个 软件项目的开发,对编程方面讲述较少。 1 3 软件开发方法分类 1 按管理方式分类 根据各种软件开发方法在管理思想上的不同进行分类,大致可以分为:泰 硕士学位论文第章软件开发方法的演进 勒式管理和以人为本的管理。 泰勒式管理的软件开发方法有:结构化生命周期法、原型法、面向对象法 等一些“旧”的软件开发方法,它们只重视项目团队中各个角色的作用,而对 个人不加以重视或重视不够。相反,现在新出现的一些软件开发方法都重视项 目团队中个人的作用,并提出了以人为本的思想。如x p 、水晶系列( c r y s t a l ) 、 适配性开发方法( a d o p t s o f t w a r ed e v e l o p i n g ,简称a s d ) 和s c r u m 【7 】等方法。 2 按编程方式分类 从编程方式这个方面对软件开发方法进行分类,它们可以分为:纯管理类、 结构化类和面向对象类。 所谓纯管理类的软件开发方法是指它们很少从编程技术角度来进行软件开 发的指导,只是从管理的角度来进行指导。这类方法包括:l e a np r o g 均m m i n 矿1 、 s c r u m 。 结构化类的软件开发方法是在结构化和模块化编程思想的背景下所提出来 的软件开发方法。这类方法包括:结构化开发方法、原型法等方法。 面向对象类的软件开发方法是在面向对象的编程技术背景下提出来的软件 开发方法。这类方法包括:面向对象开发方法、x p 、c r y s t a l 系列和d s d m 等方 法。 3 按适应方式分类 这里的适应是指软件方法在软件开发过程中的易用性,它主要表现在规则 的多少。根据它的多少,我们将软件开发方法划分为“重型”类和“敏捷”类。 “重型”类方法所具有的规则较多,在实际应用中难以实施。这类方法包 括:结构化开发方法、原型法、面向对象法和r u p ( 统一过程方法) 。 “敏捷”类方法具有少量的规则,因此容易被大量的人所接受并且容易执 行。这类方法包括:x p ( 极限编程) 、c r y s 诅l 系列、d s d m ( 动态系统开发方法, 全称d y n 锄i cs y s f e m d e v e l o p m e n t m e t h o d s ) 、a s d ( 适配性软件开发) 、s c r l 7 m 和l e a i lp r o 掣咖i n g 等新方法。 1 4国内外的研究状况及发展趋势 软件产品已经偏布世界各个角落,它不但具有社会价值,广泛应用于人们 的日常生活中:而且能够带来巨大的经济价值。为了促进这个产业的发展以及 获得更大的利益,各软件公司都在探索一种适合自身的软件开发方法,特别是 硕士学位论文第一章软件开发方法的演进 一些大型软件公司,为此专门成立了研发机构,如i b m 和微软都具有这样的部 门。 1 4 1 国外的研究状况 国外特别是美国在软件开发方法方面的研究比较突出,并且取得了很大的 成就,从最初的结构化软件开发、原型法,到面向对象法、r u p ,再到x p 等 些敏捷软件开发方法,反映了软件界开发方法的主要发展过程。 由于在上个世纪9 0 年代,一些“重型”软件开发方法的弊端不断增加,而 最大的弊端就是“重型”方法的规则多,难于真正实行,美国的一些软件公司 和软件开发人员于是就提出一些精简的规则组成新的开发方法,试图避免这些 弊端。其中流行最广的是x p 。 在形式化发展方向上,已经出现了净室工程方法【9 l ,它的三个核心思想是: 置于统计过程控制下的增量开发,基于函数的规范、设计和验证以及统计测试 和软件认证。它的两个重要目标是:开发过程的可管理性和使用时无实效。 1 4 2国内的研究状况 国内对软件开发方法的研究虽然起步较晚,但是由于可以借鉴国外的软件 开发方法,所以我国对于软件开发方法的应用也比较广泛。但是大多数软件公 司主要应用结构化的生命周期法、原型法和面向对象方法,对于新的软件开发 方法应用较少。 对于方法学的研究我国还处于初步阶段。不过一些软件公司和相关机构已 经意识到了这个问题,如中科院软件研究所就在试图提出一种新的软件开发方 法;一些大型软件公司也在借鉴国外的软件开发方法的同时对其进行修改以适 合本公司的情况,如共创软件联盟就在基于i n t e m e t 的环境和开放源码的基础上 提出了一种适合国情的i n t e m c t 协同开发策叫。但是他们大多是从技术角度上 去考虑开发方法,而没有将编程思想、人交文化和市场特点结合起来进行考虑。 另外要说明的是:虽然我国正在推行c m m 】( 软件能力成熟度模型) ,地 方上也鼓励本地软件公司通过c m m 的测评。但由于c m m 偏重于对软件开发过 程的管理和技术上的度量,对开发过程中的具体实旖涉及较少,所以难以直接 应用它来指导软件开发过程。 1 4 3 发展趋势 从软件开发方法发展的三个推动因素和方法的分类里我们可以看出:敏捷 将是软件开发方法发展方向之一。也就是说,软件开发方法需要符合各个项目 组的实际情况,加大客户和软件开发人员的作用,注重软件开发的简单性和迭 硕士学位论文第一章软件开发方法的演进 代开发相结合。 项目组是方法的真正使用者,如果我们只看重方法的应用及其效果,而不 检查该方法是否适合项目组的实际情况,那么使用方法后的效果将比没有使用 方法时的效果更差,因此我们选择开发方法时要与实际情况相结合。不过,我 们不用担心敏捷方法的变革问题,因为它本身就提倡方法是适应式的,在使用 中和实际情况相结合,最终产生符合各个软件公司或项目团队实际情况的方法。 客户是产品的最终使用者,只有客户对产品的满意才能说明软件产品的成 功。因此我们提倡客户积极参与软件的开发过程,在这个过程中发挥他们业务 熟悉和使用者的作用。而软件开发人员是生产产品的实际操作者,我们只有充 分调动他们的主动性,才能以个体相结合的整体作用生产出智力产物,而不能 寄希望于他们在机械化的执行任务时能够生产出高质量的软件产品。因此,在 软件开发的过程中,我们需要采用先进的管理手段来充分发挥客户和软件开发 人员的作用。 最后,方法不但要包含管理思想,而且耍体现编程技术。简单性和迭代化 相结合是对付软件开发过程中些问题的良好手段。 1 0 硕士学位论文 第二章主流开发方法的分析 第二章主流开发方法的分析 本章主要以“重型”和“敏捷”分类方式对一些常见的软件开发方法进行 简要阐述,并且对比分析“重型”和“敏捷”的差异,然后着重对“敏捷”开 发方法的应用进行分析,指出它存在的问题。 2 1“重型”开发方法的分析 “重型”开发方法包括:结构化开发方法、原型法、面向对象法和统一开 发过程( r u p ) 等,下面对它们进行简述: 1 结构化开发方法 在1 9 7 8 年,e y 0 u r d o n 和l _ l c o i l s t a l m n e 提出了结构化方法,即s a s d 方法,它采取“自上而下逐步求精”的方式,弥补了生命周期法的不足。1 9 7 9 年t 0 m d e m a r c 0 对此方法作了进一步的完善。 y o u r d o n 方法 垃】是8 0 年代使用最广泛的软件开发方法。它首先用结构化分 析( s a ) 对软件进行需求分析,然后用结构化设计( s d ) 进行总体设计,最后 是结构化编程( s p ) 。这一方法不仅开发步骤明确,s a 、s d 、s p 相辅相成,一 气呵成;而且给出了两类典型的软件结构( 变换型和事务型) ,使软件开发的成 功率得到提高。 结构化的软件开发方法对信息系统的开发起着巨大的推动作用。它所提出 的软件开发整体框架至今还在被应用着,特别是在开发大型系统时,结构化的 分阶段的软件开发思想使得程序开发逻辑更加严谨,减少了软件开发后期出现 错误的概率。但也因为这个原因,它产生了以下一些负面作用: 1 ) 开发过程复杂繁琐,灵活性较差: 2 ) 系统开发周期漫长,系统难以适应内外环境的变化; 3 ) 要求系统实旋单位具有科学的管理手段和规范化的数据资料。而国内 的大多数公司不具备这个条件。 2 原型法 对于用户需求,结构化方法要求的是严格定义或预先加以明确说明,这类 方法试图在系统设计以前,就对软件需求建立一套完备的、一致的和正确的说 明。但实践表明,尽管在许多情况下用了一些严格定义或预先说明的方法,但 硕士学位论文第二章主流开发方法的分析 当系统建成以后,用户仍然会觉得所建设的系统不完全正确。因此,经常要对 系统进行修补,甚至推倒重来。 需求定义的一种变通方法是获得一组基本需求后,快速地加以“实现”。随 着用户或开发人员对系统理解的加深而不断地对这些需求进行补充和细化,系 统的定义是在逐步发展的过程中进行的,而不是一开始就预见一切,这就是原 型化方法。因此可以认为原型化方法是确定软件需求的策略,对用户需求的基 本方面进行抽取、描述和求精。它快速地和迭代地建立最终系统的工作模型, 对问题的定义采用启发的方式,由用户做出响应,它是一种动态定义技术【1 3 】。 从一定意义上说,预先说明需求规格的某些缺陷导致了动态定义技术的形成与 发展,即原型法是在结构化方法的基础上发展起来的,是对它的补充。 原型化方法认为对于大多数应用来说,需求定义几乎总能通过建立目标系 统的工作模型来很好地完成,而且认为这种方法与严格的定义方法相比,成功 的可能性更大。严格的定义方法试图仅仅使用描述型的语言和图形文档技术来 建立一个最终是完备的需求规格说明,实际上这将会遇到困难。 原型法虽然原理及流程都非常简单,但却弥补了生命周期法的缺陷【1 4 】,它 具有两个明显的特点:强调循环反复、螺旋上升的工作方法;强调客户的参与, 特别是对模型的描述和系统运行功能的检验,都强调了客户的主导作用。但是 由于原型法缺乏统一规划和对系统开发的分析设计,客户可能提出无止境的功 能需求或功能需求反复要求修改。因此我们可以利用生命周期法的严格控制的 方法,将两者结合起来进行软件开发。具体运作时可以用原型法确定客户需求, 然后在原型的基础上进行系统的分析与设计。 3 面向对象开发方法 面向对象的思想最初出现于挪威奥斯陆大学和挪威计算中心共同研制的仿 真语言s i m u l a 6 7 中,后来存s m a l l t a l k 语言中得到了成功的应用。 在面向对象技术中,对象作为描述信息实体的统一概念,把数据和对数据 的操作融为一体,通过方法、消息、类、继承、封装和多态等机制构造软件系 统。就像结构化的概念最初是用在结构化的程序编写中一样( 既用顺序结构、 选择结构和循环结构) ,面向对象技术发展到后来逐渐地被引入系统的分析和设 计中,最终形成了面向对象的分析和面向对象的设计。 这是一种自底向上和自顶向下【巧】相结合的方法,而且它以对象建模为基础, 从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。 面向对象技术较好的解决了软件需求的不确定性。因为需求分析过程已与 硕士学位论文第二章主流开发方法的分析 系统模型的形成过程一致,开发人员与用户的讨论是从用户熟悉的具体实例开 始,这就使用户与开发人员有了共同的语言。 更重要的是面向对象技术很好的解决了软件的可维护性。在0 0 语言中,子 类不仅可以继承父类的属性和行为,而且也可以重载父类的某个行为。利用这 一特点,我们可以方便地进行功能修改:引入某类的一个子类,对要修改的一 些行为进行重载。 虽然面向对象方法具有如此多的优点,但它只是从技术角度去阐述一个系 统的开发。没有考虑其他一些因素,如:人员的安排、管理和系统的实施步骤 等一些阿题的处理。而且从技术上讲它也有一些缺陷,主要表现在以下两点【1 6 j : l 、模型的转换理想化。尽管面向对象的类抽象了现实系统而模型组织 了所有的类,指导和挖掘了所有的结构和行为;但是相对来说从现实 系统中抽象类比较容易,而从类中抽象出模型却是困难的一步。 2 ) 现实系统复杂化。随着所要开发的现实系统越来越复杂,再没有一种 单一、独立地系统能够表现它了,人们不得不用多层次、多方位的观 点来描述它,而这是面向对象中类的属性和方法不能够展现的。 基于第二点,有人提出a o p ( a s p e c t 嘶e n l e dp r o g r a m m j n g ) 【1 7 l 4 8 1 的开发方 法,它能够实现现实系统中交错概念的模型。 4 r u p r u p l 全称r 丑“o n a u n i f i e dp r o c e s s ,是瑞理软件公司( r a t i o n a ls o f b a r e c o p r a t i o n ) 的产品。它由p h i l i p p e k n l c h t e n 、i v a rj a c o b s o n 和r a t i o n a lr o s e 等开 发,主要作为一个与u m l 相配合和补充的方法。r u p 其实是个方法的框架,它 可以包容许多不同类型的方法。 r u p 的软件生命周期分为先启、精华、构建和产品化四个依次进行的阶段, 每个阶段的结束都有一个主要里程碑。它要求在每个阶段结束时进行评估,以 确定是否实现了此阶段的目标,良好的评估可使项目顺利进入下一阶段。 舶r 靴f 艘_ 十一隅化 生命周_ i 目目 标里程碑 生命周期构 架里程碑 屈初操作性 铯里程碑 图1 1r u p 的四个阶段 产品发布里 程碑 硕士学位论文第二章主流开发方法的分析 r u p 对各个阶段的工作量、进度和任务目标都做了定性的描述。各阶段的 工作量一般为:o 0 5 、o 2 、o 6 5 、o 1 :各阶段的进度一般为:o 1 、o 3 、o 5 、0 1 : 各阶段的工作目标如下: 1 ) 先启阶段的目标是实现项目的所有参与者之闻的并行。 2 ) 精化阶段的目标是建立系统构架的基线,以便为构建阶段的主要设计 和实旌提供一个稳定的基础。 3 ) 构建阶段的目标是阐明剩余的需求,并基于已建立基线的构架完成系 统开发。 4 ) 产品化阶段的重点是确保最终用户可以应用该软件。产品化阶段可跨 越几个迭代。 这四个阶段是一个“开发周期”:每经过这四个阶段就会产生新一代软件, 除非产品“死亡”。 由于r u p 【1 9 】【2 叫是一种框架,所以可以以不同的方式来使用它,如像传统的 “瀑布”式开发方式,或下面要论述的些敏捷方法。可以把它用得轻捷灵便, 也可把它弄成繁文缛节,这取决于在具体环境中对它的运用。正因为它可以是 任何东西,所以在应用它的时候软件开发人员必须面对各种各样的选择,因此 它看起来像一个仓库,软件开发人员需要从中挑选出自己需要的东西。 2 _ 2“敏捷”开发方法的分析 敏捷是相对于重型开发方法而取的名字。敏捷开发方法是为了帮助软件项 目组摆脱重型开发方法条条框框的束缚,而且能够很好的完成系统开发和实施 的一些新型软件开发方法的统称。 1 极限编程( x p ) x p 【2 i 】全称e x t r e m ep r o 莎删i n g 。在所有敏捷方法中,x p 是最为引人瞩目 的。x p 的四条基本价值原则是:沟通、反馈、简单和勇气。在此基础上建立了 x p 项目应遵循的十二条实践惯例:规划游戏、小量发行、共享智力、测试优先、 简单设计、重构、成对编程、集体所有权、持续集成、每周4 0 小时工作制、 现场客户和编码标准。其中许多惯例是以前就存在、并经过实践检验的,但却 常常被忽略。x p 重新建立了这些惯例,并把它们编织成了一个和谐的整体,使 得它们互相支持, x p 有一个最具冲击力的特点:对测试的极端重视。x p 将测试作为开发的 4 硕士学位论文 第二章主流开发方法的分析 基础,要求开发人员每写一段源码时都得写相应的测试码,并将这些测试片段 整合到系统中。在此基础上x p 建立了一个渐进型的开发过程,它依赖于每次迭 代时对源码的重构( r e f a c t o 血g ) 。所有的设计都是围绕着当前这次迭代,而不管 将来的需求。这种设计过程的结果是“纪律性”与“适配性”的高度统一。 x p 的开发顺序可阱这样来概括:“听取意见、测试、编码和设计”【2 2 1 。在 应用x p 原则时,管理者应该重点强调需要完成的任务,而不是总是分配任务。 x p 的管理策略意味者将x p 适合本地条件,并帮助解决公司间的文化差异。在 x p 里,长时间的会议和冗长的状态报告消失了,它是个人优先于过程的环境。 规划策略把小组成员聚集在一起制定出一个计划,决定范围和优先级,并 估计成本和时间进度,该规划还提供反馈的标准。但规划并不是到此为止,规 划是在系统的较低级别上实施,它是连续的,并持续参考最新的反馈。 开发、测试和设计策略杂乱无章地与惯例联系在一起。对于开发,有连续 的集成、成对编程以及集体所有权。对于测试,有单元测试和验收测试。而设 计则依赖于“简单”和代码抽象思想的具体反馈。 x p 方法已经在很多软件项目中得到了应用,被证实是一种行之有效的方法。 但是x p 存在一个至今无法迈越的缺陷:在项目组人员比较少的时候效用突出, 但当项目组人员超过5 0 人时,它就会显得力不从心,而这可以从它的1 2 条惯 例的执行中找到原因。 2 水晶系列( c r y s t a l ) a l i s t a i rc o c k b u r n 在9 0 年代初受i b m 之约进行正规方法的研究,进一步地 探索了敏捷方法,并提出了水晶( c 聊s 协1 ) 方法系列。他认为不同类型的项目需 要不同的方法,选择方法与两个因素有关:项目参与人数和出错后果。如果用 两个坐标轴分别表示这两个变量的话,那么在这张图上,每一种方法都有其相 应的位置。 水晶系列与x p 一样,都有以人为本的理念,但在实践上有所不同。a l i s t a i r 考虑到开发人员一般难以严格遵循一个纪律约束很强的过程,因此,a l i s t a i r 探 索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一 种平衡。 a l i s t a i r 也强调每次迭代后的总结回顾,鼓励过程本身的自我完善,理由是 迭代式开发是用来尽早发现问题并得到解决。强调开发人员要随时观察他们所 用的过程,并随着项目的进行而调整过程。 硕士学位论文 第二章主流开发方法的分析 3 开放源码 开放式源码( o p e ns o u r c e ) 1 2 5 l 一般是指软件的一类风格,丽非种过程。 这里指开放源码界所用的一种运作方式,这种方式适用于开放源码项目,它的 许多做法也可为封闭式源码项目所用。开放式源码项目有一个特点:程序开发 人员在地域上分布较广。这点相当重要,因为一般适配性过程都强调项目组成 员在同一地点工作。 大多开放源码项目有一个或多个源码维护者( m a i n t a i n e r ) 。只有维护者才能 将新的或修改过的源码段并入源码库。其他人可以修改源码,但需将他们所做 的改动送交给维护者,由维护者对这些改动进行审核并决定是否并入源码库。 通常来说,这些改动是以“补丁”文件的形式,这样处理起来比较容易。 维护者的角色在不同的项目中有不同的产生和处理方式。有些项目只有一 个维护者;有些项目把整个系统分成若干个模块,每个模块有一个维护者:有 些是轮流做维护者;有些是同一个源码部分有多个维护者;有些则是这些方式 的组合。许多开放源码项目的参与者只是部分时间( 或业余时间) 工作,如果 项目要求是全日制的,那么特产生一个问题:怎样才能把这些开发人员有效地 协调组织起来。 开放源码的一个突出特点就是查错排故的高度并行性。因为许多人都能同 时参与查错排故,如果发现了错误,他们可将改正源码的“补丁”文件发给维 护者。这种查错排故角色对非维护者来说很合适,对那些设计能力不是很强的 人来说,也是一项较好的工作。 4 动态系统开发方法( d s d m ) d s d m 全称d y n a m i cs y s t e md e v e l o p m e mm e t h o d s 。在1 9 9 4 年,由英国的 一个社团所发展。它与其他一些敏捷方法有些不同,它有专门的组织支持,有 手册、培训课程和认证程序等。 该方法先做可行性和应用域分析。可行性分析要考虑d s d m 是否适合当前 这个项目。而应用域分析则是召开一系列的讨论会,以期能充分了解应用域, 同时也要提出大致的系统结构与项目计划。 余下的工作由三个相互交织的周期组成:功能模型周期产生文档和原型, 设计建造周期生成可操作使用的系统,实现周期处理系统安装部署。像其他敏 捷方法一样,d s d m 的一个周期在2 6 周之间。它强调高质量的系统以及需求 变更的高度适配性。 d s d m 有一些基本的原则,包括:客户积极参与系统开发、团队有权决定 1 6 硕士学位论文第二章主流开发方法的分析 一切、频繁的发布、符合客户需求、迭代开发、所有变化都可以倒退、在高层 次上确定需求以及所有相关人员的沟通和合作。 5 适配性软件开发( a s d ) a s d 全称a d 印t s o f t w a r ed e v e l o p m e m ,由j i mh i 曲s m i t h 提出。它的核心是 三个非线性的、迭代的开发阶段:猜测、合作与学习。 因为在适配性环境中结果不可预测,所以h i 曲锄i t l 把计划看成是一个“反 论”( p a r a d o x ) 。在传统计划中偏离计划是错误,应予纠正;但在适配性环境中, 偏离计划则是在引导我们向正确的目标迈进。 在适配性环境中,需要项目成员以多种多样的方式合作来对付不确定性。 在管理上,其重点不在于告诉大家做什么,

温馨提示

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

评论

0/150

提交评论