软件项目分析需求
需求分析,我刚做了个项目就用它,不知道是不是你想要的1引言 21.1编写目的 21.2背景 21.3定义 21.4参考资料 22任务概述 22.1目标 22.2用户的特点 32.3假定和约束 33需求规定 33.1对功能的规定 33.2对性能的规定 33.2.1精度 33.2.2时间特性要求 33.2.3灵活性 43.3输人输出要求 43.4数据管理能力要求 43.5故障处理要求 43.6其他专门要求 54运行环境规定 54.1设备 54.2支持软件 54.3接口 54.4控制 5 软件需求说明书的编写提示1引言1.1编写目的 说明编写这份软件需求说明书的目的,指出预期的读者。
1.2背景 说明:待开发的软件系统的名称;本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;该软件系统同其他系统或其他机构的基本的相互来往关系。
1.3定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料 列出用得着的参考资料,如:本项目的经核准的计划任务书或合同、上级机关的批文;属于本项目的其他已发表的文件;本文件中各处引用的文件、资料、包括所要用到的软件开发标准。
列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2任务概述2.1目标 叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。
解释被开发软件与其他有关软件之间的关系。
如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。
如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。
|2.2用户的特点 列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使甩频度。
这些是软件设计工作的重要约束2.3假定和约束 列出进行本软件开发工作的假定和约束,例如经费限制、开发期限等。
3需求规定 3.1对功能的规定 用列表的方式(例如IPO表即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明软件应支持的终端数和应支持的并行操作的用户数。
3.2对性能的规定3.2.1精度 说明对该软件的输入、输出数据精度的要求,可能包括传输过程中的精度。
3.2.2时间特性要求 说明对于该软件的时间特性要求,如对:响应时间;更新处理时间;数据的转换和传送时间;解题时间;等的要求。
3.2.3灵活性 说明对该软件的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力,如:操作方式上的变化;运行环境的变化;同其他软件的接口的变化;精度和有效时限的变化;计划的变化或改进。
对于为了提供这些灵活性而进行的专门设计的部分应该加以标明。
3.3输人输出要求 解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。
对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。
3.4数据管理能力要求 说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。
3.5故障处理要求 列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。
3.6其他专门要求 如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。
4运行环境规定4.1设备 列出运行该软件所需要的硬设备。
说明其中的新型设备及其专门功能,包括:处理器型号及内存容量;外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量;输入及输出设备的型号和数量,联机或脱机;数据通信设备的型号和数量;功能键及其他专用硬件4.2支持软件 列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。
4.3接口 说明该软件同其他软件之间的接口、数据通信协议等。
4.4控制 说明控制该软件的运行的方法和控制信号,并说明这些控制信号的来源。
软件项目需求分析的文档都包括哪些内容呢?
首先你要找那些让你提交这些报告的人,问明白他们说的这些报告究竟需要涉及什么内容,给什么人看,格式和文档的风格要求是什么。
如果他们不能告诉你一个满意的答案,就没有必要给他们一个他们自己都不知道想不想要的东西。
而实际上需求分析报告可以说是文档体系中最没有必要存在的。
当然我不是说需求分析不重要,而是说需求分析太重要,是一个报告所不能容纳的,而是要有一个包括数个不同内容体系的文档系统。
而如果你的项目根本就没有那么多的资金和资源,你一般就不要动用这样一个庞大的系统。
你在这个时候只需要随时记录你的想法,列出你的关注点和解决的想法。
而当然这个系统虽然庞大,但是还有很多线索要你去掌握它们的建造。
首先这个系统需要有一个业务目标分析,也就你的这个系统要达到的业务目标,要结合具体的企业环境进行系统分析和论证,这个文档的阅读者基本上属于最高级次的决策者。
还要有一个技术目标分析,也就是你的这个项目将解决什么具体的技术问题,这个部分也十分的复杂,基本上需要行业专家认真地分析,这个文档的阅读者属于管理者。
还要有一个技术实现的报告,也就是你需要为完成这个项目动用什么技术,主要是你必须说出在这个项目的几种可使用技术方案中你为什么要选择你目前的这种,这个文档的阅读者基本上就是相关的技术人员。
而同时你还需要一个风险分析的报告,把这个文档要针对业务/技术/实现这三个层次的问题中要遇到的各种风险进行分析。
这属于基本的需求分析的基础文档系统。
然后你还需要面对你的具体的情况进行具体的项目的规划分析。
首先如果你的项目是一个开发型的项目,你就有必要对你的业务目标和技术目标的实现进行一种设计。
这个工作需要大量的市场和人类学知识。
其次你还需要对你上面这个需求的设计进行分析,以把其转化为开发者可以接受的文档格式。
然后你还需要对这些需求进行具体的粒度化的划分,将其细化为一些原子态的互相联系的部分。
在此基础上你还需要对这些具体的技术实现进行规划,找出最重要的和最有难度的部分。
同时这个层次的风险分析也需要有一个单独的文档说明。
最后你还需要对实现中具体的细节问题组织你的需求分析文档。
这些问题包括,你使用的具体技术需要什么要求的人员和设备等等资源。
你的需求需要如果进行测试,以保证你的这些需求能够被真正的贯彻。
你的系统需要如何部署在你的业务环节中。
你的人员培训需要采用什么措施。
这些问题都需要有专门的文档,而且也都是需求分析方面的。
基本上这样一个系统要有10份以上的文档,而关键在于不同的问题应该在不同的文档中说明,同时你还必要在这些文档的相互关系中做出一种标注。
这样一个工程,基本上需要一个团队来专门的进行协调和维护。
至于书写则是一个文档就要一个小组,同时还必须有一个系统的管理小组。
在这样一个文档系统中,基本上可以保证你所有的关注都在你的文档中体现了。
软件项目计划和需求分析哪个先?
1、需求评审的重要性 在软件项目中,需求分析是最开始的工作,同时也是最重要的工作。
需求分析如果做得不够详细或者是偏离用户需求或者是存在缺陷的话,往往会给项目带来灭绝性的灾难,不重视需求过程的项目团队将自食其果。
因此,如何保证需求分析的正确、准确性,成了决定软件项目成败的关键因素。
在实际的项目过程中,需求阶段往往是由一两位需求分析人员与用户沟通用户需求,然后根据自己的理解输出软件需求说明书及软件原型。
接下来的项目计划、软件设计、编码、测试等各个环节都以此为基准。
俗话说,当局者迷,旁观者清,经验再丰富的需求分析人员也可能犯错,所谓智者千虑,必有一失,这是永远不变的客观规律。
另外,受需求分析人员的理解及用户的表达等因素的影响,需求在传递过程中往往存在很大偏差。
需求分析人员输出的需求分析说明书,到设计人员、编码人员、测试人员那里往往又会有不同的理解。
因此,软件需求分析说明书的正确性必须得到彻底的验证,利益相关方必须彻底理解需求,并达成一致。
要达成这一目标、降低需求风险,需求评审是一个行之有效的方法。
目前,很多小型软件企业在需求阶段,往往是需求人员写完需求后再跟用户沟通一下,就直接进入设计开发阶段了,设计、编码、测试人员前期没有参与进来,根本没有进行需求评审。
也有不少企业的需求评审存在“走过场”的情况,其他人员根本不关心软件需求,认为软件需求就是需求分析人员的事情,他们怎么写大家怎么做就可以了,在提需求异常时简单找几个错别字提一下应付了事,没有提出有效的需求异常。
也有的时候,在需求评审会议中,大家的关注点常常会不知不觉的转向设计,结果需求评审会议成了设计讨论会议,大家想得最多的是需求如何实现,而不是需求文档本身有无问题。
或者是因为没有做好前期准备工作,导致评审时间长、效率低,结果很多问题不了了之。
这样的评审,最终效果可想而知。
2、需求评审的关键 下文根据笔者多年参与软件项目管理的切身体会及经验,从不同角度对需求评审方法进行论述。
2.1 充分准备评审 好的软件需求说明书,是进行有效需求评审的前提。
首先,需求人员在与用户确认需求的过程中,一定不要放过任何一个细节,仔细体会用户的每一个要求。
对于用户的要求,需求人员需要对其加以梳理:哪些是合理的需求,哪些是不合理的需求,还有一些可能是必要的但是用户没想到的需求。
软件需求说明书不应该只是用户意愿的表达,而应该是从软件层面上对用户需求的总结。
软件需求说明书对需求用例的描述一般分为基本流和扩展流,基本流是大家很容易想到的主要业务流程,而实际设计开发及测试过程中,最耗费时间的是实现扩展流的过程。
因此不能只注重基本流,好的软件需求说明书,扩展流一定远远多于基本流,扩展流写得越完善,说明需求人员考虑得越周全。
而实质上,如果扩展流写得不完善,后期的设计、开发及测试人员往往在相应的细节处理上无所适从。
2.2 分层次评审 用户的需求是可以分层次的,一般而言分成以下层次: ①目标性需求,定义整个系统需要达到的目标; ②功能性需求,定义了整个系统必须完成的任务; ③操作性需求,定义了完成每个任务的具体的人机交互;目标性需求是企业的高层管理人员所关注的,功能性需求是企业的中层管理人员所关注的,操作性需求是企业的具体操作人员所关注的。
对不同层次的需求,其描述形式是有区别的,参与评审的人员也是不同的。
如果让具体的操作人员去评审目标性需求,可能会很容易地导致“捡了芝麻,丢了西瓜”的现象,如果让高层的管理人员也去评审那些操作性需求,无疑是一种资源的浪费。
分层次评审,可以让不同类型的参与人分别评审他们关注的内容,从不同的角度找到需求的异常,提高评审效率。
怎样做软件的需求分析?
软件需求的定义:(1)用户解决问题或达到目标所需的条件或能力。
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。
(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。
实通俗的讲,“需求”就是用户的需要,它包括用户要解决的问题、达到的目标、以及实现这些目标所需要的条件,它是一个程序或系统开发工作的说明,表现形式一般为文档形式。
需求工程的定义:需求分析的过程,也叫做需求工程和需求阶段,它包括了需求开发和需求管理两个部分。
需求开发是指从情况收集、分析和评价到编写文档、评审等一系列产生需求的活动,分为四个阶段:情况获取、分析、制订规格说明和评审。
这四个阶段不一定是遵循线性顺序的,他们的活动是相互独立和反复的。
需求管理是软件项目开发过程中控制和维持需求约定的活动,它包括:变更控制、版本控制、需求跟踪、需求状态跟踪等工作。
需求开发与管理的一些方法:(1)绘制关联图:绘制系统关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。
(2)可行性分析:在允许的成本、性能要求下,分析每项需求实施的可行性,提出需求实现相关风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
(4)系统原型:当用户自身对有的需求不十分清楚时,我们可以建立一个系统原型,用户通过评价原型更好地理解所要解决的问题。
。
(5)图形分析模型:绘制图形分析模型是编制软件需求规格说明重要手段。
它们能帮助分析人员理清数据、业务模式、工作流程以及他们之间的关系,找出遗漏、冗余和不一致的需求。
这样的模型包括数据流图、实体关系图、状态变换图、对话框图、对象类及交互作用图。
(6)数据字典:数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。
在需求阶段,数据字典至少应定义客户数据项,确保客户与开发小组是使用一致的定义和术语。
需求管理的方法主要包括以下一些方面:1)确定需求变更控制过程。
制定一个选择、分析和决策需求变更的过程,所有的需求变更都需遵循此过程。
2)进行需求变更影响分析。
评估每项需求变更,以确定它对项目计划安排和其它需求的影响,明确与变更相关的任务并评估完成这些任务需要的工作量。
通过这些分析将有助于需求变更控制部门做出更好的决策。
3)建立需求基准版本和需求控制版本文档。
确定需求基准,这是项目各方对需求达成一致认识时刻的一个快照,之后的需求变更遵循变更控制过程即可。
每个版本的需求规格说明都必须是独立说明,以避免将底稿和基准或新旧版本相混淆。
4)维护需求变更的历史记录。
将需求变更情况写成文档,记录变更日期、原因、负责人、版本号等内容,及时通知到项目开发所涉及的人员。
为了尽量减少困惑、冲突、误传,应指定专人来负责更新需求。
5)跟踪每项需求的状态。
可以把每一项需求的状态属性(如已推荐的,已通过的,已实施的,或已验证的)保存在数据库中,这样可以在任何时候得到每个状态类的需求数量。
6)衡量需求稳定性。
可以定期把需求数量和需求变更(添加、修改、删除)数量进行比较。
过多的需求变更"是一个报警信号",意味着问题并未真正弄清楚。
4.需求分析评价标准(1)清晰:目前大多数的需求分析采用的仍然是自然语言,自然语言对需求分析最大的弊病就是它的二义性,所以开发人员需要对需求分析中采用的语言做某些限制。
例如尽量采用主语+动作的简单表达方式。
需求分析中的描述一定要简单,千万不要采用疑问句、修饰这些复杂的表达方式。
除了语言的二义性之外,注意不要使用行话,就是计算机术语。
需求分析最重要的是和用户沟通,可是用户多半不是计算机的专业人士,如果在需求分析中使用了行话,就会造成用户理解上的困难。
(2)完整:需求的完整性是非常重要的,如果有遗漏需求,则不得不返工,在软件开发过程中,最糟糕的事情莫过于在软件开发接近完成时发现遗漏了一项需求。
但实际情况是,需求的遗漏是常发生的事情,这不仅仅是开发人员的问题,更多发生在用户那里。
要做到需求的完整性是很艰难的一件事情,它涉及到需求分析过程的各个方面,贯穿整个过程,从最初的需求计划制定到最后的需求评审。
(3)一致:一致性是指用户需求必须和业务需求一致,功能需求必须和用户需求一致。
在需求过程中,开发人员需要把一致性关系进行细化,比如用户需求不能超出预前指定的范围。
严格的遵守不同层次间的一致性关系,就可以保证最后开发出来的软件系统不会偏离最初的实现目标。
(4)可测试:一个项目的测试从什么时候开始呢?有人说是从编码完成后开始,有人说是编码的时候同时进行单元测试,编码完成后进行系统测试,这些结论都不完全正确。
实际上,测试是从需求分析过程就开始了,因为需求是测试计划的输入和参照。
这就要求需求分析是可测试的,只有系统的所有需求都是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。
软件项目需求分析为什么困难?
1)客户说不清楚需求; (2)需求自身经常变动; (3)分析人员或客户理解有误。
1、客户说不清楚需求 有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。
例如全国各地的很多政府机构在搞网络建设,这些单位的领导和办公人员大多不清楚计算机网络有什么用,反而要软件系统分析人员替他们设想需求。
这类工程的需求是如此的主观,以致产生很多贪污腐败现象。
有些客户心里非常清楚想要什么,但却说不明白。
读者可能很不以为然。
就举日常生活的事例吧,比如说买鞋子。
/考试大/收集/我们非常了解自已的脚,但没法说清楚脚的大小和形状。
只能拿鞋子去试,试穿时感觉到舒服才会买鞋(居然也有神通广大的售货员,看一眼客户的手,就知道应该穿什么样的鞋)。
如果客户本身就懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快。
如果客户全不懂软件,但信任软件开发方,这事也好办。
分析人员可以引导客户,先阐述常规的需求,再由客户否定不需要的,最终确定客户真正的需求。
最怕的就是“不懂装懂”或者“半懂充内行”的客户,他们会提出不切实际的需求。
如果这些客户甚至觉得自己是上帝的爸爸,那么沟通和协商都会很困难。
2、需求自身经常变动 唐僧曾说:“妖要是有了仁慈之心,就不再是妖,是人妖。
”(《大话西游之大圣娶亲》) 连妖都会变心,别说人了。
所以喜新厌旧乃人之常情,世界也因此变得多姿多彩。
软件的需求会变化吗? 答:据历史记载,没有一个软件的需求改动少于三次。
唯一只改动需求两次的客户是个死人。
这个可怜的家伙还是在运送第三次需求的路上被车子撞死的。
让我们先接受“需求会变动”这个事实吧,免得在需求变动时惊慌失措。
明白“需求会变动”这个道理后,在进行需求分析时就要留点神: (1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。
/考试大/收集/以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。
(2)在合同中一定要说清楚“做什么”和“不做什么”。
如果合同含含糊糊,日后扯皮的事情就多。
要防止象韩复渠那样,在别人请他喝酒吃饭时他什么都点头(人家就更加献殷勤),吃完了他就宣布刚才答应的事都不算数,便扬长而去。
3、分析人员或客户理解有误 有个外星人间谍潜伏到地球刺探情报,它给上司写了一份报告:“主宰地球的是车。
它们喝汽油,靠四个轮子滚动前进。
嗓门极大,在夜里双眼能射出强光。
……有趣的是,车里住着一种叫作‘人’的寄生虫,这些寄生虫完全控制了车。
” 软件系统分析人员不可能都是全才。
客户表达的需求,不同的分析人员可能有不同的理解。
如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。
我读中学时候最怕写作文逃题,如果逃题了,不管作文写得多长,总是零分。
所以分析人员写好需求说明书后,要请客户方的各个代表验证。
如果问题很复杂,双方都不太明白,就有必要请开发人员快速构造软件的原型,双方再次论证需求说明书是否正确。
由于客户大多不懂软件,他们可能觉得软件是万能的,会提出一些无法实现的需求。
有时客户还会把软件系统分析人员的建议或答复给想歪了。
有一个软件人员滔滔不绝地向客户讲解在“信息高速公路上做广告”的种种好处,客户听得津津有味。
最后,心动的客户对软件人员说:“好得很,就让我们马上行动起来吧。
请您决定广告牌的尺寸和放在哪条高速公路上,我立即派人去做。
”
系统架构图是需求分析还是系统设计
当软件规模比较小时,系统分析师所完成的工作是把真正的业务需求(这个需求不是指客户简单所说的哪一个功能,而是需要去挖掘的,可能是潜在的但又是系统必需的,条例清楚、逻辑清晰的业务功能,而且需求不仅仅只是来自业务上的,系统所依赖的运行环境也会产生一些需求)转换成计算机可理解、可实现、可计算的模型。
但由于现在的系统规模越来越大,复杂程度越来越高,而且应用领域也越来越广,所以很难由一个工种的人来全面完成这项艰巨的任务。
在具体的软件设计过程中,现在把它分解为由系统分析师与软件架构师合作共同来完成这一任务。
其中系统分析师侧重的是前一部分的工作,软件架构师侧重的是后一部分的工作。
系统分析师的主要工作内容 包括业务需求分析、系统需求分析、可行性分析以及建模等,其特点是更多地与行业专家、用户沟通,再及时与项目经理(项目管理师)、软件架构师以及老板商 讨,分析项目具备的特点、成本、风险等,考虑实现的模型。
系统分析师所面临的往往是有许多不确定性的事件,需要对这些不确定的事件进行分析、总结,使之得 出一个相对可靠的确定性结论或实施方案模型。
软件架构师的主要工作内容就是在系统需求比较清晰的条件下进行系统总体的架构设计,当然 它也可能会涵盖一些系统分析师的工作内容和软件设计师的内容,但其特点是确定性的东西会多一些,力求为系统找到或架构一个最优的模型,这里面虽然可能有很 多创新的成分,但更重要的是如何充分运用现有的各种模型、结构、方案,并根据项目的特点,在各种方案中取长补短,找到一个最好的平衡点和结合点,使之最适 合当前项目的解决方案。
所以,软件架构师实际上是使系统细致化、完善化,为拥有更好的可靠性提供保障。
在实际的职责上,软件架构师比系统分析师所站的角度更高一些。
在大规模的软件系统中,系统分析师可能就系统的某个子系统进行分析与设计,而软件架构师应该对整个系统的结构负责。
(1) 项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划;能够组织项 目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到 达既定的项目目标;能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问题,并有预防问题的措施;能协调项目所涉及的相关人员。
即项目管理师的 主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。
(2)系统分析师:熟悉应用领域的业务,能分析 用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项 目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。
即系统分析师 的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。
(3)系统 架构师:能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进 行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协 作、配合工作。
即系统架构师的职责是负责整体的、宏观的系统设计,重点在架构级别上。
还要对架构进行描述、分析和评估,属于纯技术性的工作。
考试方面不太了解。
项目需求分析怎么写
项目需求分析的概念 需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。
(这个和我在微软体验到的又不太一样,微软的需求分析大多是市场人员和用户协助小组的人去评估用户的接受程度,这一点也可以理解,因为公司的性质有根本差别)在这个过程中,用户的确是处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础。
需求分析阶段结束后,要求得到:1.SRS文档(System Requirement Specification); 2.DRM 文档;3.Acceptance Plan. 从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。
狭义上理解:需求分析指需求的分析、定义过程。
一、为什么要需求分析 需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,痕不得找块豆腐一头撞死. 需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计. 二、需求分析的任务 简言之,需求分析的任务就是解决"做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求.三、需求分析的过程 需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审. 问题识别 就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型,操作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标. 分析与综合 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分.最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型). 制订规格说明书 即编制文档,描述需求的文档称为软件需求规格说明书.请注意,需求分析阶段的成果是需求规格说明书(好象软考曾经考过这个问题),向下一阶段提交. 评审 对功能的正确性,完整性和清晰性,以及其它需求给予评价.评审通过才可进行下一阶段的工作,否则重新进行需求分析。
四、需求分析的方法 需求分析的方法有很多.这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论. 原型化方法是十分重要的(是软考等常考的知识点).原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能. 原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在缺陷.建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等.如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型.以后的目标系统就在原型系统的基础上开发. 原型主要有三种类型(软考考过):探索型,实验型,进化型.探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性.实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠.进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。
在使用原型化方法是有两种不同的策略:废弃策略,追加策略.废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统.系统构造完成后,原来的模型系统就被废弃不用.探索型和实验型属于这种策略。
追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。
进化型属于这种策略.
转载请注明出处51数据库 » 软件项目管理系统需求分析
勇敢的李万基