??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲每日在线,岛国av在线一区,精品国产一区二区三区久久狼5月http://www.aygfsteel.com/RongHao/category/25324.html勤学、勤?/description>zh-cnTue, 04 Sep 2007 17:27:38 GMTTue, 04 Sep 2007 17:27:38 GMT60- UML_a(b)学习(fn)W记Q四Q?/title>http://www.aygfsteel.com/RongHao/archive/2007/09/04/142703.htmlronghaoronghaoTue, 04 Sep 2007 09:38:00 GMThttp://www.aygfsteel.com/RongHao/archive/2007/09/04/142703.htmlhttp://www.aygfsteel.com/RongHao/comments/142703.htmlhttp://www.aygfsteel.com/RongHao/archive/2007/09/04/142703.html#Feedback0http://www.aygfsteel.com/RongHao/comments/commentRss/142703.htmlhttp://www.aygfsteel.com/RongHao/services/trackbacks/142703.html
最关键的Y件开发工h受过良好设计原则训练的思维Q而不是UML或其他Q何技术?br />
RDD是思考OO软g设计的一般性隐喅R把软g对象惌成具有某U职责的人,他要与其他h协作以完成工作。RDD使我们把OO设计看作是有职责对象q行协作的共同体?br />
分配职责的基本模式是GRASP?br />
创徏者模?br />
问题Q谁创徏cA的实例?
Q如果以下条件ؓ(f)真时Q越多越好)Q将创徏cA实例的职责分配给cBQ?br />
1、B“包含”或组成聚集了A?br />
2、B记录A?br />
3、B紧密的用A?br />
4、BhA的初始化数据?br />
首选聚集或包含A的类B?br />
注意QA和B指的都是软g对象而不是领域模型对象?br />
忌Q对象的创徏常常h相当的复杂性。在一些情况下Q更适合使用工厂?br />
信息专家模式
问题Q给对象分配职责的基本原则是什么?
Q把职责分配l具有完成该职责所需信息的那个类。把职责和数据置于一处,把服务与其属性置于一处?br />
忌Q相比较而言pȝx更ؓ(f)重要Q设计要分离主要的系l关注。例如:(x)领域对象加入持久化逻辑成ؓ(f)充血模型Q这把应用逻辑与数据库逻辑混合h了(不良设计Q?br />
低耦合模式
问题Q如何减因变化产生的媄响?Q高耦合q不是问题所在,问题是与某些斚w不稳定的元素之间的高耦合Q?br />
Q分配职责以使(不必要的Q耦合保持在较低的水^。(信息专家模式支持低耦合Q?br />
控制器模?br />
问题Q在UI层之上首先接受和协调pȝ操作的对象是什么?
Q把职责分配l能代表下列选择之一的对象:(x)
1、代表全?#8220;pȝ”?#8220;根对?#8221;、运行Y件的讑֤或主要的子系l(外观控制器的变体Q?br />
2、代表发送系l操作的用例场景Q用例或?x)话控制器)?br />
高内聚模?br />
问题Q怎样使对象保持有内聚、可理解和可理Q同时具有支持低耦合的附加作用?
Q职责分配应保持高内聚。委z职责。内聚性低的类通常表示大粒度的抽象Q或承担了本该委托给其他对象的职责?br />
多态模?br />
问题Q如何处理基于类型的选择Q如何创建可插拔的Y件构Ӟ
Q当相关选择或行为随cdQ类Q有所不同Ӟ使用多态ؓ(f)变化的行为类型分配职责。不要测试对象的cdQ也不要使用条g逻辑来执行基于类型的不同选择?br />
l验Q如果有一个具有抽象超cC1的类层次l构Q可以考虑对应于C1中的公共Ҏ(gu)特征标记来定义接口I1Q然后声明C1来实现接口I1?br />
U虚构模?br />
问题Q当q不惌背高内聚和低耦合或其他目标,但基于专家模式的Ҏ(gu)又不合适时Q哪些对象应承担q一职责Q?br />
Qh为制造类Q由该类来承担一l高内聚的职责。该cdƈ不代表问题领域的概念-是虚构的事物。例如DAO
U虚构通常Z相关的功能性进行划分,因此q是一U以功能Z心的对象?br />
间接性模?br />
问题Qؓ(f)了避免两个或多个事物之间的直接耦合Q应该如何分配职责?
Q将职责分配l中介对象。例如,Adapter
间接性的动机通常是ؓ(f)了低耦合Qƈ且大多数间接性中介都是纯虚构的?br />
防止变异模式
问题Q如何设计对象、子pȝ和系l,使其内部的变化或不稳定性不?x)对其他元素产生不良影响Q?br />
Q创建稳定的接口?br />
不要和陌生h讲话Q约束了应该在方法里l哪些对象发送消息。它要求在方法里Q只应给以下对象发送消息:(x)
1、this对象Q自w)
2、方法的参数
3、this的属?br />
4、作为this属性的集合中的元素
5、在Ҏ(gu)中创建的对象
典型q反该原则的例子Q?F f=foo.getA().getB().getC().getD().getE().getF();
命o(h)-查询分离原则Q?br />
执行动作Q更新、调_(d){等Q的命o(h)Ҏ(gu)Q这U方法通常h改变对象状态等副作用,q且是void的(没有q回|?br />
向调用者返回数据的查询Q这U方法没有副作用Q不?x)永久性地改变M对象的状态?br />
关键在于Q一个方法不应该同时属于以上两种cd?br />
在绘制交互图时考虑和决定职责分配。然后在cd的方法分栏里概括职责分配l果Q方法是职责的具体实现?br />

]]> - UML_a(b)学习(fn)W记Q三Q?/title>http://www.aygfsteel.com/RongHao/archive/2007/09/03/142404.htmlronghaoronghaoMon, 03 Sep 2007 09:50:00 GMThttp://www.aygfsteel.com/RongHao/archive/2007/09/03/142404.htmlhttp://www.aygfsteel.com/RongHao/comments/142404.htmlhttp://www.aygfsteel.com/RongHao/archive/2007/09/03/142404.html#Feedback1http://www.aygfsteel.com/RongHao/comments/commentRss/142404.htmlhttp://www.aygfsteel.com/RongHao/services/trackbacks/142404.html
在多个P代里对同一用例q行增量式开发?br />
l化阶段Q构建核心架构,解决高风险元素,定义大部分需求,以及(qing)预计Mq度和资源。(包括了三到四ơ的l化q代Q?br />
关键思想和最?jng)_践:(x)
实行短时间定量、风险驱动的q代
?qing)早开始编E?br />
Ҏ(gu)构的核心和风险部分进行适应性设计、实现和试
早、频J、实际的试
Z来自试、用戗开发者的反馈q行调整
通过一pd讨论?x),详细~写大部分用例和其他需求,每个l化q代q行一?br />
制品Q领域模型、设计模型、Y件架构文档、数据模型、用例、用L(fng)面原型?br />
领域模型
领域模型是对领域内的概念cL现实世界中对象的可视化表C?br />
应用UML表示法,领域模型被描qCؓ(f)一l没有定义操作的cdQ反映属性和兌。(一定注意,它不是Y件对象!是概念对象!Q?br />
准则Q?br />
使用领域术语
认真汲取领域专家所使用的核心词汇和概念
如果某概늱不是现实世界中的数字或文本,那么她可能是概念c而不是属?br />
需要描q类Q?、需要有兛_品或服务的描qͼ独立于Q何商品或服务的现有实例;2、减冗余或重复?nbsp; ?br />
避免加入大量兌Q添加关联是ZH出寚w要关pȝ大致理解Q而非记录对象或数据的l构
通过兌而不是属性来表示概念cM间的关系Q领域模型中属性的cd应该是数据类型(基本cdQ?br />
Ҏ(gu)量和单位建模
每次q代的领域徏模不过几个时?br />
pȝ序?br />
pȝ序图(SSDQ是为阐qC所讨论pȝ相关的输入和输出事g而快速、简单地创徏的制品。是操作契约和对象设计的输入?br />
SSD展示了直接与pȝ交互的外部参与者、系l(作ؓ(f)黑盒Q以?qing)由参与者发L(fng)pȝ事g。这些事件是通过用例文本ȝ出来的?br />
应ؓ(f)每一个用例的L功场景,以及(qing)频繁发生的或者复杂的替代场景l制SSD?br />
基本上Y件系l要对三U事件进行响应:(x)来自于参与者的外部事gQ时间事Ӟ错误和异常(通常源于外部Q?br />
pȝ事g应该在意囄抽象U别而非物理的输入设备别来表达?br />
操作契约
操作契约使用前置和后|条件的形式Q描q领域模型里对象的详l变化。其中的关键元素是后|条件?br />
为系l操作定义操作契U。系l操作在l制SSD草图时确定?br />
后置条g描述了领域模型内对象状态的变化。可分ؓ(f)三种cdQ创建或删除实例Q属性值的变化QŞ成和消除兌。注意,它描q的是所需的变化,而不是这些变化是如何完成的。以说明性的、被动式的过L态编写后|条件。(例如Q创ZxxQ而不是创建xxQ?br />
逻辑架构和UML包图
逻辑架构是Y件类的宏观组l结构,它将软gcȝlؓ(f)包(或命名空_(d)、子pȝ和层{?br />
UML包图常用于描q系l的逻辑架构--层、子pȝ、包{?br />
系l的大型逻辑l构l织为独立的、职责相关的L层,h清晰、内聚的x分离?br />
协作和耦合是从较高层到较低层进行的Q要避免从较低层到较高层的耦合。较低层包含可复用功能?br />
可以应用逻辑层更准确地称为架构的领域层,卛_含领域对象(注意领域模型与领域对象是不同的两个概念)Q处理应用逻辑的层?br />
领域层是软g的一部分Q领域模型是概念角度分析的一部分?br />
从UI层发送到领域层的消息是SSD中所描述的消息?br />
轻量U绘囄后编码?br />

]]> - UML_a(b)学习(fn)W记Q二Q?/title>http://www.aygfsteel.com/RongHao/archive/2007/08/30/141475.htmlronghaoronghaoThu, 30 Aug 2007 09:59:00 GMThttp://www.aygfsteel.com/RongHao/archive/2007/08/30/141475.htmlhttp://www.aygfsteel.com/RongHao/comments/141475.htmlhttp://www.aygfsteel.com/RongHao/archive/2007/08/30/141475.html#Feedback0http://www.aygfsteel.com/RongHao/comments/commentRss/141475.htmlhttp://www.aygfsteel.com/RongHao/services/trackbacks/141475.html
在面向对象分析中QOOAQ,的是在问题领域内发现和描q对象。OOAx从对象的角度创徏领域描述QOOA的结果可以表CZؓ(f)领域模型。需要注意的是,领域模型q不是对软g对象的描qͼ区别于Y件中的对象类Q,它是真实世界领域中的概念和想象可视化?br>
在面向对象设计(OODQ中Q强调的是定义Y件对象及(qing)它们如何协作以实现需求。(cd与顺序图Q?br>
q代开发是OOA/D成ؓ(f)最?jng)_늚核心。徏议P代的旉?-6周之_(d)步骤、快速反馈和调整。P代的一个关键思想是时间定量,或时长固定?br>1、在W一ơP代之前,召开W一个时间定量的需求工作会(x)议(两天Q。业务和开发h员需要出席?br> a、高阉求分析。仅仅确定用例和Ҏ(gu)的名称Q以?qing)关键的非功能性需求(性能Q可伸羃性等{)?br> b、通过架构师和业务人员Q从高阶列表选择10%列表(例如Q?0个用例名中的10%Q?个)。这3个用?nbsp; 需要具备:(x)h重要的架构意义;h高业务h(hun)|h高风险(例如Q可处理500个ƈ发交易)。标 识这3个用例:(x)UC2QUC11和UC14?br> c、剩下的一天半对这3个用例的功能和非功能性需求进行详l的分析?br>2、在W一ơP代之前,召开q代计划?x)议Q选择UC2QUC11和UC14的子集,在特定的旉内(例如Q四周) q行设计、构造和试。要注意Qƈ不是在第一ơP代中p构造全部的3个用例,可以其分解Zp?nbsp; 列更l的q代d?br>3、在三到四周内完成第一ơP代(严格遵守旉Q?br> a、在开始的两天内,开发者在架构师指g分组q行建模和设计工作。白板,UML草图Q界面、讨论?br> b、编E。注意UML草图只是参?br> c、测?br> d、结束前一周,查是否能够完成初始P代目标,如果不能Q羃?yu)P代范围?br> e、最后一周的周二Q冻l代码,集成和测试所有代码,建立q代的基Uѝ?br> f、周三上午,演示此局部系l,展示早期可视q展Q要求反馈?br>4、在W一ơP代即结束时Q最后一周的周三周四Q,召开W二ơ需求会(x)议,对上ơ会(x)议的所有资料进行复 查和_。然后选择h重要架构意义和高业务价值的另外10%?5%的用例,一C天详l分析。这工 作完成后Q大U?0-25%的用例得C详细记录?br>5、周五上午,举行下一q代的P代计划会(x)议?br>6、相同步?ơP代?br>7、反复四ơP代和五次需求会(x)议,q样在第四次q代l束后,可能已经详细记录?0-90%的需求,但系l只 实现?0%?br>8、大概推q了整个目q程?0%。up里,属于l化阶段。此Ӟ可以估计整个目的工作量和时间?br>9、一般不再需要需求会(x)议,需求已l稳定了。接下来是一pd为期三周的P代,在最后一个周五召开的P?nbsp; 计划?x)上选择适宜的下一步工作?br>
早期的P代要致力于核心架构的构造,应该首先处理困难的和h风险的事物?br>
建模Q构建UML草图Q的主要目的是ؓ(f)了理解,而非文档。只需对设计中不常见、困隑֒手的一部分问题徏模和应用UML。不要单独徏模,而是l对Q或三个人)在白板上建模。ƈ行的创徏模型Q例如,cd和顺序图交替开始)。UMLl节是否_և不重要,重要的是人员能够互相理解。坚持用最单、常用的UML元素。开发者应该ؓ(f)自己q行OO设计建模Q而不是创建模型图后交l其他h实现?br>
UP的核心思想是:(x)短时间定量P代、进化和可适应性开发?br>
初始阶段是徏立项目共同设惛_基本范围的比较简短的起始步骤。包括确定大部分用例名称Q对10%的用例进行分析,关键的非功能需求的分析Q业务案例创建和开发环境的准备。包含第一ơ需求研讨会(x)Qƈ为第一ơP代制定计划。要解决的主要问题:(x)涉众是否项目设惛_本达成一_(d)目是否值得l箋q行认真研究?br>
用例是文本Ş式的情节描述Q特别注意,用例是文本不是图形!用例建模主要是编写文本的zdQ而非制图。用例名U应使用动词开头?br>参与者的三种cdQ主要参与者,协助参与者,q后参与者?br>用例的三U常用Ş式:(x)摘要Q非正式Q详qͼ在第一ơ需求会(x)中,详细的编写其中少量(例如10%Q的h重要架构意义和高价值的用例Q。用例应该包含所有涉众关注点的事物?br>准则Q?br>以无用户界面的本质风格编写用例;排除用户界面而关注参与者的意图?br>~写z的用例?br>~写黑盒用例Q不对系l内部工作、构件或设计q行描述。而是通过职责来描q系l?br>采用参与者和参与者目标的视点?br>
]]> - UML_a(b)学习(fn)W记Q一Q?/title>http://www.aygfsteel.com/RongHao/archive/2007/08/27/140159.htmlronghaoronghaoMon, 27 Aug 2007 14:27:00 GMThttp://www.aygfsteel.com/RongHao/archive/2007/08/27/140159.htmlhttp://www.aygfsteel.com/RongHao/comments/140159.htmlhttp://www.aygfsteel.com/RongHao/archive/2007/08/27/140159.html#Feedback6http://www.aygfsteel.com/RongHao/comments/commentRss/140159.htmlhttp://www.aygfsteel.com/RongHao/services/trackbacks/140159.html們于将UML用于草图l制Q绘制草囄实质是选择Q重Ҏ(gu)q行交流Q常用的介质是白ѝ?br>草图是故意不完备的,要突出重要的信息。草图是探究性的Q蓝图是定义性的。草囄于正向工E(设计阶段Q,蓝图用于逆向工程Q根据已有的代码导出Q。详l文档应该根据代码生成?br>
UML最重要的是cd和顺序图?br>
瀑布风格和P代风?br>瀑布风格是基于活动来分解目的,q代风格Ҏ(gu)功能子集来分解项目?br>q代的一U常用技术是旉框定法,q各次q代的时间长度固定。通过定时搁置功能QZ能够在搁|日期和搁置功能之间q行明智的选择?br>
敏捷q程是强适应性的q程。敏h法强调项目成功最重要的因素是人的素质以及(qing)Z间的良好协同Q敏h法們使用旉框定的短P代。每一ơP代结束时要进行一ơP代回?br>
RUP本质上是一个P代过E,分ؓ(f)四个阶段Q初始,l化Q构造,UM?br>需求分析最重要的是与用户及(qing)客户的交?br>
cd
cd表述pȝ中各个对象的cd以及(qing)光存在的各U静态关pR?br>对不重要的事Q如日期或布?yu)(dng)|一般说Q值类型)使用属性,对较为重要的cM用关联?br>非常反感那些除了一l域?qing)其get/setҎ(gu)没有行ؓ(f)的类。如果你在利用getҎ(gu)重复调用数据Q这预示着某一行ؓ(f)应该Udh数据的对象?br>依赖应该单向Q依赖越越好,特别谨慎循环依赖Q尤其反对包间的循环依赖。对cM用依赖最常见的情形是阐明瞬间关系Q比如,把一个对象作为参C递到另一个对象时?br>不要试图使用对你可用的所有图C法Q保持图C简单,集中考虑关键斚w。绘制类图时M使用某种形式的行为技术ؓ(f)宜?br>
序?br>量省去回送?br>单一职责Q提倡分布式控制Q把处理分散到多个对象里去)?br>减少q程式编E,如if/elseQ改用多态解决类似问题?br>把顺序图看作各个对象如何交互的Ş象化表示而不是一U对控制基理的徏模方法。顺序图擅长C明对象间的协作Q不擅长于示明行为的_定义?br>
CRC?br>CRC的一个重要部分是认识职责。Q意一个类都可以用量职责对其概括。对h三项以上职责的卡片提问,是否应该把类分解Q或把职责合q成一个更高层?br>的概q?br>
]]>
վ֩ģ壺
|
Ʊ|
|
|
|
|
|
|
Ȫ|
ҵ|
|
ǰ|
|
ɽ|
ȫ|
ٳ|
|
̫|
ƽ|
|
¦|
ƽ|
崲|
|
潭|
|
Ԫ|
˾|
|
|
|
ȫ|
ͼ|
Ϣ|
|
ɽ|
|
ʯ|
彧|
|
|