题材一【摘要】我国的信息化已经走过了20多年的历程,但许多软件开发公司仍不得不在收集、编写和管理产品需求中疲于奔命。而缺乏用户参与、不完整的需求及不断变更需求,是导致信息技术项目不能按进度安排和资金预算完成全部功能的主要原因。需求分析是软件工程中的一个重要环节。是关乎软件项目开发成败的重要因素。现在的软件项目中返工开销几乎占了总开发的一半,而导致返工的主要原因是需求分析不明确.从而引发项目开发中的一系列更改。这些更改可能导致浪费大量资源、软件项目无法按时完成等严重问题。因此不难看出,需求分析是软件设计和实现的基础,是软件项目迈向成功的重中之重。关键字:软件工程需求分析一、软件工程中的需求分析概述一个软件项目的开发主要分为五个阶段:需求分析阶段、设计阶段、编码阶段、测试阶段和维护阶段。而需求分析阶段所得到的结果。是软件项目开发中其他四个阶段的必备条件。从以往的经验来看,需求分析中的一个稍稍的偏差.就可能导致整个项目无法达到预期的效果。需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。在这个过程中。用户的确是处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础。需求分析阶段结束后.要求得到:1.SRS文档(SystemRequirementSpecification);2.DRM文档;3AcceptancePlan。从广义上理解需求分析则包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。二、软件工程中的需求工作流程软件需求是指用户对目标软件在功能、行为、性能、设计约束等方面的期望。通过对问题及其环境的理解与分析,为问题涉及的信息、功能及行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,整个活动构成软件开发生命周期的需求分析阶段。在需要的开发中,问题的获取包括业务需求、用户需求、功能需求。业务需求的参与者主要是业务流程分析员,对企业目前的业务流程进行评估。确定进行何种程度的业务建模;用户需求重心是如何收集用户需求,确定角色和用例,获取需求的方法倾向组织访谈会:功能需求依赖于用户需求。是用户需求在系统上的一个映射,为用户做一个软件原型是一个很好的方法。三、软件工程中的需求分析需求分析包括提炼、分析和仔细审查已收集到的需求,以确保所有承担风险者都明白其含义。能找出其的错误、遗漏等地方。分析员通过评价来确定是否所有的需求和软件需求规格说明都达到了优秀需求说明的要求。分析的目的在于开发出高质量的需求。这样你能做出实用的项目估算并可以进行设计、构造和测试。通常。把需求中的一部分用多种形式来描述.如同时用文本和图形来描述。分析这些不同的视图将揭示出一些更深的问题,这是单一视图无法提供的。分析还包括与客户的交流以澄清某些混淆,并明确哪些需求是更为重要的。其目的是确保所有风险承担者尽早地对项目达成共识并对将来的产品有个相同而清晰的认识。1创建数据字典。数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段.数据字典至少应定义客户数据项以确保客户与开发小组使用一致的定义和术语。分析和设计工具通常包括数据字典组件。2确定需求的优先级别。应用分析方法来确定使用实例、产品特性或单项需求实现的优先级别。以优先级为基础确定产品版本将包括哪些特性或哪类需求。当允许需求变更时,在特定的版本中加入每一项变更.并在那个版本计划中做出需要的变更。3.分析需求可行性。在允许的威本、性能要求下。分析每项需求实施的可行性,明确与每项需求实现相联系的风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。4.使用质量功能调配。质量功能调配是一种高级系统技术,它将产品特性、属性与对用户价值联系起来。该技术提供了一种分析方法以明确哪些是客户最为关注的特性。质量功能调配将需求分为三类:期望需求,即客户或许并未提及。但如若缺少会让他们感到不满意;普通需求和兴奋需求,即实现了会给客户带去惊喜,但若未实现也不会受到责备。5.衡量需求稳定性。记录基本需求的数量和每周或每月的变更数量(添加、修改、删除)。过多的需求变更“是一个报警信号”意味着问题并未真正弄清楚,项目范围并未很好的确定下来或是政策变化较大。6.绘制系统上下文示意图。这种示意图是用于定义系统与系统外部实体问的界限和接13的简单模型。同时它也明确了通过接口的信息流和物质流。7.作为功能需求的补充。软件需求规格说明还应包括非功能需求.它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。四、软件工程中的需求的风险在进行需求分析时存在一些很危险的做法,这些做法会对软件产生致命的影响,具体体现在:1无足够用户参与。2模棱两可的需求。3不必要的特性。4过于精简的规格说明。5忽略了用户分类。6不准确的计划。五、需求的标准优秀的需求应该是明确、完整、一致、可测试的,此外还有其他的概念,如可跟踪、可修改等等。1明确:对需求分析中采用的语言做某些限制,除了语言的二义性之外,不要采用计算机术语,造成用户理解上的困难。2完整:需求的遗漏是经常发生的事情,多发生在用户方面。需求完整性涉及到需求分析过程的各个方面,从最初的计划制定到最后的需求评审。3一致:用户需求必须和业务需求一致,功能需求必须和用户需求一致。严格遵守不同层次间的一致性关系,在实现过程中,把一致性关系细化。4可测试:需求分析是测试计划的输入和参照,只有系统的所有需求是可以被测试的,才能保证软件始终围绕着用户的需求。六、需求管理技巧需求管理可遵循的方案较多,下面的方案适用于每一个关键的需求管理。(一)、理解涉众需要需求有许多来源,它们可来自于对项目结果感兴趣的任何人,客户、合作伙伴、最终用户以及领域专家都是某些需求的来源,而管理人员、项目团队成员、业务策略和管理机构是另外一些需求源。掌握如何确定哪些人员应该是需求源、如何获得这些需求源以及如何从中获取信息是很重要的。(二)、定义系统解释涉众需求,并整理为对要构建系统的意义明确的说明。在定义初期,决定需求的构成、文档格式、语言规范、需求等级、请求优先级和预计工作量、技术和管理风险以及系统规模等。定义活动还包括与最关键的涉众请求直接联系的初期原型和设计模型。(三)、管理系统规模管理系统规模是一个持续不断的活动,需要迭代式和递增式开发,将项目细分为更易于管理的若干个小部分。使用需求属性作为协商应包含需求的基础,项目推介人能代表组织拒绝那些超出可用资源规模的变更,也应有相应能力扩展资源以适应扩大的规模。(四)、改进系统定义包括两个重要的考虑事项:制定更详细的高层系统说明和验证系统是否符合涉众需要,是否按说明运行。说明通常是项目团队的重要参考材料,在制定说明时一定要考虑受众。(五)、管理变更的需求能否适应变更需求是评测团队的涉众敏感度和运作灵活性的一个尺度。变更不是敌人,而没有管理的变更才是真正的敌人。一个需求的变更对其他需求可能有影响,管理需求变更包括这样一些活动:设立基线、追踪每个需求的历史、确定哪些依赖关系值得追踪、在相关项之间建立可追踪关系以及维护版本控制等,建立变更控制或批准流程也很重要。七、评审需求以保证需求的质量要保证需求的质量必须确认需求的标准,并对其进行评审。需求的标准包括其正确性、一致性、无二义性、完备性、相关性、可测试性、可跟踪性等几个方面。依据软件工程中使用的定义技术,上面的其中一些检查可能能够自动化的进行。我们重点讨论确认需求的技术中最常见的评审。在评审中,来自开发人员的代表和来自客户职员的代表各自检查需求文档,然后开会讨论识别出的问题。客户代表包含那些将操作系统的人、准备输入系统的人、以及将使用系统输出的人。我们则提供设计小组、测试小组和过程小组的相关人员。在评审过程中有以下工作是比较重要的:1、评审系统规定的目的和目标。2、将需求和目标、目的相比较,已确定所有的需求都是必要的。3、评审系统将要运行的环境,检查我们提议的系统与其他系统之间的接口。4、客户代表评审信息流和提议的功能。以证实需求正确的反映了客户的需求的意图。5、如果在开发过程中或系统实际运行过程中存在任何风险,我们可以评价并在文档中记录这些风险,讨论和比较各种可选方案,并就将要使用的方案达成某种一致。6、我们可以就测试系统进行讨论:随着需求的增长和变化,如何重新确认需求等问题。总之,软件需求分析方法和工具的使用,对我们软件开发过程影响是很深远的,选用高效能的正确的方法与工具,可以使我们的软件更加正确地反映现实需求,更加具有可用性、可扩展性和可维护性;降低了软件项目的风险。软件需求分析中的关键就是展开分析、发现问题、征服问题。所有的一切都是为了能够将软件中的错误和漏洞在需求分析和需求工程阶段发现并解决,这样才能使软件开发的成本收益比达到最大,使得软件在其生命周期中的维护费用降到最低,这也是我进行软件需求分析方法研究的目的.希望可以通过上述的软件需求分析的方法研究为以后软件的开发打下一个良好的基础。需求分析作为软件生命周期的第一个阶段,其重要性越来越突出。缺乏软件开发和维护的正确方法以及忽视软件开发过程的质量控制会造成用户对运行系统不满意、软件产品质量出现漏洞等现象。软件项目中56至76的问题都是在需求分析阶段埋下的“祸根”8因此,必须重视需求分析在整个软件开发中的重大作用。一、需求是根本需求是开发者和用户交互的一个过程,任何一方的不投入都会导致项目的失败。评判一个软件项目成功的标准是看它是否解决了用户的问题,而用户的问题的具体体现就是用户的需求。需求阶段的每一个不慎都有可能导致软件实现阶段的返工,而需求的不慎不是小心就可以的,很多需求是隐性的,连用户都不清楚自己的需求,这时就要一种科学的方法来帮助软件组织实施需求过程。二、需求工作流程软件需求是指用户对目标软件在功能、行为、性能、设计约束等方面的期望。通过对问题及其环境的理解与分析,为问题涉及的信息、功能及行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,如图$所示,整个活动构成软件开发生命周期的需求分析阶段。在需要的开发中,问题的获取包括业务需求、用户需求、功能需求。业务需求的参与者主要是业务流程分析员,对企业目前的业务流程进行评估,确定进行何种程度的业务建模;用户需求重心是如何收集用户需求,确定角色和用例,获取需求的方法倾向组织访谈会;功能需求依赖于用户需求,是用户需求在系统上的一个映射,为用户做一个软件原型是一个很好的方法。三、需求是变化的目前众多的软件项目经常有这样的问题9早些时候开发的软件在使用中发现需要改进,可是要改进或者是更改现有系统,经常的方法是重新开发一个系统,主要是传统的系统分析是在假定需求不变的情况下进行的。所以在软件开发中必须明白需要是变化的,它有如下的特点:1需求不总是显而易见的,它可来自各个方面。2需求并不容易用文字清晰地表达。3存在不同种类的需求,其详细程度各不相同,不加以控制,需求的数量将难以管理。4需求涉及众多相关利益责任方,要由跨职能的各组人员来管理。5需求对时间敏感。四、需求的风险在进行需求分析时存在一些很危险的做法,这些做法会对软件产生致命的影响,具体体现在:1无足够用户参与。2模棱两可的需求。3不必要的特性。4过于精简的规格说明。5忽略了用户分类。6不准确的计划。五、需求的标准优秀的需求应该是明确、完整、一致、可测试的,此外还有其他的概念,如可跟踪、可修改等等。1明确:对需求分析中采用的语言做某些限制,除了语言的二义性之外,不要采用计算机术语,造成用户理解上的困难。2完整:需求的遗漏是经常发生的事情,多发生在用户方面。需求完整性涉及到需求分析过程的各个方面,从最初的计划制定到最后的需求评审。3一致:用户需求必须和业务需求一致,功能需求必须和用户需求一致。严格遵守不同层次间的一致性关系,在实现过程中,把一致性关系细化。4可测试:需求分析是测试计划的输入和参照,只有系统的所有需求是可以被测试的,才能保证软件