软件需求工程概述课件_第1页
软件需求工程概述课件_第2页
软件需求工程概述课件_第3页
软件需求工程概述课件_第4页
软件需求工程概述课件_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件需求工程概述课件1SoftwareRequirementsEngineering

软件需求工程概述2SoftwareRequirementsEngineer334本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点4本章内容工程与软件工程4EngineeringVS.

SoftwareEngineering

工程与软件工程5EngineeringVS.

SoftwareEngi工程–人工的科学(SciencesofArtificial)自然科学是揭示自然界的本质和现象的科学。“工程”则可以诠释为“人工”(artificial)的科学,或设计的,制造的科学。原始森林/林业工程天然水晶/宝石加工工艺计算机工程,软件工程,企业营销计划,医药治疗方案……一切工程活动都是服务于某种预期的目的的,同时一切的人造物都”应该”具有某种预期的功用。建筑,商业,教育,法律,医学,……——HerbertSimon,19696工程–人工的科学(SciencesofArtifici什么是工程?工程的定义:

工程就是运用科学知识,对现实问题提供性能价格比合理的解决方案。性价比合理:涉及性能价格的权衡,尤其是在资源的使用方面。解决方案:工程是有创造性和实效性的。现实问题:问题是受人们关注的。科学知识:用到应用科学中的分析方法。7什么是工程?工程的定义:7什么是工程?普通设计与开创性设计普通设计:解决已有问题,解决方案已广为人知。工程实践依照规范化的标准解决方案由工程师选择合适的方法和技术运用广为人知的设备进行设计开创性设计:从未有人作过,或已有解决方案失效。通常要面临解决复杂问题的困难挑战对若干设备进行复杂装配形成新的系统系统工程更为强调和关注开创性的设计8什么是工程?普通设计与开创性设计8软件工程的特殊性软件的特殊性软件具有抽象性软件是不能独立存在的,其作用在于驱动硬件进行某种操作软件行为不受物理定律约束软件复杂性不受物理限制软件无磨损传统的可靠性度量方法不再适用软件复制无损耗复制品与原件无区别9软件工程的特殊性软件的特殊性9软件工程的特殊性Thinkaboutthese:

软件成本低于物理设备成本软件易修改计算机比物理设备可靠性高软件的正确性可形式化的证明软件重用提高安全性和可靠性计算机系统同机械系统相比风险更低关于软件的荒谬说法(Myths):10软件工程的特殊性Thinkaboutthese:11本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点11本章内容工程与软件工程11SoftwareRequirementsEngineering

软件需求工程12SoftwareRequirementsEngineer什么是需求工程?需求工程是系统工程及软件工程的重要分支。需求工程旨在了解软件系统设计的真实意图,具体功用及限制条件。并精确定义上述因素与系统行为的关系及系统随时间和产品线变化而发生的各种演化。13什么是需求工程?需求工程是系统工程及软件工程的重要分支。1314什么是需求工程?需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。注意,和所有工程学科一样,需求工程并不是以零星偶发的、随机的或无计划的方式进行,而是代之以已证明方法的系统化应用。14什么是需求工程?需求工程是指应用已证实有效的技术、方法进14需求工程的重要意义对大多数人来说,若要建一幢20万美元的房子,他一定会与建房者详细讨论各种细节,他们都明白完工以后的修改会造成损失,以及变更细节的危害性。然而,涉及到软件开发,人们却变得“大大咧咧”起来。软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根”。 (Leffingwell1997)15需求工程的重要意义对大多数人来说,若要建一幢20万美元的房子需求工程的重要意义问题的严重性:对软件的依赖不断增加:汽车,手机,WebServices,……软件成本的比重加大:Boeing777软件项目失败带来巨大浪费:1997GAO报告-6年内烂尾软件项目耗资1470亿美元GeneralAccountingOffice(美国)总审计局16需求工程的重要意义问题的严重性:1617需求工程的重要意义问题的严重性:软件失败的严重后果:Ariane5:3.7亿美元的损失;17需求工程的重要意义问题的严重性:17需求工程的重要意义问题的成因:软件质量认证的高成本:Boeing777>40%的软件成本用于测试以修正软件缺陷为目的的软件重写:Motorola:曾将60%-80%的软件费用用于重写需求的频繁变化:CapersJones(1994)在报告中称扩展需求对百分之八十的管理信息系统项目和百分之七十的军事软件项目造成风险。18需求工程的重要意义问题的成因:18解决方案??没有“银弹”!NoSilverBullet!(Fred

Brooks,1987)软件的规模决定它的复杂性软件具有抽象性和不可视性软件没有规范的装配步骤,因此极易修改!“NoSilverBullet”的原文是:“没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。”在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。

19解决方案??没有“银弹”!NoSilverBullet20解决方案??然而,早期的建模和分析是非常重要的可以节省纠错成本:晚期修改可能会使成本高出200倍当然,仅仅有早期的建模和分析是不够的所有项目参加者均需了解系统需求所有风险承担者均需对需求达成共识需透彻了解系统运作的背景需透彻了解系统设计过程及其背景当需求发生演变时,要及时更新20解决方案??然而,早期的建模和分析是非常重要的20需求工程指南

(Roadmap:BasharNuseibeh&SteveEasterbrook,2000)如何获取需求信息?识别:风险承担者,目标,分析角度,系统边界,应用实例,……核心技术:

座谈,问卷,代表会议采用人种学(Ethnographic)方法(社交嵌入系统)采用原型法,或参与设计法(缺乏了解的系统)如何分析需求信息?概念建模21需求工程指南

(Roadmap:BasharNuseib需求工程指南

(Roadmap:BasharNuseibeh&SteveEasterbrook,2000)如何就需求达成共识?进行经验主义的模型验证当出现矛盾和分歧时,提供磋商的方法和手段如何表达需求?自然语言与形式化语言的合理搭配如何保持需求的现时性?需求发生变化时,及时更新产品线的维护22需求工程指南

(Roadmap:BasharNuseib需求工程的理论基础REFoundations系统理论什么是系统系统的控制和演化系统工程工程生命周期数学与逻辑一阶逻辑模态逻辑,时序逻辑,及其他非经典逻辑代数和关系模型计算机科学自动机理论抽象,分解,和面向对象软件体系结构和设计模式社会科学人类学与民族方法学组织行为学社会心理学政治学认知科学认知心理学语言学知识表示(人工智能)哲学经验主义和科学哲学现象学,认识论和本体符号语言学…

…23需求工程的理论基础REFoundations系统理论社24需求工程的领域划分软件需求工程划分为需求开发和需求管理24需求工程的领域划分软件需求工程划分为需求开发和需求管理2425需求工程的领域划分需求开发问题获取分析编写规格说明验证需求管理建立并维护在软件工程中同客户达成的契约25需求工程的领域划分需求开发2526需求开发需求开发活动包括以下几个方面:确定产品所期望的用户类。获取每个用户类的需求。了解实际用户任务和目标以及这些任务所支持的业务需求。分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息。26需求开发需求开发活动包括以下几个方面:2627需求开发需求开发活动包括以下几个方面:将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件。了解相关质量属性的重要性。商讨实施优先级的划分。将所收集的用户需求编写成规格说明和模型。评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都要弄清楚。27需求开发需求开发活动包括以下几个方面:2728需求管理通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体)。评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。以一种可控制的方式将需求变更融入到项目中。使当前的项目计划与需求一致。基于估计变更需求所产生影响的基础上,协商新的承诺(约定)。让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。在整个项目过程中跟踪需求状态及其变更情况。28需求管理通常的需求管理活动包括:2829需求管理需求管理活动29需求管理需求管理活动2930需求开发和需求管理之间的界限30需求开发和需求管理之间的界限3031本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点31本章内容工程与软件工程31SREEngineer

需求工程师32SREEngineer

需求工程师32RequirementsEngineer

需求工程师1.分析问题和解决问题的能力2.人际沟通及交流能力3.软件工程知识和技能4.应用领域有关知识5.书面语言组织和表达能力6.……33RequirementsEngineer需求工程师1.需求工程师做什么着手点是有待解决的“问题”出现例如:对系统现状不满;有新的商机出现;有可能节能、降耗、省时等。34需求工程师做什么着手点是有待解决的“问题”出现34需求工程师做什么需求工程师促进变化的发生,要完成以下工作:确定“问题”及“机会”要解决的问题是什么?(问题的界定)问题出在何处?(了解问题的领域及上下文)问题与谁相关?(确定干系人-Stakeholder)为什么解决该问题?(确定干系人的目标)软件系统如何促进问题的解决?(搜集情景实例)解决问题的期限?(确定开发活动的约束和限制)影响问题解决的因素有哪些?(确定可行性和风险)成为问题领域的专家拥有更多的机会和解决问题的方案35需求工程师做什么需求工程师促进变化的发生,要完成以下工作:3ACM/IEEE职业道德规范:PUBLIC–保护公众利益。CLIENTANDEMPLOYER–在保护公众利益的前提下,为客户及雇主的最高利益服务。PRODUCT–尽可能令你的产品符合行业的最高标准。JUDGEMENT–在进行职业判断时,保持正直及独立性。MANAGEMENT–对软件开发和维护的管理应遵循和提倡符合职业道德。PROFESSION–在符合公众利益的前提下,推进职业的正直性和声誉。COLLEAGUES–对同事要持公正和支持的态度。SELF–毕生坚持学习并在职业生涯中提倡职业道德。职业责任

(CodeofEthics)36ACM/IEEE职业道德规范:职业责任(Codeof职业责任

(CodeofEthics)与需求工程相关的职业规范:Competence–永不对你的工作能力说谎。Confidentiality–坚持为你的客户及合作者保密。Intellectualpropertyrights–保护他人的新观点及设计,即知识产权。DataProtection–在处理个人信息时注意遵守相关法令保护数据。37职业责任(CodeofEthics)与需求工程相关的需求工程过程、方法、技术符号表示(notation) 是一种表示策略、框架或语言。一阶逻辑,数据流图,UML技术(technique) 指出如何完成某项活动,以及如何用符号描述该项活动的产品。画用例图的技术方法(method) 给出关于如何完成系列活动的描述,重点是技术的集成和使用。CORE,SADT,SREM,JAD过程模型(Processmodel) 给出关于如何完成系列活动的抽象描述,重点是活动间的依赖关系和资源的使用情况。过程(Process) 是对过程模型的实际运行,描述一两个代理的行为及其对资源的管理。38需求工程过程、方法、技术符号表示(notation)3需求工程过程、方法、技术需求工程方法是如何嵌入需求工程过程的?每种方法均适用于某一类问题领域通常对他们的适用性的定义不够明确各种方法对需求工程活动的覆盖程度和侧重点有所不同 例如:覆盖的活动包括:需求获取,建模,分析等侧重点包括:目标,行为,视角等。39需求工程过程、方法、技术需求工程方法是如何嵌入需求工程过程的40需求工程师的素质要求

倾听的能力访问能力分析能力协调能力观察能力书写能力组织能力建模能力交际能力创新能力领域知识40需求工程师的素质要求倾听的能力组织能力4041本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点41本章内容工程与软件工程41REvs.SystemsAnalysis

需求工程vs.系统分析42REvs.SystemsAnalysis

需求工需求工程vs.系统分析

REvs.SystemsAnalysis需求工程由系统分析发展而来系统分析关注企业内部的信息系统主要采用非形式化的需求描述,工具和方法,例如:DFD,E-R,OO,…80年代中期形成,90年代以来成为研究热点。多见于管理学院,工程学科,和计算机科学的本科生和研究生教学43需求工程vs.系统分析

REvs.SystemsAna需求工程vs.系统分析

REvs.SystemsAnalysis需求工程超出系统分析的范围涵盖整个形式化问题从“企业需求”到“精确描述”不仅限于信息系统实时系统嵌入系统交互系统基于组件的系统webservices相对较少关注企业管理问题和企业业务流程44需求工程vs.系统分析

REvs.SystemsAnaBut,whatisarequirement?每一个“人造物”都是一个内部环境与外部环境的“接口”。这里内部环境指人造物本身的设计组成。外部环境指人造物的周遭及其作用环境。对这个接口的描述即是需求。——HerbertSimon,1969需求,即是人们要解决的某个问题或达到某种目的的需要。是系统或其组成部分为满足某种书面规定(合同,标准,规范等)所要具备的能力。需求将作为系统开发,测试,验收,提交的依据。——IEEE610.12,199045But,whatisarequirement?每一个将问题与解决方案分开理解问题

需求获取问题的形式化表示

形式规约,形式建模就问题性质达成共识

验证,冲突及矛盾消解,磋商 需求管理–维护双方的共识46将问题与解决方案分开理解问题46设计活动改变客观世界状态47设计活动改变客观世界状态47什么是需求?(Jackson,1995)领域性质(DomainProperty):无论系统存在与否均存在的应用领域的性质。需求(Requirements):由系统的存在而产生的应用领域性质。规约描述(Specification):描述系统为满足需求而应具有的行为。需求证明的标准(VerificationCriteria):1、运行在某台机器上的程序满足规约描述;2、针对给定的领域性质,规约描述满足需求。需求验证的标准(ValidationCriteria):1、是否已发现所有重要需求?2、是否已发现所有有关的领域性质?48什么是需求?(Jackson,1995)实例RequirementR需求:只有被授权者能够访问数据库。DomainPropertiesD领域性质:授权者持有密码。密码不会分享给未授权者。SpecificationS规约描述:用户输入密码后,将被准许访问数据库。S+DimplyR当领域模型出错时,会有什么后果49实例RequirementR需求:49需求:关于为什么?做什么?

不包括怎么做?(why,what,how)…需求描述必须给出为什么需要这样一个系统。——Ross,1977通常,需求描述系统要做什么,而不是怎么做。但是,二者不太容易区分,上一个抽象层次的“怎么做”经常在下一个抽象层次上转化为“做什么”。Jackson给出的稍为清楚的解释:“为什么”和“做什么”是指系统的设计目的,是置身系统外部,对应用领域性质的描述。“怎么做”是指系统的内部结构和行为。——Jackson,199550需求:关于为什么?做什么?

不包括怎么做?(why,wha“描述”是需求工程的核心

(Jackson,1995)用非形式化的语言指出感兴趣的主题现象,并命名(designation)。例如:Parent(x,p):p是x的父母。Female(x):x是女性。术语的形式化定义(definition)和使用。例如:Mother(x,m)≡Parent(x,m)andFemale(m)Sister(x,y)≡Female(y)andmother(x,m)andmother(y,m)andfather(x,f)andfather(y,f)51“描述”是需求工程的核心

(Jackson,1995)用非“描述”是需求工程的核心

(Jackson,1995,p58-59)关于领域性质的无可驳的描述(refutabledescription)。无可驳性依赖于与主题现象的一致性。例如:对所有的m和x,Parent(x,m)蕴含not(parent(m,x))开发过程中的带有假设性质的概略描述(roughsketch)。例如:“人与人之间总是通过某种方式相互联系”“每个人实际上只能有一个家”52“描述”是需求工程的核心

(Jackson,1995,p存在问题的需求描述实例含糊的需求描述:“工资总额由上一条记录获得”“所有客户都具有同一控制域“错误的需求描述:“所有系统将九月作为财政年度的起始时间”不完整的需求描述:“出错信息显示在屏幕的第24行“矛盾或不一致的需求描述:“C=A+B”;“C=A-B”无法测试的需求:“系统应具有友好的界面“53存在问题的需求描述实例含糊的需求描述:53需求的层次软件需求包括三个不同的层次业务需求(businessrequirement)

反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求(userrequirement)

描述了用户使用产品必须要完成的任务,这在使用实例(usecase)文档或方案脚本(scenario)说明中予以说明。功能需求(functionalrequirement)(包括非功能需求)

定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。54需求的层次软件需求包括三个不同的层次54软件需求各组成部分之间的关系

对一个复杂产品来说,软件功能需求也许只是系统需求的一个子集,另外一些可能属于软件部件。

管理人员或市场分析人员确定软件的业务需求,使公司运作更加高效(对信息系统而言)或具有很强的市场竞争力(对商业软件产品而言)。

所有的用户需求必须与业务需求一致。用户需求使需求分析者能从中总结出功能需求以满足用户对产品的要求从而完成其任务,而开发人员则根据功能需求来设计软件以实现必须的功能。55软件需求各组成部分之间的关系对一个复杂产品来说,非功能性需求:作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。56非功能性需求:5657需求工程57需求工程5758本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点58本章内容工程与软件工程58RequirementactivitiesintheSElifecycle

软件生命周期中的需求活动59Requirementactivitiesinthe瀑布模型(Waterfall/Baseline)核心思想:系统开发是逐步求精的过程各步骤相对独立,便于管理存在的问题:忽略了需求的动态性需求完成后,用户对项目的参与即停止需求描述与设计分开不支持原型的使用和软件重用(Loucopoulos&Karakostas,1995)60瀑布模型(Waterfall/Baseline)核心思想:6原型法(Prototype)适用范围:用于获取关于系统用户界面的需求用于检验设计方案的可行性,或探讨系统性能问题存在的问题:用户将原型误认为最终系统原型所反映的系统是不全面的(Loucopoulos&Karakostas,1995,p30)61原型法(Prototype)适用范围:61增量式开发与演化式开发

Incrementalvs.Evolutionary(Thayer&Dorfman,1997,p10)62增量式开发与演化式开发

Incrementalvs.Ev螺旋模型(SpiralModel)螺旋模型主要用于风险分析每一轮开发活动具体包括:制定下一轮计划决定设计目标和限制条件评估候选方案,风险降解产品开发需求工程有关步骤为:需求风险分析规划设计可以减少需求变更所带来的风险存在的问题:无法应付不可预见的需求变化63螺旋模型(SpiralModel)螺旋模型主要用于风险分V型模型

(V-Model)

(Macaulay,1996)64V型模型

(V-Model)(Macaulay,1关于敏捷模型(AgileModels)基本原则:减少沟通障碍程序员与客户直接交流减低繁重的文档负担文档代价昂贵但用途有限对开发人员给予充分信任无需运用花样翻新的过程模型给与提示响应客户要求而非严格遵循合同条文缺点:依赖程序员的记忆力源代码是难于维护的依赖口头交流易发生误解假定只有唯一的客户代表不可能反映多视角制作短期计划无长期及前瞻性规划65关于敏捷模型(AgileModels)基本原则:缺点:6566本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点66本章内容工程与软件工程66Viewpoints

关于需求的基本观点67Viewpoints

关于需求的基本观点67关于需求的基本观点需求工程活动不总是顺序进行问题描述不总是先于解决方案描述在系统开发的任何阶段描述问题均是有益的需求工程是在各开发阶段持续进行的一系列活动问题陈述无法追求完美需求模型是对世界的近似表示将包括不精确和不一致性会省略某些信息细致的分析将降低导致严重问题的风险…但风险永不可能降解为零68关于需求的基本观点需求工程活动不总是顺序进行68关于需求的基本观点追求规约的描述会降低性价比需求分析是有开销的不同的项目,性价比的平衡点是不同的问题描述永不可能是固定的变化是无法避免的,因此应纳入计划之中对变化的处理应定期进行69关于需求的基本观点追求规约的描述会降低性价比69可能的需求来源客户专有需求对于有着明确问题的特定客户,最终客户享有决定权。市场需求对于在市场上广泛出售的产品,营销团队扮演着顾客和用户代表的角色,产品必须拥有顾客。社会需求系统的目的是造福社会,而不需要客户(支付报酬)一些开源/自由软件,科学研究软件综合为特定客户开发,但最终希望面向市场的软件。70可能的需求来源客户专有需求70谢谢谢谢71软件需求工程概述课件72SoftwareRequirementsEngineering

软件需求工程概述73SoftwareRequirementsEngineer74375本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点4本章内容工程与软件工程75EngineeringVS.

SoftwareEngineering

工程与软件工程76EngineeringVS.

SoftwareEngi工程–人工的科学(SciencesofArtificial)自然科学是揭示自然界的本质和现象的科学。“工程”则可以诠释为“人工”(artificial)的科学,或设计的,制造的科学。原始森林/林业工程天然水晶/宝石加工工艺计算机工程,软件工程,企业营销计划,医药治疗方案……一切工程活动都是服务于某种预期的目的的,同时一切的人造物都”应该”具有某种预期的功用。建筑,商业,教育,法律,医学,……——HerbertSimon,196977工程–人工的科学(SciencesofArtifici什么是工程?工程的定义:

工程就是运用科学知识,对现实问题提供性能价格比合理的解决方案。性价比合理:涉及性能价格的权衡,尤其是在资源的使用方面。解决方案:工程是有创造性和实效性的。现实问题:问题是受人们关注的。科学知识:用到应用科学中的分析方法。78什么是工程?工程的定义:7什么是工程?普通设计与开创性设计普通设计:解决已有问题,解决方案已广为人知。工程实践依照规范化的标准解决方案由工程师选择合适的方法和技术运用广为人知的设备进行设计开创性设计:从未有人作过,或已有解决方案失效。通常要面临解决复杂问题的困难挑战对若干设备进行复杂装配形成新的系统系统工程更为强调和关注开创性的设计79什么是工程?普通设计与开创性设计8软件工程的特殊性软件的特殊性软件具有抽象性软件是不能独立存在的,其作用在于驱动硬件进行某种操作软件行为不受物理定律约束软件复杂性不受物理限制软件无磨损传统的可靠性度量方法不再适用软件复制无损耗复制品与原件无区别80软件工程的特殊性软件的特殊性9软件工程的特殊性Thinkaboutthese:

软件成本低于物理设备成本软件易修改计算机比物理设备可靠性高软件的正确性可形式化的证明软件重用提高安全性和可靠性计算机系统同机械系统相比风险更低关于软件的荒谬说法(Myths):81软件工程的特殊性Thinkaboutthese:82本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点11本章内容工程与软件工程82SoftwareRequirementsEngineering

软件需求工程83SoftwareRequirementsEngineer什么是需求工程?需求工程是系统工程及软件工程的重要分支。需求工程旨在了解软件系统设计的真实意图,具体功用及限制条件。并精确定义上述因素与系统行为的关系及系统随时间和产品线变化而发生的各种演化。84什么是需求工程?需求工程是系统工程及软件工程的重要分支。1385什么是需求工程?需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。注意,和所有工程学科一样,需求工程并不是以零星偶发的、随机的或无计划的方式进行,而是代之以已证明方法的系统化应用。14什么是需求工程?需求工程是指应用已证实有效的技术、方法进85需求工程的重要意义对大多数人来说,若要建一幢20万美元的房子,他一定会与建房者详细讨论各种细节,他们都明白完工以后的修改会造成损失,以及变更细节的危害性。然而,涉及到软件开发,人们却变得“大大咧咧”起来。软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根”。 (Leffingwell1997)86需求工程的重要意义对大多数人来说,若要建一幢20万美元的房子需求工程的重要意义问题的严重性:对软件的依赖不断增加:汽车,手机,WebServices,……软件成本的比重加大:Boeing777软件项目失败带来巨大浪费:1997GAO报告-6年内烂尾软件项目耗资1470亿美元GeneralAccountingOffice(美国)总审计局87需求工程的重要意义问题的严重性:1688需求工程的重要意义问题的严重性:软件失败的严重后果:Ariane5:3.7亿美元的损失;17需求工程的重要意义问题的严重性:88需求工程的重要意义问题的成因:软件质量认证的高成本:Boeing777>40%的软件成本用于测试以修正软件缺陷为目的的软件重写:Motorola:曾将60%-80%的软件费用用于重写需求的频繁变化:CapersJones(1994)在报告中称扩展需求对百分之八十的管理信息系统项目和百分之七十的军事软件项目造成风险。89需求工程的重要意义问题的成因:18解决方案??没有“银弹”!NoSilverBullet!(Fred

Brooks,1987)软件的规模决定它的复杂性软件具有抽象性和不可视性软件没有规范的装配步骤,因此极易修改!“NoSilverBullet”的原文是:“没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。”在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。

90解决方案??没有“银弹”!NoSilverBullet91解决方案??然而,早期的建模和分析是非常重要的可以节省纠错成本:晚期修改可能会使成本高出200倍当然,仅仅有早期的建模和分析是不够的所有项目参加者均需了解系统需求所有风险承担者均需对需求达成共识需透彻了解系统运作的背景需透彻了解系统设计过程及其背景当需求发生演变时,要及时更新20解决方案??然而,早期的建模和分析是非常重要的91需求工程指南

(Roadmap:BasharNuseibeh&SteveEasterbrook,2000)如何获取需求信息?识别:风险承担者,目标,分析角度,系统边界,应用实例,……核心技术:

座谈,问卷,代表会议采用人种学(Ethnographic)方法(社交嵌入系统)采用原型法,或参与设计法(缺乏了解的系统)如何分析需求信息?概念建模92需求工程指南

(Roadmap:BasharNuseib需求工程指南

(Roadmap:BasharNuseibeh&SteveEasterbrook,2000)如何就需求达成共识?进行经验主义的模型验证当出现矛盾和分歧时,提供磋商的方法和手段如何表达需求?自然语言与形式化语言的合理搭配如何保持需求的现时性?需求发生变化时,及时更新产品线的维护93需求工程指南

(Roadmap:BasharNuseib需求工程的理论基础REFoundations系统理论什么是系统系统的控制和演化系统工程工程生命周期数学与逻辑一阶逻辑模态逻辑,时序逻辑,及其他非经典逻辑代数和关系模型计算机科学自动机理论抽象,分解,和面向对象软件体系结构和设计模式社会科学人类学与民族方法学组织行为学社会心理学政治学认知科学认知心理学语言学知识表示(人工智能)哲学经验主义和科学哲学现象学,认识论和本体符号语言学…

…94需求工程的理论基础REFoundations系统理论社95需求工程的领域划分软件需求工程划分为需求开发和需求管理24需求工程的领域划分软件需求工程划分为需求开发和需求管理9596需求工程的领域划分需求开发问题获取分析编写规格说明验证需求管理建立并维护在软件工程中同客户达成的契约25需求工程的领域划分需求开发9697需求开发需求开发活动包括以下几个方面:确定产品所期望的用户类。获取每个用户类的需求。了解实际用户任务和目标以及这些任务所支持的业务需求。分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息。26需求开发需求开发活动包括以下几个方面:9798需求开发需求开发活动包括以下几个方面:将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件。了解相关质量属性的重要性。商讨实施优先级的划分。将所收集的用户需求编写成规格说明和模型。评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都要弄清楚。27需求开发需求开发活动包括以下几个方面:9899需求管理通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体)。评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。以一种可控制的方式将需求变更融入到项目中。使当前的项目计划与需求一致。基于估计变更需求所产生影响的基础上,协商新的承诺(约定)。让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。在整个项目过程中跟踪需求状态及其变更情况。28需求管理通常的需求管理活动包括:99100需求管理需求管理活动29需求管理需求管理活动100101需求开发和需求管理之间的界限30需求开发和需求管理之间的界限101102本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点31本章内容工程与软件工程102SREEngineer

需求工程师103SREEngineer

需求工程师32RequirementsEngineer

需求工程师1.分析问题和解决问题的能力2.人际沟通及交流能力3.软件工程知识和技能4.应用领域有关知识5.书面语言组织和表达能力6.……104RequirementsEngineer需求工程师1.需求工程师做什么着手点是有待解决的“问题”出现例如:对系统现状不满;有新的商机出现;有可能节能、降耗、省时等。105需求工程师做什么着手点是有待解决的“问题”出现34需求工程师做什么需求工程师促进变化的发生,要完成以下工作:确定“问题”及“机会”要解决的问题是什么?(问题的界定)问题出在何处?(了解问题的领域及上下文)问题与谁相关?(确定干系人-Stakeholder)为什么解决该问题?(确定干系人的目标)软件系统如何促进问题的解决?(搜集情景实例)解决问题的期限?(确定开发活动的约束和限制)影响问题解决的因素有哪些?(确定可行性和风险)成为问题领域的专家拥有更多的机会和解决问题的方案106需求工程师做什么需求工程师促进变化的发生,要完成以下工作:3ACM/IEEE职业道德规范:PUBLIC–保护公众利益。CLIENTANDEMPLOYER–在保护公众利益的前提下,为客户及雇主的最高利益服务。PRODUCT–尽可能令你的产品符合行业的最高标准。JUDGEMENT–在进行职业判断时,保持正直及独立性。MANAGEMENT–对软件开发和维护的管理应遵循和提倡符合职业道德。PROFESSION–在符合公众利益的前提下,推进职业的正直性和声誉。COLLEAGUES–对同事要持公正和支持的态度。SELF–毕生坚持学习并在职业生涯中提倡职业道德。职业责任

(CodeofEthics)107ACM/IEEE职业道德规范:职业责任(Codeof职业责任

(CodeofEthics)与需求工程相关的职业规范:Competence–永不对你的工作能力说谎。Confidentiality–坚持为你的客户及合作者保密。Intellectualpropertyrights–保护他人的新观点及设计,即知识产权。DataProtection–在处理个人信息时注意遵守相关法令保护数据。108职业责任(CodeofEthics)与需求工程相关的需求工程过程、方法、技术符号表示(notation) 是一种表示策略、框架或语言。一阶逻辑,数据流图,UML技术(technique) 指出如何完成某项活动,以及如何用符号描述该项活动的产品。画用例图的技术方法(method) 给出关于如何完成系列活动的描述,重点是技术的集成和使用。CORE,SADT,SREM,JAD过程模型(Processmodel) 给出关于如何完成系列活动的抽象描述,重点是活动间的依赖关系和资源的使用情况。过程(Process) 是对过程模型的实际运行,描述一两个代理的行为及其对资源的管理。109需求工程过程、方法、技术符号表示(notation)3需求工程过程、方法、技术需求工程方法是如何嵌入需求工程过程的?每种方法均适用于某一类问题领域通常对他们的适用性的定义不够明确各种方法对需求工程活动的覆盖程度和侧重点有所不同 例如:覆盖的活动包括:需求获取,建模,分析等侧重点包括:目标,行为,视角等。110需求工程过程、方法、技术需求工程方法是如何嵌入需求工程过程的111需求工程师的素质要求

倾听的能力访问能力分析能力协调能力观察能力书写能力组织能力建模能力交际能力创新能力领域知识40需求工程师的素质要求倾听的能力组织能力111112本章内容工程与软件工程软件需求工程需求工程师需求工程vs.系统分析软件生命周期中的需求活动关于需求的基本观点41本章内容工程与软件工程112REvs.SystemsAnalysis

需求工程vs.系统分析113REvs.SystemsAnalysis

需求工需求工程vs.系统分析

REvs.SystemsAnalysis需求工程由系统分析发展而来系统分析关注企业内部的信息系统主要采用非形式化的需求描述,工具和方法,例如:DFD,E-R,OO,…80年代中期形成,90年代以来成为研究热点。多见于管理学院,工程学科,和计算机科学的本科生和研究生教学114需求工程vs.系统分析

REvs.SystemsAna需求工程vs.系统分析

REvs.SystemsAnalysis需求工程超出系统分析的范围涵盖整个形式化问题从“企业需求”到“精确描述”不仅限于信息系统实时系统嵌入系统交互系统基于组件的系统webservices相对较少关注企业管理问题和企业业务流程115需求工程vs.系统分析

REvs.SystemsAnaBut,whatisarequirement?每一个“人造物”都是一个内部环境与外部环境的“接口”。这里内部环境指人造物本身的设计组成。外部环境指人造物的周遭及其作用环境。对这个接口的描述即是需求。——HerbertSimon,1969需求,即是人们要解决的某个问题或达到某种目的的需要。是系统或其组成部分为满足某种书面规定(合同,标准,规范等)所要具备的能力。需求将作为系统开发,测试,验收,提交的依据。——IEEE610.12,1990116But,whatisarequirement?每一个将问题与解决方案分开理解问题

需求获取问题的形式化表示

形式规约,形式建模就问题性质达成共识

验证,冲突及矛盾消解,磋商 需求管理–维护双方的共识117将问题与解决方案分开理解问题46设计活动改变客观世界状态118设计活动改变客观世界状态47什么是需求?(Jackson,1995)领域性质(DomainProperty):无论系统存在与否均存在的应用领域的性质。需求(Requirements):由系统的存在而产生的应用领域性质。规约描述(Specification):描述系统为满足需求而应具有的行为。需求证明的标准(VerificationCriteria):1、运行在某台机器上的程序满足规约描述;2、针对给定的领域性质,规约描述满足需求。需求验证的标准(ValidationCriteria):1、是否已发现所有重要需求?2、是否已发现所有有关的领域性质?119什么是需求?(Jackson,1995)实例RequirementR需求:只有被授权者能够访问数据库。DomainPropertiesD领域性质:授权者持有密码。密码不会分享给未授权者。SpecificationS规约描述:用户输入密码后,将被准许访问数据库。S+DimplyR当领域模型出错时,会有什么后果120实例RequirementR需求:49需求:关于为什么?做什么?

不包括怎么做?(why,what,how)…需求描述必须给出为什么需要这样一个系统。——Ross,1977通常,需求描述系统要做什么,而不是怎么做。但是,二者不太容易区分,上一个抽象层次的“怎么做”经常在下一个抽象层次上转化为“做什么”。Jackson给出的稍为清楚的解释:“为什么”和“做什么”是指系统的设计目的,是置身系统外部,对应用领域性质的描述。“怎么做”是指系统的内部结构和行为。——Jackson,1995121需求:关于为什么?做什么?

不包括怎么做?(why,wha“描述”是需求工程的核心

(Jackson,1995)用非形式化的语言指出感兴趣的主题现象,并命名(designation)。例如:Parent(x,p):p是x的父母。Female(x):x是女性。术语的形式化定义(definition)和使用。例如:Mother(x,m)≡Parent(x,m)andFemale(m)Sister(x,y)≡Female(y)andmother(x,m)andmother(y,m)andfather(x,f)andfather(y,f)122“描述”是需求工程的核心

(Jackson,1995)用非“描述”是需求工程的核心

(Jackson,1995,p58-59)关于领域性质的无可驳的描述(refutabledescription)。无可驳性依赖于与主题现象的一致性。例如:对所有的m和x,Parent(x,m)蕴含not(parent(m,x))开发过程中的带有假设性质的概略描述(roughsketch)。例如:“人与人之间总是通过某种方式相互联系”“每个人实际上只能有一个家”123“描述”是需求工程的核心

(Jackson,1995,p存在问题的需求描述实例含糊的需求描述:“工资总额由上一条记录获得”“所有客户都具有同一控制域“错误的需求描述:“所有系统将九月作为财政年度的起始时间”不完整的需求描述:“出错信息显示在屏幕的第24行“矛盾或不一致的需求描述:“C=A+B”;“C=A-B”无法测试的需求:“系统应具有友好的界面“124存在问题的需求描述实例含糊的需求描述:53需求的层次软件需求包括三个不同的层次业务需求(businessrequirement)

反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求(userrequirement)

描述了用户使用产品必须要完成的任务,这在使用实例(usecase)文档或方案脚本(scenario)说明中予以说明。功能需求(functionalrequirement)(包括非功能需求)

定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。125需求的层次软件需求包括三个不同的层次54软件需求各组成部分之间的关系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论