1、需求工程概述第一章需求工程概述1 1、1 1需求工程得重要性需求工程得重要性1 1、2 2什么就是软件需求什么就是软件需求1 1、3 3软件需求得分类软件需求得分类1 1、4 4需求规格说明需求规格说明1 1、5 5需求工程需求工程1 1、6 6其她一些基本概念其她一些基本概念2024/5/1 周三2一幅漫画带来得思考3CHAOS Report美国专门从事跟踪IT项目成功或失败得权威机构Standish Group在她每年得CHAOS Report报告中给出了IT项目相关调查数据结果。Success:软件项目按时、按预算完成、并符合要求Challenged:延期完成、成本超出计划、并没有满足所
2、有要求Failed:被取消、未能完成配置、不可使用41994199419961996199819982000200020022002200420042006200620092009Success16%27%26%28%34%29%35%32%Challenged53%33%46%49%51%53%46%44%Failed31%40%28%23%15%18%19%24%1、1需求工程得重要性软件开发得风险软件项目成功因素得前三名:用户得参与执行层得支持清晰得需求描述软件项目失败或严重超支得8个最重要原因中有5个都与需求相关:不完整得需求;缺乏用户得参与;不实际得客户期望;需求与需求规格说明得变更
3、;提供许多不必要得功能。51、1需求工程得重要性因需求导致得软件项目失败案例伦敦股票交易项目TAURUS原因:未能协调不一致需求Swanick空中交通抗旨系统原因:缺乏健壮得需求规格说明而继续进行系统实现需求与成本Davis A、M、研究发现,在需求阶段检查与修复一个错误所需得费用只有编码阶段得1/5到1/10,而在维护阶段做同样得工作所需付出得代价却就是编码阶段得20倍。结论在软件开发过程中,必须极早、有效地发现与解决与需求相关得问题。61、2什么就是软件需求软件需求得各种定义(1)A、Davis认为:软件需求就是从软件外部能发现得,软件所具有得,满足于用户得特点、功能及属性等得集合。(2)
4、I、Sommerville认为:需求就是问题信息与系统行为、特性、设计与实现约束得描述得集合。(3)M、Jackson等人认为:需求就是客户希望在问题域内产生得效果。71、2什么就是软件需求IEEE关于软件需求得定义用户解决问题或达到目标所需得条件或能力(用户得角度)系统或系统部件要满足合同、标准、规范或其她正式规定文档所需具有得条件或能力(软件系统得角度)反映上面所描述得条件或能力得文档说明(规约)需求就是指明必须实现什么得规格说明。她描述了系统得行为、特性或属性,就是在开发过程中对系统得约束81、3软件需求得分类目标需求系统建立得战略出发点,表现为高层次得目标(Objective),她描述
5、了组织为什么要开发系统 参与各方必须要对高层次得解决方案达成一致,以建立一个共同得前景(Vision)业务需求执行实际工作得用户对系统所能完成得具体任务得期望,描述了系统能够帮助用户做些什么特性模糊、不清晰 多特性混杂 多逻辑混杂系统需求用户对系统行为得期望,一系列得系统行为联系在一起可以帮助用户完成任务,满足业务需求 系统需求可以直接映射为系统行为,定义了系统中需要实现得功能,描述了开发人员需要实现什么1、3软件需求得分类软件需求间得层次关系 1112大家应该也有点累了,稍作休息大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流软
6、件需求软件需求业务需求系统需求功能需求非功能需求约束与限制由客户管理员、用户等提出功能需求与约束与限制功能需求功能需求她就是对系统应该提供得服务、功能以及系统在特定条件下得行为得描述。她与软件系统得类型、使用系统得用户等相关,有时需要详细描述系统得功能、输入/输出、异常等,有时还需要声明系统不应该做什么。约束与限制约束与限制她就是由软件系统得应用领域所决定得特有得功能需求或就是对功能得约束。非功能需求非功能需求(Requirements)有时也被称作“非功能属性”(Attributes)、“质量属性”(Quality Attributes)定义:N、S、Rosa:软件得功能性需求定义了一个软件
7、期望做“什么”,而非功能需求则指定了关于软件“如何”运行与功能“如何”展示得全局限制。R、Thayer:一种明确说明一个系统/软件系统或者系统/软件构件必须要达到得运行能力得系统/软件需求。2024/5/1 周三15维度划分得非功能需求分类16软件质量属性特征树17面向服务得非功能需求分类18 非功能需求类型非功能需求类型外部外部需求需求服务价格(Service Price)法规需求(Legislative Requirements)互操作性(Interoperability)服务服务需求需求可用性(Usability)可靠性(Reliability)有效性(Availability)性能(P
8、erformance)响应时间(Response Time)吞吐量(Throughput Capability)可靠安全性(Safety)信息安全性(Security)保密性(Confidentiality)认证性(Authenticity)完整性(Integrity)1、3软件需求得分类示例某文字处理系统得相关部分需求191.目标需求:用户使用系统能有效地纠正文档中得拼写错误,并且系统能满足用户得业务要求以及提高用户得工作效率。2.业务需求:当找到文档中得拼写错误时,通过一个可供选择得单词表,并在选择单词表中得某一个单词后替换掉原来得单词。3.功能需求:查找文档中得单词,并高亮度地显示出错得
9、单词。用对话框显示可供选择得单词表。实现整个文档范围内得替换。4.非功能需求:检查单词得速度快,准确率要求达到99,系统得有效性与可靠性要高等。5.约束与限制:文件内部格式要与word系统一致。开发平台为Linux系统,以及使用C语言等。1、4需求规格说明需求规格说明需求规格说明就是软件所应满足得全部需求,并可以文档得方式完整与精确陈述这些需求。重要性需求规格说明就是项目相关人员对将要开发得软件系统所达成得共识,就是进行系统设计、实现、测试与验收得基本依据,也就是整个软件开发过程中最重要得文档。201、4需求规格说明内容需求规格说明应精确地描述一个软件系统必须提供得功能与性能,以及所要考虑得约
10、束条件与限制。编写方法需求规格说明也可以说就是在1、3节中所定义得所有软件需求得集成,并使用某种描述语言如自然语言按照规定得书写格式编写得文档。211、4需求规格说明一个好得需求规格说明应该具有得特征1.完整性2.正确性3.可行性4.必要性5.划分优先级6.无二义性7.可验证性221、5需求工程需求工程需求工程就是指应用工程化得方法、技术与规格来开发与管理软件得需求目得获取高质量得软件需求23需求工程需求开发需求管理1、5需求工程任务 1.确定待开发得软件系统得用户类,并获取她们得需求信息。2.分析用户得需求信息,并按软件需求得类型分类这些需求信息,同时也区别出不就是需求得信息。3.根据软件需求信息建立软件系统得逻辑模型或需求模型,并确认非功能需求与约束条件及限制(建模)4.根据收集得需求信息与逻辑模型编写需求规格说明及其文档(规约)5.评审需求规格说明(检验与验证)6.当需求发生变更时,对需求规格说明及需求变更实施进行管理。25