一个房屋中介业务建模的实例分析

转自:http://blog.csdn.net/coffeewoo/archive/2008/11/18/3327592.aspx

一位名叫Midhael Yan的朋友给我发来一封信,信中谈到这样一个问题。我觉得很有代表性,因此公开发布到BLOG上。这位朋友的问题是这样的:

一个租房中介准备提供一个网上中介服务系统,主要包括以下服务:
给求租者发布求租信息,寻找房屋信息
给出租者注册一个店面,在小店里发布出租房信息,也支持寻找求租信息
使用该服务必须注册一个用户
对房屋有收藏和评论的需要
我和几个朋友初步探讨了一下,在业务建模阶段出现了争执
我的分析:
一个求租者业务角色
一个出租者业务角色
发布求租信息业务用例
找房屋信息业务用例
注册店面业务用例
发布出租房屋信息业务用例
注册用户业务用例
朋友的分析:
一个求租者业务角色
一个出租者业务角色
发布信息业务用例(注册店面业务用例也被合并进来了)
查询信息业务用例
注册用户业务用例
另外一个朋友的分析更简单:
客人业务角色
发布信息业务用例
查询信息业务用例
请您给出您的见解,谢谢!

非常有幸拜读你的文章,收益甚多,谢谢!
有几点问题,希望指正!
1、关于你的网上借书范例
对于你把图书管理员这样的业务工人定义成了业务角色有点不解
2、我模拟了一个网上中介系统的范例,遇到了一些两难问题,请教
一个租房中介准备提供一个网上中介服务系统,主要包括以下服务:
给求租者发布求租信息,寻找房屋信息
给出租者注册一个店面,在小店里发布出租房信息,也支持寻找求租信息
使用该服务必须注册一个用户
对房屋有收藏和评论的需要
我和几个朋友初步探讨了一下,在业务建模阶段出现了争执
我的分析:
一个求租者业务角色
一个出租者业务角色
发布求租信息业务用例
找房屋信息业务用例
注册店面业务用例
发布出租房屋信息业务用例
注册用户业务用例
朋友的分析:
一个求租者业务角色
一个出租者业务角色
发布信息业务用例(注册店面业务用例也被合并进来了)
查询信息业务用例
注册用户业务用例
另外一个朋友的分析更简单:
客人业务角色
发布信息业务用例
查询信息业务用例
请您给出您的见解,谢谢!
合适的话也希望把这个范例单独在您的BLOG上发布出来,供大家一起探讨,谢谢!

这个讨论很有代表性,把它贴出来:)

我对第一个问题是这样看的,在我平时工作中有意忽略business actor,actor,business worker,worker这样的区别。因为我觉得,虽然在UML概念上它们是不同的,这样定义有其道理。但是这种概念的差异太过于学术化。在实际工作中,大家都熟悉岗位,角色这样的概念,甚至用户对岗位,角色这样的定义都有非常好的认识。但对于不熟悉UML的人来说,如果试图去向他们解释什么是 worker什么是actor,什么是business actor...我认为这是件费力不讨好的事情,我曾经试过,很难让人理解这么些小人图到底有什么差别。做一个业务模型的目的是让所有相关人等看得明白看得懂,而不是是否符合UML的规定。我用UML的一个观点是适合的采用,不适合的修改甚至放弃。我承认UML的定义是有道理的,但我不认为在实际工作中这样做会带来好处。在我们说明需求的时候,如果就是不区分actor 和worker,我们就会说不清需求了吗?我相信不会,相反的,如果我们用岗位这个概念来做业务模型,用角色这个概念来做系统模型,那么对所有相关人等都会是很好很容易理解的。所以实际上,在我做业务建模的时候,虽然用了UML的元素,但实际我的概念是岗位、角色,我认为这两个概念足以支持业务分析,并且容易理解,而抛弃了UML拗口复杂的定义。这在实际工作中给我带来了很多方便。


第二个问题,总的来说,我支持你的分析。我的理由是:

首先分为求租者和寻租者我是支持的,定位很准,而客人业务角色呢,我猜想你这位朋友带了抽象的思想在里面,实际上他的意思是不论求租者和寻租者在将来的 WEB应用程序看来都是通过同一个界面登录的,可能也是通过同一个界面管理的。所以从ID的角度说,他们是一样的。但我不支持在这个时候带着实现的思想,而要从业务角色的目的上去区分它们是否应该合并。显然,求租和寻租两者的目的是完全不同的,在业务角度说,他们没有任何可以合并的理由。至于到了系统用例阶段,由于他们可以共享同样的登录模块,同样的ID管理,抽象出一个客人角色是合理的,但在业务阶段这个抽象是不合适的。同一个参与者使用同一样用例却抱着不同的目的,这违反用例的基本定义。

其次,在业务用例的获取方面,可以参考我在第一篇文章里讲到的用例的四个特征,你的业务用例定义符合得很好。对于你第一个朋友的定义,发布信息这个业务用例,同时包含进了注册店面,我不大赞同。原因在于,业务用例带有“原子”特性,也就是说一个业务用例应该能够不依赖于别的业务用例而完成一个参与者的目的。如果按你第一个朋友的定义,会有这样一个结果,寻租者启动同一个用例,然后去做一件事情,而这件事情与用例中另一件事完全无关。例如这样一个场景,某个出租者,注册了店面,成功后就离开了,显然,他并没有做发布信息的事,发布信息并没有在这个场景中发挥任何作用,反之也一样。既然这两件事情可以独立存在,就应当独立成用例。我猜想你朋友的意思是,要发布信息,就要先注册店面,有无店面是发布信息的一个前置条件,因此把它包括进来。如果是这么想的,有其道理,但就这个事例来说我还是觉得不合适,我提出这几个问题:是否要发布信息就必须有房间?是否每发布一次信息都要注册一次房间?一个ID是否能够注册多个房间?如果房间有时限规定失效了以后怎么办?如果客人想注销房间呢?想想看,这些问题都是针对注册房间的,如果注册房间是发布信息用例的一部分,结果是什么呢?为了发布一条信息而已,客人被要求做那么多准备工作,开发人员写了N多if-else。可其实呢,以上的问题都不直接涉及到发布信息的过程啊,方法啊这些。可见,把两个原本独立的目标(一个客人上来,可以只发布信息,也可以只注册房间,未必都要做)合并,会造成混乱。如果要问,我提的那几个针对房间的问题,的确会影响到是否可以发布信息啊,还有信息发布到哪里啊?没错啊,是否可以发布是发布信息的前置条件,发布后被放到哪里是发布信息的后置条件,它们都是在发布信息之外的,换句话说,注册房间和发布信息之间有一些业务规则需要定义,仅此而已。这和我们不需要在每个用例里都去包括注册用户用例是一个道理,虽然没有正确的ID注册和登录不能做任何事情,其他用例也不必去包含注册ID的用例,因为客人的确可以注册完成以后什么事都不做。注册ID用例和其它业务用例有关系是因为业务规则,而不是因为客人的目的。第二个朋友的我就不细说了,原因大致同上,另一方面,由于我不赞同业务角色的获取,当然从它得出的业务用例我也不赞同。

有一点是值得讨论的,就是查询用例。这是一个比较特殊的东西,因为查询的目标可以很明确,也可以很模糊。比如,我就只是查查看而已,看完了什么也不做;也可能是因为我要租房,所以查询;还可以因为是我要查完后修改我已经发布的信息...类似这样的不同目标还有很多,显然我们不可能每一个目标都去定义一个查询XXX业务用例。同时,一个查询可能是跨越多个业务用例的,比如把求租、寻租和用户信息集中在一个查询结果里面。在这一点上我也不能断定你专门目标的用例:找房屋信息业务用例,和你朋友通用目标的用例:查询信息业务用例哪一个是正确的,事实上都是正确的,也都有道理,取决于客户需求中针对查询的要求,到底是专门目的,还是模糊目的。
coffeewoo 发表于:2006.11.08 13:52 ::分类: ( 系统分析、设计,UML及OO , ) ::阅读:(4077次) :: 评论 (10)
re: 一个房屋中介业务建模的实例分析 [回复]

新作发表,值得祝贺。
不过coffeewoo还是记得完成《分析模型系列》哦
看了《用例分析系列》受益匪浅,这才是我想象中的软件工程啊。我对后面的大作报以很高希望呢。
lifeng 评论于: 2006.11.08 15:18
re: 一个房屋中介业务建模的实例分析 [回复]

赫赫,coffeewoo果然是个有责任心的啊。
我喜欢。
不要放弃哦
lifeng 评论于: 2006.11.09 09:31
re: 一个房屋中介业务建模的实例分析 [回复]

就回答一个最简单的问题:
业务用例阶段请不要做过多抽象,因为你是想描述需求,而不是在做分析
系统用例阶段请进行有必要的抽象,因为你是想描述人与系统间针对需求的交互,所以你在做分析
分析模型阶段请靠近代码级的抽象,因为你是想描述系统究竟是怎样完成人所提出的需求的,所以你在做分析和设计的过渡(这时候依靠的就是业务对象之间所进行的交互)
设计模型阶段请进行代码级的抽象,你会发现许多CLASS(业务对象、业务逻辑),于是你也会使用常见的时序图来表述
其实抓住这些重点,你就会发现在任何一个阶段你都有你的目标,做起事情来就清晰多了。
MVC属于构架体系的模式,如果理解为实体=M、边界=V、控制=C没有问题,问题的关键点在于对于一个用例实现你在设计时怎样将这三者清晰的分离,尤其针对的是BS结构。
rwyx 评论于: 2006.11.10 01:13
re: 一个房屋中介业务建模的实例分析 [回复]

首先很感谢你的文章,受益非浅!

关于这个案例的角色和用例分析,我有以下的想法,不知您是因为说明简化的原因没有提及,还是我想的有偏差,请指教!

出租者角色
求租者角色
管理员

注册用户用例
注册店面用例
发布出租信息用例
查找信息用例
发布评论用例
收藏房屋用例
发布求租信息用例
管理用例
QQ 评论于: 2007.03.15 18:41
re: 一个房屋中介业务建模的实例分析 [回复]

针对需求描述,Midhael Yan的分析似乎不是很全面,缺少一些角色和用例,而您对这一点没有提出,所以我疑惑其他的角色和用例是不是有必要
QQ 评论于: 2007.03.16 09:52
re: 一个房屋中介业务建模的实例分析 [回复]

哈哈,都是高手
lazy 评论于: 2007.05.04 11:16
re: 一个房屋中介业务建模的实例分析 [回复]

tongue,加入coffeewoo的fans行列.
拜读了用例分析的大作,深入浅出,比一些所谓的教程之类容易接受多了.谢谢coffee大哥.
小刀妹 评论于: 2007.08.21 23:45
re: 一个房屋中介业务建模的实例分析 [回复]

coffeewoo的确是高人,而且也实在。不像有些人懂得多一些,但故弄玄虚。对于coffeewoo我只说一个字:高!
IT老兵 评论于: 2007.09.17 12:34
re: 一个房屋中介业务建模的实例分析 [回复]

我也是一个UML新手,看了上面的,也觉得coffeewoo为人不错,水平不错!
独钓寒江雪 评论于: 2008.01.09 17:21
re: 一个房屋中介业务建模的实例分析 [回复]

针对于一个产品化的建模,有些无从下手。再暂时无法抽象成一个行业的需求个体时,不知道可否简单的完成建模,增加详细设计的工作
房产中介管理系统源码(仿美萍) 房产中介管理系统(仿美萍)是一套功能强大通用性极强的房产管理软件,软件界面设计简洁,美观,其人性化的软件流程,使普通用户不需培训也能快速掌握软件操作使用方法,上手极易。商友房产管理软件广泛适用于企业,公司的房产管理,客户档案管理,是您企业进行房产管理的强大工具。软件支持外部EXCEL表数据导入各种数据,也可以方便导出为Excel,Word等数据格式;报表支持自定义打印。 它集房源管理、客户管理、销售管理、出租管理,统计分析等强大功能为一身,软件界面简洁优美,操作直观简单,无需专门培训即可正常使用。仿美萍房产中介管理系统能广泛适用房介经营商、地产代理商等房屋中介销售出租机构使用。仿美萍房屋中介管理软件是您加强房源管理、客户管理,员工管理,提高工作效率的强大助手。 一、日常管理 1. 新增房源:点击主窗口中的"新增房源"按钮,打开新增房源窗口,按照房源的实际情况进行对应登记后保存即可完成房源的登记,登记后就以用于软件中对房源的查询、修改、签约、房源匹配等操作时使用。 2. 新增客户:点击主窗口中的"新增客户"按钮,打开新增客户窗口,按照客户的实际需求进行对应登记后保存即可完成客户的登记,登记后就以用于软件中对客户的查询、修改、签约、客户匹配等操作时使用。 3. 跟进查询:点击主窗口中的"跟进查询"按钮,打开跟进查询窗口,此窗口中分为房源跟进查询和客户跟进查询两项,在此窗口可以查询到已登记房源和客户的后期跟进情况,通过此查询可以帮助员工了解动态掌握客户的情况,便于及时合理的安排自已的工作。 4. 租房查询:点击主窗口中的"租房查询"按钮,打开房源查询窗口,有此窗口中输入想要查询到的房源条件,即可查到符合条件的房源。大大提高了房源访问速度和要求的精确度,鼠标单击查询到的某个房源,如果有与之匹配的客户,将在主窗口的右下部的"自动匹配的客户"中显示与所点击房源条件相符的需求客户。方便了员工为客户提供更快捷方便的服务。 5. 买房查询:点击主窗口中的" 买房查询"按钮,打开房源查询窗口,有此窗口中输入想要查询到的房源条件,即可查到符合条件的房源。大大提高了房源访问速度和要求的精确度,鼠标单击查询到的某个房源,如果有与之匹配的客户,将在主窗口的右下部的"自动匹配的客户"中显示与所点击房源条件相符的需求客户。方便了员工为客户提供更快捷方便的服务。 二、房源管理 1. 房源管理:点击主窗口左侧的"房源管理" →"房源管理"按钮,打开房源管理窗口,在此窗口中可以对房源进行添加、修改、删除、查询、导出、打印等,还可对每个房源进行客户自动匹配。对房源的添加方式如同在"日常管理"中的添加方式一样。在房源管理中点选某个房源后,在此窗口下半部分的"自动匹配的客户"中将显示与之匹配的客户。 2. 房源跟进:点击主窗口左侧的"房源管理" →"房源跟进"按钮,打开房源跟进窗口,此窗口分为跟进管理和跟进查询两部分,在跟进管理中通过查询房源可以定位对哪一个房源进行跟进,定位房源后在此窗口的下面部分可以对此房源进行添加、修改、删除、打印其跟进信息。在跟进查询部分可以对所有的房源跟进信息按关键字查询。及时掌握房源和客户的进展情况。 3. 成交管理:点击主窗口左侧的"房源管理" →"成交管理"按钮,打开成交管理窗口,此窗口分为成交管理和成交记录两部分,成交管理部分主要完成房源和客户的签约功能,成交记录部分是用来查询所有成交房源的详细信息。 ① 签约:首先在成交管理中查询到要签约的房源,定位房源后,点击成交管理窗口中的签约按钮,打开签约窗口。在此窗口中分为签约登记和提成分配两部分,在签约登记中选择客户类型(如果是已登记客户,真接输入客户编号就可显示出客户信息),填写实际的签约信息;在提成分配中对此次交易需要分配提成的员工进行登记分配比例,以便日后对员工提成进行查询。 ② 修改:对已签约的信息如果发现有误,可以用此功能进行修改。 ③ 合同:此功能主要用于保存传统纸制合同的电子版,以便为以后查找合同提供方便,使用此功能前需要在系统设置中设置合同样本文件,以使于此处使用。 4. 门店招贴:点击主窗口左侧的"房源管理" →"门店招贴"按钮,打开门店招贴窗口,此窗口主要提供招贴单的打印功能,可以选择不同区域的房源或具体到某个房源打印其招贴单,招贴单分小招贴单和大招贴单两种,应用于批量招贴和单个招贴。减少再人工制做招贴单时容易出现错误,并大大提高了工作效率。 三、客户管理 1. 客户管理:点击主窗口左侧的"客户管理" →"客户管理"按钮,打开客户管理窗口,在此窗口中可以对客户进行添加、修改、删除、查询、导出、打印等,还可对每个客户进行房源自动匹配。对客户的添加方式如同在"日常管理"中的添加方式一样。在客户管理中点选某个客户后,在此窗口下半部分的"自动匹配的房源"中将显示与之匹配的房源。 2. 客户跟进:点击主窗口左侧的"客户管理" →"客户跟进"按钮,打开客户跟进窗口,此窗口分为跟进管理和跟进查询两部分,在跟进管理中通过查询客户可以定位对哪一个客户进行跟进,定位客户后在此窗口的下面部分可以对此客户进行添加、修改、删除、打印其跟进信息。在跟进查询部分可以对所有的客户跟进信息按关键字查询。及时掌握客户和房源的进展情况。 3. 签约查询:点击主窗口左侧的"客户管理" →"签约查询"按钮,打开签约查询窗口,在此窗口中可以查询所有的签约信息,可以随时了解到每个客户和房源的签约详情。 4. 来电记录:点击主窗口左侧的"客户管理" →"来电记录"按钮,打开来电记录窗口。此窗口用来查询来电客户的内容,为员工对房源和客户的跟进提供有力的帮助。此功能需配合来电显示猫使用,如果装有来电显示猫,在客户来电时将自动弹出来电登记窗口,操作员可以将客户来电的内容记录下来,就可以在来电记录中查询客户的来电内容。 四、内部统计 1. 房源查询、客源查询:点击主窗口左侧的"内部统计" →"房源查询"按钮,打开员工业绩窗口,此功能主要用来查询本公司员工的业务情况,可以按时间、房屋状态、租售状态、员工编号来查询房源的情况,可以随时了解到公司员工的业绩,对岗位评定和业绩考核提供重要的数据指标。 2. 综合统计:点击主窗口左侧的"内部统计" →"综合统计"按钮,打开综合统计窗口,此功能主要按房源、客源、员工进行横向的一个统计,每项统计有配有相应的直方图。直观的反应出房源、客源、员工等各种属性的数量统计。为管理层业务分析和决策提供有力的信息。 3. 提醒管理:点击主窗口左侧的"内部统计" →"提醒管理"按钮,打开提醒管理窗口,在此窗口可以对提醒信息进行添加、修改、删除、导出、打印等操作,提醒管理主要作用就是起到一个备用录的功能,操作员可以将一些比较重要但又怕忘记处理的事情添加到提醒管理中,根据添加时设置的提醒条件到时系统会自动弹出提示窗口,以便及时提醒员工需要处理的任务,此功能的应用大大减少了漏做工作的事情发生,将宝贵的资源达到合理安排,充份利用的效果,减少员工冗余记忆的功能。 4. 提成明细:点击主窗口左侧的"内部统计" →"提成明细"按钮,打开提成明细窗口,此处的数据来自于"房源管理" →"成交管理"签约时进行的提成分配,在这个窗口可以查到所有员工的提成信息,省去了财务人员对员工提成的大量核算功能,减少了人工核算误差。每一笔明细都清晰的反应出当次提成所依据的签约合同、分成比例、分成金额、分成说明、交易佣金等相关信息。 5. 提成汇总:点击主窗口左侧的"内部统计" →"提成汇总"按钮,打开提成汇总窗口,提成汇总主要是把指定时间段内的员工提成按员工分别汇总,清晰的反映出每位员工在一定时间段内应得的提成金额。也是进行员工业绩评定的一个重要的参考指标。 五、系统设置 1. 公司信息设置:点击主窗口左侧的"系统设置" →"公司信息"按钮,打开公司信息窗口,在此处输入公司的基本信息,在招贴单中可以显示公司信息,也为以后功能升级需要显示公司信息的地方做好准备。 2. 员工管理:点击主窗口左侧的"内部统计" →"管理管理"按钮,打开员工管理窗口,在窗口中可以实现对公司员工的添加、修改、删除、查询等功能。在此添加的员工主要用于在进行置业顾问、提成分配、房源和客户的跟进的员工选择时使用。将公司的每笔业务和处理业务的员工关联起来,便于责任到人和业绩考核等。 3. 操作权限设置:点击主窗口左侧的"系统设置" →"操作权限设置"按钮,打开操作权限设置窗口,此窗口分为上下两下部分。上部分为权限组的管理,主要用于添加、修改、删除权限组;下半部分为操作员的管理,主要用于添加、修改、删除操作员。权限组可以根据公司的实际情况设置多个,然后在添加操作员时选择相应的权限组即可。操作员登录时即只能操作其可操作的权限。 4. 修改当前密码:点击主窗口左侧的"系统设置" →"修改当前密码"按钮,打开修改当前密码,此功能主要用于修改当前操作员的登录密码,旧密码输入正确后才能设置新的密码。 5. 合同样本设置:点击主窗口左侧的"系统设置" →"修改当前密码"按钮,打开合同样本设置,此功能主要用于指定一些格式化合同的存放路径,在签约时可以直接打开相应的合同文本。 6. 初始化数据:点击主窗口左侧的"系统设置" →"初始化数据"按钮,打开初始化数据窗口,在这里可以删除指定的数据,例如:开始使用本软件前可以先删除所有的信息,以便于重新录入本公司的一些房源和客户等信息。 7. 参数信息设置:点击主窗口左侧的"系统设置" →"参数信息设置"按钮,打开参数信息设置窗口,在这里您可以根据您的实际应用情况添加相应的参数据,这些参数涉汲了软件操作的整个流程,也是一些查询的关键条件,所以必须规范设置。 8. 系统操作日志:点击主窗口左侧的"系统设置" →"系统操作日志"按钮,打开系统操作日志窗口,在此可以查询到对数据的修改、删除等有损原始数据的操作,也是对操作员的一种监督。此窗口的数据自动产生,在此只需查询即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值