软件工程-理论与实践(精装版)课件 4 软件需求分析基础、5获取软件需求_第1页
软件工程-理论与实践(精装版)课件 4 软件需求分析基础、5获取软件需求_第2页
软件工程-理论与实践(精装版)课件 4 软件需求分析基础、5获取软件需求_第3页
软件工程-理论与实践(精装版)课件 4 软件需求分析基础、5获取软件需求_第4页
软件工程-理论与实践(精装版)课件 4 软件需求分析基础、5获取软件需求_第5页
已阅读5页,还剩122页未读, 继续免费阅读

下载本文档

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

文档简介

软件需求分析基础内容软件需求和需求工程概念和类别、地位和作用任务、过程和方法学面向对象需求分析方法学思想、语言、步骤、策略需求工程的CASE工具需求工程的输出和评审输出制品、需求缺陷和需求评审软件需求变更及管理1.1软件开发的本质(1/2)领域相关技术相关融合需求和技术期望和要求解决方案软件利益相关方软件工程师软件产品软件工程师软件开发的本质(2/2)软件工程师用户要求软件系统开发软件系统的前提是要明确用户的期望和要求,即软件需求软件需求文档、模型、程序、数据软件工程过程、方法学和工具1.2软件系统的利益相关方何为利益相关方(stakeholder)从软件系统中受益或与软件系统相关的人、组织或者系统受益:使用、获益、盈利相关:发生操作和交互、存在关联性软件利益相关方的表现形式用户:最终使用软件的人客户:从中获取利益的组织系统:与待开发系统进行交互的系统开发者:负责开发软件系统的人软件案例:空巢老人看护系统软件密集型信息系统,通过软件将自主机器人、智能手机等设备相结合,对家中独居老人进行监护跟踪老人在家情况老人与远端的家属进行语音和视频交互发现和通告异常情况(如摔倒、突发疾病)将老人在家状况(如图像和视频)和异常信息传送到远端家属或医生的智能手机上通过语音进行呼叫和报警提醒老人按时服药和保健......移动互联网语音和视频交互监视视频和语音视频和语音数据示例:空巢老人看护软件的利益相关方用户老人家属医生客户投资方系统机器人移动互联网语音和视频交互监视视频和语音视频和语音数据软件需求及其利益相关方

用户客户其他系统开发者群体软件需求软件系统利益相关方利益相关方软件利益相关方会站在自身的角度对软件提出要求1.3何为软件需求(SoftwareRequirement)?从软件本身的角度,软件需求是指软件用于解决现实世界问题时所表现出的功能和性能等方面的要求从软件利益相关方的角度,软件需求是指软件系统的利益相关方对软件系统的功能和质量,以及软件运行环境、交付进度等方面提出的期望和要求软件需求刻画了软件系统能做什么(Whattodo),应表现出怎样的行为,需满足哪些方面的条件和约束等要求软件需求的类别软件功能性需求(Functional)能够完成的功能及在某些场景下可展现的外部可见行为或效果软件质量方面的需求(Quality)外部质量属性,外部可展现的,用户、客户等会非常关心,如运行性能、可靠性、易用性等内部质量属性,隐藏在内部的,软件开发工程师会非常关心,如可扩展性、可维护性、可理解性软件开发约束性需求(Constraint)开发成本、交付进度、技术选型、遵循标准等方面提出的要求示例:空巢老人看护软件的需求功能性需求自主跟随老人、获取老人图像和视频信息、检测老人是否摔倒等质量方面的需求始终保持在2米的安全距离,对机器人的控制在2秒内响应等约束性需求成本不能超出50万元,要求半年内交付使用等等这些需求都是谁提出来的?软件需求的特点(1/2)隐式性来自于利益相关方,它隐式存在很难辨别,甚至会遗漏掉隐晦性在利益相关方的潜意识之中,不易于表达出来,难以获取所表达的软件需求存在模糊性、歧义性、二义性多源性存在多个的利益相关方存在相冲突和不一致的软件需求软件需求的特点(2/2)易变性用户对软件的期望和要求也会经常性地发生变化在整个生命周期都会发生变化领域知识的相关性软件需求的内涵与软件所在领域的知识息息相关“12306”与铁路旅客服务领域相关价值不均性不同的软件需求对于客户或用户而言所体现的价值是不一样的主要和次要、核心和外围需求如何从利益相关者获取完整、清晰和一致软件需求是一项挑战!软件需求的质量要求(1/2)有价值(Valuable)基于计算机软件的解决方案,有效提高问题解决的效率和质量,促进相关领域的业务创新正确(Right)反映利益相关方的期望,不能曲解或误解他们的要求完整(Complete)不能有遗漏或丢失无二义(Unambiguous)软件需求的描述应该是清晰和准确的软件需求的质量要求(2/2)可行(Feasible)在技术、经济等方面应该是可行的一致(Consistent)不应存在冲突可追踪(Traceable)可追踪到其源头可验证(Verifiable)可找到某种方式来检验软件需求是否在软件系统中得到实现软件需求的重要性软件的价值所在软件开发的基础和前提软件验收的标准和依据16软件需求

软件开发软件产品开发依据验收标准价值所在软件利益相关方思考和讨论如果软件需求存在以下问题会给软件开发带来什么样的挑战,产生怎样的后果?提不出有价值的软件需求不清晰的软件需求:没有说清楚不完整的软件需求:漏掉了重要的软件需求不一致的软件需求:对同一个需求项有不同的表述1.4何为需求工程?用工程的理念和方法来指导软件需求实践,它提供了一系列的过程、策略、方法学和工具,帮助需求工程师加强对业务或领域问题及其环境的理解,获取和分析软件需求,指导软件需求的文档化和评审,以尽可能获得准确、一致和完整的软件需求,产生软件需求的相关软件制品需求工程的一般性过程需求工程的特点知识密集型工作,需要交叉多学科的知识“12306”软件系统就需要充分掌握铁路旅行服务的相关知识,包括火车调度、车次安排、票务服务等等多方共同参与软件需求的获得需要多方人员的共同参与,包括不同类别的用户、客户、领域和业务专家、各类开发者、质量保证人员等等需求获取的多种形式和源头获取、构思、创作等,要采用多种形式和手段持续迭代和逐步推进贯穿于软件整个生命周期,如“12306”APP软件需求工程的方法学(1/3)-抽象如何理解和抽象软件需求?软件需求本质是什么?应采用什么样的抽象来刻画软件需求?20世纪70年代结构化数据和数据流抽象功能表现为数据处理,要理解软件功能需求,就要知道软件具有哪些数据以及要对这些数据进行什么样处理提出了一组抽象来表征软件的功能性需求,包括数据流、数据字典、数据加工或处理、数据源等,设计了数据流图建模语言20世纪90年代面向对象抽象软件功能表现为系统中的对象所展示的行为,要理解软件功能需求,就要知道软件有哪些对象、有什么样行为、交互和协作设计面向对象建模语言UML,产生了面向对象需求分析方法学需求工程的方法学(2/3)-建模如何刻画和建立软件需求模型?清晰地表达软件需求,目的是理解和交流采用自然语言或结构化自然语言存在描述不直观、二义性和模糊性等问题图形化的需求建模语言直观、易于理解数据流图、UML图需求工程的方法学(3/3)-分析如何精化和分析软件需求?循序渐进地获得软件需求细节,进而逐步得到详细的软件需求提供策略和手段指导一步步地精化和分析软件需求建立准确和一致的软件需求模型防止漏掉重要的软件需求发现并解决其中的问题和存在的缺陷,以保证软件需求的质量软件需求工程师负责需求工程的各项工作与用户和客户的沟通、导出和构思软件需求、协商需求问题或解决冲突、建立软件需求模型、撰写软件需求文档等须具备多方面知识、技能和素质,应既是专才,也是通才软件工程、需求工程、业务领域的知识,如“12306”软件组织、沟通和协调与软件的客户、用户,开展讨论、交流和评审语言表达清晰地表达需求,准确地刻画内涵,直观地建立模型创新能力内容软件需求和需求工程概念和类别、地位和作用任务、过程和方法学面向对象需求分析方法学思想、语言、步骤、策略需求工程的CASE工具需求工程的输出和评审输出制品、需求缺陷和需求评审软件需求变更及管理2.1基本思想(1/2)现实世界(应用问题)还是计算机世界(软件系统),它们都是由多样化的对象所构成的,每个对象都有其状态并可提供功能和服务,不同对象之间通过交互来开展协作来实现功能和提供服务示例:“空巢老人看护软件”机器人就是一个对象,它可处于不同的状态(如空闲、运行、故障等),并可提供诸如获取视频和图像信息、播放语音、向前运动、先后运动等一系列的功能基本思想(2/2)面向对象软件工程提供对象、类、属性、操作、消息、继承等概念来抽象表示现实世界的应用,分析其软件需求特征,建立起软件需求模型,描述软件需求基于类、包、关联等概念来分析应用系统的构成借助类的方法等概念来描述对象所具有的行为利用对象间的消息传递等概念来分析多个不同对象如何通过协作来实现应用功能的。面向对象需求分析方法学还提供了可视化的建模语言,帮助需求工程师建立多视点的软件需求模型如用例模型、交互模型、分析类模型等等2.2面向对象的核心概念对象(Object)类(Class)继承(Inheritance)多态(Polymorphism)覆盖(Override)重载(Overload)消息(Message)聚合(Aggregation)和组合(Composition)对象(Object)个体或者事物抽象表示现实世界和计算机世界应用领域对象、软件实体对象的属性和操作属性(Attribute):对象的性质,其值定义了对象状态操作(Operation):也称方法,对象行为,表示对象提供的服务示例用对象表示应用领域的一个事物(如NAO机器人),也可以用它来表示在计算机软件中的某个运行元素或单元(如运行实例)对象是具体、有意义的、存在的实体类(Class)类是对一组具有相同特征对象的抽象分类、组织机制,将具有相同特征的对象组织为一类封装了属性和操作对象与类的关系对象是类的实例,类是创建对象的模板类是静态的抽象;对象是动态、可运行的实体老师老师:张义学生学生:王宏博消息(Message)消息传递是实现对象间通讯和协作的基本手段一个对象向另一个对象发送消息来请求其服务消息描述接收对象名、操作名和参数:received-obj.msg-name(para.)消息类型同步消息:请求者需要等待响应者的处理结果异步消息:请求者发出消息后继续工作,无需等待学生:王宏博课程注册中心registerCourse(course-name)继承(Inheritance)表示类与类间的一般与特殊关系模拟现实世界类之间的遗传关系子(特殊)类可共享父(一般)类的属性和操作刻画类间的内在联系以及对属性和操作的共享子类也可以有自己的独特属性和操作借助继承可形成系统的层次化类结构示例:课程、公共课、专业课单重继承和多重继承多重继承子类拥有多个父类单重继承多态(Polymorphism)操作的外部接口定义形式相同,但是内部实现方式不一样同一个操作作用于不同对象上可有不同解释,并产生不同结果课程、公共课、专业课三个类的“计费”操作实现不同多态的执行方式从具体子类开始,沿继承结构向上找,直至发现为止getCharge()getCharge()getCharge()覆盖(Override)子类增加或重新定义所继承的属性或方法,从而用新定义的属性和方法来覆盖所继承的、来自父类中的属性或方法publicclassA{

Stringname;

publicStringgetValue(){return“Valueis:”+name;}

}publicclassBextendsA{Stringaddress;publicStringgetValue(){return“Valueis:”+address;}}子类B重新定义所继承的方法getValue重载(Overload)一个类中有多个同名操作,但它们在操作数或操作数类型上有区别,系统根据实参引用不同方法PublicclassA{intage;Stringname;publicvoidsetValue(intagePara){age=agePara;}

publicvoidsetValue(StringnamePara){name=namePara;}}聚合(Aggregation)和组合(Composition)共性均描述整体-部分关系,部分类对象是整体类对象的组成部分差别聚合:部分类对象可以是多个整体类对象的组成部分,即部分类对象可以为多个整体类对象所共享组合:部分类对象只能位于某个整体类对象之中,一旦整体类对象消亡,其中部分类对象也无法生存。从设计和实现的角度上看,整体类必须具备完整的管理部分类生命周期的职责。示例聚合关系:老师与大学,老师可以兼职组合关系:校长与大学,校长不可兼职思考和讨论如何基于面向对象的概念来抽象和描述软件需求?对象、类、消息传递等它们能够描述所有形式的软件需求吗?质量需求、软件开发约束需求讨论基于图的模型表示及优势表示方法形式的符号化表示<N,E>自然语言的表示图表示特点和优势直观,一目了然可以从不同方面来描述,体现多视点抽象,便于发现问题2.3面向对象建模语言概念基于面向对象的概念和抽象,提供图形化的图符,用来表示软件系统的一种语言目的用于建模:绘制和描述软件系统模型(分析模型和设计模型)支持交流:便于开发人员之间的交流、沟通和讨论组成语法:图形化的符号表示语义:形式或半形式的语义语用:如何使用语言来建立模型、提供策略和原则示例:面向对象建模语言的使用顺序图:表示对象之间的消息传递和相互协作面向对象建模语言的发展历程1980s末-1990s初出现大量面向对象建模语言数量几十种之多代表性:Booch方法、OMT方法和OOSE方法各有千秋,却又有很多类似之处,往往让使用者无所适从UML的初衷需要吸收不同建模语言的优点寻求一种概念清晰、表达能力丰富、适用范围广泛的面向对象的建模语言UML:UnifiedModelingLanguageUnified(统一)提取不同方法中最好建模技术,如OMT(JamesRumbaugh),Boochmethod(GradyBooch

)和OOSE(IvarJacobson)采用统一、标准化的表示方式Modeling(建模)对现实系统和软件系统进行可视化建模建立系统模型Language(语言)图形化语言:语法、语义和语用包括规则,约束扩展机制OMG组织致力于对象技术标准化工作UML用途用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种产品支持不同人员之间的交流(Communication)VisualizingConstructingDocumentingBusinessModelingSpecifyingCommunications多视点建模(1/2)结构视点(StructuralView)用于描述系统的构成UML提供了包图(PackageDiagram)、类图(ClassDiagram)、对象图(ObjectDiagram)和构件图(ComponentDiagram),从不同的抽象层次来表示系统的静态组织及结构行为视点(BehavioralView)刻画系统的行为UML提供了交互图(InteractionDiagram)、状态图(StatechartDiagram)与活动图(ActivityDiagram),以从不同侧面刻画系统的动态行为。多视点建模(2/2)部署视点(DeploymentView)刻画目标软件系统的软件制品及其运行环境UML提供了部署图(DeploymentDiagram)来描述软件系统的部署模型用例视点(UseCaseView)刻画系统的功能UML提供了用例图(UseCaseDiagram)以描述系统的用例及其与外部执行者之间的关系。UML的视点及图视点图(diagram)说明结构

包图(packagediagram)从包层面描述系统的静态结构类图(classdiagram)从类层面描述系统的静态结构对象图(objectdiagram)从对象层面描述系统的静态结构构件图(componentdiagram)描述系统中构件及其依赖关系行为

状态图(statechartdiagram)描述状态的变迁活动图(activitydiagram)描述系统活动的实施通信图(communicationdiagram)描述对象间的消息传递与协作顺序图(sequencediagram)描述对象间的消息传递与协作部署部署图(deploymentdiagram)描述系统中工件在物理运行环境中的部署情况用例用例图(usecasediagram)从外部用户角度描述系统功能2.4面向对象需求分析步骤明确问题边界,获取软件需求,建立用例模型理解系统边界,识别系统利益相关方,导出或构思软件需求,绘制出软件用例图,建立软件用例模型开展用例分析,精化软件需求,建立分析模型分析用例,从而精化软件需求,建立起用例的交互模型,并依此导出系统的分析类图汇总需求模型,撰写需求文档,评审软件需求汇总不同视点、不同抽象层次的需求模型,撰写软件需求文档,对软件需求模型和文档进行评审,以确保它们的质量面向对象需求分析方法的优势和特色自然建模面向对象提供了一系列更加贴近现实世界(而非计算机世界)的概念和抽象来描述软件需求统一的概念和抽象提供统一的概念和抽象,方便用户和软件开发人员用同一个概念模型来理解问题、分析问题和解决问题无需采用模型转换的方式,而是采用不断精化模型的方法来开展软件开发,从而简化软件开发的复杂度需求工程的CASE工具需求文档撰写工具,如借助于MicrosoftOffice、WPS需求建模工具,如利用MicrosoftVisio、RationalRose、StarUML软件原型开发工具,如Mockplus、AxureRPPro、UIDesigner需求分析和管理专用工具,如IBMRationalRequisitePro配置管理工具和平台,如Git、Github、Gitlab、PVCS、MicrosoftSourceSafe等内容软件需求和需求工程概念和类别、地位和作用任务、过程和方法学面向对象需求分析方法学思想、语言、步骤、策略需求工程的CASE工具需求工程的输出和评审输出制品、需求缺陷和需求评审软件需求变更及管理3.1需求工程的输出软件需求制品软件需求模型抽象和直观地表示软件需求软件需求文档完整和详尽地记录软件需求软件原型直观地展示软件需求软件需求文档的内容系统和文档概述软件功能性需求软件质量方面的需求软件开发的约束性需求软件需求的优先级3.2软件需求缺陷需求缺失,即漏掉了一些重要的软件需求需求描述不正确,对软件需求的理解存在偏差需求描述不准确,软件需求的表述与用户的要求不一致软件需求有冲突、不一致软件需求不可行,存在可行性问题软件需求不详尽,没有提供足够详细的信息软件需求确认和验证软件需求确认站在用户和客户的角度,确保软件需求的正确性,通常采用需求评审(Review)、原型确认等方式。例如,12306App软件的开发者可邀请一些旅客,作为软件的用户代表,评审12306App软件的需求文档以及所开发的软件原型,逐条确认各项软件需求的合法性和正确性基于原型的确认是一种常用且有效的方式软件需求验证判断软件需求文档和模型是否准确地刻画了用户和客户的要求,后续的软件设计制品、程序代码等是否正确地实现了软件需求软件需求变更管理软件需求的变更管理多变性和易变性引起的,明确哪些方面的需求发生了变化、反应在软件需求模型和文档的哪些部分、导致软件需求模型和文档的版本发生了什么样变化等软件需求的追溯管理开展溯源追踪,掌握清楚是谁提出需求变更、为什么要进行变更等内容,以判别需求变更的合法性;评估需求变更的影响域,基于对需求变更的理解,分析需求变更会对哪些软件制品会产生什么样的影响;评估需求变更对软件项目开发带来的影响软件需求的配置管理形成软件需求基线小结软件需求来自于软件利益相关者,表现为多种形式,具有多变易变特点需求工程基于工程的手段来支持需求的获取、分析、建模和文档化面向对象需求分析方法学基本思想:系统中的对象及其展现的功能、行为和协作基本概念:对象、类、消息传递等建模语言:UML、视角、图需求输出,模型、文档和原型综合实践一任务:标注代码方法在软件开发环境(如Eclipse)中标注代码,也可借助CodePedia等软件工具来标注代码要求对类、方法、语句块和语句等多个层次代码标注;注释要简洁和正确,确保质量;标注的代码量要有一定规模,建议在1000-4000行结果:具有标注的开源软件代码及其文件。综合实践二任务:初步构思基于软件的问题解决方案方法针对行业或领域问题来构思软件解决方案,开发团队共同参与构思,也可邀请其他人员一起讨论;要集思广益,精益求精,不断完善和优化方案,以突出方案的有效性和新颖性要求根据对行业或领域问题的分析,构思软件解决方案,确保解决方案有新意,并需讨论其可行性结果撰写软件需求构思文档,重点阐述欲解决的问题是什么,如何基于软件来解决问题,软件的主要职责和关键需求有哪些等问题和讨论获取软件需求内容获取软件需求的方法软件需求的方式和过程明确问题及软件解决方案Problem

SoftwareSolution导出和构思软件需求如何从利益相关方导出和构思软件需求描述初步的软件需求自然语言描述和可视化建模确认和验证初步软件需求1.1何为获取软件需求?软件需求不会无缘无故的产生,也不应是无源之水、无本之木,任何软件需求都有其出处以及动机,即它从何而来、目的是什么获取软件需求是指得到或产生软件需求获取软件需求是需求分析的基础,是软件开发的首要工作软件需求从何而来?软件开发的动机解决特定行业和领域的问题,体现意义和价值“MiNote”是为了帮助用户编写和管理便签;“12306”是为了帮助旅客解决购买火车票费时费力的问题;“ElderCarer”是为了解决空巢老人在家无人看护的问题。软件利益相关方的诉求软件系统的受益者,软件需求的提出者利益相关方有哪些,他们会对软件提出什么样的期望和要求“12306”的利益相关者是旅客,服务于旅客的期望和要求软件开发者也可以充当软件的利益相关方许多软件系统的需求来自软件工程师,而非最终的用户微信、12306等等他们充当软件的用户或客户,构思和提出软件需求原因是找不到实际的用户来提出需求开源软件的许多需求来自软件开发者,而非最终用户提出软件的功能性构思Issues1.2获取软件需求的方式软件需求用户和客户软件开发者其他软件系统互联网大众导出构思和创作重用构思和创作已有的系统分解思考和讨论微信和“12306”软件的需求从何而来?飞机控制软件系统的需求从何而来?获取软件需求的困难需求想不清、道不明Who,谁会关心该项软件需求,他们有何特点和诉求What,软件需求的内涵是什么Why,为什么需要软件需求,想解决什么样的问题Where,软件需求归属于哪些子系统How,软件需求包含哪些行为,它们是如何来解决问题的When,什么时候需要该项软件需求1.3获取软件需求方法访谈和会议调查问卷现场观摩分析业务资料软件原型群体化方法访谈和会议召开相关的会议走访相关的人员参加的人员包括:用户、客户、需求分析人员、质量保证人员等等调查问卷设计调查问卷了解业务流程、实际操作过程用户的期望和要求对谁进行调查应用领域中扮演不同角色的用户如何利用调查问卷从调查问卷中了解业务流程从调查问卷中掌握用户需求获现场观摩业务过程、步骤和输出业务工作流程及细节

分析业务资料收集重要的资料阅读和分析与业务相关的文档和资料软件原型需求工程师根据用户初步需求描述,快速构造出一个可运行的软件原型展示业务操作流程以及每一个步骤用户与软件之间的交互用户可以通过操作和使用该软件,分析需求工程师是否正确地理解了他们所提出的软件需求,发现软件原型所展示的软件需求中存在的问题,导出尚未发现、新的软件需求软件原型作为需求工程师和用户之间的交流媒介,有助于直观地展示软件需求,激发用户投入到需求讨论和导出之中,因而是一项极为有效的需求获取和分析方法示例:软件原型“空巢老人看护软件”的原型群体化方法让互联网上的海量和开放群体参与到获取软件需求的工作中来,提出他们对软件需求的想法,并通过组织、汇聚和筛选,从中遴选出有价值的软件需求集思广益,吸纳更多的人参与到需求创作和构思之中,有助于获得超出开发团队和用户常规想定的软件需求成立需求分析的联合工作小组小组成员利益相关者(如用户)软件需求分析人员质量保证人员等目的共同工作加强联系促进交流增进合作1.4获取软件需求的过程内容获取软件需求的方法软件需求的方式和过程明确问题及软件解决方案Problem

SoftwareSolution导出和构思软件需求如何从利益相关方导出和构思软件需求描述初步的软件需求自然语言描述和可视化建模确认和验证初步软件需求2.1软件的目的每一个软件都试图去解决特定领域中的问题,并提供基于软件的问题解决方案软件需求必须服从和服务于软件欲解决的问题,只有这样软件需求才有意义和价值明确软件要解决的问题清晰地界定软件欲解决什么样的问题与特定领域及其业务相关联或提高业务工作效率,或解决业务瓶颈问题,或提升业务服务水平和质量等等示例“12306”软件与铁路旅客服务这一领域及业务相关联,国家铁路集团有限公司投资研制该软件的目的是要改变落后的旅客服务和业务模式,提高旅客服务质量,降低旅客服务成本定义软件欲解决问题开展调研分析,切忌拍脑袋凭空想问题铁路旅客存在买票难的问题不断反复论证,寻找适合软件解决的问题通过软件来支持旅客在线上买票寻求有意义、有价值的软件问题买票、退票、打印等等明确基于软件的问题解决方案软件可以起到什么作用完成各种复杂计算,作为一种粘合剂来连接不同的设备和系统,实现不同设备和系统之间的交互和协同,从而来解决问题发挥软件的优势,为问题解决提供新颖和有效的途径思考和讨论微信解决了什么问题?微信如何借助软件来解决问题的?内容获取软件需求的方法软件需求的方式和过程明确问题及软件解决方案Problem

SoftwareSolution导出和构思软件需求如何从利益相关方导出和构思软件需求描述初步的软件需求自然语言描述和可视化建模确认和验证初步软件需求3.1识别软件的利益相关方软件需求来自于软件的利益相关方,要获取软件需求,首先要搞清楚软件系统有哪些利益相关方软件系统的利益相关方可以表现为特定的人群和组织,也可以是一类系统不仅软件用户或客户可以是软件的利益相关方,软件的开发者也可以成为软件的利益相关方。示例:“空巢老人看护软件”的利益相关方老人(Elder)与系统通过语音方式进行交互,命令系统为其完成某些事务医生(Doctor)突发或紧急情景时接受呼叫,与系统进行交互以获取老人状况家属(FamilyMember)突发或紧急情景时接受呼叫,与系统进行交互以获取老人的状况管理员(Administrator)对软件系统进行必要的配置和管理机器人(Robot)其运动受软件系统的控制3.2导出软件的功能性需求需求工程师可以通过与利益相关方的交互,听取他们对软件的期望和要求,从他们那里导出软件需求采用多种方法来导出软件需求包括与用户或客户的面谈、分析业务资料、观察业务流程、进行问卷调查、软件原型等。构思软件的功能性需求需求工程师需要充当软件利益相关方的角色,站在他们的视角,来构思软件需求针对软件需求开展创作,结合软件解决方案,提出可有效促进问题解决的软件需求需求工程师可以采用大脑风暴构思、群体化方法、问卷调查、软件原型等多种方式来开展需求构思工作。有创意软件的特点创意来自于欲解决的新颖问题(Needs)创意来自于解决问题的独特方式(Approach)创意来自于给用户带来的好处(Benefits)创意来自于你强于对手(Competitors)©CopyrightXinjunMao90创意的潜在技术和应用领域移动互联网机器人无人系统物联网可穿戴设备大数据分析……91潜在的技术和方法潜在的应用和需求软件作为载体和手段示例:软件创意Instagram:照片和视频共享、在线服务软件创始人:KevinSystromandMikeKrieger最多只有13个雇员

,5个软件工程师成立于2010年10月2012年被Facebook收购收购价格为10亿美元92

示例:构思“空巢老人看护软件”功能性需求老人的视角自主跟随老人,以对老人进行持续跟踪和感知,获取老人信息。提醒服务,提醒老人按时服药、身体检查等事宜家属和医生监视老人状况,通过智能手机在远端监视老人在家的状况,获得老人的视频、图像和语音等方面的信息通知异常情况,将老人的突发异常信息发送给老人家属和医生。远程控制机器人,通过智能手机在远端来控制机器人移动,以从不同的角度和距离来获取老人的图像、视频和语音信息视频/语音双向交互,实现老人、医生和家属间的视频和语音交互3.3导出和构思软件的非功能性需求非功能性需求包括软件质量要求和软件开发的约束性要求质量要求,如软件运行性能、可靠性、易用性、安全性、私密性等属于外部质量要求,软件可扩展性、可维护性、可互操作性、可移植性等内部要求约束性要求,包括开发进度要求、成本要求、技术选型等软件的非功能性需求变得越来越重要在某些情况下它们直接决定了软件是否能用和可用、是否好用和易用、是否高效和可靠运行、是否便于维护和演化等。示例:“空巢老人看护软件”的非功能需求类别非功能性需求项需求描述性能EC-Req-Performance-01所有界面操作的响应时间应小于1s可靠性EC-Req-Reliability-01软件系统每周7天、每天24小时可用;在机器人和网络无故障的前提下,系统正常运行时间的比例在95%以上EC-Req-Reliability-02系统任何故障都不应导致用户已提交数据的丢失。发生故障后,系统需在10分钟内恢复正常使用易用性EC-Req-EasyUse-01老人只需通过语音方式与系统进行交互;家属、医生和管理人员通过操作手机App来使用本系统EC-Req-EasyUse-02用户无需专门培训只需通读安装手册即可完成安装安全性认证需求EC-Req-Safety-Authentication-01所有用户(包括家属和医生)均需通过用户名、密码相结合的方式经系统验证通过后方可使用本软件系统权限控制需求EC-Req-Safety-Authorization-001医护人员只能在老人处于紧急状况、需要求助时可控制机器人查看老人的状况,家属可以在任何时候查看老人的所有信息运行环境约束客户端EC-Req-Env-Client-001客户端APP运行在Android4.4及以上版本服务器端EC-Req-Env-Server-001服务器端的软件运行在Ubuntu14.04及以上版本;本软件运行时占用的内存空间不得超过128MB借助互联网大众来构思软件需求“三人行必有我师焉,三个臭皮匠顶上一个诸葛亮”利用开源社区中的开发者大众来推动需求构思,获得多样化和有新意的软件需求合法的软件需求并非软件利益相关方提出的每项期望和要求都是软件需求如果他们提出的要求与软件及其欲解决的问题无关、没有实际的意义和价值、或者不存在技术等方面的可行性,那么这些要求不应成为软件需求软件需求工程师要有一双“火眼睛”,能够鉴别和发现真正有意义和有价值的重要软件需求课程实践创意示例1:无人值守图书馆问题找寻图书困难创意线上借阅线下机器人获取自动找寻©CopyrightXinjunMao98线上基于智能终端的借阅线下基于机器人的服务课程实践创意示例2:多无人机联合搜寻软件系统问题快速定位被埋人员创意借助手机定位采用无人机编队搜索自动生成位置内容获取软件需求的方法软件需求的方式和过程明确问题及软件解决方案Problem

SoftwareSolution导出和构思软件需求如何从利益相关方导出和构思软件需求描述初步的软件需求自然语言描述和可视化建模确认和验证初步软件需求4.1描述初步软件需求初步的软件需求之所以称之为是初步的,是因为这些软件需求还很粗略,只是一个初步的需求轮廓,不够具体和详尽,可能有遗漏,会存在不一致和相冲突等问题,后续还需要对其开展进一步的精化和分析描述需求记录下来、描述清楚,形成相关的软件文档,以便于不同人员(如需求工程师、用户、客户等)之间的交流和讨论,及时发现需求理解上存在的偏差,支持后续的需求分析工作(1)自然语言描述自然语言是最为常用的需求描述手段描述软件的功能性需求、质量需求和开发约束需求等详细刻画需求的具体内容和细节可为各方所理解,便于交流和讨论示例:用自然语言描述的软件需求功能性需求描述软件系统需要对老人在家的状况进行分析,以判断是否出现突发异常情况。一旦出现异常情况,就需要通知老人家属和医生质量需求描述老人通过语音方式与系统进行交互,系统正确理解老人语音指令的比率应达到90%以上软件开发约束需求描述客户端App软件须运行在Android4.4及以上版本的操作系统自然语言描述的不足不具体如老人的信息是指什么,上述自然语言描述没有刻画清楚不准确何为突发异常情况,上述自然语言描述没有定义明确有二义不同的人看完描述后可能会有不同的理解不直观很难从中厘清软件系统到底有哪些功能性需求和非功能性需求,这些需求之间存在什么样的关系。(2)软件原型描述优势直观、可展示和可操作有助于需求工程师与用户或客户之间的交流和沟通,便于在操作和使用软件原型的过程中帮助用户和客户确认和导出软件需求不足在于主要以操作界面的形式展示软件需求的梗概,主要是软件与用户之间的输入和输出,业务的大致流程,无法描述软件需求的具体细节(3)用例图描述用途描述软件系统的边界以及软件外部使用者所观察到的系统功能“观察到”是指外部使用者与系统存在交互,即信息输入和输出图的构成执行者(Actor):系统的外部使用者用例(UseCase):观察到的功能和交互边:执行者与用例间、用例之间、执行者之间的关系执行者(Actor)何为执行者系统之外的实体,他们使用软件系统功能、与软件系统交换信息可以是一类用户,也可以是其他软件系统或物理设备执行者是UML中的类代表一类用户或者外部实体,而非具体的对象实例ActorName示例:“空巢老人看护软件”的执行者老人医生家属机器人管理员…执行者通常对应于软件系统的利益相关方用例(UseCase)用例表示执行者为达成一项相对独立、完整的业务目标而要求软件系统完成的功能用例的表现形式表现为执行者与系统之间的业务交互动作的序列对于执行者而言,交互目的或者效果在于达成其业务目标对于待开发系统而言,交互的过程即是某项相对独立、完整的外部可见功能的实现过程UseCase示例:用例“家属”执行者所看到的用例监控老人状况远程控制机器人监控老人状况远程控制机器人家属执行者与用例间的关系执行者与用例间关系的内涵执行者与用例之间存在交互执行者触发用例执行,向用例提供信息或从用例获取信息触发用例执行的执行者称为主动执行者,仅从用例获取信息的执行者称为被动执行者执行者与用例间的边通常为无向边监控老人状况远程控制机器人家属4.2用例间的关系包含(Include)扩展(Extend)继承(Inherit)AB《include》《extend》《inherit》(1)用例间的关系-包含关系如果用例B是用例A的某项子功能,则称用例A包含用例B包含关系用于提取多个用例中的公共子功能,以避免重复和冗余体现了功能分解和组织的思想监视老人状况自主跟随老人《include》(2)用例间的关系-扩展关系如果用例A与B相似,但A的功能较B多,A的动作序列是在B的动作序列中的某些执行点上插入附加动作序列而构成的,则称用例A扩展用例B用来区隔正常业务处理功能和带有例外处理的功能避免例外处理逻辑搅乱或湮灭正常处理逻辑体现了功能增强CreateCoursePlanforQianClassCreateCoursePlan《extend》包含和扩展有何本质性的区别?(3)用例间的关系-继承如果A与B相似,但A的动作序

温馨提示

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

评论

0/150

提交评论