??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品久久人人爱,亚洲1234区乱码,亚洲天然素人无码专区http://m.tkk7.com/landy/archive/2012/07/08/382543.htmlq途书?/dc:creator>q途书?/author>Sun, 08 Jul 2012 08:46:00 GMThttp://m.tkk7.com/landy/archive/2012/07/08/382543.htmlhttp://m.tkk7.com/landy/comments/382543.htmlhttp://m.tkk7.com/landy/archive/2012/07/08/382543.html#Feedback0http://m.tkk7.com/landy/comments/commentRss/382543.htmlhttp://m.tkk7.com/landy/services/trackbacks/382543.html3.10 定pȝ需?/strong>

定pȝ需求即定pȝ用例。方法以Ҏ业务用例实现场景分析入,分析每个pȝActor的系l用例。每个系l用例一定是一个完整的事g,注意业务用例和系l用例的区别Q业务用例是一个完整的业务目标Q而系l用例是一个完整的事g,是业务目标中的一个环节,如客户代表申请开h一个完整的pȝ用例Q但不是一个完整的业务目标Q其包括多个面操作?/p>

 

3.11 用例实现分析

Ҏ个系l用例,识别其可能的实现路径Q每个实现\径就是一个用例实玎ͼ然后针对每个用例实现Q分析hZ互,使用zd囄制用例实现场景?/p>

 

3.12 分析模型

使用分析对象Q实现所有的用例实现场景Q识别出三种分析对象。在q个q程中,也可以徏立界面原型,和客戯一步达成需求的一致理解。分析模型是需求到设计的桥梁,分析cȝ层次高于设计实现Q需求通过分析c{成计机语言。后l做pȝ设计的时候,可直接将分析模型转换成设计模型?/p>

在考虑分析模型的过E中Q有可能识别Z些公共模块,比如开戗销戯E中都会有一些业务规则校验,需要引入规则引擎的支持Q那么类D则引擎这L公共模块需要添加到逻辑架构中去?/p>

 

3.13 非功能性需求设?/strong>

以性能Z讲一下对非功能性需求设计的q程?/p>

1、确定性能目标Q要支持多少用户、多在U用戗多ƈ发操作、操作响应时间要求等Q?/p>

2、以一个简单的三层架构v点,Ҏ性能目标Q识别瓶颈。比如,如果数据库撑不住Q那么需要考虑最佳的分库设计Q如果是逻辑层撑不住Q则要考虑负荷分担Q状态同步的逻辑层方案设计,如果操作响应旉要求很高Q则可根据不同场景,分析其操作的数据的读写特点,采用合适的~存Ҏ。如要支撑高q发低时延的大数据量查询QTwitter采用了垂直~存Qraw~存的设计方案?/p>

3、验证性能设计。抽取典型场景,实现一个prototype来验证性能设计是否满性能目标?/p>

在质量属性设计中Q如果需要新增模块,则需要修攚w辑架构?/p>

有一些约束类需求也是非帔R要的Q不能遗漏分析?/p>

l过q一个阶D,我们能够得到一个比较完整的逻辑架构Q运行架构、开发架构、物理架构、数据架构的输入了。剩下的工作是~档的工作了?/p>

 

3.14 架构~档

有了上面的工作作为铺垫,~档非常容易了Q这个就不细讲了?/p>

]]>
软g架构设计Q三Q?amp;mdash;—软g架构设计q程http://m.tkk7.com/landy/archive/2012/07/08/382527.htmlq途书?/dc:creator>q途书?/author>Sun, 08 Jul 2012 07:17:00 GMThttp://m.tkk7.com/landy/archive/2012/07/08/382527.htmlhttp://m.tkk7.com/landy/comments/382527.htmlhttp://m.tkk7.com/landy/archive/2012/07/08/382527.html#Feedback0http://m.tkk7.com/landy/comments/commentRss/382527.htmlhttp://m.tkk7.com/landy/services/trackbacks/382527.html3.4 分析业务用例场景

分别针对上节中业务用例视图中的每一个用例,分析该业务用例在实际工作中是如何做的Q一般用业务活动图来表qC务场景。在q个阶段Q有几点需要特别注意的地方Q?/p>

1、关注参与业务用例的各个参与者是如何协同的,如一个简化的用户开L程是填写营业员提交开戯?》主审批订?》施工h员行订单;

2、对一个业务用例,如果有不同的实现路径Q需要做不同的场景分析。例如,用户订购产品Q分|上订购和营业厅订购q两U场景,两个场景大不相同Q?/p>

3、场景的步骤_度Q用L一个完整操作目的,如用户开P则用户填写订单是一个步骤,而不用细化到用户取单、拿W填单等Q?/p>

 

3.5 产生业务对象模型

针对每个业务用例Q根据业务用例场景,分析该用例中涉及的业务实体,q绘制业务对象模型图?/p>

 

3.6 产生业务用例实现视图

业务用例实现指业务用例的一U实现\径,一个业务用例实现对应着一个业务用例场景。业务用例实现视图是表述业务用例实现的视图?/p>

 

3.7 分析业务用例实现场景

业务用例实现场景着重描q如何通过人机交互来完成业务,是业务用例场景的具体化。一般用zd图来表述人机交互程。这里每个步骤的_度是h与系l或pȝ与h的一ơ交互?/p>

3.8 领域建模

领域模型是描q特定问题域的对象及其相互关pR领域模型对业务对象做了q一步的_֌。领域徏模的步骤如下Q?/p>

1、确定问题域Q如CRM中的客户模型比较关键Q我们决定对其进行领域徏模,则需要将设计客户业务实体的用例全部识别出来;

2、领域徏模:逐一分析涉及到操作客h型的业务用例场景Q识别领域对象以及对象之间的关系Q?/p>

3、验证领域模型:使用序列图作为工PZ领域模型来编排实现各业务场景Q如果能实现Q证明领域模型ok?/p>

领域对象跟业务对象有区别Q我认ؓQ业务对象不是领域对象。业务对象来自于业务用例Q是业务中客观存在的Q而领域对象是对业务对象做q一步抽象、精化后的结果,是h对业务的主观认识Q这是Z么不同厂商的产品模型会不一L原因Q而且q不是所有的领域对象都是Ҏ业务对象分析而来的。比如,某CRM产品面向全球市场Q可定制能力是关键,为提升可定制性,需要构Z个快速开发框Ӟq个快速开发框架也是Y件系l的一部分Q也是有领域模型的,但是它的领域模型跟业务对象没半点关系?/p>

 

3.9 产生逻辑架构草稿

通过上述步骤Q我们已l有了部分领域模型,针对每一个可直接映射C务对象一U的领域对象Q可规划相应的业务模块,如有开戯单,那么可以有订单管理,有客L理等。业务模块的划分_度可依据大概的工作量而定Q保证最低别的业务模块的工作量是大致均匀的。这仅仅是一个徏议,可以Ҏ目的实际情况决定?/p>

Z上述的成果,我们q只能Z个逻辑架构的草E,因ؓ我们q没有分析质量属性,后箋对质量属性做设计的时候,q有可能会引入新的模块。比如要让业务流E可快速编排、定Ӟ我们希望引入工作,那么逻辑架构中也要引入一个工作流模块?/p>

 

待箋。。?/p>

]]>
软g架构设计Q二Q?amp;mdash;—软g架构设计q程http://m.tkk7.com/landy/archive/2012/07/04/382231.htmlq途书?/dc:creator>q途书?/author>Wed, 04 Jul 2012 14:28:00 GMThttp://m.tkk7.com/landy/archive/2012/07/04/382231.htmlhttp://m.tkk7.com/landy/comments/382231.htmlhttp://m.tkk7.com/landy/archive/2012/07/04/382231.html#Feedback0http://m.tkk7.com/landy/comments/commentRss/382231.htmlhttp://m.tkk7.com/landy/services/trackbacks/382231.html三、架构设计的q程

本hl历q不项目,一些项目的架构设计负责力很强,接到zM后,马上一头扎q设计,抽象Z堆玄玄乎乎的概念Q讲得h晕头转向的,让h觉得高深莫测Q但是,在会议上却被涉众提的一些简单的问题问得很仓促,I其ҎQ还是漏考虑了涉众的需求,被h提问而又~Z准备Q是不是很多人有cM的经验?Q)

我们q经帔R到的场景是设计h员通常Z些模型、概念争Z休,公说公的׃Q婆说婆的漂亮,其实模型概念q东西就像h的h生观和世界观Q是人对世界和h生的主观认识Q可能随着q龄阶段的变化而变化,而且有时候没有绝对的对与错,像有些人喜Ƣ金戈铁马,有些人喜Ƣ与世无争,我们很难说谁一定是对的一定是错的Q遇到这U清醒时Q我停下争论Q争论方各自拿出实际的业务场景来验模型,哪个模型对场景的满度更好,实现成本更低则更好,如果两个都挑不出刺儿Q随侉K一个即可?/p>

q有一些架构设计h员喜Ƣ创造一些与众不同的概念Q让人看上去昑־高深莫测。我觉得如果一个架构师能够用最的语言、文字把问题和方案讲清楚Q那才是真正的有水^Q你让h晕头转向的时间既是项目的成本Q因此,我们创造概念词汇的时候,需要从涉众的角度出发,我这里的意思不是盲从涉众语a词汇Q而是说出发点从涉众角度出发,如果涉众原本使用的语a不够准确Q我们可以跟他们一h讨,定义更合适的概念词汇?/p>

q有一个就是对软g竞争力的认识。有人通过包装一堆玄玄乎乎的概念来显得很高深莫测Q试N过q种方式让h觉得有竞争力Q我认ؓQ竞争力首先是要跟对手比Q其ơ一定是涉众能感知的Q能够涉众带来正向h值的Q比如省多少成本Q端到端业务程节约多少旉?/p>

我认为遵循一个科学的架构设计q程跟上提到的软g架构4+1视图法是架构设计的两个法宝,一个指导思维、定义输出,另一个指导如何来做,相辅相成Q确保架构设计h员全面而正的理解需求,做好需求^衡、设计^衡,设计出实用的、能落地的架构?/p>

下面我会按顺序讲解架构设计的q程Q以及每个步骤具体要做的事情?/p>

3.1 定涉众

      一般来Ԍ涉众包括客户Q资方)、承接方Q劳方)、用戗我们通常扑ֈ代表某一cd的涉众群体的代表人:客户代表、劳方代表、用户代表等。访谈的时候直接找代表q行?/p>

3.2 定pȝ边界

      对于要明实现某U标准的软gpȝQ通常定边界非常ҎQ直接按标准圈定的scope分析卛_Q比如像SIPServlet容器Q是要求遵从JSR168规范的,那么软gpȝ的Scope是JSR168规定的ScopeQ但是也有例外,比如客户或者劳Ҏ指定要复用一个现有的实现了部分功能的pȝ或组Ӟ那么Scope׃同了。对于没有标准的软gpȝQ就需要分别访谈客户代表、承接方代表定pȝ边界。ؓ什么要访谈承接方代表呢Q因为承接方代表往往是劳斚w|领导肩负企业战略达成的命,很有可能对系l提出比客户更多的要求。D个例子,某客户需要一个SIP通信协议栈,以实C斚w话的业务,但是x领导认ؓQ后lICT融合是趋势,我们构徏的系l要支持ICT融合应用部v和运行,支持业务标准JSR168规范?/p>

3.3 软g需求收?/strong>

      软g需求可分ؓ二类Q?/p>

      功能需求(即业务用例)Q描qActorQ用hpȝQ可Z软gpȝ做什么事Q要W合什么业务规则;

      非功能性需求又可分Zc:

      质量属性:质量属性指软gpȝ的品质,可分行期质量属性与开发期质量属性?/p>

        q行期质量属性包?/p>

      Q?Q性能Q性能是指软gpȝ及时提供相应服务的能力。具体而言Q性能包括速度、吞吐量和持l高速性这三方面的要求?br>  Q?Q安全性:指Y件系l同时兼֐合法用户提供服务Q又L非授权用功能的能力?br>  Q?Q易用性:指Y件系l易于用的E度?br>  Q?Q可用性:可用性与易用性不相同。可用性指pȝ长时间无故障q行的能力?br>  Q?Q可伸羃性:指当用户增加Ӟ软gpȝl持高服务质量的能力?br>  Q?Q互操作性:指本软gpȝ与其他系l交换数据和怺调用服务的难易程度?br>  Q?Q可靠性:软gpȝ在一定时间内无故障运行的能力?br>  Q?Q健壮性:也称定w性。是指Y件系l在异常情况仍能够正常运行的能力?/p>

       开发期质量属性包括:

   Q?Q易理解性:是指pȝ设计能被开发h员理解的难易E度?br>  Q?Q可扩展性:为适应新需求或者需求变化,Y件增加功能的能力。有些时候,UC为灵zL?br>  Q?Q可重用性:重用软gpȝ或其中一部分的能力的难易E度?br>  Q?Q可试性:对Y件测试以证明其满需求规U的难易E度。在实际的项目中Q主要指q行单元试{难易程度?br>  Q?Q可l护性:修改BugQ增加功能,提高质量属性?br>  Q?Q可UL性:Y件系l从一个运行环境{Ud另一个不同的q行环境的难易程度?/p>

      U束Q规定开发Y件系l时必须遵@的限制条Ӟ如要Z什么操作系l,要基于什么开发语a{等?/p>

      对于功能需求,可找pȝ的直接用用户代表,对其q行访谈Q收集其要基于系l做的事情,可按照标准的用例模板Q在访谈的过E中引导用户代表。之后,l制业务用例视图Qƈ针对每个业务用例Q用标准的用例模板功能需求编档,通常叫用例规U?/p>

      对于非功能性需求,可找软gpȝ的涉众,依据下面的模板,引导涉众Q收集其对相应质量属性的要求Q?/p>

image image image

ȝQ本阶段需要输Z务用例视图,业务用例规约Q非功能性需求?/strong>

待箋。。?/strong>



]]>
软g架构设计Q一Q?amp;mdash;—软g架构的概念和表述http://m.tkk7.com/landy/archive/2012/06/28/381743.htmlq途书?/dc:creator>q途书?/author>Thu, 28 Jun 2012 15:29:00 GMThttp://m.tkk7.com/landy/archive/2012/06/28/381743.htmlhttp://m.tkk7.com/landy/comments/381743.htmlhttp://m.tkk7.com/landy/archive/2012/06/28/381743.html#Feedback0http://m.tkk7.com/landy/comments/commentRss/381743.htmlhttp://m.tkk7.com/landy/services/trackbacks/381743.html做了好几q架构设计的事了Q一直没有好好的ȝ。实在不好,q旉ȝ一下,写出来,有兴的朋友可以一h讨?/p>

软g架构设计的主题狠q难,本文打算从架构的概念Q架构的表述ҎQ架构设计的q程三个斚w来讲一下我的理解?/p>

一、什么是软g架构Q?/strong>

      温昱在《Y件架构设计》一书中Q给了下面的定义Q?/p>

      l合z:软gpȝ的架构将pȝ描述组件及lg之间的交互?br>      决策z:架构是一pd重要决策的集合,q些决策与以下内Ҏ养I软g的组l,构成pȝ的结构元素及其接口的选择Q这些元素在怺协作中明表现出的行为,q些l构元素和行为元素进一步组合所构成的更大规模的子系l,以及指导q一l织--包括q些元素及其接口、它们的协作和它们的l合--架构风格?/p>

      在我看来Q决{派的定义更为具体和准确Q注意决{派用了元素q一词而没有用lgQ组件是有具体含义的Q指一个可独立替换的物理单元,而架构需要能够指导涉众,如开发h员、用戗部|h员等{,对开发h员来Ԍ开发过E中如何分包、如何将包打包ؓlgQ架构师需不需要提供指导呢Q答案是肯定的。因此,如果架构限定在lg和组件的交互上,是不完整的?/p>

二、架构的表述Ҏ

     q个现在都有pQ就?+1视图表述法:逻辑视图Q实现视图,q程视图Q部|视图,用例视图?参见下图RUP 4+1视图Q?

82250175980 

      用例视图xpȝ的h、事、物、规则,人是指系l的ActorQ包括业务主角和业务工hQ事是指pȝ用例Q物是指业务实体Q规则指做事情的前置条g、后|条Ӟ做事情过E中的规则。下面这个图很精辟:

  image

      用例视图?+1视图中的+1Q它定义需求标准,跟其它视图描q系l某一斚w的结构有很大的不同?

      逻辑视图xpȝ的逻辑功能模块和领域模型,不仅包括用户可见的功能模块,q包括实现用户功能而必L供的“辅助功能模块”;它们可能是逻辑层、功能模块、类{?

      实现视图xE序包,不仅包括要编写的源程序,q包括可以直接用的W三方SDK和现成框架、类库,以及开发的pȝ运行于其上的系lY件或中间件。开发架构和逻辑架构之间可能存在一定的映射关系Q比如逻辑架构中的逻辑层一般会映射到实现架构中的多个程序包Q再比如实现架构中的源码文g可以包含逻辑架构中的一到多个类Q在C++里一个源码文件可以包含多个类Q即使在Java里一个源码文件也可以同时包含一个类和几个内部类Q?

      q程视图xq程、线E、对象等q行时概念,以及相关的ƈ发、同步、通信{问题?

      q程视图和实现视囄关系Q实现视图一般偏重程序包在编译时期的静态依赖关p,而这些程序运行v来之后会表现为对象、线E、进E,q程视图比较x的是q些q行时单元的交互问题?

      物理视图x“目标程序及其依赖的q行库和pȝ软g”最l如何安装或部v到物理机器,以及如何部v机器和网l来配合软gpȝ的可靠性、可伸羃性等要求。物理架构和q行架构的关p:q行架构特别x目标E序的动态执行情况,而物理架构重视目标程序的静态位|问题;物理架构q要考虑软gpȝ和包括硬件在内的整个ITpȝ之间是如何相互媄响的?

      上面几个视图是最典型的视图,不管你是通信中间Ӟq是依赖于数据库的企业应用都需要的。对于依赖数据库的企业应用,通常q需?strong>数据视图Q数据视?/strong>x对象如何存储Q如数据库表{?strong>?/strong>

       4+1视图不仅仅是软g架构的表q方法,它们各自从不同的视角d现架构,因此Q还是一U比较好的思维方式Q引导我们从不同的视角去思考,从而做出比较系l的架构设计?/p>

]]>
参与需求调研后的思?/title><link>http://m.tkk7.com/landy/archive/2012/06/26/381548.html</link><dc:creator>q途书?/dc:creator><author>q途书?/author><pubDate>Tue, 26 Jun 2012 13:52:00 GMT</pubDate><guid>http://m.tkk7.com/landy/archive/2012/06/26/381548.html</guid><wfw:comment>http://m.tkk7.com/landy/comments/381548.html</wfw:comment><comments>http://m.tkk7.com/landy/archive/2012/06/26/381548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/landy/comments/commentRss/381548.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/landy/services/trackbacks/381548.html</trackback:ping><description><![CDATA[<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">刚在某客户做?个月的需求调研,亲自体验了需求调研的q程Q有一些感惻Iȝ下来?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">客户斚w备了BA和SAQBA是业务专ӞSA是技术专Ӟ负责输出一个描qC务需求文档XXXSQ将程和需求都记述在该文档中,和大多数客户一P客户的优势在于对他们的业务比较了解,但是对于如何L象业务,比较pȝ的把他们的业务需求归U_ƈ描述下来Qƈ不擅长,臛_很多Z擅长Q这导致客h的XXXS文档中通常是一些需求片D和样例?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">我方对一个topicQ分配了SA和BAQ其中SA负责技术方案,而BA负责理解业务q澄清业务,topic的输Zg有XXD和XXSQXXD主要记述业务程和topicU的solutionQXXS主要记述pȝ的功能?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">XXD中的业务程Q准的来讲Q应该改名叫pȝ程Q是讲述业务功能操作是如果由解决Ҏ各个内部子系l及外部pȝ协同完成的。这其中的actor是系l,因此Q是从系l的角度来描q的?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">XXXS中,模板像系l用例文档,但是里面的一个个单元是叫功能Q功能与用例的差别就是,一个是从系l的角度出发Q一个是从ActorQ即用户Q的角度出发Q对每个功能Q有功能描述Q功能的前置条g、后|条件、功能的用户角色、业务规则,输入规格Q输|如果涉及到界面,有界面原型。具体的内容Q通常pre-condition是千一律的Q如用户必须已登录什么的Q后|条仉常是结果,而角色通常是一个很泛的一个ȝQ比如在厨房q活的分切菜的,炒菜的,l称厨子Q?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">对于客户Ҏq的不清楚或者只描述了几个片D|例子的需求,我们采用prototype的方式,先按照自q理解做prototypeQ然后给客户LC,由客h军_是否W合他们要求?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">是不是看上去很完?</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">再看看几个问题:</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题一Q对客户方的某个需求,我方一直不理解客户方ؓ什么会提这么怪异的需求,觉得不可思议Q而客h一直坚持要q个功能Q?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题二:客户方ƈ不具备多么深厚的业务抽象功力Q我们自己通过蒙着眼睛摸象的方式作出原型给客户方评审,客户方say okokQ不ok׃okQ客h不会犯错误吗Q客h会照你其它客户的需求吗Q我们拒l客h的理由通常是实C了,或者工作量太大。我们绝大多Ch没法使用客户的业务语a告诉客户Q你的目的是什么,你要求怎么来做Q这样做有什么样的坏处,我徏议这么做Q这么做能获得什么样的好处?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题三:我们把一些业务角色用的功能和运lh员用的功能攄于一个界面中Q从功能上来Ԍ我们可以自豪的告诉客P我们实现了你要的功能?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">。。?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">我相信我了解到的问题l不是全部,q有很多我不知道的问题?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">对这U状况,我逐一分析了一下原因:</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题一Q因为我们理解的业务概念跟客L解的客户概念不一P虽然我们叫的是同一个名词,但实际上q不是同一个东西,从而导致我们觉得客h的要求匪h思;</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题二:我可以说Q其实我们的做法是去摸清楚客戯什么,但没有去理解他ؓ什么要Q?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">问题三:很明显,我们实现了功能,但忽略了功能的用者是谁;</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">q一切的Ҏ是什么?我认为,q根源是我们一直从pȝ的角度去思考问题,思考我们的pȝ功能Q思考我们的pȝ程Q对一个经验丰富的专家来讲Q也怼考虑的比较全面,但绝大多Ch往往是重视了功能的描qͼ而且描述是基于我方的语言Q忽略了功能的用P而我们没有一个万能的客户和万能的专家帮我们指Z付g的所有的问题?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">即便是我们成功交付了一个系l,我们q是没有消化客户Z么要q么做的原因Q对业务pȝ来讲Q这是最核心的hg一?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">我们要怎么改?我的是:</div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">1?strong>加入</strong>?#8220;用户需求背?#8221;的调研,即真正的“业务调研”Q在q个阶段的主角是BAQBA是业务专Ӟ对IT技术不熟,q是他的优势Q这个阶D늚输出件要包括客户的业务架构,包括l织l构Qh员角Ԍ业务程Q是各业务h员如何协同来完成工作Q跟pȝ程有本质区别)Q业务模型(用户做的事情中涉及到的一些概念,q里指纯业务概念Q客戯感知的,非系l概念)。经q这个阶D,我们应该能明白客户ؓ什么会提这个那个需求,能够有效避免因ؓ客户的片面和狭隘D我们跟着片面和狭隘,q且我们知道了客戯的概念A是指什么,概念B是指什么,跟我们^常所说的有什么不同?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">2?strong>扭{</strong>“功能分析”的角度,׃pȝ的角度分析{变成qL角度分析。把功能变成用户Zpȝ所做的操作分析Q系l用例)Q首先搞清楚是谁Q然后是要基于系l做什么事情,有什么业务规则,前置条g和后|条件是什么,再次是系l通过什么样的界面或接口来支持。输出的内容看似都差不多Q但因ؓ是从用户的角度出发分析的Q提供的功能自然会更贴用L心?/div> <div style="padding-bottom: 5px; text-indent: 15px; margin-top: 14pt; margin-right: 0px; margin-bottom: 14pt; margin-left: 0px; ">3、我们要明白一个基本原则,业务架构是不依赖于ITpȝ存在的,ITpȝ是规范业务运作和提升业务效率的工PITpȝ中的软g概念是业务概念在软gpȝ中的投媄Q千万不能从技术的角度出发Q视囑֎重定义业务概c?/div></div><img src ="http://m.tkk7.com/landy/aggbug/381548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/landy/" target="_blank">q途书?/a> 2012-06-26 21:52 <a href="http://m.tkk7.com/landy/archive/2012/06/26/381548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一?amp;ldquo;订单&rdquo;引发的思?/title><link>http://m.tkk7.com/landy/archive/2012/06/24/381377.html</link><dc:creator>q途书?/dc:creator><author>q途书?/author><pubDate>Sun, 24 Jun 2012 08:29:00 GMT</pubDate><guid>http://m.tkk7.com/landy/archive/2012/06/24/381377.html</guid><wfw:comment>http://m.tkk7.com/landy/comments/381377.html</wfw:comment><comments>http://m.tkk7.com/landy/archive/2012/06/24/381377.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/landy/comments/commentRss/381377.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/landy/services/trackbacks/381377.html</trackback:ping><description><![CDATA[<p>某司CRM产品Q认业务程的业务才是订单。按照这U理解,退货,换货是订单,而充g是订单?/p> <p>I竟什么是订单?</p> <p>订单作ؓ一个业务Actor皆可感知的重要业务实体,其是qITpȝ而存在的QITpȝ所做的仅是其在Y件系l中以对象的形式表现出来Q不能依据系l实玎ͼ改变订单的定义。要正确的给订单下定义,d掉ITpȝQ从业务的角度给出定义?/p> <p>企业一般会有售前,售后Q销售,服务{部门,而订单是产生在销售活动中的,表示客户对企业品或服务的一ơ订购。依此理解,退换货是服务,不是订单Q而充值是订单。走不走程Q仅仅是订单实施的方式?/p> <p>q个案例告诉我们Q系l的业务模型Q要从业务的视角来徏QITpȝ是将业务模型用Y件概忉|表述Q不能改变业务概c?/p><img src ="http://m.tkk7.com/landy/aggbug/381377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/landy/" target="_blank">q途书?/a> 2012-06-24 16:29 <a href="http://m.tkk7.com/landy/archive/2012/06/24/381377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何定用例和场景的优先U?/title><link>http://m.tkk7.com/landy/archive/2012/05/11/377858.html</link><dc:creator>q途书?/dc:creator><author>q途书?/author><pubDate>Thu, 10 May 2012 20:56:00 GMT</pubDate><guid>http://m.tkk7.com/landy/archive/2012/05/11/377858.html</guid><wfw:comment>http://m.tkk7.com/landy/comments/377858.html</wfw:comment><comments>http://m.tkk7.com/landy/archive/2012/05/11/377858.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/landy/comments/commentRss/377858.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/landy/services/trackbacks/377858.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><br />在做需求分析时Q特别是在设计分析用例模型时Q很多h可能到q这L问题Q如何准划分优先Q根据我的经验,一般需求分析h员对用例的优先划分上没有具体的原则和标准,往往跟着感觉赎ͼ要么是客戯为重要的Q急着要实现的功能Q优先񔞮高Q当然也很重要。对于什么关键用例,什么重要用例,什么是辅助用例或一般用例,都没有具体分得很清楚Q因Z们觉得优先的都重要,反正都是要开发的Q客戯什么功能最急需要,那么完成它Q其余所有用例都Z般用例?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">其实我也很赞成这部分人的观点Q主要是l合实际目Q这U情况太普遍了,所以往往只区分重要和非重要来得更方便。不q既然RUP以及软g工程的需求分析阶D都有这么个概念Q而且对用例(场景Q类Q都分ؓ三个{Q关键(首要Q,重要Q其ơ)Q辅助(不错Q。那么ؓ了准理解,q在目中应用,我个为理解清晰它Q也q是有必要的。而最重要的是掌握其划分原则。最q参加了些需求分析方面的培训Q也了解了一些不同h的观点,l合RUPl出的解释,我做了些ȝ?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">下边说说我的理解。因为用例,场景Q类都有q三个等U划分,所以ؓ了解释方便,下边直接通过用例说明问题?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><strong style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">W一 关键Q或首要Q用?/strong><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">RUP中解释是q样的:该等U的用例于系l的首要dQ基本功能以及待开发的功能有关。如果这些关键用例缺失,pȝ无法完成首要Q务。他们还促进架构设计Q而且往往是最频繁使用的用例。其实这个理解很好懂Q我也比较赞成,一句话是pȝ必不可少的功能,如果把系l无限羃,C能再~小了(再羃系l都无法使用了)Q这时剩下的用例是关键用例。而关键需求决定架构,所以这些关键用例往往Ҏ构设计的影响是很大的。所以分析用例模型时要特别重视关键用例的识别。有时候不能直接听客户所谓的优先U高的用例。因为客户不懂系l实玎ͼ他们只关注功能,不关注你如何设计Q如何分析。当然他们提的优先功能固然不可不重视Q但是我们不能局限于q些Q我们需要认真分析,把那些客为非优先Q但是通过分析Q我们认为确实是关键需求的用例扑և来,否则以后{用户去发现q些“关键用例”Q然后再提需求变更就ȝ了,因ؓ原来的关键需求识别上没有做好Q现在要变更需求,可能影响到架构,搞不好系l整个都要整改,那就ȝ了。我的识别方法时Q客L中的“优先”功能 + pȝ最实现的功能。把握了q个原则Q识别关键用例还是不隄?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><strong style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">W二 重要Q或其次Q用?br /></strong><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">RUP中的解释是这LQ?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">该等U的用例于系l功能的支持有关Q比如统计数据编译,报告生成Q监督和功能试{。如果他们缺失,pȝ仍然可以再一定时间内完成基本dQ但服务质量所有下降。这cd能其实相比之下不太好识别Q因为特征不够明显,不过识别原则q是很清晎ͼ是与系l功能的支持有关。比如常见的pȝ的用L理模块,理模块Q系l分cL块等Q都是ؓ了支持整个系l其他关键用例服务的。没有他们系l还是可以用Q但是相对质量不高。这c重要性用例的识别Q我的方法时抓住一?#8220;支持”2字的理解比较好识别了,分析多了Q就自然有了感觉Q而且Q结合关键用例和辅助性的用例的分析,用排除法也可以分析得更加准?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><strong style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">W三 辅助性(一般)用例</strong><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">RUP中的解释是这LQ?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">q些用例和类着重舒适性的功能 Q与pȝ的主要Q务无养I但有助于pȝ的用和市场定位。我的理解,一句话Q就是系l扩展的功能Q生动一点说Q就是锦上添q功能。根据这个特征,q列用例q是比较好识别的?/span><br style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; " /><span style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">ȝQ一般来_不同{的用例对架构的媄响程度跟他们的关键程度是成正比的。但是也应该明确Q有些关键用例没有或基本没有影响力,反过来也是一P某些辅助性的用例可能对系l架构生比较大的媄响。所以,Ҏ论的东西没有l对的正,只是利用q些理论分析相对有效。呵呵,在现实中l常发现Q爱因斯坦真了不P相对论用途那么广泛,有时不自觉感受到其存在了Q而在学生时代q远理解不到q个层次.</span> <br />转蝲自:<a >http://blog.csdn.net/chuan122345/article/details/5167035</a><img src ="http://m.tkk7.com/landy/aggbug/377858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/landy/" target="_blank">q途书?/a> 2012-05-11 04:56 <a href="http://m.tkk7.com/landy/archive/2012/05/11/377858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>业务建模一般步骤和Ҏhttp://m.tkk7.com/landy/archive/2012/03/24/372626.htmlq途书?/dc:creator>q途书?/author>Sat, 24 Mar 2012 13:46:00 GMThttp://m.tkk7.com/landy/archive/2012/03/24/372626.htmlhttp://m.tkk7.com/landy/comments/372626.htmlhttp://m.tkk7.com/landy/archive/2012/03/24/372626.html#Feedback3http://m.tkk7.com/landy/comments/commentRss/372626.htmlhttp://m.tkk7.com/landy/services/trackbacks/372626.htmlhttp://hi.baidu.com/parryblog/blog/item/2d1ae59a72b043bcc9eaf4a0.html 
本篇开始之前先扯点闲话Q商业应用系l开发经历了三个阶段Q?br />  W一个阶D以计算Z心,分析设计围绕E序的运行效率,法优劣Q存贮优化来q行?0q代的大学课E讲的都是这些?br />
  W二阶段以数据ؓ中心Q分析设计围l数据流q行Q以数据程来模拟业务流E。这也就是所谓的面向q程的分析模式?br />
  W三阶段以hZ心,分析设计围绕人的业务需求,使用要求Q感受要求进行。这也就是现在的面象对象分析模式?br />
  使用OOҎ建立商业模型必须先定义涉众。商业系l无论多复杂Q无Z么行业,其本质无非是人,事,物,规则。h是一切的中心Qh做事Q做事生物Q规则限制h事物。h驱动pȝQ事体现q程Q物记录l果Q规则则是控制。无论OO也好QUML也好Q复杂的表面下其实只是一个简单的规则Q系l分析员弄明白有什么hQ什么h做什么事Q什么事产生什么物Q中间有什么规则,再把人,事,物之间的关系定义出来Q商业徏模也基本完成了。这时候可以说Q系l分析员已经完全了解了用户需求,可以q入pȝ建模阶段了?br />
  书归正传Q上笔者归U了一些典型的涉众cd及他们的普遍期望。接下来Q就是要他们这些期望定义出来。这个过E,是业务用例获取的过E。笔者可以跟大家分n的经验是通过以下步骤q行Q这些步骤ƈ非唯一正确Q对于经验不多的pȝ分析员来_q些步骤很有指导意义?br />
  W者做了一个徏模实例,有需要有读者请到笔者的BLOG资源中心下蝲Q实例以上一所q网上图书馆需求ؓ蓝本建立了业务用例模型,之后的概忉|型、系l模型则抽取了其中的借阅q程作ؓ例子。不记得了可以后头找找?br />
  建模W一步,从涉众中扑և用户。ƈ定义q些用户之间的关pR在ROSE中,应该使用business actor cd。参考上一的需求描qͼ下蝲实例

W二步,扑և每个用户要做的事Q即业务用例Q在ROSE中应使用Business use casecd。请参考《用例的cd与粒度》一文以帮助定用例的粒度。笔者强烈徏议ؓ每一个business actorl制一个业务用例图Q这能很好的体现以hZ心的分析模式Qƈ且不Ҏ漏掉business actor需要做的事。至于以参与者ؓ中心的视囑֮易漏掉某个业务用例的参与者的担心Q可以在W四步中得到消除。下载实?br />
  W三步,利用业务场景囑ָ助分析业务流E,在ROSE中,q个阶段最好用活动图Activity diagram。在q个阶段Q业务场景图非常重要Q在l制q程中,pȝ分析员必采用第一步中定义的用户名字作为泳道名Q用第二步中定义的业务用例名作为活动名来绘制。必这么做的原因是Q如果你无法把利用已l定义出来的 business actor ?business use case完备的描l业务流E,那么一定是前面的定义出问题了,你需要回头审视是?business actor ?business use case定义不完善或错误。如果不是所有的business actor ?business use case 都被用到Q要么应该检查业务流E调研时漏了什么,要么应该查是否定义了一些无用的business actor ?business use case 。同Ӟl制业务场景图也非常有助于选择合适的用例_度q保持所有的用例都是同一_度。下载实?br />
  W四步,l制用例场景图。与业务场景图不同的是,用例场景囑֏针对一个用例绘制该用例的执行过E。笔者仍然强烈推荐用activity diagram。在用例场景囄l制中,必须使用W一步中定义的业务用户作为泳道。必这么做的原因是Q它能帮助你发现在定义业务用例图时的错误Q比如是否漏掉了某个业务用例的潜在用者。不是每个业务用例都需要绘制场景图Q只有两三个步骤的业务用例是不必一定绘制业务用例图的,但仍焉要在业务用例规约文档中写明。下载实?br />
W五步,从第三步或第四步中绘制的zd图中扑ֈ每一步活动将使用到的或生的l果。这是找到物的过E。找到后Q应当徏立这些物之间的关pR在ROSE中,q称Z务实体模型。应该用business entity cd。下载实?br />
  W六步,在上q过E中Q随时补充词汇表Glossary。将此过E中的所有业务词汇,专业词汇{一切在建模q程中用到的需要解释的名词。这份文档将成ؓ模型建立Z读者就模型达成一致理解的重要保证?br />
  W七步,Ҏ上一中提到的业主,老板{涉众的期望审视建立好的模型Q确定业务范_军_哪些业务用例在系l徏设范围内。那些不打算U_范围内的业务用例有两U情况,一U是该业务用例是被调用一方,那么应该把它改ؓ boundary cdQ意味着来它是一个外部接口。另一U是该业务用例主动调用系l内业务用例Q那么应该将它改为business actorcd。与普通business actor不同的是Q由业务用例转换而成的business actor不是人,而通常是一个外部系l进E,因此应该在被调用的系l内业务用例与它之间增加一个boundary元素Q意味着我们的系l将样一个外部进E提供一个接口。严格来_那些需要纳入徏设范围的business use case 应当对应的生成一?business use case realizationQ?以后的设计工作将归纳到这些实现用例中。但W者觉得这一步ƈ非很关键的,实际中本Zl常省略q一步,而将协作图,象活动图Q类交互囄直接在business usecase下说明。不q本实例中笔者还是按照正规方法来建模的。下载实?br />
  需要说明的是,上述的步骤ƈ非一ơ性完成的Q在每一个步骤中都可能导致对以前步骤的调整。即使徏模已l完成,当遇到变化或发现新问题时Q上q步骤应当从头到ֆ执行一ơ。这也是RUP倡导的P代开发模式?br />
l过以上的步骤,我们已经建立了一个完整的业务模型。但q决不是建模工作的全部,以上q程只说明了建立一个完整业务模型的q程Q不能说q样徏立了一个很好的业务模型。因Zq的q程中ƈ没有提及业务分析q程。分析过E全凭系l分析员的经验,对OO的理解和对行业业务的把握能力Q对原始业务模型q行归纳Q整理,抽象Q重构,以徏立一个更高效Q合理,扩展性更强的模型。这个过E无法以步骤说明。或总后笔者会专门针对模型分析写点东西。另外除了模型,q至需要写业务架构文档、用例规U和补充用例规约三种文档。因为模型虽然可以较好的体现业务架构Q但很不好表达业务规则和非业务需求,q些需要在文档中说明。例如用例的前置条g和后|条件就是一U业务规则。读者可以在RUP文档中找到这些文档的模板?img src ="http://m.tkk7.com/landy/aggbug/372626.html" width = "1" height = "1" />

]]>
վ֩ģ壺 ޾ѡ߹ۿ| ޹v߹ۿ| ۺƵ| 69avѹۿ| ëƬƵ| ƷѲ| ޹˱ɫ| www.һ| 99Ƶ| ޹˾Ʒԭ| 99þĻƷ| ޹Ʒ˾ƷС˵ | þþþavרѿ| ߻ɫӰ| ۺͼƬС˵Ⱦþ| 99һ| ɫƷVRһ| ؼƬѿ| avվ߿| þ޹| 99Ʒ| ŷպ޾Ʒ| ޾Ʒ߹ۿ̬ͼ| һng| þþƷަvDz| ڵƵ | ƷƵ| ߹ۿ| ձѹۿ| AVһɫ| Ļ߹ۿ| žƷƵ| vaѾƷ| ޳avƬ| AV벻߹ۿ| xxxxxƬƵ| þ޾Ʒgv| AVպAVþ| ëƬƵ| òƵѿ| ۺ͵Ļ|