王海鹏(sealwang@gmail.com) 彩色UML和FDD 王海鹏(sealwang@gmail.com)
目标和主题 目标 让UML建模更简单,但不是过于简单 主题 彩色UML建模方法 特征驱动开发(FDD)方法
一个领域建模问题 商业住房贷款 贷款金额、期限、利率、还款策略(等额本息、等额本金)、抵押、保险、利率变更、提前还贷(部分/全部)、变更还款策略
背景 Peter Coad Jeff De Luca 新加坡项目
四种彩色架构型 粉红色的时刻-时段(Moment-Interval) 黄色的角色(Role) 绿色的参与方-地点-物品(Party-Place-Thing) 蓝色的描述(Description)(类似产品目录项)
粉红色的“时刻-时段” 方法 makeMomentInterval addDetail calcTotal recalcTotal complete cancel mi_generateNext mi_assessWRTPrior mi_assessWRTNext mi_comparePlanVsActural listMIs(静态) assessAcrossMIs(静态)
粉红色的“时刻-时段” 属性 number dateOrDateTimeOrInterval priority total status
MI明细和自关联
黄色的“角色” 方法 属性 assessAcrossMIs listMIs enforceRoleRules listRoles(静态) assessAcrossRoles(静态) 属性 assignedNumber status
绿色的“参与方-地点-物品” 方法 属性 assessAcrossRoles getCustomElseDefaultValue listRoles enforceMultiRoleRules listPPTs(静态) assessAcrossPPTs(静态) 属性 serialNumber name address customValue
蓝色的“描述”(类似产品目录项) 方法 属性 assessWithPlugInElseDefault getAcrossPPTs findAvailable calcQtyAvalable calcTotalFor listPPTs listDescs(静态) assessAcrossDescs(静态) 属性 type description itemNumber defaultValue
架构型及其方法
伸缩和扩展 MI_Detail 算法扩展点
MI_Detail MI_Detail 还款明细
架构型和插入点
插入扩展点 接口设计 开放封闭原则 依赖注入 全部是接口? Open for extension, close for modification 依赖注入
扩展点的例子 流程变更和工作流 绩效评估方法变更
领域相关的企业模型
粉红色主线-物料资源管理
一个组件
架构的弹性 承受将来的变化,不必洗髓易筋 列出某个店的所有员工 列出所有的店和店主 列出某个员工的任职经历 列出某个店的历任店主 列出曾经担任过店主的所有员工 统计店员的流动率……
总体模型 识别到类 Kent的开车比喻,总体模型是地图
特征 <action > the <result> <by|for|of|to> a(n) <object> Calculate the total of a sale(计算一次销售的总额) Assess the fulfillment timeliness of a sale(评估一次销售实现的及时性) Calculate the total purchases by a customer(计算一个客户的总采购额)
特征分组 特征集 主特征集 <action><-ing> a(n) <object> making a product sale(进行一次产品销售) 主特征集 <object> management product-sales management(产品销售管理)
对象交互-列出产品报价
解释 对象协作完成特征 ProductPrice是粉红色的
与用例模型配合 流程 vs 天空用例 时刻时段 vs 海平面用例 参与者 vs 角色 粒度小很多
彩色UML的好处 关注业务过程 组件化设计 不同粒度的组件层次结构 有无遗漏一目了然
代码和测试
建模与开发过程适配-特征驱动开发
各阶段时间比例 整体模型:10%初始,4%后续 特征列表:4%初始,1%后续 进度计划:2%初始,2%后续 按特征设计和构建:77%(2周一个循环周期)
成功项目的两个共同特征 良好的架构愿景 迭代增量式开发
FDD的好处 转向更大的项目和可重复的成功 让新来的员工尽快融入工作 关注高回报的结果
客户眼中的FDD 愿景与范围 企业流程和再造 需求优先级
开发者眼中的FDD 不断交付客户价值(特征) 成就感
管理者眼中的FDD 不向开发者询问进度 进度曲线 需求蔓延?
彩色即时贴与联合应用开发(JAD)
开发团队 架构师 项目经理 主程序员 程序员
FDD的伸缩性 新加坡项目,50个人,15个月 关键在于找到有能力的 架构师 项目经理 主程序员
FDD的最佳实践 领域对象建模 根据特征进行开发 特征是小粒度的 特征体现客户价值 类(代码)所有权 特征小组 审查 持续集成 配置管理 可视的结果报告
开始的问题 商业住房贷款 贷款金额、期限、利率、还款策略(等额本息、等额本金)、抵押、保险、利率变更、提前还贷(部分/全部)、变更还款策略 建模者面试
下一步 在工作尝试 与我保持联系,大家共同提高 sealwang@gmail.com http://sealw.blogspot.com/
参考文献 《彩色UML建模》 《特征驱动开发》 《编写有效用例》 61个组件、283个类、46个接口、671个属性、1139个方法和65个交互序列图。 《特征驱动开发》 《编写有效用例》
Q&A 谢谢大家!