de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CN

基于面向对象(OO)分析的基本原则,本指南概述了CRC建模过程。CRC建模是一种高效且低技术含量的方法,旨在弥合开发人员与用户之间的沟通鸿沟,确保在编写代码之前准确识别并理解业务需求。


1. 核心概念:CRC卡片的结构

CRC建模依赖于标准索引卡,这些卡片被划分为三个不同的部分,每个部分代表面向对象设计中的一个核心概念。

A CRC Card by Visual Paradigm

A. 类(卡片顶部)

类代表一组相似的对象。对象可以是与系统相关的人员、地点、事物、事件、概念、屏幕或报告。

  • 命名规则:使用一个或两个单数词(例如,客户,而不是客户们).

  • 示例:在运输/库存系统中,类包括库存项目订单订单项客户,以及表面地址.

B. 职责(左侧栏)

职责是指类所知道所做的任何事情.

  • 它所知道的(数据/属性): 示例:一个客户类知道其姓名、客户编号和电话号码。

  • 它所执行的(行为/方法): 示例:一个客户类可以订购产品、取消订单并进行付款。

C. 协作者(右栏)

当一个类需要从另一个类获取信息或协助以履行责任时,协作就会发生。

  • 示例:一个订单对象有责任“计算总额”。然而,它并不知道商品的价格或订购数量。因此,它必须协作订单项(知道数量)以及库存项(知道价格)来计算最终总额。


2. CRC建模团队

一次成功的CRC会议需要特定的角色,以确保流程顺利进行,并准确捕捉业务逻辑。

  1. 业务领域专家(BDEs):系统的实际使用者(通常为4到5名一线员工)。他们拥有日常业务知识。注意:高管通常不适合参与CRC;他们更适合用于高层次的用例。

  2. 主持人:主持会议,解释技术方法,提出相关问题,确保卡片填写正确,并引导场景测试。

  3. 记录员:1到2名坐在后方或侧边的人。他们不直接参与建模,而是记录无法写在小型索引卡上的详细业务逻辑和规则。

  4. 观察者:坐在后方观看但不参与的学员或利益相关者。


3. 六步CRC建模流程

6-step CRC Modeling Process

步骤1:组建团队

召集4到5名一线BDE,1名引导员和1到2名记录员。确保管理层支持,以便参与者能投入必要的时间。

步骤2:布置房间

  • 可书写表面:用于头脑风暴和原型设计的便签板或白板。

  • 建模桌:一张大型中央桌子,供BDE们放置和移动卡片。

  • 记录员位置:放置在不显眼但视野清晰的位置的桌子。

  • 用品:索引卡、记号笔以及一个柔软的海绵球(稍后用于场景测试)。

步骤3:头脑风暴

提出想法而不加以评判。引导员提出开放式问题以了解业务需求。

  • 示例问题:“这个系统是为谁设计的?”,“它支持哪些业务需求?”,“我们如何做得更快/更便宜/更好?”,“有没有我们可以自动化的琐碎任务?”

步骤4:解释技术

引导员花费10到15分钟解释CRC概念,将定义醒目地展示在墙上,并指导团队制作几张示例卡片。

步骤5:迭代式CRC建模

BDE们站在或坐在桌子周围,迭代地构建模型:

  • 寻找类:追踪资金流向,查找报表/屏幕,并立即识别出3到5个主要类。

  • 寻找职责:询问该类知道什么、能做什么。

  • 定义协作者:确定谁持有完成职责所必需的缺失信息。

  • 整理卡片: 关键步骤。经常协作的卡片被放置在桌面上靠近的位置。“繁忙”的卡片放在中心。将卡片实际移动有助于团队可视化它们之间的关系和关联。

步骤6:用例场景测试(“传球”练习)

这是一个验证练习,团队通过“模拟”系统的工作流程来确保模型的准确性。

  1. 提出一个场景:主持人描述一个用例(例如:“客户下订单”),并将软球扔给持有初始责任卡片的BDE(例如,订单).

  2. 确定责任:团队确认该卡片负责此项任务。如果不是,则更新或创建一张新卡片。

  3. 描述逻辑:持球的BDE向记录员描述逐步的业务逻辑(伪代码)。

  4. 协作:如果BDE需要从另一个类获取信息(例如,库存项目),他们就将球传给持有该卡片的BDE。该BDE随后描述其逻辑部分。

  5. 将球传回:任务完成后,球被传回给上一个人,最终回到主持人手中,以开始下一个场景。


4. CRC如何融入SDLC

CRC建模并非孤立存在;它是更广泛的面向对象建模过程的一部分,该过程在宏观上是顺序的(从需求到设计再到编码),在微观上是迭代的(在模型之间来回切换)。宏观上是顺序的(从需求到设计再到编码),以及微观上是迭代的(在模型之间来回切换)。

  • 详细程度:CRC处于中间位置。你从简单的 用例和 用户界面原型,转向中等详细程度的CRC模型,最后完成高详细程度的类图.

  • 交付物驱动交付物:用例图由用例来记录,用例由顺序图来记录,最终驱动源代码。CRC模型可直接用于类图绘制。


5. 最佳实践与成功技巧

  1. 发送议程:提前几天分发议程,以便BDE们做好准备。

  2. 展示定义:将一张大型的CRC卡片布局和定义贴在房间前方。

  3. 使用领域术语:避免使用技术术语;使用BDE们在日常工作中使用的准确词汇。

  4. 保持低技术性:CRC工具仅为可选。索引卡价格低廉、便于携带且非常有效。

  5. 预期要进行原型设计:在会议期间于翻页纸上绘制屏幕和报表,有助于用户可视化系统。

  6. 计划多天进行:大型系统需要多次会议。这是正常且必要的。

  7. 获得管理层支持:确保管理层理解在编码之前进行建模的价值。

  8. 面向一线员工:CRC非常详细,最适合日常使用者,而非高层管理者。


6. 优势与劣势

优势

  • 专家进行分析:真正从事工作的人来构建模型。

  • 用户高度认同:积极的参与能够提高用户的满意度和归属感。

  • 打破障碍:用户和开发人员并肩协作。

  • 简单且无威胁性:这不过是一叠索引卡。用户不会被复杂的软件工具吓到,也不会觉得自己的工作正被一台“机器”取代。

  • 成本低廉且便于携带:只需几美元,就能放进公文包里。

  • 无缝过渡:与原型设计完美结合,并可直接过渡到正式的类图。

缺点

  • 对部分开发人员构成威胁:一些开发人员错误地认为,他们的技术知识超过了用户的业务知识。

  • 安排时间困难:让4到5位关键用户同时在场需要提前规划。

  • 卡片有限:对于大多数组织而言,一叠索引卡并不是可接受的正式交付成果。CRC必须辅以正式的用例、原型和类图。


结论

应用程序开发的最终目标是解决业务问题,而不是为了满足开发人员对新技术的好奇心。CRC建模迫使开发人员与用户合作,而不是与之对抗。用户合作,而不是与之对抗。通过利用低技术、高度协作的环境,团队可以在编写任何代码之前准确地捕捉、验证和优化业务需求。