软件需求工程-期末复习资料.docx
什么是软件需求工程?请说明软件需求工程中各阶段的主要任务。p51 定义一般定义:指应用工程化的方法, 技术和规格来开发和管理软件的需求。需求工程的目标: 获得高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程化的原那么,强调以系统化, 条理化, 可重复化的方法和技术进展与软件需求相关的活动,从而有利于提高全部与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度和本钱。其它定义:Alan.Davis: 直到但不包括把软件分解为实际架构组建之前的全部活动,即软件设计之前的一切活动。该定义虽然没有具体说明需求工程是什么,但其给出了需求工程的范围。Lan K. Bray:对问题域及需求做调查探讨和描述,设计满意那些需求的解系统的特性,并用文档赐予说明。这个定义明确指出了需求工程的任务就是获得, 分析和表达软件的需求。需求工程 = 需求的开发活动 + 需求的管理活动2 各阶段主要任务需求获得阶段:获得用户的需求信息。需求分析阶段:分析和综合已经收集到的需求信息。需求建模阶段:依据待开发软件系统的需求利用某种建模方法建立该系统的逻辑模型。需求定义阶段:依据用户需求编写出需求规格说明。需求的形式化描述阶段:用严格的数学学问和符号来构造系统的需求模型。需求验证阶段:检验软件需求规格说明。需求管理阶段:开发人员在与提出更改的恳求者协商的根底上,评估需求变更带来的潜在影响及可能的本钱及费用,然后实施更改,一级有效的管理需求规格说明文档和跟踪更改需求的状态。 什么是软件需求?软件需求有哪些类型,并分别给出它们的定义。p2软件需求的定义:A. Davis:软件需求是从软件外部能发觉的,软件所具有的,满意于用户的特点, 功能及属性等的集合。I. Sommerville:需求是问题信息和系统行为, 特性, 设计和实现约束的描述的集合。M. Jackson等:需求是客户盼望在问题域内产生的效果 。 IEEE软件工程标准:1用户解决问题或到达目标所需的条件或实力;2系统或系统部件要满意合同, 标准, 标准或其它正式规定文档所需具有的条件或实力。通俗定义 :软件需求是指软件系统必需满意的全部功能, 性质和限制。 软件需求的类型:目标需求:反映组织机构或客户对系统和产品提出的高层次的目标要求,其限定了工程的范围和工程应到达的目标。业务需求:主要描述软件系统必需完成的任务, 实际业务或工作流程等。软件开发人员通常可从业务需求进一步细化出具体的功能需求和非功能需求。功能需求:指开发人员必需实现的软件功能或软件系统应具有的外部行为。性能需求:指实现的软件系统功能应到达的技术指标,如:计算效率和精度,牢靠性,可维护性和可扩展性等。约束与限制:指软件开发人员在设计和实现软件系统时的限制,如:开发语言,运用的数据库等。 试述快速原型开发模型和面对对象开发模型的根本思想,然后说明快速原型开发模型中抛弃型模型和进化型模型的作用。p9快速原型模型根本思想:快速建立一个实现了假设干功能的不要求完全可运行模型来启发, 提示和不断完善用户需求,直到满意用户的全部需求为止。其根本过程如下:面对对象开发模型根本思想:应用对象, 类, 继承, 封装, 消息, 对象或类之间的关系等面对对象的概念对问题进展分析和求解的软件开发技术,或者说,是以对象类为数据中心, 对象之间的动态行为模式作为运行机制的一种问题求解方法。其根本过程如下:抛弃型模型:指在原型到达预期目的后将其抛弃,而且在构建该原型时,可以忽视具体的软件构造技术,亦即应以最小的代价构造抛弃型原型。进化型模型:在需求被清晰定义的状况下,以渐增式方式构建原型,并使原型最终能成为软件产品的一局部。 请指出以下陈述属于哪种类型的软件需求或不属于软件需求。p261只有电梯停在某一楼层时,电梯才能变更方向。非功能2系统必需用三个主要模块来实现,即检测, 记录和统计分析模块,每个模块各自实现一个主要功能。功能性需求3当用户输入他们的口令后,系统便自动从口令文件中检索他们的加密口令,并进展核对。功能性需求4通过对用户进展不到一个小时的培训后,用户能输入和打印某些数据,且输入/出的出错率低于1/20。非功能5全部报销单据必需经过财务部门某负责人审核后才能交由系统处理。非功能6系统必需用面对对象的方法和技术实现。非功能 以下需求是否模糊,假如模糊的话,请在说明理由后赐予修改:p841系统必需在固定的时间间隔内供应状态信息,并且每次时间间隔不得小于60秒。模糊。需求不完整,导致需求不行验证。改良如下:后台任务管理器(BTM)应当在用户界面的指定区域显示状态消息。a.在后台任务进程启动之后,消息必需每隔60(±10)秒更新一次,并且保持连续的可见性。b.假如正在正常处理后台任务进程,那么后台任务管理器(BTM)必需显示后台任务进程已完成的百分比。c.当完成后台任务时,后台任务管理器(BTM)必需显示一个“已完成的消息。d.假如后台任务中止执行,那么后台任务管理器(BTM)必需显示一个出错信息。2“产品必需在显示和隐藏非打印字符之间进展瞬间切换。在瞬间这一时间概念上,计算机不能完成任何工作,因此,这个需求是不行行的。该需求也是不完整的,因为它没有说清状态切换的缘由。在特定的条件下,软件产品是否可以进展自动切换或者可否由用户实行某些措施来激发这样转变?还有,在文档中显示转变的范围是什么?是所选的文本, 整个文档或其它内容?这个需求也存在一个不确定性问题。“非打印字符是否指隐藏文本, 属性标记或者其它的限制字符?由于存在这些问题,该需求是不行验证的。用如下的语句描述这个需求可能会更好一些:“用户在编辑文档时,通过激活特定的触发机制,可以在显示和隐藏全部 H T M L标记之间进展切换。现在,指代关系就清晰了,非打印字符指的是H T M L标记。修改正的需求指明白是用户触发了显示状态的转换,但是它并没有对设计造成限制,因为它并没有精确定义所运用的机制。当设计人员选择好一种触发机制例如热键, 菜单吩咐或语音输入时,你就可以编写具体的测试用例来验证这种转换操作是否正确。3编译系统应当能生出出错报告,这样就可使初学者能快速的排错。应说明编译系统在什么状况下出什么出错报告,改为:编译系统应当能标识出错误,并在错误所在的位置显示出出错报告,这样就可使初学者快速的排错。4软件系统应具有良好的反响时间和数据精度,且能由菜单方式驱动。“良好的应运用量化的语言表达,改为:软件系统的反响时间应小于1秒,数据精度为10-6。5“分析程序应当能生成 H T M L标记出错的报告,这样就可以使 H T M L的初学者运用它来快速排错。“快速这个词具有模糊性。缺乏对出错报告内容的定义说明该需求是不完整的。我不知道你是如何验证这个需求的。找一些 H T M L的初学者,看他们利用这个报告是否可以快速排错?还有一点不清晰的是: H T M L初学者运用的是分析程序还是出错报告。并且何时生成这样的报告?让我们运用另一种方式表述这个需求:a. 在H T M L分析程序完全分析完一个文件后,该分析程序必需生成一个出错报告,这个报告中包含了在分析文件过程中所发觉错误的 H T M L所在的行号以及文本内容,还包含了对每个错误的描述。b. 假如在分析过程中未发觉任何错误,就不必生成出错报告。现在我们知道了任何生成出错报告及其所包含的内容,但是我们已经把该需求提交给设计人员,让他们来确定报告的形式。我们还指明白一种例外状况:假如没有任何错误,就不生成出错报告。6“假如可能的话,应当依据主货物编号列表在线确认所输入的货物编号。我在想:“假如可能的话这句话意味着什么?该需求是否在技术上可行?是否可以在线访问主货物编号列表?假如你不能确信是否可以递交一个恳求,那么就运用“待确定 ( T B D )来表示未解决的问题。这个需求是不完整的,因为它并没有指明假如确认通过或失败,将会发生什么状况。应当尽量防止运用不精确的词汇,例如“应当。 客户可能须要这个功能或者不须要这个功能。一些需求规格说明利用关键字之间微妙的差异如“应当,“必需和“可能来指明重要性。我更喜爱运用“必需或“将要来明确说明需求的目的并且明确指定其优先级。改良后的该需求描述如下:“系统必需依据在线的主货物编号列表确认所输入的货物编号。假如在主列表中查不到该货物的编号,系统必需显示一个出错消息并且拒绝订货。第二种相关需求可能记录了一种异样状况:当进展货物编号确认时,主货物编号列表不行访问。7“产品不应当供应将带来灾难性后果的查询和替换选择。“灾难性后果的含义是说明的中心词。在编辑文档时,毫无目的地作出全局性变更而用户又不能检测出错误或没有任何方法来订正它,此时就可能带来灾难性后果。你也要合理地运用反面需求,因为这些需求描述了系统所不能做的事情。潜在的关注焦点在于当发生意外损坏时,能爱护文件的内容。或许,真正的需求是针对多级撤销 ( u n d o )实力, 全局变更或其它可导致数据丢失行为确定的。 为便利顾客,某航空公司拟开发一个机票预订系统。机票售票点把预订机票的顾客信息姓名,性别,身份证号,动身时间和目的地,航班号等输入该系统,系统为顾客查询航班,打印出取票通知单和账单。顾客在飞机起飞前一天凭取票通知单和账单缴款取票,系统核对无误后马上打印出机票给顾客。请用数据流图画出该系统的需求模型不须要给出数据词典p42系统数据流图顶层数据流图只是粗略的给出整个系统的数据流状况。为了更好的把“航空机票预定系统中各个模块的具体数据流处理细微环节表示出来,可以在顶层图的根底上自顶向下接着分解,得到1层和2层数据流图。另附数据字典: 旅客信息:姓名:xxx性别:男描述:旅客订票时所填的资料(省份证号, 所需机票的根本信息, 乘机时间定义:订票申请表单(旅客姓名, 旅客性别, 起飞日期, 飞行目的地, 座位类型 位置:位置:在客户端由旅客填写 航班信息:航班名称:航班类型:描述:全部从本地起飞的航班信息航班号, 起飞时间, 到达的目的地, 空出的座位数, 票价定义:航班信息航班号, 起飞日期, 飞行目的地, 空出的座位数, 票价位置:从效劳器端查询后,发送到客户端 账单信息:账单名称:账单号:描述:已定票的旅客信息资料帐单号, 旅客姓名, 旅客性别, 旅客身份证号定义:账单根本信息订票旅客的姓名, 性别, 省份证号, 航班号位置:在效劳器端产生,发送回客户端 机票信息:机票编号:航班号:描述:全部机票信息已出售的机票, 剩余机票, 航班号, 起飞时间定义:机票根本信息旅客姓名, 旅客性别, 身份证号码, 航班号, 起飞时间, 飞行目的地, 座位号位置:发送到客户端另附系统流程图功能需求:另附面对对象的需求分析方法: