毕业论文(设计)-软件项目开发过程分析改良及在差旅商务支撑平台上的应用_第1页
毕业论文(设计)-软件项目开发过程分析改良及在差旅商务支撑平台上的应用_第2页
毕业论文(设计)-软件项目开发过程分析改良及在差旅商务支撑平台上的应用_第3页
毕业论文(设计)-软件项目开发过程分析改良及在差旅商务支撑平台上的应用_第4页
毕业论文(设计)-软件项目开发过程分析改良及在差旅商务支撑平台上的应用_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

1、软件项目开发过程分析改良及在差旅商务支撑平台上的应用摘要近年来,由于计算机技术逐渐地提高,软件开发的技术和规模也伴随着计算机的发展而愈加的成熟和扩大。软件是工业化的产物,是人类科技发展的杰作,它的诞生是人类始料未及的。它并非一般的工业产品,因为它没有实体。但它却有与其它工业产品相似的生命 周期特征,它的生命周期是伴随着软件开发的进程而变化的。许多人为有着生命 周期特征的软件建立了许多的模型并且赋予它们在生产过程上有特殊的意义和 价值。软件生命周期模型是软件开发过程的简单表达。然而软件开发过程是一个极其复杂的生产过程,并且由人承担生产的操作, 有非常多的因素会影响到工程项目的成败。软件行业一直没

2、有停止过寻求一种类同于硬件的开发方法或过程。自软件工 程思想建立以来,人们提出了各种各样的软件开发方式以帮助人们提高软件的开 发效率,保证软件质量。然而不下几十种的软件开发过程模型仍然存在着不少缺 陷。软件开发过程仍然在不断地经历思考和改进。对软件开发过程进行研究将有助于优化现有的软件开发管理模式,使开发过 程更加地有效率,开发的目标更加地明确,开发的质量得到提高。从而节约软件 开发的成本,增加软件产品的效益,让软件开发的发展变得可持续化。关键词: 软件,软件开发过程,软件生命周期,管理,优化abstractin recent years, computer technology gradua

3、lly increases, the technology and the scale of software development are also accompanied by the computer more to mature and grow.software is a product of industrialization, is a masterpiece of human technological development, and its birth is unexpected of mankind it is not a general industrial prod

4、uct, because it has no entity. but it has features of life cycle as other industrial products, and its life cycle changes when the software development process changes. many people have made some software life cycle models by features of software life cycle, and given them a special meaning and valu

5、e in the software production. software life cycle model is a simple expression of the software development process.however, the software development process is an extremely complex process of the production, which made by peopled hands. a lot of factors will affect the success of the project.the sof

6、tware industry has not stopped looking for a similar method for development process like the development process of the hardware. since the establishment of software engineering ideas, it proposed a variety of software development methods to help people to improve software development efficiency, to

7、 assure software quality. however, no less than dozens of kinds of software development process model still have many drawbacks. software development process is still constantly thinking and improving.conduct research on the software development process will help to optimize the existing software de

8、velopment management model. to make the development process more efficient, the goal of developing more clear and improve the quality of developin gkey words: software, software development process, software life cycle,management, optimize目录摘要abstractii图目录iv表目录vi第1章绪论11.1课题背景11.2软件开发过程现状11.3课题目标21.4

9、论文的结构部署31.5本章小结3第2章 软件开发过程的问题及分析42.1软件开发过程与软件生命周期42.1.1软件生命周期42.1.2软件生命周期模型52.1.3从软件生命周期模型看软件生产特性52.1.4传统软件生命周期模型的弊端72.1.5 “统一软件开发过程”模型rup82.1.6固有的缺陷92.2软件开发过程的问题102.2.1需求递减效应112.2.2需求增、删、改变化132.2.3需求认知和定位的缺失152.3软件开发过程问题分析152.3.1需求递减效应分析152.3.2需求增、删、改变化分析172.3.3需求认知和定位的缺失分析182.4软件开发过程改良292.4.1需求传递递

10、减增加需求目标描述292.4.2需求增、删、改变化一一认识项目特性302.4.3需求认知和定位的缺失培养职业意识312.4.4改良方案的总结322.5本章小结32第3章 差旅商务支撑平台介绍333.1差旅商务支撑平台介绍333.1.1项目背景333.1.2公司与服务333.1.3项目简介353.1.4研发团队363.2差旅商务支撑平台分析与设计373.2.1项目结构与环境373.2.2项目技术383.2.3部分业务分析383.2.4网络设计433.2.5数据库设计443.2.6页面设计463.3项目特点473.3.1差旅商务支撑平台属于电子商务系统473.3.2差旅商务支撑平台生命周期非常长4

11、73.3.3差旅商务支撑平台需求呈现为动态473.4项目中出现的问题473.5本章小结49第4章差旅商务支撑平台开发过程考察与分析504.1差旅商务支撑平台开发过程模型504.1.1项目开发流程504.1.2项目需求演化过程534.1.3项目生命周期模型574.1.4项目开发流程总结584.2差旅商务支撑平台开发过程考察与分析594.2.1项目开发过程评测计划594.2.2项目开发过程中需求生成跟踪以及分析604.2.3项目开发过程中需求实施情况跟踪以及分析614.2.4项目开发过程中各责任岗位实际情况及分析634.2.5项目开发完成后客户的反馈644.2.6项目开发过程评测结论654.3三大

12、问题在差旅商务支撑平台开发过程中的体现674.3.1需求递减效应的反映674.3.2需求增删改变化的反映684.3.3需求认知和定位的缺失的反映704.4项目开发过程考察总结704.5本章小结71第5章软件开发过程改良在商务差旅平台上的应用725.1项目开发过程改良725.2改良的方案在项目开发过程中应用的结果725.3另外的思考735.4本章小结73第6章总结756.1本文总结75参考文献76作者简历错误!未定义书签。致谢错误!未定义书签。图目录图2.1软件生命周期示例图4图2.2瀑布模型示例图7图2.3实际开发过程示例图8图2.4rup统一软件开发过程生命周期示例图8图2.5需求递减示例图

13、10图2.6需求变更示例图11图2.7开发人员理解不了需求示例12图2.8开发人员理解错了需求示例12图2.9开发人员有自己的理解示例13图2.10需求文档堆积示例14图2.11实际开发过程示例图18图2.12软件开发初期示例图18图2.13软件开发渐进示例图19图2.14软件开发发展示例图19图2.15软件开发成长示例图20图2.16软件开发机遇示例图21图2.17软件开发成熟示例图22图2.18问题围绕需求示例图25图2.19问题回归需求示例图26图2.20需求贯穿力示例图26图2.21 “瀑布式”软件生命周期模型28图2.22软件生命周期瀑布模型改进28图3公司服务结构图34图3.2企业

14、系统服务架构图34图3.3差旅商务支撑平台系统登录界面35图3.4支持系统模块架构简图36图3.5公司研发部门示例图37图3.6项目逻辑结构图37图3.7项目环境图37图3.8会员预定酒店总流程图39图3.9企业管理流程图40图3.10客服流程图41图3.11用户订单及积分流程图42图3.12网络环境设计图43图3.13网络结构图43图3.14支撑系统页面布局设计图46图3.15平台效果图46图4.1公司开发流程前期示例图51图4.2公司开发流程中期示例图52图4.3公司开发流程后期示例图53图4.4软件产品概念阶段54图4.5软件产品需求阶段55图4.6软件产品实施阶段56图4.7软件产品维

15、护阶段57图4$项目生命周期模型示例图57图4.9增量模型示例图58图4.10公司软件生命周期中的回流66图4.11项目生命周期中目标的丢失68图4.12会员规则升级69图4.13机票行程单规则整改69图4.14酒店预订增加第三方供应商70表目录表2.1软件生命周期各阶段特点23表2.2需求分析说明书示例30表3.1项目技术表38表3.2系统部分表列表44表3.3会员实体字段列表45表4.1需求生成跟踪表60表 4.2 公司五七月份需求报表61表4.3公司五七月份任务求报表61表 4.4 公司五七 月份缺陷报表62第1章绪论1.1课题背景21世纪是一个崭新的世纪,是一个信息化的时代,而这一切的

16、变革是计算机 所带来的。计算机软件是计算机的灵魂,软件以及其无法比拟的实现能力迅速渗透到人 类社会的各个领域当中。随着经济的全球化,软件开发的基地从发达国家开始往 发展中国家转移,同时也带动了软件产业的全球化。如今,软件产业自身也正在 以飞快的速度发展,它的发展带给人类无穷的可能。软件是一种工业产品,但是它与一般的工业产品又有所不同,它没有实物, 这是基于软件自身抽象的特殊属性。但它又有与实物相似的生命周期特征,它的 生命周期是伴随着人类活动而变化的。软件也会消耗,只是它不是单纯地被磨损, 而是无法满足事物变化的需求。软件的生命周期反应了软件开发的过程。软件开发过程是一个极其复杂的生产过程,对

17、软件开发过程进行研究将有助 于优化现有的软件开发管理模式,使开发过程更加地有效率,开发的目标更加地 明确,开发的质量得到提高。从而节约软件开发的成本,增加软件产品的效益, 让软件开发的发展变得可持续化。1.2软件开发过程现状当前,软件朝着更大更复杂的趋势在发展,社会对软件的需求越来越大。但 是我们现实的开发状况却跟不上软件发展的脚步。软件行业其实一直没有停住过寻求一种类同于硬件的开发方法或过程。自软 件工程思想建立以来,人们提出了各种各样的软件开发方式,以帮助人们提高软 件的开发效率,保证软件质量,然而不下几十种的软件开发过程模型仍然存在着 不少缺陷。现在,有一种理念被提出来,那就是“统一软件

18、开发过程”。“统一软件开发过程”试图集中所有软件生命周期模型的优点,建立通用的 软件开发模式。对此不同的人提出了不同的看法,有人认为:要把这种方法加以 实施还需要开发大量相应的工具和环境,如果没有工具和环境的支持,只能说是 纸上谈兵。通用的软件开发过程是一个好东西,但仍需要不断完善。但也有人认 为:对于一个软件开发方法,它的通用性越大,实用性就越差。试图建立一个通 用的软件开发过程,就必须研究大量的应用实例,总结这些实例的通用特点,并 验证它的正确性。有时越简单的东西越受欢迎。但无论怎样,统一软件开发的过 程是人们一个美好的愿望,许多软件工程的专家们为此已经做出了许多努力。 软件工程领域中提出

19、的许多的先进的开发思想和开发模式,使得软件生产变 得更加地专业化和细节化,有助于软件的生产和管理,但同时也对软件开发管理 和软件技术人员提出了更高的要求。对于大部分的软件开发人员而言,他们并不 是跟不上技术发展的节奏,而是无法满足软件生产过程管理思想进步的需求。复杂的开发管理模式对于软件开发团队而言也是一种额外的负担。软件开发 的团队有大有小,大的团队可以更加地专业化,比较容易实现制度化和流程化; 而小的团队则很难去仔细把握它的开发流程,如果用复杂的方式去管理势必会影 响开发的效率。小的团队有时候虽然简陋,但是同样可以满足系统开发的要求。 软件开发过程同样关注实用性和易用性。随着软件行业自身发

20、展的逐渐成熟,软件开发所关系到的不仅仅只局限于计 算机技术领域,而是几乎所有的领域。软件自身也变得越来越多元化。软件行业 已经成为了一种服务的模式,在这种情况下,软件开发人员不能简简单单只是一 个编程高手,而需要扩展为软件行业的专业人员。软件开发过程管理不单是一个 机制的问题,更是一个观念的问题,需要对每个软件从业人员提出挑战。1.3课题目标本文研究的方向是软件开发过程改良。但本文并不是要对软件开发过程提出 一个终极的方案,而是想以软件开发过程中一些固有的问题作为切入点,来对软 件开发过程做一些分析和探讨,在这些问题的基础上提出自己的改良意见并在实 际项目中加以应用和验证。14论文的结构部署

21、本文共分为六章: 第一章:绪论。第二章:第三章:软件开发过程的问题及分析。软件开发过程研究对象一一商务差旅支撑平台。第四章:商务差旅支撑平台开发过程的分析与考察。第五章:软件开发过程改良在项目中的应用第六章:总结。1.5本章小结本章简单介绍课题的背景、软件开发过程现状、课题目标以及论文的结构。 本文将在下面的章节中陆续展开课题的研究。第2章软件开发过程的问题及分析2.1软件开发过程与软件生命周期2.1.1软件生命周期软件作为一个具体的事物,存在于这个宇宙中,有它的运作规律,有出现, 有消亡。人一生经历生老病死,对于软件而言,也是如此,软件也有它的“生命” 和生命历程。它的生命历程就是软件生命周

22、期。软件生命周期的定义是软件工程化的产物,也是软件发展的必经之路,它是 软件产业成长到一定的阶段的标志。定义软件生命周期就是根据软件的特点将它 的生存周期划分为若干阶段,而每个阶段都有自己的特性和任务,从而使复杂的 软件开发变得更加容易控制和管理。软件生命周期通常被定义为六个阶段:1、问题的定义及规划。2、需求的分析与设计。3、软件设计,包括总体设计和详细设计。4、程序编码。5、软件测试。6、软件维护。直到软件失去效益,死亡。软件生命周期示例可以参考图4.1。图2软件生命周期示例图软件生命周期是软件开发过程的具体体现。2.1.2软件生命周期模型对软件生命周期建立的模型称为软件生命周期模型。随着

23、软件开发模式不断 地变更和深入,软件生命周期模型也在不断地变化。软件开发和管理人员针对不 同的开发模式和不同的项目特点,建立了不同软件生命周期模型。软件开发中常用的模型有:瀑布模型、螺旋模型、快速原型法模型、喷泉模 型、增量迭代模型、v模型、rup模型等等。软件生命周期模型对软件工程研究人员而言已经不是陌生的概念。从模型中 我们不单单可以看到软件开发的不同方式,更可以挖掘出每个模型背后所代表的 软件生产特性。2.1.3从软件生命周期模型看软件生产特性软件生命周期的各个模型都有各自的独特之处,这也反应出软件开发过程其 实是异常复杂多变的。经过仔细的研究后我们就会发现其实每个模型背后都有其建立的生

24、产思想, 而且这许多的思想所对应的也都是从实际的生产状况中所反映出来的软件生产 特性。从各个模型背后的核心思想来看开发过程的不同特点:1、瀑布模型:开发过程是能有序并且有阶段的推进的,而不是混乱没有秩 序的。2、快速原型法:开发过程简单不浪费时间,让用户更多参与到其中。3、喷泉模型:开发过程中各阶段的交互。开发的过程没有想象中那样死板 和固定,各个阶段的职责人员会有很多的交流。4、螺旋模型:它希望能带来一个高质量的开发结构,并最终造出高质量的 软件产品。5、编码修改模型:开发过程不要来得那么麻烦,可以简单快速。6、增量模型:其实某些产品的开发过程尤其是大型的项目,它是一个可以 被切开的蛋糕,而

25、不必着急怎样把一整块蛋糕一下子吃光。而每个模型的思想所对应的软件开发实际是:1、瀑布模型表明:以前软件开发过程内部缺乏管理,难以适应大规模大产 量的需要,所以软件开发必须要有秩序地控制,将各个阶段的任务进行规划和管 理。瀑布模型的提出者表达了软件开发过程次序性和易管理性的美好意愿。2、快速原型法模型表明:客户才是最后产品交付的关键。同时也要有效率, 没有效率就代表浪费资本。快速原型法模型的提出者深刻体会到开发一个能让客户感到十分满意的软 件产品是何等地困难。与客户保持密切的交流,满意客户的意愿是每个软件开发 人员想要开发出一款成功产品的关键。3、喷泉模型表明:开发过程在客观上复杂多变,需要用一

26、种动态的机制来 协调。喷泉模型的提出者清楚认识到软件开发过程本身的不可确定性,与瀑布模型 的思想产生了主观和客观的矛盾。4、螺旋模型表明:软件开发需要一个真正有指导意义的模型。5、编码修改模型表明:软件开发需要激情,能够看到成功的一面。这可能是任何一个开发人员所期盼的一种方式,就是能在短时间内,简单快 速地完成创作。6、增量模型表明:事实上,一个好的软件产品是需要时间的,我们可以不 必着急,只需要从我们所能做的做起,慢慢来,可以以迭代的方式去处理一个项 目。这些模型都表达了各自美好的愿望和期待,但是遗憾的是软件开发过程实在 不容易能将其所有的特性都集中起来再给出一个完美的表达,也没有一个实际的

27、 开发过程可以完全实现这些美丽的愿景。但是如果能够抓住每个模型的核心思想,并且在实际的开发过程中加以注意 和把握,这对软件开发过程的改进以及更优秀的软件生命周期模型的建立而言都是有极大的帮助的。就像我们可以从各个模型中找到几个关于软件开发过程的关 键词语:易管理、关注客户、动态、规范、效率、迭代等等。软件开发过程是一个极其复杂的生产过程。2.1.4传统软件生命周期模型的弊端传统的软件生命周期模型以“瀑布模型”为例,它的开发模式都是以假定每 个开发阶段的开始都是在上一个阶段的任务完全完成之后才进行的,而且各个阶 段之间的衔接非常完美,让人一看就觉得这是一个合理、高效的开发模式。定义时期开发吋期维

28、护时期图2.2瀑布模型示例图但是经过20多年的开发实践经验证明,传统的软件生命周期模型开发方式 有很大的缺陷。软件开发过程是一个极其复杂的生产过程,并且由人承担生产的 操作,有非常多的因素会影响到工程项目的成败。而且,一次的软件开发往往需 要许多不同背景的个人和团队参与到其中,更增加了复杂性。在软件开发的生命 周期过程中,每个阶段并不会像模型中所描绘的那样简单自然,而是互相交错呈 现动态循环的特点,如图2.3所示。在软件生产的每一个阶段中,都或多或少会 留下一些隐患和错误,包括分析上的、编程过程中的、测试过程中的失误。依据 传统软件生命周期模型模式进行开发,往往会有很大的风险,如果等到系统测试

29、 时甚至交付时突然发现了重大问题,这时的返工就会造成人力、物力、财力、时浙江大学硕士学位论文序号)应用于要在此处显示的文字。间上的巨大损失。分析和谀计伏态迭代在以上所发生的情况基础之下,提出了基于增量迭代思想以及结合了各模型 优点的rup。2.1.5 “统一软件开发过程”模型一一rup时间齟紐作克商雌模需求訝见测试部雾核心支持工作盍配登恥芟更哲理项目管理 环墳图2.4rup统一软件开发过程生命周期示例图rup即为“统一软件开发过程”,它是一个面向对象的并且基于网络的程序 开发方法论,在大型的信息项目中逐渐得到广泛的应用。它是目前开发大型系统 的主流软件开发过程。rup最大的特点就是它采用了增量

30、迭代软件生命周期模型的思想。它强调了 软件开发不可避免是一个增量迭代的过程。增量是指系统可以根据需要分成模块 在不同的生产周期中分步进行实现,而迭代是指系统的某一模块在一次生产周期 中无法完整实现,需要经过多次开发进行完善。每一次的增量和迭代过程,都包 括完整的需求、设计、编码、测试阶段,而且完成一个过程之后,系统都是一个 可以交付的原型。从这一点上可以看出,“瀑布模型”中阶段性划分和阶段推进 的思想还是有其基础性的意义的。一个完整的项目需要经过多次的增量和迭代,并且在每一次不同生产周期的 生产过程中,需求、设计、编码、测试阶段工作的比重是不同的。rup对项目的管理者和系统的设计者要求非常高,

31、所以比较适合大型项目的 开发。而对于小型项目而言,可以减少增量迭代的次数,甚至只需要一个生产周 期就可以实现项目。2.1.6固有的缺陷尽管软件开发过程已经有许多的模型和方法辅助,但是软件开发过程本身有 模型所不能完全表达出来的一些固有缺陷,而这些生产中的缺陷是我们所熟知 的:1、在软件项目一次生产周期的开发过程中,总是会发生开发目标的丢失、 偏离现象,并最终导致产品与客户的意愿产生了较大的偏差。2、在软件项目的开发过程中,总是免不了开发内容在意料之外的调整和变 更。而恰恰这些意料之外的情况给整个开发过程带来了很大的阻力。3、软件开发团队中各职能的目标并不一致,这也给软件开发的顺利进行带 来了一

32、定的阻力。当软件应用到社会环境中时,软件行业需要与其它的各行各业打交道。在软 件生产过程中,软件开发越来越重视客户的需求,然而恰恰很多时候,许多软件 特别是专用的软件产品并不能满足客户的需求,很难做到恰到好处。在软件开发过程中,需求阶段是客户与软件生产的桥梁阶段,是开发过程中 转换和传递客户需求的重要环节,起到极为重要的作用。然而结合rup模型的产 生的原因,以及实际的项目开发经验,我们已经很清楚地了解到需求工作难以一 步到位。不仅如此,开发过程中的这些缺陷也正反应了需求在整个软件开发的实 际过程中所表现出的一些特质:1、需求递减效应。2、需求的增、删、改变化。3、需求定位和认知的缺失。这里的

33、需求主要指客户所表达的需求,是需求分析中的需求对象,是开发的 目标和内容。课题以软件开发过程中的需求问题作为实际的切入点,并在后面的内容中展 开一些分析,对软件开发过程提出一些看法和建议。2.2软件开发过程的问题1、需求在软件生命周期不同阶段的传递中会发生递减效应。需求开发过程图2.5需求递减示例图2、需求本身在开发过程中也会发生增加、删除、修改等变化。图2.6需求变更示例图3、需求定位和认知的缺失。2.2.1需求递减效应需求的递减有很多的原因,为此作者专门画了几幅图以表示其中的现象。 假设在需求明确的情况下:i、需求分析人员关注细节,但开发人员没办法把握开发内容。如图2.7所示。oo客户需求

34、分析员研发人员图2.7开发人员理解不了需求示例2、需求人员模糊定义,导致开发人员理解错了需求。如图2.8所示。客户需求分析员研发人员图2.8开发人员理解错了需求示例3、需求人员有自己的想法,开发人员也有自己的想法。如图2.9所示。満足需求:k塑料的2. 透明.直筒3. 结实、耐用自己理解:(不是更好么)k加个盖子保温又方便携带2、杯子加个屈伸更美观3、做个公司标记,一定喜欢4、加个刻度.简直太棒了表面目标二k普通的杯子2、造塞符合公司形象 潜在目标"最好)k直筒型2、瓷质3% wfc4、顔色倨柔和4、用以员工普通使用一般理解二k玻璃杯.塑料杯.瓷 杯其中一种。考虑成本, 决定釆用塑料

35、杯。2.透明、简单.直筒的 塑料杯。符合公司形象。 需求延伸m可能)k易用.耐用2.简约.易造客户需求分析员研发人员图2.9开发人员有自己的理解示例总结:图2.7、图2.8、图2.9表现的是需求传递过程中经常发生的问题。需求在传 递的过程中递减了,这是客观存在的现象,表明人与人之间对同一事物的理解是 不一样的。但这还仅仅只是在需求明确的情况下。更多的时候客户对软件的需求是模糊 的,甚至没有一点概念,就更容易发生递减的情况。222需求增、删.改变化课题中所提到的需求增、删、改变化,不是开发人员设计中的变化,而是设 计之外的变化。比如:软件环境的突然改变,客户意愿的突然改变,业务规则发 生变更。这

36、些情况对于一些专业软件系统尤其是电子商务软件系统而言是非常常 见的,而对于一些通用性的软件来说则相对会少一些。需求增删改变化所描绘的是一个动态的需求,而增量和迭代开发模式所描绘 的是一个静态的需求。在开发过程中使用增量和迭代可以实现对一个静态需求的 逐步掌握,只要时间足够方式得当,就有完全掌握一个需求的可能。而动态的需 求是开发人员始料未及的,是会变更的,开发人员根本没有足够的时间去掌握。 有时候,开发的节奏必须要跟上客户和环境的需求变化。图2.10需求文档堆积示例需求与数据一样,有着变化的特点。但课题中所提到的变化并不是需求本身 因为分析过程中的不完全而导致的,而是客户的意愿和客观的环境随时

37、会发生变 化而影响到需求。需求的增、删、改特点具体表现在:1、对于系统的某个模块而言,需求不单单是增加,而且还有删除和修改的 变化。2、对某单一需求而言,在开发的过程中也会发生增、删、改的变化。3、增、删、改无法避免。所以在整个软件开发的过程中,从需求的提出,到编码的实现,再到产品的 测试,是一个动态变化的过程;从某一模块的建立实现并投入使用,再到发生变 化需要更改,也是一个动态变化的过程。需求的增、删、改会对开发流程和项目 最终产物产生重大的影响。图2.10也同样显示了在一个项目里,需求常常会缺乏有效的管理和组织归 类。软件项目在不断的扩展中,需求的增、删、改变化都会对从前的既定的规则 造成

38、影响。如果不进行有效的管理和归类,需求文档很容易形成恶性的堆积,到 了特定的情况下,会极大地拖慢软件工程的进度,特别是对大型软件系统。需求的这一变化,使得整个软件开发过程不是那样地静态,而是多重交互的。2.2.3需求认知和定位的缺失在现在软件行业中,几乎所有的人都已经知道需求的重要性,并且也知道开 发要符合需求设计,但是对于需求阶段的工作许多的公司和开发团队却没有一个 准确的定位。人们常常认为需求的工作只是一个从客户那获取需求,产生需求文 档的过程。只要能完整地获取到客户的需求,产生需求文档之后,开发人员按照 文档的要求执行就可以了,然而事实上在生产的过程中很多的问题都会发生,这 些问题的答案

39、有时候并不是除了是就是非,需要调节和控制。软件开发生命周期 具有完整性、统一性的特点,有时候一些小问题也能牵一发而动全身。还有一些具体的表现:1、人们往往注重如何从客户那获取完整的需求,却忽略如何在团队中传递 需求和目标。2、开发人员虽然依据需求规格进行程序设计和编码,但最终产品却没有满 足需求。开发人员很容易只做表面功夫。3、各职能人员对需求的认识和了解并不充分也不积极,有些盲目性。2.3软件开发过程问题分析2.3.1需求递减效应分析需求的传递递减问题,除了客户与开发人员交流原因之外,有其本质的原因:、人作为需求传递者的缺陷。1、需求无法完整表达。2、需求无法被完整理解。需求在客户的心里有可

40、能有两种情况,一个是清楚地知道需要什么,另一个 是自己并不清楚需要什么。但无论是清楚或是不清楚,客户在表达需求的时候, 常常不能完整地表达出来的。而需求人员在理解需求的时候,虽然可能和客户经 过一系列的讨论并且基本掌握了需求的内容,但也会存在自己所理解的需求不能 完整地表达出来的情况。同理,需求分析人员对客户需求的理解以及开发人员对需求分析人员需求描 述的理解都会存在无法完整理解的可能。即便是需求文档,开发人员也会存在片 面理解的情况。这样,需求经过一出一进,再一出一进,势必会打很大的折扣,特别是在一 些并不明确的需求上面。二、不同的专业领域对同一事物的理解能力存在差异。1、客户熟悉业务流程不

41、熟悉软件环境。2、研发人员熟悉软件环境部熟悉客户业务。软件客户往往是来自不同于计算机领域的其它领域,他们对自己领域、行业 的行为和业务非常熟悉,但是他们并不知道如何将自己的业务实现电子信息化。 但这并不是最重要的原因。软件行业已经成为了其它行业信息化和自动化的支 持,但是软件开发人员自身还非常缺乏行业应当具备的素质,不知道现在开发所 面对的已经不仅仅是一个程序,而是一个实际的业务或行为对象。这导致了许多 的程序员对自己所研发的对象不关心也不愿意去了解,这样就无法达到客户要求 的高度。许多时候,开发人员本身开发任务就比较重,如果还需要花时间去更好地了 解和掌握某个业务,这对开发人员来说是个很大的

42、负担,所以程序员往往会把这 些责任全都托付给需求分析员。事实上,开发人员没有掌握好开发对象,就做不 好一件软件产品。三、开发人员丢失了客户的目标。开发人员专注于系统的功能,却忽略了功能是为业务和人物行为服务的。开 发人员在做设计、编码和测试的时候,很容易受到文档描绘的局限,而将目光都 注视到功能上,而不是关注客户提出这个需求背后的原因和目标。这样一来,就 会出现开发人员根据功能去臆想客户的目标,结果使得做出来的东西跟客户想要 产生了很大的差距。四、需求的递减效应无法完全避免。以上的情况几乎是无法避免的,这就使得需求的递减也是无法完全避免的。2.3.2需求增、删、改变化分析需求的增删改变化体现了

43、:一、许多需求是动态的。动态的需求更新了我们在传统意义上对需求的理解。这表明不仅软件开发要 受到软件环境的影响,软件开发的对象也会受到对象自身环境的影响。现在,越 来越多的软件项目在不同程度上受到业务、客户和环境的制约。软件项目越来越 与项目所在的领域相关联,呈现出软件项目不仅具有软件的特性,还具有不同专 业的不同特性。二、需求增删改变化在不同的软件产品中表现程度是不一样的。三、需求的增、删、改问题,同样也是无法完全避免的。但需要注意两种不同的变更情况:1、非开发过程需求的变更。2、开发过程中需求的变更。情况1和情况2的特点不同。非开发过程需求的变更是发生在既有的需求完 成之后,不会打乱正常开

44、发流程。而开发过程中需求的变更,是开发过程中的变 更,会打乱正常的开发流程。在开发过程当中,常常会因为许多特殊的原因而需 要改动产品的规格,这些改动势必会导致流程的回归。流程回归在一般的软件生 命周期模型中并没有得到有效的体现,因为在实际实施过程中它是比较乱的。开发过程中需求的增删改变化,是导致软件开发过程呈现动态特征的主要原2.3.3需求认知和定位的缺失分析如果要分析需求的认知和定位问题,就必须认识到需求阶段在整个软件生命 周期重要性。想要从一个宏观的角度来看整个软件生命周期,必须回到它的演化过程中 来。2.3.3.1软件开发的初期图2.12软件开发初期示例图软件开发初期的核心就是编码,因为

45、编码是唯一产生软件的过程。所以如图2.12所示,在软件生命周期诞生的最初,编码是就是生产的全部。2.3.3.2软件开发的渐进研发过程编码 町简单测试图2.13软件开发渐进示例图如图2.13所示,研发过程中,测试阶段逐渐突显出来。测试阶段的加入,是 永远无法避免的,也是极其自然的。因为生产的目的就是为了使用,而测试的核 心就是模拟使用。这与任何性质的生产都是适用的。所以测试与编码是天生的一对。2.3.33软件开发的发展研发过程简单设计编码简单测试图2.14软件开发发展示例图设计不是突然出现的,而是到了特定成熟的阶段开始独立出来。当软件自身 发展到一定规模的时候,设计的作用逐渐突显出来。它的突出,

46、在一定程度上是 为了弥补人类固有能力的不足,比如说人大脑的运算能力、存储能力、记忆能力、 逻辑表达都是有限的,无法表达和实现更多更大的内容。设计阶段会产生设计文 档,而设计文档就可以帮助存储设计思路,也可以更好表达和传递设计思想。设计阶段的目的是为服务生产的,设计阶段的产物就是未成形的概念产品。23.3.4软件开发的成长图2.15软件开发成长示例图产品的持久化是每一个设计产品的设计师的目标导向,这是永恒的定义,是 人类内心深处的渴望,是一个创造者与生俱来的母性。维护产品的核心目的就在于使产品得以持久,即便它并不具有商业价值。维 护阶段的出现,表明产品的生产过程已经趋于成熟,生产出来的成品已经有

47、效用, 具有可以长期使用的价值。维护阶段是产品与使用者的第一座桥梁,只是这座桥梁还不完整,只出不进。 在它刚出现的时候,软件维护的作用其实并不突出,人们也没有意识到维护是多 么重要的一件事。直到现在,人们已经知道它占去了软件生命周期中极大的比重, 甚至高过整个开发的过程。2.33.5软件开发的机遇软件n标研发过程需求)设计测试维护持久化编码图2.16软件开发机遇示例图终于,当软件作为成熟的产品开始进入市场,它便具有了独立的商业价值。 这时候,软件产品面向的将是大部分陌生的面孔,它将不再仅仅为设计师们服务 了。需求阶段的出现,是为了在软件设计师与客户之间设立中间者,是一座由客 户进入软件开发的桥

48、梁。需求的重要作用就是传递客户的意愿、传递开发者的意愿。它的核心目标就 是实现两者的意愿。需求阶段的出现,意义在于软件设计师不再是软件开发的东家,其他领域的 客户才是。如果说软件开发是一个家用电器,需求的作用就相当于是变压器;如 果说软件开发是一杯柠檬汁,那么需求就是一根吸管;而如果说软件开发是一个 刚被发现的小岛,那么需求就是小岛与大陆之间架起的桥梁,只不过它有着与维 护阶段相反的导向。需求是由将客户导向软件,维护是将软件导向客户,两者加 在一起,桥梁就完整了。2336软件开发的成熟图2.17软件开发成熟示例图定义阶段即定义阶段的出现是一个超越,是软件整个行业成熟的标志,它表 明软件开发已经

49、承受了足够多的失败和挫折,认识到开发一个广泛应用型软件产 品也不是那样地单纯简单的一件事。定义阶段的作用其实是一直存在的,只是很 多时候并不明显。风险越高,它的意义越加越大,但它是软件生命周期中阶段性 质最不明显的一个阶段i如果对它有恰当的比喻,那么使用它就好像是建好一座桥,再设立一道关卡。 它决定着是否有必要将客户与软件设计师连接起来。如果说需求的作用相当于变 压器,那么定义的作用就是插头。有时候它的作用发挥和需求阶段其实是一起的。它的核心目标就是做选择,选择是否要创造价值,而实际上它的核心本质就 是回避风险,为了避免不能创造出真正的价值。23.3.7软件生命周期各阶段的核心目的以及其本质软

50、件生命周期的每一个阶段的诞生都是有其核心的目的与本质。软件生命周期各阶段:一、定义阶段:它的核心目的在于创造真正的价值,无论是什么样性质的价 值。它的本质就是规避风险。二、需求阶段:它的核心目的在于引导真正价值的实现。它的本质就是保证价值创造的方向。三、设计阶段:它的核心目的在于如何展开,具体实现价值。它的本质就是 创造物的概念。四、编码阶段:它的核心目的在于产生有意义的创造物。它的本质就是创造。五、测试阶段:它的核心目的在于否定创造物。而它的本质却是肯定价值。六、维护阶段:它的核心目的在于使价值得以保值。它的本质就是价值的持 久化。2338软件生命周期各阶段的特点及其重要性软件生命周期的每一

51、个阶段都有各自的特点,它们的重要性也不相同。根据 各个阶段的不同特点,本文设计了表2.1,它将分别从各个不同的角度对软件生 命周期的各阶段进行一些简单的比对。臼表2软件生命周期各阶段特点定义需求设计编码测试维护影响力 可操作性 重心 周期 重视度 技术要求 人员配备 成熟度 流动性 经验要求 影响力:影响力就是软件开发生命周期中因果关系的体现。比如:问题定义阶段它的影响力就是全局的,如果它被否定,就是整个生产过程被否定,它是绝 对的起因。可操作性:就是该阶段实际可操作的工作内容的丰富程度和灵活程度。从这 个角度上来看,需求和维护阶段的工作会有更加丰富的工作内容和更大的可扩展 的空间,可操作性非

52、常强。重心:各阶段的目的为了什么?无疑所有的阶段都是为产品的生产而服务 的。周期:对于单一软件产品而言,它在各阶段中产生最终阶段产物的时间。就 仅仅阶段的周期而言,维护阶段是软件生命周期中阶段时间最长的,而其它阶段 的时间是动态有效的。重视度:软件开发团队内部实际对某个阶段工作的重视程度,但并不一定予 以全力支持。技术要求:仅仅指实际的编程开发能力。人员配备:各阶段的人员数量。从许多软件团队的实际情况上来看,编程人 员往往是最多的,其次就是测试的人员。成熟度:各阶段发展的成熟程度。软件生命周期的各阶段都已经形成各自的 阶段特点。技术阶段要强于管理阶段。流动性:指的是各阶段操作人员的流动性。经验

53、要求:各阶段对人员的软件开发经验要求的程度。从表2.1中可以很清楚地看到各阶段的特点和重要性。2.33.9为什么需求阶段那么重要?在了解需要阶段特性的同时,本节将提出一些关于需求阶段的问题并做出分 析与解答。1、需求的阶段在开发过程中,容易集中很多问题,为什么?这有几个方面的意义:1)需求阶段问题多是因为需求阶段的工作自身的矛盾性。它对沟通能力有 要求,对项目经验也有要求。然而,一、它对需求设计人员技术的要求不高。二、它对需求设计人员的项目经验要求很高。这样就造成了,如果使用缺乏技术能力 的设计人员,需求就很可能会不到位,而项目经验丰富的人员基本不会被安排去 做需求设计的工作,而会被安排做系统详细设计的工作。所以需求设计人员经验 上的不足又会导致这个阶段的力量显得薄弱,引导力度不够。(这样的现象客观 上也反应了中国软件开发本身就还非常缺乏成熟的软件开发人员。)三、即使是 优秀的技术人员,他也不一定具备出色的沟通理解能力。如果没有沟通理解能力, 即便是再出色的技术人员来做需求的工作,最终对整个软件项目而言还是存在着 很大的风险的。i图2.18问题围绕需求示例图2)问题之所以都集中在需求的阶段,一方面是因为需求阶段的成熟程度不 够,容易出问题。另一方面很多问题并不都出在需求的阶段,但却都要回到需求 的阶段,需求阶段是

温馨提示

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

评论

0/150

提交评论