1、软件需求分析(Software Reguirement Analysis)是研究用户需求得到东西,完全了解用户对软件需求完整功效,确定用户软件功效需求,建立可确定、可验证一个基础依据。软件需求分析是一个项目标开端,也是项目实施最关键关键点。据相关机构分析结果表明,我们设计软件产品存在不完整性、不正确性等问题80以上是需求分析错误所造成,而且因为需求分析错误造成根本性功效问题尤为突出。所以,一个项目标成功软件需求分析是关键一步。一、 软件需求分析理论假如我们用数学方法来描述软件需求分析,能够将一个应用软件定义为S,可能应用软件包含功效性问题很广,我们用抽象化理论分析,能够划分为各个功效域,能够用
2、D1、D2、 Dn表示,那么,我们能够用一个表示式描述为S=D1,D2,D3,Dn不过,功效域Di仍然存在着有若干个问题P1、P2、P3、 Pm组成,而且每个功效对应于子系统中一个软构件,我们能够表示为 Di=P1,P2,P3,Pm一样,功效Pj有若干个行为F1、F2、F3、 Fk,每个行为对应于软构件中实现方法Pj=F1,F2,F3,Fk一个软件包含了全部功效集合,同时包含了实现全部功效全部方法和算法描述。需求分析是依据于用户需求,经过需求问题识别,进行分析、消化和综合,制订规格说明,评审,分为四个阶段,形成用户需求和设计同时,设计满足用户需求目标。需求分析方法一直贯穿着吸收、同化、落实方法
3、和手段,用商业化行为处理需求和实现中存在矛盾,处理用户需求和商业化产品融通,处理规范和个性化追求。二、 软件需求分析目标软件需求分析关键实现目标:1)对实现软件功效做全方面描述,帮助用户判定实现功效正确性、一致性和完整性,促进用户在软件设计开启之前周密地、全方面地思索软件需求;2)了解和描述软件实现所需全部信息,为软件设计、确定和验证提供一个基准;3)为软件管理人员进行软件成本计价和编制软件开发计划书提供依据;需求分析具体内容能够归纳为六个方面:软件功效需求,软件和硬件或其它外部系统接口,软件非功效性需求,软件反向需求,软件设计和实现上限制,阅读支持信息。软件需求分析应尽可能提供软件实现功效需
4、求全部信息,使得软件设计人员和软件测试人员不再需要需求方接触。这就要求软件需求分析内容应正确、完整、一致和可验证。另外,为确保软件设计质量,便于软件功效休整和验证,软件需求表示无岔意性,含有可追踪性和可修改性。2.1、 软件功效需求软件功效需求是整个需求分析最关键、最关键和最复杂部分,它描述软件多种可能条件下,对全部可能输入数据信息,应完成那些具体功效,产生什么样输出。描述软件功效需求是应注意下面几点:1)功效需求完整性和一致性对功效描述应包含和功效相关信息,并应含有内在一致性(即多种描述之间不矛盾、不冲突)。应注意以下几点:(1) 给出触发功效多种条件(如:控制流、运行状态、运行模式等);(
5、2) 定义多种可能性条件下全部可能输入(包含正当输入空间和非法输入空间);(3) 给出多种功效间可能相互关系(如各个功效间控制流、数据流、信息流,功效运行关系:次序、反复、选择、并发、同时);(4) 给出功效性关键等级(如:基础功效、可由设计者选择逐步实现功效、可由设计者改变实现功效等);(5) 尽可能不使用“待定”这么词。全部含有待定内容需求全部不是完整文件,假如出现待定部分,必需进行待定部分内容说明,落实责任人员、落实实施日期。2)功效描述无岔意性和可追踪性需求功效描述无岔意性、可追踪性和规范化:(1) 功效描述必需清楚地描述出怎样输入到怎样输出,而且输入、输出描述应对应有数据流描述、控制
6、流描述图,这些描述必需和其它地方描述一致;(2) 能够用语言、方程式、决议表、矩阵或图等对功效描述。假如选择语言描述必需使用结构化语言,描述前必需说明该步骤(或子功效)实施是次序,选择,反复,还是并发,然后说明步骤逻辑。整个描述必需单入单出。(3) 描述时,每一个功效名称和参考编号必需唯一,且不要将多个功效混在一起进行描述,这么便于功效追踪和修改。(4) 功效描述应注意需求说明和程序设计区分。需求设计仅仅是软件功效设计,它给出软件运行外部功效描述,和为了实现这一外部功效必需做哪些事情(采取和种数据结构,定义多个模块,接口间接口等)是设计阶段事情,功效描述不应包含到那些细节问题,以避免给软件设计
7、带来无须要约束。2.2、 软件和硬件或其它外部系统接口软件和硬件或其它外部系统接口包含下述内容:(1) 人机接口:说明输入、输出内容、屏幕安排、格式等要求;(2) 硬件接口:说明端口号,指令集,输入输出信号内容和数据类型,初始化信号源,传输通道号和信号处理方法。(3) 软件接口:说明软件名称、助记符、规格说明、版本号和起源;(4) 通讯接口:指定通讯接口和通讯协议等描述。2.3、 软件非功效性需求软件非功效性需求是指软件性能指标,容限等功效以外需求。通常指下述内容:(1) 时间需求:输入、输出频率,输入、输出响应时间,多种功效恢复时间等;(2) 处理容限、精度、采样参数分辨率,误差处理等;(3
8、) 可靠性MTBF要求,可维护性、安全性要求等。(对可能不正常输入给以正常响应是可靠性关键内容,这属于功效性需求。)2.4、 软件反向需求软件反向需求描述软件在那些情况下不能做什么。这一条是随软件实际要求而定。有两类情形需要采取反向需求形式。第一个情况:一些用户需求适宜采取反向形式说明,如数据安全性要求属于这类形式。第二种情况:对部分可靠性和安全性要求较高软件,有些必需描述软件不能做些什么。如控制点火时序,我们必需交代清楚在那些情况下不能点火,不然会造成故障。2.5、 软件设计和实现上限制软件设计和实现上限制关键指对软件设计者限制。如软件运行环境限制(选择计算机类型,使用配置,操作系统限制等)
9、、设计工具限制(使用语言、实施标准)和保密要求等。2.6、 阅读支持信息这部分内容是为了愈加好帮助我们了解用户需求,也是为了使需求便于修改和追踪。其本身并不是对需求描述,但它影响到需求分析可读性,也属于需求分析一个关键部分。通常目录、需求背景信息、内容索引、交叉引用表、注释等均属于这个部分内容。三、 软件需求分析人员组织软件需求分析其根本性问题是了解用户功效需求,由此软件需求分析实际上是和用户间交流过程完成目标。要求我们组织合适参与人员进行交流活动。需求分析是一个综合团体工作,是在需求分析理论指导下,对用户需要进行渐进方法逐步深化;经过不停改变方法形成具体约束;努力实现需求功效目标形成特色效果
10、商业化产品。需求分析是一个商业行为,完全是一个商业化操作,要求有商业、技术等结合团体共同合作,处理需求和设计同时,设计符合需求。项目包含内容,项目大小全部需要我们考虑参与软件需求分析工作团退人数,配置合理参与人员。通常我们必需有商务活感人员,项目管理人员,设计技术人员等参与,而且要求组织人员必需明确负责范围,和明确工作目标,确保实施有效性。四、 软件需求分析方法为了确保项目标正常实施,而且能够顺利完成,我们必需加强项目管理和重视项目分析工作。我们只有从实际出发,切切实实地把握用户需求,把握用户需求目标,把握用户未来功效界定,确保我们开发工作正确性方向。4.1、关键监控软件需求分析措施因为软件项
11、目标特殊性和行业覆盖宽广性,和需求分析高风险性,软件需求分析关键性是不言而喻,同时需求分析又确实确难做。其原因基础是因为以下情况造成。4.1.1、用户说不清楚需求有些用户对需求只有朦胧感觉,当然说不清楚具体需求。比如全国各地很多部门、机构、单位在进行应用系统和网络建设时,用户方办公人员大多不清楚计算机网络有什么用,更缺乏IT系统建设方面教授和知识。此时,用户就会要求软件系统分析人员替她们设想需求。工程需求存在一定主观性,为项目未来建设埋下了潜在风险。4.1.2、需求本身常常变动依据以往历史经验,伴随用户方对信息化建设认识和自己业务水平提升,她们会在不一样阶段和时期对项目标需求提出新要求和需求变
12、更。实际上,历史上没有一个软件需求改动少于三次!所以必需接收“需求会变动”这个事实,在进行需求分析时要知道防患于未然,尽可能地分析清楚哪些是稳定需求,哪些是易变需求,方便在进行系统设计时,将软件关键建筑在稳定需求上,同时留出变更空间。咨询监理方在需求分析功效界定上担任一个中间、公平、公正角色,所以也必需主动参与到需求分析准备中来,方便帮助用户方和承建方来界定“做什么”、“不做什么”系统功效界限。413、分析人员或用户了解有误软件系统分析人员不可能全部是全才,更不可能是行业方面教授。用户表示需求,不一样分析人员可能有不一样了解。假如分析人员了解错了,可能会造成以后开发工作劳而无功。记得一则笑话,
13、有个外星人间谍潜伏到地球刺探情报,它给上司写了一份汇报:“主宰地球是汽车。它们喝汽油,靠四个轮子滚动前进,嗓门极大,双眼在夜里能射出强光有趣是,车里住着一个叫作人寄生虫,这些寄生虫完全控制了车。”所以分析人员知识专一性也会造成需求分析误解和失败。这时,咨询监理企业就必需依据实际项目需求调研计划,提醒承建方加强业务了解程度和重视沟通技巧。4.2、有效性软件需求分析三步法依据以往工程经验,需求分析工作方法,应该定位在“三个阶段”(也称“三步法”)。4.2.1、“访谈式Visitation”阶段这一阶段是和具体用户方领导层、业务层人员访谈式沟通,关键目标是从宏观上把握用户具体需求方向和趋势,了解现有
14、组织架构、业务步骤、硬件环境、软件环境、现有运行系统等等具体情况、客观信息。建立起良好沟通渠道和方法。针对具体职能部门和各委办局,最好能指定此次项目标接口人。实现手段:访谈、调查表格输出结果:调查汇报、业务步骤汇报4.2.2、“诱导式Inducement”阶段这一阶段是在承建方已经了解了具体用户方组织架构、业务步骤、硬件环境、软件环境、现有运行系统等等具体实际、客观信息基础上,结合现有硬件、软件实现方案,做出简单用户步骤页面,同时结合以往项目经验对用户采取诱导式、启发式调研方法和手段,和用户一起探讨业务步骤设计合理性、正确性、便易性、习惯性。用户能够操作简单演示DEMO,来感受一下整个业务步骤
15、设计合理性、正确性等等问题,立即地提出改善意见和方法。实现手段:造访(诱导)、原型演示输出结果:调研分析汇报、原型反馈汇报、业务步骤汇报4.2.3、“确定式Afirm”阶段这一阶段是在上述两个阶段结果基础上,进行具体步骤细化、数据项确实定阶段,这个阶段承建方必需提供原型系统和明确业务步骤汇报、数据项表,并能清楚地向用户描述系统业务流设计目标。用户方能够经过审查业务步骤汇报、数据项表和操作承建方提供DEMO系统,来提出反馈意见,并对已经可接收汇报、文档签字确定。实现手段:造访(回顾、确定),提交业务步骤汇报、数据项表;原型演示系统输出结果:需求分析汇报、数据项、业务步骤汇报、原型系统反馈意见(后
16、三者能够统一归入需求分析汇报中,提交用户方、监理方进行确定和存档)整体来讲,需求分析三个阶段是需求调研中不可忽略一个关键部分,三个阶段或说三步法实施和采取,对用户和承建方全部一样提供了项目成功确保。当然在系统建设过程中,尤其在采取迭代法开发模式时,需求分析工作需一直进行下去,而在后期需求改善中,工作则基础集中在后两个阶段中。五、 软件需求分析工具我们依据用户需求,经过反复讨论、分析,最终明确一个唯一性用户需求,这个结果其实就是我们软件需求分析汇报。通常我们采取Word、PowerPoint、Visio、ProntPage、Excel等Office工具,同时可能采取部分开发工具,如VC或BC等,
17、一样也会使用部分图形工具,如Potoshop、调色板等画图工具。使用多种工具表示软件需求分析,其具体表示手段能够分为:l 效果图描述。关键是用户UI界面描述反应用户需求功效;l 逻辑图描述。依据用户需求功效,使用抽象化理论,和需求分析理论,对用户需求功效进行全方面分析,建立功效性逻辑关系图,步骤逻辑关系图等;l 关系图表描述。关键是对信息关系、数据库表格、接口函数等描述;l 工程数学描述。分析用户需求,分析用户需求信息,利用工程数学进行算法推导,进行合理化需求分析推导;l 甘地图描述。关键是软件项目工作安排,开发周期预估;l 其它方法描述。确保完整性合理性有效描述。六、 软件需求分析评定软件需
18、求分析评定是为了检验我们进行软件需求分析工作,确保软件需求分析工作正确性、完整性、有效性、合理性、可确定性、可实施性,完全确保用户所需求功效。6.1、组织结构和责任管理我们对组织结构和责任管理评定关键有:参与人员任务和责任界面明确;安排计划按时完成情况;相互间协调能力情况。6.2、满足用户需求功效我们进行需求分析目标是完整、正确地描述用户需求,跟踪用户需求改变,将用户需求正确地反应到系统分析和设计中,并使系统分析、设计和用户需求保持一致。需求分析特点是需求完整性、一致性和可追溯性。完整性:是正确、全方面描述用户需求。一致性:是经过分析整理,剔除用户需求矛盾方面,规范用户需求。可追溯性:有两个方
19、面含义,整理和规范需求,其一,需要不停和用户深入交流,保持和用户最新需求一致。其二,和系统分析(设计)保持一致。所以在需求分析之前我们必需建立需求分析技术层面基础框架,从技术上确保需求分析要求,在此基础上我们进行需求分析才能满足项目对需求分析要求。6.3、确保可实施性我们必需以用户软件需求为依据,以求实态度具体、正确、完整编写软件需求分析,避免空想世界,空中楼阁想法;避免无逻辑性、无关键描述;避免无量化思维,无实际空间概念。6.4、需求分析评价指标关键有这么多个指标:功效性、完整性、正确性、逻辑性、表现性、合理性,可实施性等。6.5、工作周期评价人员投入,和费用支出合理性问题。正确制订工作周期,确保软件项目标顺利完成。6.6、需求不确定更改和可确定确保可确定需求功效是实现用户需求基础确保,假如不可确定、不确定更改存在,将会阻碍软件实现,或软件设计存在着不完整性缺点,或存在着不可实施性问题,我们必需区分是功效性障碍问题,还是未来性问题。假如不能够明确是未来性问题,则必需调整功效需求,化解不确定更改问题。所以,判定不确定性更改是一个很关键问题