4.2 面向对象分析(二) CRC方法标识概念类
CRC
又称为CRC索引卡片:CRC card
每张卡片代表一个类 Each card represents one class
每张卡片上写出这个类承担的职责、与其合作交互的其他类名
CRC cards are paper index cards on which one writes the responsibilities and collaborators of classes
CRC建模讨论会
a group sitting around a table, discussing and writing on the cards as they play "what if" scenarios with the objects
considering what they must do and what other objects they must collaborate with
例如,废品回收机
CRC 的特点
非正式的、不是很细节的 Informal, non-detailed
采用小组“头脑风暴”的形式提出概念 Used for group brain-storming
CRC的目标不是提供完整的设计 Not intended to provide a complete design
CRC产生的结果需要进一步精化 End result is a first cut at classes for an object-oriented model
CRC 的输入信息: 用例模型
用例模型
用例图、边界、用例描述,清楚 地描述了系统需求,作为CRC概 念类分析的起点
A good starting point for CRC analysis is a clear statement of all of the use-cases
Use-cases drive the introduction of CRC cards
用例描述的正常事件流、异常事件流, 可以作为CRC的“角色扮演”的脚本
Use-cases, or their accompanying scenarios, can be used as a kind of script for the role-playing method (角 色扮演)of checking the CRC cards
“角色扮演”也可以用顺序图来代替 The role-playing could be replaced with sequence diagrams
CRC方法建模的一些规则
CRC指导
Who Writes CRC Cards?
No one individual has all needed knowledge
Best to write CRC cards as a team, rather than individually
Analysis team should consist of five or six experienced individuals :
one or two user domain experts
one or two systems analysts
one OO software designer
one team facilitator and leader 一位引导者
The team can include clients 客户 as well as developers
小的团队关注点比较集中,大的团队很难给出一致意见 Smaller teams lack diversity, larger teams make consensus difficult to achieve 仲裁者具备OO技能以及团队引导能力,不是“老板”型
Facilitator should be skilled at OO and group techniques, not be a "boss" of team
围绕团队的提议来写CRC Writing of CRC cards focuses team activities
切忌跑题:参见1994年春晚_相声《跑题》关于开会的会风问题…
头脑风暴 Brainstorming
Groups work by
收集各种各样的想法,比较这些想法并进行合成
A "brainstorming" session is a good way to collect the ideas quickly and creatively
头脑风暴的原则 Brainstorming principles
All ideas are potentially good ideas
Don't censure(责难) yourself or others -- all ideas are equal
Think fast and furiously激烈; ponder(沉思)later
A fast-paced discussion encourages individual creativity
Give every voice a turn
Include everyone in the group. Don't let the loudmouths dominate.
A little humor can be a powerful force
Humor can help break down barriers, relieve tension, and build trust needed for a cohesive and effective group
头脑风暴的步骤
会议分阶段,每阶段目标明确 State session objectives.
Each session should have a precise objective--clear to all and narrow enough to accomplish in the session
Avoid digression (离题) from the objective
使用“轮转”机制 Use a round-robin technique
Go around the group from individual to individual
Individuals may "pass" if they have nothing to contribute
Stop when no one has anything to contribute
讨论与选择 Discuss and select
一致同意的 Restate the objective, then identify those items that everyone agrees are "winners"
一致反对的 Then select those items that everyone disagrees are "losers"
需要进一步讨论的 Then discuss the items remaining--the "maybes"
设置“时间盒”
在规定的时间间隔内有结论:或者完成、或者延迟到有进一步的信息到来,等等
在“头脑风暴”开始之前,收集概念类可能的来源
每个参与者要完成一些调查、分析任务
阅读所有的需求文档 Read all requirements documents
Examine the formal requirements document (if any)
Don't overlook the indirect sources -- memos, meeting minutes, etc.
Circle nouns and noun phrases -- these are potential classes
仔细阅读各类报告 Look carefully at reports
Examine the reports generated in the system being replaced (manual or automated)
Examine the profiles for the reports desired in the new system
Again circle nouns and noun phrases -- these are potential classes
做一些访谈 Conduct interviews
Talk to experienced users of the current system
Record interview or take careful, precise notes
Again identify nouns and noun phrases as candidate classes
概念类可能的来源 Sources for the Candidate Classes
检查其他的文档和文件 Examine documentation and files
当前系统的有关文件 Review the documentation on the current system
尝试收集用户、维护人员手里所拥有的非官方的、或者私人的笔记等
Try to review any unofficial or personal notes users or maintainers of the system have
同样的,在里面寻找名称 Again identify nouns and noun phrases as candidate classes
CRC寻找结束后 …
“角色扮演”验证 概念类 Team can engage in role-playing to verify that use-case scenarios make sense for chosen CRC
每个人可以扮演1到多个类 Each person can role-play one or more class cards
如果哪里不顺畅,立即修改 If something doesn’t work, change the class accordingly
或者,去修改用例!(需求定义错了哦)Revision of use-cases might also be indicated
4.2 面向对象分析(二) CRC方法标识概念类的更多相关文章
- 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...
- python面向对象双下划线方法与元类
目录 双下划线方法(__) 元类简介 产生类的两种表现形式 元类的基本使用 元类进阶操作 __new__方法 双下划线方法(__) 面向对象中的双下方法也有一些人称之为是魔法方法,有些双下方法不需要刻 ...
- Python 基础之面向对象之类中的方法和与类相关的魔术属性以及反射
一.类中的方法 普通方法: 没有参数,只能类调用绑定方法: (1)绑定到对象(自动传递对象参数) (2)绑定到类(自动传递参数)静态方法: 无论是类还是对象,都能调用的方法#例:class Dog() ...
- 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二
101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...
- <二>面向对象分析之几个关键的概念
一:建模 --->建模,是指通过对[客观事物]建立一种抽象的方法用以表征事物并获得对事物本身的理解.同时把这种理解概念化,将这些逻辑概念组织起来,构成一种对所观察对象的内部结构和工 ...
- 面向对象分析方法(I)
找出最关键的一些业务场景:一般通过动词来寻找,比如招聘系统中,一个应聘人投递一个职位就是一次应聘,应聘就是一个业务场景:一个学生参加某门课的考试,那么考试就是一个业务场景:一个学生去图书馆借书,那么借 ...
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- 面向对象分析设计-------02UML+UML各种图形及作用
一.UML是什么?UML有什么用? 二.UML的历史 三.UML的上层结构(Superstructure) 四.UML建模工具 五.UML的图(重点) 1.用例图(use case diagram) ...
- SNMP报文抓取与分析(二)
SNMP报文抓取与分析(二) SNMP报文抓取与分析(二) 1.SNMP报文表示简介 基本编码规则BER 标识域Tag表示 长度域length表示 2.SNMP报文详细分析(以一个get-respon ...
随机推荐
- Centos7.5安装VirtualBox-5.2
1.查看自己的内核版本 [root@localhost /]# rpm -qa |grep kernel kernel-tools-libs-3.10.0-862.6.3.el7.x86_64 ker ...
- 通过WSL在Windows下安装子Linux系统
一.开启开发者模式 步骤: -> 系统设置 -> 更新和安全 -> 针对开发人员 -> 选择开发者模式 点击后会自动安装环境 二.启用WSL 步骤: -> 系统设置 -& ...
- Mysql优化知识点总结(转自CS-Notes)
转载地址:https://github.com/CyC2018/CS-Notes/blob/master/notes/MySQL.md 一.索引 B+ Tree 原理 MySQL 索引 索引优化 索引 ...
- 最最简单的c语言函数汇编分析
0x01 环境 xp+vc6.0 0x02 代码 int plus(int x, int y) { return 0; } 以下是vc6.0的反汇编窗口 1: int plus(int x, int ...
- Vue属性中带’-‘的处理方式
我们在写属性时经常会加入’-‘来进行分词,比如:<panda from-here=”China”></panda>,那这时我们在props里如果写成props:[‘form-h ...
- vs添加webservice
VS2010中添加WebService注意的几个地方 添加web引用和添加服务引用有什么区别? 2.4.1 基础知识——添加服务引用与Web引用的区别 C#之VS2010开发Web Service V ...
- RabbitMQ.client消息队列
doc 介绍 分类&&典型应用 中文文档 使用
- 正则匹配-URL-域名
DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母.标号中除连字符(-)外不能使用其他的标点符号.级别最低的域名写在最左边,而级别最高的域名写在最右边.由多 ...
- shp与json互转(转载)
转自:http://blog.sina.com.cn/s/blog_673c98be0102v78i.html 对于搞GIS开发的,这2种数据格式太重要了. 一.shp转json 这个要容易些,方法也 ...
- open()、fwrite()、fread()函数使用说明与示例
fopen()函数: 1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针. 2.函数原型: FILE * fopen(const char * path,const ...