第八章 基于场景的方法

概念:文字记录是极好的交流工具,但并不一定是表达计算机软件需求的最好方式。需求建模使用文字和图表的综合形式,以相对容易理解的方式描绘需求,更重要的是,可以更直接地评审它们的正确性、完整性和一致性。

步骤:基于场景的建模从用户的角度表现系统。在基于场景建模时,将更好地理解用户如何与软件交互,发现没有覆盖到的利益相关者所需的主要系统功能和特性。

质量保证措施:必须评审需求建模工作产品的正确性、完整性和一致性,必须反映所有利益相关者的要求并为从中导出设计建立基础。

1 需求分析

需求分析产生软件工作特征的规格说明,指明软件和其他系统元素的接口,规定软件必须满足的约束。在需求分析过程中,软件工程师(有时这个角色也被称作分析师或建模师)可以细化在前期需求工程的起始、获取、协商任务中建立的基础需求(第7章)。需求建模动作结果为以下一种或多种模型类型:

场景模型:出自各种系统“参与者”观点的需求。

面向类的模型:表示面向对象类(属性和操作)的模型,其方式为通过类的协作获得

系统需求。

基于行为和模式的模型:描述如何将软件行为看作外部“事件”后续的模型。

数据模型:描述问题信息域的模型。

面向流的模型:表示系统的功能元素并且描述当功能元素在系统中运行时怎样进行

数据变换。

需求模型的三个主要目标:描述客户需要什么、为软件设计奠定基础、定义在软件完成后可以被确认的一组需求。

1.2 分析经验的原则

1.2.1 模型应关注在问题域或业务域内可见的需求,抽象的级别应该相对高一些。“不要陷人细节”即不要试图解释系统将如何工作。

1.2.2 需求模型的每个元素都应能增加对软件需求的整体理解,并提供对信息域、功能和系统行为的深入理解。

1.2.3 关于基础结构和其他非功能的模型应推延到设计阶段再考虑。例如,可能需要一个数据库,但是只有在已经完成问题域分析之后才应考虑实现数据库所必需的类、访问数据库所需的功能以及使用时所表现出的行为。

1.2.4 最小化整个系统内的关联。表现类和功能之间的联系非常重要,但是,如果“互联”的层次非常高,则应该想办法减少互联。

1.2.5 确认需求模型为所有利益相关者都带来价值。对模型来说,每个客户都有自己的使用目的。例如,业务人员将使用模型确认需求,设计人员将使用模型作为设计的基础,质量保证人员将使用模型帮助规划验收测试。

1.2.6 尽可能保持模型简洁。如果没有提供新的信息,就不要添加附加图表;如果一个简单列表够用,就不要使用复杂的表示方法。

1.3 域分析

软件域分析是指识别、分析和详细说明某个特定应用领域的共同需求,特别是那些在该应用领域内被多个项目重复使用的……(面向对象的域分析是)在某个特定应用领域内,根据通用的对象、类、部件和框架,识别、分析和详细说明公共的、可复用的能力。域分析的目标很简单:查找或创建那些广泛应用的分析类或分析模式,使其能够复用。

使用本书前面介绍的术语,域分析可以被看作软件过程的一个普适性活动。意思是域分析是正在进行的软件工程活动,而不是与任何一个软件项目相关的。域分析师的角色有些类似于重型机械制造业中一名优秀的刀具工的角色。刀具工的工作是设计并制造工具,这些工具可被很多人用来进行类似的而不一定是同样的工作。

如下图说明了域分析过程的关键输人和输出。应该调查领域知识的来源以便确定可以在整个领域内复用的对象。

1.4 需求建模的方法

第一种考虑数据和处理的需求建模方法称作结构化分析,其中处理过程将数据作为独立实体加以转换。数据对象建模定义了对象的属性和关系,操作数据对象的处理建模应表明当数据对象在系统内流动时处理过程将如何转换数据。

需求建模的第二种方法称作面向对象的分析,这种方法关注类的定义和影响客户需求的类之间的协作方式。UML 和统一过程(第4章)主要是面向对象的分析方法。

基于场景的元素表述用户如何与系统和使用软件时出现的特定活动序列进行交互。基于类的元素的内容包括:系统操作的对象,应用在这些对象间影响操作和对象间关系(某层级)的操作,以及定义的类间发生的协作。行为元素描述了外部事件如何改变系统或驻留在系统里的类的状态。最后,面向流的元素表示信息转换的系统,描述了数据对象在流过各种系统功能时是如何转换的。

如图8-3所示,需求模型的每个元素表示源自不同观点如下图:

需求模型导出每个建模元素的派生类。然而,每个元素(即用于构建元素和模型的图表)的特定内容可能因项目而异。就像我们在本书中多次提到的那样,软件团队必须想办法保持模型的简单性。只有那些为模型增加价值的建模元素才能使用。

2 基于场景建模

使用UML需求建模将从开发用例、活动图和泳道图形式的场景开始。
2.1 创建初始用例

第7章中我们已经提到,用例从某个特定参与者的角度出发,采用简明的语言描述一个特定的使用场景。但是我们如何知道:(1)编写什么?(2)写多少?(3)编写说明应该多详细?(4)如何组织说明?如果想让用例像一个需求建模工具那样提供价值,那么必须回答这些问题。

2.1 细化初始用例

2.2 编写正式用例

这三个过程也是一个迭代的过程,从简单到复杂,从简易到完善。

3 补充用例的UML模型

很多基于文本的需求建模情景(即使和用例一样简单)不能简明扼要地传递信息。在这种情况下,你应能从大量的UML图形模型中进行选择。

3.1 开发活动图

UML 活动图在特定场景内通过提供迭代流的图形化表示来补充用例。一个通过互联网访问摄像机监视设备并显示摄像机视图功能的活动图例子如下图:

3.2 泳道图

UML泳道图表现了活动流和一些判定,并指明由哪个参与者实施。同时指出哪个参与者(如果在某个特定用例中涉及了多个参与者)或分析类(第9章)负责由活动矩形所描述的活动。职责由纵向分割图中的并行条表示,就像游泳池中的泳道。

例如,接口类表示房主可见的用户接口。活动图标记出对接口负责的两个提示——“提示重新输入”和“提示另一视图”。这些提示以及与此相关的判定都落人了接口泳道。但是,从该泳道发出的箭头返回到房主泳道,这是因为房主的活动在房主泳道中发生。一个通过互联网访问摄像机监视设备并显示摄像机视图功能的泳道图如下图

借助活动图和泳道图,面向过程的用例表示出各种参与者行使的一些特定功能(或其他处理步骤),以便满足系统需求。但是需求的过程视图仅表示系统的单一维度,在第9章和第10章,我们将考察需求建模的其他维度。

需求建模之基于场景的方法相关推荐

  1. 《基于场景的工程方法》作者问答录

    <基于场景的工程方法>(Scenario-Focused Engineering,本书中文版正在翻译中)一书描述了在开发与交付基于软件的产品时,一种以客户为中心的精益与敏捷方法.本书所描述 ...

  2. 基于场景建模的自动化配置

    网络设备业务模块繁多,不仅模块内存在大量层级依赖的配置命令,同时模块内或模块间的的引用和叠加可以组合出不计其数的业务模型.企业网业务的多样性也决定了很难找到一种通用性的组合或模板来覆盖全部的业务场景. ...

  3. 基于自动驾驶需求的线控转向设计方法

    出品 | 焉知AutoTalk 本期主题为"基于自动驾驶需求的线控转向设计方法",焉知有幸邀请到了清车智行(苏州)电子科技有限公司总经理.清华大学苏州汽车研究院智能底盘所所长高峰先 ...

  4. SUMO中车辆需求建模方法(rou.xml)

    SUMO需求建模种类 生成网络后,可以使用SUMO-GUI对其进行查看 ,但不会有汽车行驶.仍然需要有关车辆的某种描述.这称为交通需求.从现在开始,我们将使用以下术语:行程是由起点(街道),目的地终点 ...

  5. 网约车需求预测文献阅读笔记(一)《基于图卷积的出发地—目的地矩阵预测:旅客需求建模的新视角》

    文献阅读笔记:<基于图卷积的出发地-目的地矩阵预测:旅客需求建模的新视角> 摘要 现有研究不足 研究挑战(难点) 本文的贡献 准备工作 定义1:格子 定义2:时间片 定义3:OD矩阵 模型 ...

  6. 软件项目管理 4.2.传统需求建模方法

    软件项目管理 4.2.传统需求建模方法 [公众号 "项目管理研究所" 将会第一时间更新文章并分享<行业分析报告>] 归档于软件项目管理初级学习路线 第四章 软件需求管理 ...

  7. 软件工程基于场景建模 习题

    软件工程基于场景建模 习题 1.It is relatively common for different customers to propose conflicting requirements, ...

  8. 基于拉丁超立方抽样的风,光,负荷场景生成方法 风电功率场景生成 ,光伏功率场景生成,负荷场景生成

    基于拉丁超立方抽样的风,光,负荷场景生成方法 风电功率场景生成 ,光伏功率场景生成,负荷场景生成 通过后向场景削减BR得到典型场景及其概率 提供参考文献,完美复现! 语言:MATLAB ID:6430 ...

  9. 基于MindSpore框架的室内场景图像分割方法研究

    基于MindSpore框架的室内场景图像分割方法研究 概述 本文以华为最新国产深度学习框架Mindspore为基础,研究室内场景语义分割方法.本文基于注意力机制改进U-Net网络,并选取VGG16与R ...

最新文章

  1. Linux阶段复习题
  2. 读书笔记:《少的力量》
  3. [YTU]_2633( P3 数钱是件愉快的事)
  4. 如何定期按时完成数据中心的测试?
  5. USB的端点描述符详解-重新排版
  6. Kinect+OpenNI+OpenCV使用
  7. Smoothy将于4月22日-27日在BSCPad等4个平台进行IDO
  8. [渝粤教育] 武昌理工学院 跨境电商实务 参考 资料
  9. 英特尔在移动时代的衰落或许不会影响苹果
  10. php实现两张图片合成一张,如何把两张图片拼成一张
  11. android防丢器设计,基于单片机的防丢器设计
  12. 有效管理“刺头”员工的方法
  13. 显示农历天气时钟小部件下载_玛雅日历安卓版下载|玛雅日历app下载_v5.3.2
  14. 计算机格式怎么调,怎么改电脑硬盘格式?
  15. 计算机应用基础说课方案,广东省“XX杯”说课大赛计算机应用基础类一等奖作品:PPT写字动画的制作教学设计方案.doc...
  16. 【SCI\EI】英语论文中的常用字体是什么
  17. 人与树林交相辉映的效果
  18. Lamp 服务器环境安装
  19. Java:JSON解析工具-json-lib
  20. 【技术美术图形部分】PBR直接光部分:Disney原则的BRDF和次表面散射模型

热门文章

  1. Cocos2dx游戏开发笔记23:《奇怪的大冒险》源码学习,附下载
  2. 2020 最新 Linux批量创建50个用户stu001,stu002,...,stu050
  3. QTday2,窗口化界面的制作
  4. MPC模型预测控制+matlab代码实现+simulink仿真实现
  5. HOOPS中的OperatorControl
  6. Android开发-手机适配之values目录
  7. 无刷电机控制基础(2)——有感和无感驱动、调速
  8. 色情病毒“魅影杀手”的恶意行为及黑产利益链分析
  9. 联想微型计算机内容不清楚,联想L2060wa显示器显示不清楚,特别是文字更无法看...
  10. Linux系统清理redis 命令