软件工程--实践者的研究方法[基于类的需求建模]

本文介绍了基于类的需求建模在软件工程中的实践,特别是CRC建模方法。通过识别分析类、描述属性、定义操作以及CRC建模(包括类、职责和协作)来构建分析模型。识别分析类主要从需求模型和用例中提取,描述属性关注类的属性集合,定义操作涉及对象的行为。CRC建模帮助识别类、职责和协作者,以实现需求。此外,文章还讨论了关联和依赖等类之间的关系在建模中的作用。
摘要由CSDN通过智能技术生成


基于类的建模

  • 基于类建模要表示系统操作的对象、应用于对象间能有效控制的操作(也称方法或服务)、对象间的关系、已定义类之间的协作等。
  • 基于类的分析模型的元素主要有:
    • 类和对象、属性、操作、CRC模型、协作图和包。
  • 基于类的建模,就是要识别和表示这些元素。

基于类的建模基本思路

  1. 识别分析类 – 分析出有哪些类
  2. 描述属性 – 对应将来编代码定义类属性
  3. 定义操作 – 对应将来编代码定义方法
  4. CRC建模 – 解决类的功能是什么,协作关系如何
  5. 关联与依赖 – 解决类之间有什么关系

9.1 识别分析类

  • 识别分析类:可以通过检查需求模型开发的使用场景,或通过对为系统开发的用例或处理叙述进行“语法分析”,来进行识别。

具体做法

  • 首先用下划线画出每个名词名词词组
  • 将这些名词输入到一个列表中,同时标注出同义词
  • 筛选甄别,把描述问题的名词和解决方案的名词分开。

分析类的表现形式
在所有名词的基础上,找以下对应形式:

  • 外部实体(例如,其他系统、设备、人员),产生或使用基于计算机的系统的信息,产生或使用基于计算机的系统的信息。
  • 事物(例如,报告、显示、字母、信号),问题信息域的一部分。
  • 偶发事件或事件(例如,所有权转移或机器人的一组移动完成),在系统操作环境内发生。
  • 角色(例如,经理、工程师、销售人员),由和系统交互的人员扮演。
  • 组织单元(例如,部门、组、团队),和某个应用相关。
  • 场地(例如,制造车间或码头),建立问题的环境和系统的整体功能。
  • 结构(例如,传感器、四轮交通工具、计算机),定义了对象的类或与对象相关的类。

上面是一种一般性归类方法,之所以这样做是为了防止两个问题

  1. 防止漏掉未来系统中需要的类
  2. 防止误认为一些名词是系统中类

还有其他归类方法,如:按照数据产生者(源)、数据使用者(汇点)、数据管理者、查看(或观察者)类、辅助类。

特别注意

  • 什么不能是类或对象。
  • 通常,绝不应该用“强制性的过程的名称”为类命名
  • 例如:
    • Image”图像“是类
    • InvertImage”图像翻转“是操作,不应是类

举例:
在这里插入图片描述
名词列表
在这里插入图片描述

分析筛选建议
分析师在考虑每个潜在的类是否应该包含在分析模型中时,可使用以下6个选择特征:

  1. 保留信息:只有当相关信息必须被记录才能保证系统正常工作时,潜在类在分析过程中才是有用的。
  2. 所需服务:潜在类必须具有一种可确认的、能用某种方式改变类的属性值的操作。
  3. 多个属性:在需求分析过程中,焦点应在于”主“信息;事实上,只有一个属性的类可能在设计中有用,但是在分析活动阶段,把它作为另一个类的某个属性可能更好。
  4. 公共属性:可以为潜在类定义一组属性,这些属性适用于类的所有实例。
  5. 公共操作:可以为潜在类定义一组操作,这些操作适用于类的所有实例。
  6. 必要需求:在问题空间中出现的外部实体,或者任何系统解决方案的运行所必须的信息,几乎都被定义为需求模型中的类。

分析筛选
在这里插入图片描述
注意:

  • 上面的表是不全面的,必须添加其他类以使模型完整;
  • 某些被拒绝的潜在类可能成为那些被接受的类的属性;
  • 问题的不同陈述可能导致作出不同的”接受或拒绝“决定。
  • 如何确定某个潜在类是否应该真的成为一个分析类?

9.2 描述属性

  • 属性是在问题环境下完整定义类的数据集合。
    • 例如:学生类,在教务系统学生社团系统中的属性就会有很多不同。
  • 为了给分析类开发一个有意义的属性集合,需要选择那些合理的”属于“类的”东西“。
  • 每个类都应回答如下问题:
    • 什么数据项在问题的环境内能够完整地定义这个类?

SafeHome实例

  • 考虑为SafeHome定义System类。
  • 房主配置安全功能以反映传感器信息、识别信息、报警响应信息、激活或关闭信息等。
  • 可以用如下方式表现这些组合数据项:
    • 识别信息 = 系统编号 + 确认电话号码 + 系统状态
    • 报警应答信息 = 延迟时间 + 电话号码
    • 激活或者关闭信息 = 主密码 + 允许重复次数 + 临时密码

说明:

  • 等式右边的某些数据项可以精化到基础级
  • 可以为System类组成一个合理的属性列表
  • 通常,如果多个项和类相关联,就应避免把这个项定义为属性。例如:
    • 传感器(Sensor)是整个系统(System)的一部分,因此并没有列为System类的属性。
    • Sensor已经被定义为类,多个Sensor对象将和System类关联

System类的类图
在这里插入图片描述

9.3 定义操作

  • 操作:定义某个对象的行为

  • 通常可以粗略地划分为四种类型

    • 以某种方式操作数据;
    • 执行计算的操作;
    • 请求某个对象的状态的操作;
    • 监视某个对象发生某个控制事件的操作。
  • 操作必须”理解“类的属性和相关属性的性质。

  • 定义操作中

    • 研究处理说明(或用例)合理选择属于类的操作
    • 研究语法解析分离动词
  • 例如描述:”为传感器分配编号和类型“ ”主密码用于激活和接触系统“ 表明:

    • assign()操作和Sensor类相关
    • arm()和disarm()应用于System类
  • 另外,操作还可能被划分子操作

经过分析后的类图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值