您好,欢迎访问三七文档
西安交通大学刘海岩1第2章需求工程领域分析需求获取需求分析与建模需求规约与验证需求管理西安交通大学刘海岩22.1领域分析1、领域分析的概念软件工程要处理两类工程:(1)面向用户的业务过程工程(2)面向市场的产品工程(见下图)领域(domain),就是指解决问题的范围,从最高层的角度(业务域)描述系统。系统分析可以发生在许多不同的抽象层次:在业务或企业级层次,可定义描述模拟整个业务的功能、结构和行为的模型;在应用层次,建模着重于特定的用户需求。西安交通大学刘海岩3企业业务域业务域信息系统过程需求信息战略计划(全局视图)业务域分析(领域视图)系统分析与设计建模构造与集成业务过程工程层次西安交通大学刘海岩4完整产品软件能力功能过程需求产品需求(全局视图)构件工程(领域视图)分析与设计建模构造与集成产品工程层次数据行为硬件西安交通大学刘海岩5Firesmith对软件领域分析的定义是:领域分析指特定应用领域中公共需求的标识、分析和规约,即发现或创建那些可广泛应用的对象,其目的使它们在应用域中多个项目间能被复用。领域分析的角色是设计和建造可复用构件(类似于制造环境中工具制造者的角色),它们被很多相似但不一定是相同的应用开发的人所使用。Lethbridge的定义是:领域分析是软件工程师了解背景信息的过程。为了理解问题并在需求分析和软件工程过程的其他阶段作出合理的决策,软件工程师必须了解使用该类软件的一般性商业和技术领域中足够的信息。西安交通大学刘海岩62、领域分析过程的活动(1)定义被调查的领域中感兴趣的项从业务域、系统类型或产品范畴中分离出感兴趣的“项”。感兴趣的项包括:现存的应用软件的规约、设计和代码,支持软件(如GUI或数据库访问构件)以及和领域相关的构件库以及测试案例。(2)对从领域中抽取出来的项进行分类并建立分类层次。西安交通大学刘海岩7(3)收集领域中应用系统的代表性样本。(4)分析样本中的每个应用•标识候选的每个可复用对象。•指明对象被标识为可复用的理由。•定义对象的适应性。•估算在领域中复用这些对象的应用的百分率。•使用配置管理技术控制这些对象。(5)为对象开发分析模型。西安交通大学刘海岩83、领域分析的价值领域分析除了为软件复用奠定基础外,还为较低抽象层次的一般的系统分析带来如下好处:•快速开发。有助于集中精力关注最重要的问题,更有效地与相关人员进行交流,可以更快的确定需求。•优化系统。了解领域的细节有助于保证所采纳的解决方案更有效地解决用户的问题。会少犯错误,知道应该遵循那些规程和标准。领域分析给出一个应用领域的总体视图,会引导出更好的抽象从而改进设计。•有了领域知识,就可以洞察新兴趋势及进一步开发的机会,有助于创建适应性更强的系统。•了解通用性和特殊性,有助于创建出具有更好的可重用性和更宽的销售市场的软件。西安交通大学刘海岩9专家提出,没有坚实的领域分析,任何重大的软件项目都不应该进行。对应用领域的深入理解能极大的提高成功的几率。许多非常成功的软件产品的开发人员以前都在业务领域工作过-段时间,对实际需要有着深切的感受。一旦对领域有了真正的理解,就可进行某一个项目(或产品)的需求分析,包括定义待解决的问题以及开发什么软件来解决它。然而,领域分析永远也不应该结束:开发人员有责任在开发过程中不断增进他们的理解,后续版本的系统扩充通常需要对子领域进行进一步的领域分析。西安交通大学刘海岩102.2需求获取1、需求(requirements)的概念(1)需求的定义Jones定义为用户所需要的软件必须达到的目标和能力。Lethbridge定义为需求是关于系统将要完成什么工作的一段描述,它们必须经过所有相关人员的认可,其目的是彻底的解决用户的问题。•需求是一段…描述:意思是每个需求是相对短小简明的一段信息,表现为一个事实。它可以是一段话或用各种图表示。一组需求的集合成为需求文档。•…关于系统将要完成什么工作…:需求描述了系统应当完成的任务,不描述系统将如何实现。•…必须经过所有相关人员的认可…:意指需求必须经过评审,才能成为正式的需求。•…其目的是彻底的解决用户的问题。有助于解决用户的问题,该需求才有存在的价值。西安交通大学刘海岩11业务需求项目范围文档用户需求用例文档功能需求质量属性其他非功能需求设计约束需求规约非功能需求系统需求需求组成的全景图(2)需求的组成对系统、产品高层次的目标要求。用户使用产品必须要完成的任务西安交通大学刘海岩12其中:•业务需求:反映组织机构和客户对系统、产品高层次的目标要求。•用户需求:从用户使用的角度给出需求的描述。如一个小型超市需要一个商品的查询系统。业务需求:进货人员需要查询商品库存以便保证及时进货;收款员需要查询商品的销售价格以便结账;经理需要查询商品的销售及盈利情况。用户需求:这三类用户怎样去查询系统,查询哪些信息,还需要哪些操作。西安交通大学刘海岩13•系统需求:从系统或技术的角度描述为实现业务需求和用户需求而提供的服务以及所受到的约束。•功能性需求:描述系统应该做什么,即为用户和其它系统完成的功能。•非功能性需求:产品必须具备的属性或品质。•设计约束:设计与实现必须遵循的标准、约束条件。如运行平台、协议、选择的技术、编程语言和工具等。(3)需求的描述•自然语言、结构化语言、PDL•图形化表示(使用RationalRose、MicrosoftVisio、EnterpriseArchitect等工具)•数学描述(形式化语言描述)西安交通大学刘海岩142、需求工程过程需求工程是一个包括创建和维持系统需求文档所必需的一切活动的过程。它包含了如下活动:系统可行性研究、需求获取和分析、需求描述和文档编写、需求有效性验证、需求管理(管理需求工程的变更)。可行性研究需求获取和分析需求描述需求有效性验证可行性研究报告系统模型用户需求和系统需求需求规约需求工程过程需求管理西安交通大学刘海岩15可行性研究是需求工程过程的开始。在较短的时间内作出结论。集中回答以下问题:(1)系统是否符合组织机构的总体目标。系统不支持这些目标,就没有价值。(2)系统是否可能在现有的技术条件、预算和时间限制内完成。(3)系统能否与已经存在的系统集成。该活动要广泛收集信息并评估,回答一些有关的问题,写出研究报告,得出结论:系统是否值得开发?给出具体的意见和建议。可能对系统高层需求、功能范围、预算和时间安排提出修改意见。写出可行性研究报告,该文档可作为项目建议书、投标书的基础西安交通大学刘海岩16计算机软件文档编制规范(GB/T8567-2006)《可行性分析(研究)报告》模版1引言1.1标识(标题、版本号)1.2背景1.3项目概述(用途、特性、用户、运行环境等)1.4文档概述(用途、内容、保密性等)2引用文件3可行性分析的前提3.1项目的要求3.2项目的目标3.3项目的环境、条件、假定和限制3.4进行可行性分析的方法西安交通大学刘海岩174可选的方案4.1原有方案的优缺点、局限性和存在的问题4.2可重用的系统与要求之间的差距4.3可选的系统方案1…4.x选择最终方案的准则5所建议的系统5.1系统的说明5.2数据流程或处理流程5.3与原系统的比较5.4影响或要求(设备、软件、运行、开发、环境、经费)5.5局限性西安交通大学刘海岩186经济可行性(成本-效益分析)6.1投资(成本)6.2预期的经济效益(一次性/非一次性收益,不可定量的收益,收益/投资比,投资回收周期)6.3市场预测7技术可行性(技术风险评价)8法律可行性9用户使用可行性10其他与项目有关的问题(如未来的变化)11注释12附录西安交通大学刘海岩19需求获取与需求分析的区别•需求获取是开发人员与客户或用户一起对应用领域进行调查研究,收集系统需求的过程。•需求分析是将获取到的需求准确的理解、求精,并将其转化为完整的需求定义(包括建模),进而生成需求规约的过程。需求获取和分析的难度•项目相关人员通常并不真正知道希望计算机做什么,让他们清晰的表达出需要系统做什么是件困难的事,他们或许提出不切实际的要求。西安交通大学刘海岩20•项目相关人员用自己的语言表达需求,这些语言包含很多工作中的专业术语和专业知识。系统分析员没有这些知识和经验,而他们又必须了解这些需求。•不同的项目相关人员有不同的需求,可能以不同的方式表达,分析人员必须发现所有潜在的需求资源,而且能发现这些需求的相容或冲突之处。•经济和业务环境决定了分析是动态的,需求在分析过程中会发生变更。个别需求的重要程度会改变,新的需求会从新的项目相关人员那里得到。西安交通大学刘海岩21需求获取技术•建立由客户(用户)、系统分析员、领域专家参加的联合小组。•需求获取的方法:个别访谈、召集会议、文档研究、问卷调查、观察用户工作流程、建立原型。•获取的需求的表达方式:(1)需求列表需求与系统的特殊视角或环境的关系(2)业务流程图(状态/活动图)(3)用例(Use-Case)/场景(Scenario)/用户故事(userstory)(4)数据流图(5)实体关系图(6)用例图、类图、活动图、时序图、状态图等。西安交通大学刘海岩22用例Jacobson说“用例帮助定义系统之外存在什么(参与者)以及系统应该完成什么”。把系统分成一组逻辑的、互相联系较少的部分,每一部分都描述了系统与外部角色交互所提供的服务,即用例的集合代表了所有将会在系统需求中出现的交互。因此容易从使用的角度理解系统应达到的功能。而“用户故事”是某种形式的简化版用例。场景场景是用例的具体描述。一个用例封装了一组场景,每个场景就是一个单个线程。西安交通大学刘海岩23例1:列出图书馆系统与以下参与者(角色)交互的最小用例集:借阅者、借书员、图书管理员、会计系统。借阅者:•按题目查询书籍•按作者查询书籍•按主题查询书籍•预定已被其他人借出的书籍•查询借阅者的个人信息并列出借阅的书籍西安交通大学刘海岩24借书员:所有借阅者的用例,再加上•为借阅者查找某一书籍•登记已归还的书籍•续借一本书•登记缴纳的罚款•添加新的借阅者•更新借阅者的个人信息(地址、电话号码等)图书管理员:所有借阅者和借书员的用例,再加上•添加藏书•删除藏书•改变系统中对已有书籍的记录信息会计系统(独立运行)•获得借阅者支付的超期罚款西安交通大学刘海岩25例2:一个SafeHome系统,系统激活的基本用例用自然语言陈述如下:(参考教材1)①房主观察控制面板以确定是否系统已准备好接收输入。如果系统未准备好,房主必须物理地关闭门/窗户,以便使“准备好”指示灯亮。②房主使用键盘输入4位密码,系统将密码与存储在配置库中的有效密码比较,如果密码不正确,控制面板鸣叫一次并复位等待再次输入。如果密码正确,控制面板等待进一步的动作。③房主选择键入“stay”(仅激活外部的传感器)或“away”(激活所有的传感器)以启动系统。④当激活时,房主可观察到一个红色指示灯。西安交通大学刘海岩26用例:房主激活监测场景:1、房主:观察控制面板。2、房主:输入密码。3、房主:选择“stay”或“away”。4、房主:观察红色指示灯显示系统已被打开。异常:1、控制面板未就绪。2、密码不正确。3、密码不识别。未解决的问题:1、是否有不使用密码激活系统的方式。2、控制面板是否还应显示附加的文字信息。3、房主输入密码的时间有无约束。4、在系统真正激活之前有无办法关闭系统。西安交通大学刘海岩272.3需求分析与建模需求分析是发现、规约和求精的过程,指开发人员准确的理解用户的需求,通过分析,将不规范的需求陈述转化为完整的需求定义,并产生需求规格化说明的过程。获取的需求可能有模糊的、冗余的、有冲突的或不易理解的地方,需要用文字和图形描述不同视图以揭示更深的、易混淆的问题,确保与所有风险承担者达成共识。西安交通大学刘海岩28需求分析活动具有以下任务:(1)分析需求的可行性:允许的成本、性能;与其他需求的冲突;外界因素的依赖和技术障碍等。(2)对于渐增式开发要确定需求的优先级别,以便确立产品版本。(3)建模:模型能突出或强调某些关键的系统
本文标题:第2章需求工程
链接地址:https://www.777doc.com/doc-203195 .html