软件需求工程概述幻灯片.ppt
《软件需求工程概述幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件需求工程概述幻灯片.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件需求工程概述软件需求工程概述第1页,共71页,编辑于2022年,星期三2Software Requirements Engineering软件需求工程概述软件需求工程概述第2页,共71页,编辑于2022年,星期三3第3页,共71页,编辑于2022年,星期三4本章内容本章内容工程与软件工程工程与软件工程软件需求工程软件需求工程需求工程师需求工程师需求工程需求工程vs.系统分析系统分析软件生命周期中的需求活动软件生命周期中的需求活动关于需求的基本观点关于需求的基本观点第4页,共71页,编辑于2022年,星期三5Engineering VS.Software Engineering 工程与软件工
2、程工程与软件工程第5页,共71页,编辑于2022年,星期三6工程工程 人工的科学人工的科学(Sciences of Artificial)自然科学是揭示自然界的本质和现象的科学。自然科学是揭示自然界的本质和现象的科学。“工程工程”则可以诠释为则可以诠释为“人工人工”(artificial)的科学,的科学,或设计的,制造的科学。或设计的,制造的科学。原始森林原始森林/林业工程林业工程天然水晶天然水晶/宝石加工工艺宝石加工工艺计算机工程,软件工程,企业营销计划,医药治疗方案计算机工程,软件工程,企业营销计划,医药治疗方案一切工程活动都是服务于某种预期的目的的,同时一切一切工程活动都是服务于某种预期
3、的目的的,同时一切的人造物都的人造物都”应该应该”具有某种预期的功用。具有某种预期的功用。建筑,商业,教育,法律,医学,建筑,商业,教育,法律,医学,Herbert Simon,1969第6页,共71页,编辑于2022年,星期三7什么是工程什么是工程?工程的定义:工程就是运用科学知识,对现实问题提供性工程就是运用科学知识,对现实问题提供性能价格比合理的解决方案。能价格比合理的解决方案。性价比合理:涉及性能价格的权衡,尤其是在涉及性能价格的权衡,尤其是在资源的使用方面。资源的使用方面。解决方案:工程是有创造性和实效性的。工程是有创造性和实效性的。现实问题:问题是受人们关注的。问题是受人们关注的。
4、科学知识:用到应用科学中的分析方法。用到应用科学中的分析方法。第7页,共71页,编辑于2022年,星期三8什么是工程什么是工程?普通设计与开创性设计普通设计与开创性设计普通设计:解决已有问题,解决方案已广为人知。普通设计:解决已有问题,解决方案已广为人知。工程实践依照规范化的标准解决方案工程实践依照规范化的标准解决方案由工程师选择合适的方法和技术由工程师选择合适的方法和技术运用广为人知的设备进行设计运用广为人知的设备进行设计开创性设计:从未有人作过,或已有解决方案失效。开创性设计:从未有人作过,或已有解决方案失效。通常要面临解决复杂问题的困难挑战通常要面临解决复杂问题的困难挑战对若干设备进行复
5、杂装配形成新的系统对若干设备进行复杂装配形成新的系统系统工程更为强调和关注开创性的设计系统工程更为强调和关注开创性的设计第8页,共71页,编辑于2022年,星期三9软件工程的特殊性软件工程的特殊性软件的特殊性软件的特殊性软件具有抽象性软件具有抽象性软件是不能独立存在的,其作用在于驱动硬件进行软件是不能独立存在的,其作用在于驱动硬件进行某种操作某种操作软件行为不受物理定律约束软件行为不受物理定律约束软件复杂性不受物理限制软件复杂性不受物理限制软件无磨损软件无磨损传统的可靠性度量方法不再适用传统的可靠性度量方法不再适用软件复制无损耗软件复制无损耗复制品与原件无区别复制品与原件无区别第9页,共71页
6、,编辑于2022年,星期三10软件工程的特殊性软件工程的特殊性Think about these:Think about these:软件成本低于物理设备成本软件成本低于物理设备成本 软件易修改软件易修改 计算机比物理设备可靠性高计算机比物理设备可靠性高 软件的正确性可形式化的证明软件的正确性可形式化的证明 软件重用提高安全性和可靠性软件重用提高安全性和可靠性 计算机系统同机械系统相比风险更低计算机系统同机械系统相比风险更低关于软件的荒谬说法关于软件的荒谬说法(Myths)(Myths):第10页,共71页,编辑于2022年,星期三11本章内容本章内容工程与软件工程工程与软件工程软件需求工程软
7、件需求工程需求工程师需求工程师需求工程需求工程vs.系统分析系统分析软件生命周期中的需求活动软件生命周期中的需求活动关于需求的基本观点关于需求的基本观点第11页,共71页,编辑于2022年,星期三12Software Requirements Engineering 软件需求工程软件需求工程第12页,共71页,编辑于2022年,星期三13什么是需求工程?什么是需求工程?需求工程是系统工程及软件工程的重要分支。需求工程是系统工程及软件工程的重要分支。需求工程旨在了解软件系统设计的真实意图,需求工程旨在了解软件系统设计的真实意图,具体功用及限制条件。并精确定义上述因素与具体功用及限制条件。并精确定
8、义上述因素与系统行为的关系及系统随时间和产品线变化而系统行为的关系及系统随时间和产品线变化而发生的各种演化。发生的各种演化。第13页,共71页,编辑于2022年,星期三14什么是需求工程?什么是需求工程?需求工程是指应用已证实有效的技术、方需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不
9、和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。断变化的需求演进给予支持。注意,和所有工程学科一样,需求工程并不是以零星偶发的、随机注意,和所有工程学科一样,需求工程并不是以零星偶发的、随机的或无计划的方式进行,而是代之以已证明方法的系统化应用。的或无计划的方式进行,而是代之以已证明方法的系统化应用。第14页,共71页,编辑于2022年,星期三15需求工程的重要意义需求工程的重要意义对大多数人来说,若要建一幢对大多数人来说,若要建一幢20万美元的房万美元的房子,他一定会与建房者详细讨论各种细节,子,他一定会与建房者详细讨论各种细节,他们都明白完工以后的修改会造成损失,以他们都明白
10、完工以后的修改会造成损失,以及变更细节的危害性。然而,涉及到软件开及变更细节的危害性。然而,涉及到软件开发,人们却变得发,人们却变得“大大咧咧大大咧咧”起来。软件项起来。软件项目中百分之四十至百分之六十的问题都是在目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的需求分析阶段埋下的“祸根祸根”。(Le ffingwell 1997)第15页,共71页,编辑于2022年,星期三16需求工程的重要意义需求工程的重要意义问题的严重性:问题的严重性:对软件的依赖不断增加:对软件的依赖不断增加:汽车,手机,Web Services,软件成本的比重加大:软件成本的比重加大:Boeing777软件项目
11、失败带来巨大浪费:软件项目失败带来巨大浪费:1997 GAO 报告-6年内烂尾软件项目耗资1470亿美元 General Accounting Office(美国)总审计局第16页,共71页,编辑于2022年,星期三17需求工程的重要意义需求工程的重要意义问题的严重性:问题的严重性:软件失败的严重后果:软件失败的严重后果:Ariane 5:3.7亿美元的损失;第17页,共71页,编辑于2022年,星期三18需求工程的重要意义需求工程的重要意义问题的成因:问题的成因:软件质量认证的高成本:软件质量认证的高成本:Boeing 777 40%的软件成本用于测试的软件成本用于测试以修正软件缺陷为目的的
12、软件重写:以修正软件缺陷为目的的软件重写:Motorola:曾将曾将60%-80%的软件费用用于重写的软件费用用于重写需求的频繁变化:需求的频繁变化:Capers Jones(1994)在报告中称扩展需求对百)在报告中称扩展需求对百分之八十的管理信息系统项目和百分之七十的军事分之八十的管理信息系统项目和百分之七十的军事软件项目造成风险。软件项目造成风险。第18页,共71页,编辑于2022年,星期三19解决方案?解决方案?没有没有“银弹银弹”!No Silver Bullet!(Fred Brooks,1987)n软件的规模决定它的复杂性软件的规模决定它的复杂性n软件具有抽象性和不可视性软件具有
13、抽象性和不可视性n软件没有规范的装配步骤,因此极易修改!软件没有规范的装配步骤,因此极易修改!“No Silver Bullet”的原文是:的原文是:“没有任何技术或管理上的没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。量级上的进步。”在软件开发过程里是没有万能的终杀性武器的,只有各种方在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。法综合运用,才是解决之道。第19页,共71页,编辑于2022年,星期三20解决方案?解决方案?然而,早期的建模和分析是非常重要的然而
14、,早期的建模和分析是非常重要的可以节省纠错成本:晚期修改可能会使成本高出可以节省纠错成本:晚期修改可能会使成本高出200倍倍当然,仅仅有早期的建模和分析是不够的当然,仅仅有早期的建模和分析是不够的所有项目参加者均需了解系统需求所有项目参加者均需了解系统需求所有风险承担者均需对需求达成共识所有风险承担者均需对需求达成共识需透彻了解系统运作的背景需透彻了解系统运作的背景需透彻了解系统设计过程及其背景需透彻了解系统设计过程及其背景当需求发生演变时,要及时更新当需求发生演变时,要及时更新第20页,共71页,编辑于2022年,星期三21需求工程指南需求工程指南(Roadmap:Bashar Nuseib
15、eh&Steve Easterbrook,2000)(Roadmap:Bashar Nuseibeh&Steve Easterbrook,2000)如何如何获取获取需求信息?需求信息?识别:风险承担者,目标,分析角度,系统边识别:风险承担者,目标,分析角度,系统边界,应用实例,界,应用实例,核心技术:核心技术:座谈,问卷,代表会议座谈,问卷,代表会议 采用人种学(采用人种学(Ethnographic)方法(社交嵌入系)方法(社交嵌入系统)统)采用原型法,或参与设计法(缺乏了解的系统)采用原型法,或参与设计法(缺乏了解的系统)如何如何分析分析需求信息?需求信息?概念建模概念建模第21页,共71页
16、,编辑于2022年,星期三22需求工程指南需求工程指南(Roadmap:Bashar Nuseibeh&Steve Easterbrook,2000)(Roadmap:Bashar Nuseibeh&Steve Easterbrook,2000)如何就需求如何就需求达成共识达成共识?进行经验主义的模型验证进行经验主义的模型验证当出现矛盾和分歧时,提供磋商的方法和手段当出现矛盾和分歧时,提供磋商的方法和手段如何如何表达表达需求?需求?自然语言与形式化语言的合理搭配自然语言与形式化语言的合理搭配如何保持需求的如何保持需求的现时性现时性?需求发生变化时,及时更新需求发生变化时,及时更新产品线的维护产
17、品线的维护第22页,共71页,编辑于2022年,星期三23需求工程的理论基础需求工程的理论基础 RE FoundationsRE Foundations系统理论系统理论什么是系统什么是系统系统的控制和演化系统的控制和演化系统工程系统工程工程生命周期工程生命周期数学与逻辑数学与逻辑一阶逻辑一阶逻辑模态逻辑,时序逻辑,及模态逻辑,时序逻辑,及其他非经典逻辑其他非经典逻辑代数和关系模型代数和关系模型计算机科学计算机科学自动机理论自动机理论抽象,分解,和面向对象抽象,分解,和面向对象软件体系结构和设计模式软件体系结构和设计模式社会科学人类学与民族方法学组织行为学社会心理学政治学认知科学认知心理学语言学
18、知识表示(人工智能)哲学经验主义和科学哲学现象学,认识论和本体符号语言学 第23页,共71页,编辑于2022年,星期三24需求工程的领域划分需求工程的领域划分软件需求工程划分为需求开发和需求管理软件需求工程划分为需求开发和需求管理第24页,共71页,编辑于2022年,星期三25需求工程的领域划分需求工程的领域划分需求开发需求开发 问题获取问题获取分析分析编写规格说明编写规格说明验证验证需求管理需求管理 建立并维护在软件工程中同客户达成的契约建立并维护在软件工程中同客户达成的契约第25页,共71页,编辑于2022年,星期三26需求需求开发开发需求开发活动包括以下几个方面:需求开发活动包括以下几个
19、方面:确定产品所期望的用户类。确定产品所期望的用户类。获取每个用户类的需求。获取每个用户类的需求。了解实际用户任务和目标以及这些任务所支持的业务了解实际用户任务和目标以及这些任务所支持的业务需求。需求。分析源于用户的信息以区别用户任务需求、功能需求、分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息。业务规则、质量属性、建议解决方法和附加信息。第26页,共71页,编辑于2022年,星期三27需求需求开发开发需求开发活动包括以下几个方面:需求开发活动包括以下几个方面:将系统级的需求分为几个子系统,并将需求中的将系统级的需求分为几个子系统,并将需求中的一部份
20、分配给软件组件。一部份分配给软件组件。了解相关质量属性的重要性。了解相关质量属性的重要性。商讨实施优先级的划分。商讨实施优先级的划分。将所收集的用户需求编写成规格说明和模型。将所收集的用户需求编写成规格说明和模型。评审需求规格说明,确保对用户需求达到共同的理评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题解与认识,并在整个开发小组接受说明之前将问题都要弄清楚。都要弄清楚。第27页,共71页,编辑于2022年,星期三28需求需求管理管理 通常的需求管理活动包括通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体)。定义需求基线(迅速制定需求文档的主
21、体)。评审提出的需求变更、评估每项变更的可能影响从而决定是否评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。实施它。以一种可控制的方式将需求变更融入到项目中。以一种可控制的方式将需求变更融入到项目中。使当前的项目计划与需求一致。使当前的项目计划与需求一致。基于估计变更需求所产生影响的基础上,协商新的承基于估计变更需求所产生影响的基础上,协商新的承诺(约定)。诺(约定)。让每项需求都能与其对应的设计、源代码和测试用例联让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。系起来以实现跟踪。在整个项目过程中跟踪需求状态及其变更情况。在整个项目过程中跟踪需求状态及其变更情况
22、。第28页,共71页,编辑于2022年,星期三29需求需求管理管理 需求管理活动需求管理活动第29页,共71页,编辑于2022年,星期三30需求开发和需求管理之间的界限需求开发和需求管理之间的界限第30页,共71页,编辑于2022年,星期三31本章内容本章内容工程与软件工程工程与软件工程软件需求工程软件需求工程需求工程师需求工程师需求工程需求工程vs.系统分析系统分析软件生命周期中的需求活动软件生命周期中的需求活动关于需求的基本观点关于需求的基本观点第31页,共71页,编辑于2022年,星期三32SRE Engineer 需求工程师需求工程师第32页,共71页,编辑于2022年,星期三33Re
23、quirements Engineer 需求工程师需求工程师1.分析问题和解决问题的能力分析问题和解决问题的能力2.人际沟通及交流能力人际沟通及交流能力3.软件工程知识和技能软件工程知识和技能4.应用领域有关知识应用领域有关知识5.书面语言组织和表达能力书面语言组织和表达能力6.第33页,共71页,编辑于2022年,星期三34需求工程师做什么需求工程师做什么着手点是有待解决的着手点是有待解决的“问题问题”出现出现例如:例如:对系统现状不满;对系统现状不满;有新的商机出现;有新的商机出现;有可能节能、降耗、省时等。有可能节能、降耗、省时等。第34页,共71页,编辑于2022年,星期三35需求工程
24、师做什么需求工程师做什么需求工程师促进变化的发生,要完成以下工作:需求工程师促进变化的发生,要完成以下工作:确定确定“问题问题”及及“机会机会”要解决的问题是什么要解决的问题是什么?(问题的界定问题的界定)问题出在何处问题出在何处?(了解问题的领域及上下文了解问题的领域及上下文)问题与谁相关问题与谁相关?(确定干系人确定干系人-Stakeholder)为什么解决该问题为什么解决该问题?(确定干系人的目标确定干系人的目标)软件系统如何促进问题的解决软件系统如何促进问题的解决?(搜集情景实例搜集情景实例)解决问题的期限解决问题的期限?(确定开发活动的约束和限制确定开发活动的约束和限制)影响问题解决
25、的因素有哪些影响问题解决的因素有哪些?(确定可行性和风险确定可行性和风险)成为问题领域的专家成为问题领域的专家拥有更多的机会和解决问题的方案拥有更多的机会和解决问题的方案第35页,共71页,编辑于2022年,星期三36ACM/IEEE 职业道德规范职业道德规范:PUBLIC 保护保护公众公众利益。利益。CLIENT AND EMPLOYER 在保护公众利益的前提下,为在保护公众利益的前提下,为客户及雇主客户及雇主的最高利益服务。的最高利益服务。PRODUCT 尽可能令你的尽可能令你的产品产品符合行业的最高标准。符合行业的最高标准。JUDGEMENT 在进行职业在进行职业判断判断时,保持正直及独
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 需求 工程 概述 幻灯片
限制150内