版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6讲需求分析12/20/20231内容需求分析的重要性需求分析的困难性需求工程需求分析过程概念模型和规范化图形工具需求验证原型技术12/20/20232需求分析需求分析是软件定义时期的最后一个阶段回答“系统必须做什么?”的问题12/20/20233需求分析的重要性真的很重要吗?例:Ourreal-timeexampleisbasedontheembeddedsoftwareintheAriane-5,aspacerocketbelongingtotheEuropeanSpaceAgency(ESA).OnJune4,1996,onitsmaidenflight,theAriane-5waslaunchedandperformedperfectlyforapproximately40seconds.Then,itbegantoveeroffcourse.AtthedirectionofanArianegroundcontroller,therocketwasdestroyedbyremotecontrol.Thedestructionofthe
uninsuredrocketwasalossnotonlyoftherocketitself,butalsoofthefoursatellitesitcontained;thetotalcostofthedisasterwas$500million(Newsbyteshomepage1996;
Lionsetal.1996).12/20/20234需求分析的重要性Thereason:therewasnodiscussionintherequirementsdocumentsofthewaysinwhichtheAriane-5trajectorywouldbedifferentfromAriane-4.统计资料:
In1994,theStandishGroupsurveyedover350companiesabouttheirover8000softwareprojectstofindouthowwelltheywerefaring.Theresultsaresobering.Thirty-onepercentofthesoftwareprojectswerecanceledbeforetheywerecompleted.Moreover,inlargecompanies,only9%oftheprojectsweredeliveredontimeandcostwhattheywerebudgeted,and16%metthosecriteriainsmallcompanies(Standish1994).12/20/20235需求分析的重要性12/20/20236需求分析的重要性5点事实软件生命周期中,一个错误发现得越晚,修复错误的费用越高12/20/20237需求分析的重要性许多错误是潜伏的,并且在错误产生后很长一段时间才被检查出来在需求过程中会产生很多错误DeMarco在一份研究报告中指出,被检查出来的错误的56%产生的根源可以追溯到需求阶段。AIRMICS所进行的一项调查发现,在一份美国军方大型管理信息系统的需求现格说明书(SRS)中存在着500多个错误,当然这仅仅是一个软件项目中的一次调查。在需求阶段,代表性的错误为疏忽、不一致和二义性美国海军研究实验室从20世纪70年代起就对软件开发技术不断地进行研究。他们对海军A—7E—它机上的”宅行操作程序进行实地测试,以验证许多新设想的可行性。得出的研究数据表明:A—7E项目中77%的需求错误特点是不明确:疏忽、不一致和二义性。按错误类型对这些错误分布进行分析的结果是:49%不正确的事实,31%疏忽,l3%不一致,5%二义性12/20/20238需求分析的重要性需求错误是可以被检查出来的12/20/20239需求分析的重要性在需求过程中会产生很多错误(事实3和4)。许多错误并没有在早期被发现(事实2)。这样的错误是能够在产生的初期被检查出来的(事实5)。如果没有及时检查出来这些错误,软件费用会直线上升(事实1)12/20/202310需求管理的困难性12/20/202311需求工程需求是什么?需求就是以一种清晰、简洁、一致且无二义性的方式,对一个待开发系统中各个有意义方面的陈述的一个集合。需求工程一般指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述出待开发系统及其行为特征和相关约束;通常是一些过程的集合:需求获取(需求引出)、需求分析和编写软件规格说明书(SRS)及验证(包括鉴定和证实)。12/20/202312需求工程涉及人员12/20/202313软件需求功能需求性能需求环境需求可靠性需求安全保密要求用户界面需求资源使用需求成本消耗需求开发进度需求预先估计以后系统可能达到的目标12/20/202314需求分析与程序分析的不同12/20/202315需求分析现状误解交流障碍缺乏共同语言“完整性”问题需求永远不会稳定用户意见不统一错误要求认识混淆12/20/202316需求分析的任务可行性分析阶段已经粗略了解了用户的需求,甚至已经提出了一些可行的方案,但是,可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的方案。因此许多细节被忽略。在系统开发前,还需要进一步确定12/20/202317需求分析的任务可行性分析DFDDD功能具体化需求规格说明加细DFDDD算法描述IPOFinalstageofDefinitionphase仍然回答“What”,而不是“How”,但更细致、精确(合同的拟定)12/20/202318需求分析的任务完整准确清晰具体12/20/202319需求分析的任务12/20/202320需求分析的任务1、确定要求⑴功能要求(functionalrequirements):系统必须做什么?⑵性能要求(performance
requirements):做得怎样?例:responsetime,memory,back-upmemory,security,……⑶运行要求(operationalrequirements)
:运行环境、软硬件配置等。⑷未来可能的扩充要求(possibleevolution):如3维虚拟现实的效果等等。12/20/202321需求分析的任务
2分析数据⑴建立概念模型(conceptualmodels):E-RDiagram⑵形象描绘数据结构:DataHierarchy,WarnierDiagram,IPO⑶数据结构规范化(Normalization)3、导出逻辑模型:
DFD+DD+IPO4、修正计划:重估成本、进度等12/20/202322需求分析的任务“样机试用”CDG5、开发原型系统(Prototyping)12/20/202323分析过程软件系统本质上是信息处理系统,任何信息处理系统的基本功能都是把输入数据转变成需要的输出信息数据是分析的出发点,在可行性分析阶段许多实际的数据元素被忽略了,需求分析阶段将定义这些数据元素结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法12/20/202324分析过程1、沿DFD回溯(1)DFD的输出端是系统的最终目的(2)向回确定每个数据元素的来源(3)为了得到某个数据元素需要用到数据流图中目前还没有的数据元素,或者得出某个数据元素需要用的算法尚不清楚,可加细DFD及DD,并将相关算法记录在IPO图中。12/20/202325分析过程2、用户复查数据字典准确完整吗?算法正确吗?有没有遗漏必要的处理或数据元素?某些数据元素是从哪里来的?……——构成一个循环,认识螺旋式上升12/20/202326分析过程3、细化DFD:
加细前后的I\O须相同。
分解到须考虑具体实现的代码时即可仃止12/20/202327分析过程4、修正计划5、文档:《需求规格说明书》不需分解有补充修正无补充修正分析追踪数据流图用户复查细化数据流图需要分解12/20/202328需求分析规格说明书
文档编号:
版本号:
文档名称:项目名称:项目负责人:
年月日编写:核对:审核:批准:开发单位:
12/20/202329需求分析规格说明书⑴系统规格说明:
系统概貌
功能要求
性能要求
运行要求
可能增加的要求
DFD
IPO⑵数据要求:
DD
Hierarchy或WarnierDiagram⑶用户系统描述
——初步用户手册:从用户的观点考虑系统
系统功能、性能
使用与步骤等⑷修正的开发计划:
成本估计
资源使用计划
进度计划12/20/202330需求分析规格说明书从现实中分离功能,即描述要“做什么”而不是“怎样实现”要求使用面向处理的规格说明语言(或称系统定义语言)如果被开发软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描述之中规格说明必须包括系统运行环境规格说明必须是一个认识模型规格说明必须是可操作的规格说明必须容许不完备性并允许扩充规格说明必须局部化和松散耦合12/20/202331分析过程轻松一分钟
——TrueTechSupportStories
Awomancompliedwithatech'srequesttosendinacopyofadefectivediskette.Afewdayslater,thetechreceivedaletterfromheralongwithaxeroxcopyofthefloppy.
Atechadvisedacustomertoputhistroubledfloppybackinthedriveandclosethedoor.Thecustomerputhisphonedownandwasheardwalkingacrosstheroomandshuttingthedoortotheroom.12/20/202332分析过程节选自目前我国的一些实际系统中的功能性需求的说明方式:“根据详细的系统调研和需求分析,……系统的功能必须满足以下需求:1)编制计划、计划工程拨款管理,……,工程批复管理,工程进度统计;2)工程项目管理;3)计划拨款、征费收缴信息及其他收拨款信息查询统计;4)路产管理,违章建筑管理,工程材料管理,……,超限运输管理;5)养征信息查询管理,收费站信息管理;6)文档管理,会议管理,合同管理,……,驾驶员外勤管理,常用管理;7)养护信息管理,公路维护预警;8)路况信息管理,交通量信息管理,科研项目信息管理;12/20/202333需求表达需求说明语句保持语句和段落的简短采用主动语态的表达方式编写具有正确的语法和标点的完整句子使用的术语应该和词汇表中定义的一致需求陈述应该具有一致的式样,例如“系统必须……”,或者“用户必须……”,并紧跟一个行为动作和可观察的结果,例如“仓库管理子系统必须现实一张在所请求的仓库中有存货的药品名单。”12/20/202334需求表达为了减少不确定性,避免采用模糊的、主观的术语,例如,用户友好、容易、简单、迅速、有效、支持、许多、最新技术、优越的、可接受的和健壮的。避免使用比较性的词汇,例如:提高,最大化,最小化和最佳化。定量地说明所需要提高的程度或者说清一些参数可接受的最大值和最小值。12/20/202335需求表达“产品必须在固定的时间间隔内提供状态消息,并且每次时间间隔不得小于60秒”后台任务管理器应该在用户界面的指定区域显示状态消息在后台任务进程启动之后,消息必须每隔60(+_10)秒更新一次,并且保持连续的可见性。如果正在正常处理后台任务进程,那么后台任务管理器必须显示后台任务进程已完成的百分比当完成后台任务时,后台任务管理器必须显示一个“已完成”的消息。如果后台任务中止执行,那么后台任务管理器必须显示一个出错信息。12/20/202336需求表达“产品必须在显示和隐藏非打印字符之间进行瞬间切换”“用户在编辑文档时,通过激活特定的触发机制,可以在显示和隐藏所有HTML标记之间进行切换。”12/20/202337需求表达“分析程序应该能生成HTML标记出错的报告,这样就可以使HTML的初学者使用它来迅速排错”在HTML分析程序完全分析完一个文件后,该分析程序必须生成一个出错报告,这个报告中包含了在分析文件中所发生错误的HTML所在的行号以及文本内容,还包含了对每个错误的描述。如果分析过程中未发生任何错误,就不必生成任何错误报告12/20/202338分析过程第六步审查和复审以上六步构成一个循环12/20/202339需求分析过程12/20/202340概念模型和规范化软件系统开发过程中必须考虑两方面的问题“数据”及对数据的“处理”为了把用户的数据要求清晰明确地表达出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。12/20/202341概念模型和规范化最常用的表示概念性数据模型的方法,是实体联系方法(Entity-RelationshipApproach)ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。12/20/202342概念模型和规范化⑴Entities例:,
,StudentInstructorClass实体是客观世界中存在的且可相互区分的事务。实体可以是人也可以是物,可以是具体的事物也可以是抽象概念。例如,职工、学生、课程、教师等都是实体。12/20/202343概念模型和规范化客观世界中的事物彼此间往往是有联系的,例如,教师与课程间存在“教”这种联系。⑵Relations例:EnrolledinTeach111NMN12/20/202344概念模型和规范化属性是实体或联系所具有的性质。通常一个实体由若干个属性来刻画。例如,“学生”实体有学号、姓名、性别、系、年级⑶Attributes例:,NameID#12/20/202345概念模型和规范化…………InstructorStudentEnrolledinTeachClassID#ID#NameNameSexSexTitleInstructorIDClassIDGradeStudentIDClassIDCreditID#Subject例:12/20/202346概念模型和规范化2、范式(NormalForms):消除数据冗余的程度
IBME.F.Godd(1970)例:*Keyword:可唯一地标识一个元组的属性12/20/202347概念模型和规范化范式级别越高,存储同样数据就要分解成更多张表,因此“存储自身”的过程也就越复杂随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差范式级别的提高则需要访问的表增多,性能(速度)将下降12/20/202348概念模型和规范化1-NF:所有属性都是原子值,即不出现“表中有表”12/20/202349概念模型和规范化2-NF:在1-NF基础上,每个non-key-word都由整个keyword决定(而非依赖于keyword的一部分)。例:“Major”实际上由“ID”的第6、7位决定,可省去。12/20/202350概念模型和规范化3-NF:在2-NF基础上,non-key-word之间无从属关系。12/20/202351图形工具1、层次方框图(Hierarchy)——描绘数据的结构例:ARoomhierarchybasedonaninteriordesigner’sperspective.RoomRoomwithlightsRoomwithwindowsGarageBasementKitchenBathroomRoomwithFurnitureLivingRoomFamilyRoomBedRoomDiningRoom12/20/202352图形工具2、WarnierDiagram:{:层次(n1,n2):重复n1到n2次:二者择一例:头条新闻地区队头版国内新闻体育新闻职业队本地新闻拳击社论(1,1)经营简讯专栏(1,3)
报纸社论读者来信(1,3)副刊商业新闻雇员简讯讽刺漫画(0,1)一般新闻体育新闻联播招生副刊商业新闻广告招聘广告求助细化12/20/202353图形工具3、IPO图(Input/Process/Output):简要的算法描述1.校验主记录2.校验事务记录3.更新主记录旧的主文件事务文件有效的主记录有效的事务记录更新后的主文件输出O处理P输入I12/20/202354改进的IPO图12/20/202355需求验证方法:
人工审查
初步用户手册
Prototyping
使用软件工具——完整性、一致性12/20/202356需求验证例1:SoftwareRequirementsEngineeringMethodology(SREM)(TRWCorporation,1977)SREM=RequirementsStatementLanguage(RSL)+RequirementsEngineeringValidationSystem(REVS)REVSRSLRequirementsRSLStatementsAbstractSystemSemanticModel(ASSM)AnalyzerReports12/20/202357需求验证12/20/202358自动化工具近年来已经开发出一些需求分析工具,它们提供一组程序,帮助分析员制定需求规格说明。以自动化为主的工具给分析员提供另一种可供选择的方案。软件需求能够用一种规格说明语言来描述,这种语言把关键字指示符与自然语言(例如英语)描述结合起来。规格说明语言被送进一个处理机,它产生出一份需求规格说明,更为重要的是,它同时还产生出一组有关规格说明的一致性和组织的诊断报告。在过去的10年间,已经提出过一些用于制订需求规格说明的自动化工具。12/20/202359自动化工具12/20/202360自动化工具软件需求工程方法学(SREM)和问题陈述语言/问题陈述分析器(PSL/PSA)是有代表性的自动化工具。此外,一些基于知识或形式化方法都需要有自动工具来支持,才能有较好实用价值。12/20/202361自动化工具软件需求工程方法学(SREM)SREM是一种自动化的需求分析工具,它用一种需求陈述语言(RSL)来描述“元素、属性、关系和结构”。元素(按照SREM的术语)包括一组用来制定需求规格说明的对象和概念。各对象之间的关系规定为RSL的一部分,而属性则用来描述或说明元素,结构用来说明信息流程。这些RSL基本成分与叙述性信息一起构成需求规格说明的细节。12/20/202362自动化工具问题陈述语言与问题陈述分析——PSL/PSAPSL/PSA是1968年由D.Teichroew在密执安大学(Un5versitynfMichigan)提出的。它是为ISDOS项目而开发的,又是一个称之为计算机辅助设计与规格说明分析工具(computer—aideddesignandsPecificationanalysisto01,CADSAT)的更大的系统的部分。PSL/PSA给分析员提供的功能包括:一般信息系统的描述,不论其应用领域如何。建立一个包含用于信息系统的描述符的数据库。描述符的添加、删除和修改。提供格式化的文档资料和关于规格说明的各种报告。12/20/202363自动化工具(1)问题陈述语言(theproblemstatementlanguage,PSL)。PSL是一种用来描述信息系统的语言。PSL模型的结构由表达以下内容的描述符构成:系统信息流、系统结构、数据结构、数据的导出、系统的规模和容量、系统的动态特性、系统的性质以及项目的管理等。(2)问题陈述分析(theproblemstatementanalyzer,PSA)。PSA能够对由PSL描述的问题进行分析。使用者对系统建立了一个完整的PSL描述后,就调用问题陈述分析器(PSA)对其进行分析。PSA将产生一系列报告。其中包括修改规格说明数据的所有记录、以各种格式介绍数据库信息的参考报告、提供研制项目管理信息的小结报告和评价该数据库文件的分析报告等。12/20/202364自动化工具基于知识的途径软件开发是一种高级智能活动,极富创造性,是知识密集型产业,需要使用有关领域的大量知识。因此,引入人工智能技术,构造基于知识的软件工具或软件工程环境是十分必要的。随着知识工程的进步,目前在软件开发过程中使用人工智能在技术上已成为可能。引入人工智能的原理和技术,把演进型原型的思想进一步提高和细化,可以得出如图所示的扩展的自动程序设计范型。这是一个把用受限自然语言描述的初步需求逐步演进成最终的源程序的自动程序设计系统的概念模型,是由美国南加州大学信息科学研究所首先提出来的。12/20/202365原型化方法在开发初期,要想得到一个完整准确的规格说明不是一件容易的事。特别是对一些大型的软件项目。用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求。软件开发者对于所要解决的应用问题认识更是模糊不清随着开发工作向前推进,用户可能会产生新的要求,或因环境变化,要求系统也能随之变化;开发者又可能在设计与实现的过程中遇到些没有预料到的实际困难,需要以改变需求来解脱困境。因此规格说明难以完善、需求的变更、以及通信中的模糊和误解,都会成为软件开发顺利推进的障碍。为了解决这些问题,逐渐形成了软件系统的快速原型的概念。12/20/202366软件原型的分类在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。探索型:目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型:这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。12/20/202367建立快速原型好处增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。软件原型化方法提供了一种有力的学习手段。使用原型化方法,可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。12/20/202368可执行规格说明基于脚本(scenario)的设计自动程序设计专用语言可复用(reusable)的软件简化假设原型开发技术12/20/202369可执行规格说明可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括
代数规格说明
有限状态模型
可执行的数据流图
12/20/202370(1)代数规格说明代数规格说明使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。举例:定义一个无界的栈及其操作NEW_STACK:→StackPUSH:Stack,Element→StackPOP:Stack→(Element|Undefined)POP(NEW_STACK())=UndefinedPOP(PUSH(stk,elem))=
elem其中,前三行定义了操作的语法,后两行把它们的语义定义为一些方程。12/20/202371(2)有限状态模型parnas提出的使用最广泛的一种可执行规格说明形式。从一个初始状态开始接收输入,到产生输出,状态在推移变化。施加在状态元素上的约束确定了有效状态的推移。举例:建立用户/程序对话12/20/202372(3)可执行的数据流图数据流图是基于结构化开发方法的结构化规格说明用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统。12/20/202373基于脚本的设计脚本是指用户界面的原型。一个脚本用以模拟在系统运行期间用户经历的事件。它提供了输入─处理─输出的屏幕格式和有关对话的模型。因此,软件开发者能够给用户显示系统的逼真的视图,使用户得以判断是否符合他的意图。可在任一脚本中使用一套可复用的软件模块,以表达某一方面的要求。可使用一种原型语言来描述原型系统。原型开发过程中用这种语言来定义屏幕、数据项、及其相关的操作。从系统的外部描述开始,开发与数据库的接口、错误处理和恢复过程等系统的与外部视图一致的细节。12/20/202374自动程序设计自动程序设计是指在程序自动生成环境的支持下,利用计算机实现软件的开发。它可以自动地或半自动地把用户的非过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息时代背景下的教师管理课件
- 班主任工作范文四年级班级工作计划
- 宾馆装修合同范本(5篇)
- 【政治】历久弥新的思想理念课件-+2024-2025学年统编版道德与法治七年级下册
- 小红书翡翠玉石文玩行业营销通案【互联网】【通案】
- 离婚协议书简单起草,只写房子和孩子分割
- 合同示范文本 住建部
- 《金融危机下的》课件
- 《电力变压器习题》课件
- 《脑出血诊治进展》课件
- 2021-2022学年北京市海淀区八年级(上)期末数学试卷及答案解析
- ping程序的设计及实现报告
- 2022版义务教育数学课程标准解读课件PPT模板
- 关于智障儿童教育学后感【三篇】
- 可编辑修改中国地图模板
- 物理学发展简史
- 化学反应工程(第三版)第七章-流化床反应器
- PPT模板中华餐饮美食烤鱼宣传PPT课件
- 含氮有机化合物-胺、酰胺、尿素、丙二酰脲、胍、磺胺、吡咯、吡啶和嘧啶的结构及化学性质熟悉
- 电动车项目合作计划书范文模板
- 双柱基础暗梁的计算书
评论
0/150
提交评论