软件设计过程经验谈 之 如何做好领域模型设计

经常听到领导教诲,开发的同事应该要往前走一步,去做产品?去做售前?这也是一种方式,只不过是一大步。个人觉得,在迈出这一大步之前,需要先走出一小步:从写好代码到做好设计。

下图是按照软件工程的通用做法,梳理出的标准设计指南,已经非常清晰地定义了软件设计的阶段和活动,产物规约,文档要求以及需要配合的培训。比较适合于人朋规模大、产品化程度高、外包服务模式。按照这个标准的设计指南,把每一阶段的事情做好,这是标准的开发方法论的实践指导。

有人会说,现在是移动互联网的时代,我们的产品开发要求短、频、快地上线,这种标准的设计方法已经不适合了,我觉的不完全正确。我的做法是,根据产品的愿景和市场情况,按照标准的设计指南做一些定制性的剪裁,哪怕文档全部裁完了,脑子里分析时仍然要按照这几个阶段开展对应的活动,因为这不仅是指南,更是方法论,针对这个几阶段开展过的活动,下面就梳理下我的设计经验。

首先是需求捕获和分析阶段,总是感觉需求在不断地变化,老是怪市场和产品经理,其实很多情况是我们对需求的理解不到位。既有业务理解不准确,也有支撑方式不合理。还有一点就是将原型与需求没有进行区分,原型不代表需求。将需求分析划分为业务需求与系统需求两个阶段,做好领域分析,才能根本性地适应需求的不断地变化。

接下来谈谈如何做好系统分析,在这个阶段一般又叫建领域模型,又叫概念模型,分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。领域模型设计是需求分析的关键步骤。它帮助用户及需求分析人员建立业务概念,确定用户业务的问题域,系统涉及的业务范围等等。

领域模型设计的一般步骤为:

1、从业务描述中提取名词

2、从提取出来的名词中总结业务实体,区分名词中的属性、角色、实体、实例,形成问题域中操作实体的集合;

3、从业务实体集合中抽象业务模型,建立问题域的概念

4、用UML提供的方法和图例进行领域模型设计、确定模型之间的关系。注:实体之间的关系,主要有泛化、依赖和关联,关联又分了一般关联、聚合、组合等

简言之,先分析出模型实体,然后找出模型实体之间的关系。

领域模型与实数据模型的关系:领域模型是与用户沟通的一个重要工具,是需求分析人员与用户共同理解的概念,是彼此之间交流的语言。它是一个分析模型,描述的是业务中涉及到的实体及其相互之间的关系,它是需求分析的产物,与问题域相关。同时给我们需求分析人员和系统功能提供了一定的扩展视野,看到将来需求的可能变化或可能存在的问题。而数据模型是系统设计、实现的一部分,描述的是对用户需求在数据结构上的实现,当然数据模型中的概念模型设计与领域模型类似,缺乏的是实体之间更广泛的关系描述。

这里以开放平台业务管理为例,设计出的领域模型图纸,欢迎大家拍砖。

http://www.cnblogs.com/ceecy/p/3401870.html

时间: 2024-12-25 12:39:03

软件设计过程经验谈 之 如何做好领域模型设计的相关文章

初识设计模式、软件设计的六大原则

总结:本篇文字分为两个部分.第一部分:设计模式基本常识:第二部分:软件设计中的六大原则,并详细分析了单一职责原则.(本篇文章的时间轴参考:为知笔记支撑文件夹\Java设计模式(时间序列图).vsdx) 部分一:初识设计模式 什么是设计模式?James拿到这个论点时,很是迷惑! 模式?是不是一个模子?模式识别--计算机领域的经典问题? 设计模拟?软件的设计模式?不懂!!! 但是在实际编码.调试过程中,James的遇到过很是难解的问题:工程代码中有过多的冗余代码--代码复用性不高:需求一旦改变,需要

软件工程之软件设计

英雄是随着历史的时代产生的,软工也不例外.软件工程这一门学科主要是为了解决当代软件危机而诞生的, 学习软件工程的视频过后,终于让我揭开了它的神秘面纱,让我对软工设计有了一个初步的认识,软工设计从大体上来说主要包括两大部分,概要设计和详细设计.下面我简单的介绍一下软件设计. 1.软件的组成及定义: 软件是计算机系统中与硬件相互依存的另一部分,是包括程序. 数据及其相关文档的完整集合.其中,程序是按事先设计的功能和性能要求执行的指令序列:数据为进行通信.解释和处理而使用的信息的形式化表现形式. 文档

软件project之软件设计

英雄是随着历史的时代产生的.软工也不例外.软件project这一门学科主要是为了解决当代软件危机而诞生的, 学习软件project的视频过后,最终让我揭开了它的神奇面纱,让我对软工设计有了一个初步的认识.软工设计从大体上来说主要包含两大部分,概要设计和具体设计.以下我简单的介绍一下软件设计. 1.软件的组成及定义: 软件是计算机系统中与硬件相互依存的另一部分.是包含程序. 数据及其相关文档的完整集合. 当中,程序是按事先设计的功能和性能要求运行的指令序列.数据为进行通信.解释和处理而使用的信息的

2020荐书:软件设计的哲学

2020年必读书籍推荐:软件设计的哲学(A Philosophy of Software Design),本书190多页,豆瓣的点评分在9分以上,目前只有英文版本,中文版还未上市,英文好的同学建议去直接阅读原版. 内容简介 书中讨论了软件设计的主题:如何将复杂的软件系统分解成可以相对独立实现的模块(如类和方法).这本书首先介绍了软件设计的基本问题,即管理复杂性.然后讨论了如何处理软件设计过程的哲学问题,并提出了在软件设计过程中应用的一系列设计原则.该书还介绍了一系列标识设计问题的危险提示.你可以

软件设计杂谈

\ disclaimer: 本文所讲的设计,非UI/UE的设计,单单指软件代码/功能本身在技术上的设计.UI/UE的主题请出门右转找特赞(Tezign). 在如今这个Lean/Agile横扫一切的年代,设计似乎有了被边缘化的倾向,做事的周期如此之快,似乎已容不下人们更多的思考.MVP(Minimal Viable Produce)在很多团队里演化成一个形而上的图腾,于是工程师们找到了一个完美的借口:我先做个MVP,设计的事,以后再说. 如果纯属个人玩票,有个点子,hack out还说得过去:但要

软件设计

软件设计 一定是创建订单的时候填充market字段,我曾经一度打算在回调的时候再根据回调方来填充Market,但是如果没有回调呢?Market这样的标志性字段一定要依赖于靠谱的操作: 对于重载方法要注意,尤其套调用的重载方法,对于某些核心校验必须要放置在里层方法调用,否则因为重载都是public出去的,都可以被外界调用,如果在外层方法实现校验,里层重载方法被外界直接调用,校验会被跳过:考虑CheckMarket是放在CreateOrder(String encryptedString)还是Cre

从涂鸦到发布——理解API的设计过程(转)

英文原文:From Doodles to Delivery: An API Design Process 要想设计出可以正常运行的Web API,对基于web的应用的基本理解是一个良好的基础.但如果你的目标是创建出优秀的API,那么仅凭这一点还远远不够.设计优秀的API是一个艰难的过程,如果它恰巧是你当前的工作任务,那么你很可能会感到手足无措. 不过,优秀的设计绝对是可以实现的.本文所描述的流程将帮助你获得成功,我们将共同研究什么是优秀的设计,以及迭代式的流程如何帮助我们实现这一目标.我们还将叙

优云CMDB经验分享之 – 剖析CMDB的设计过程

作为IT管理的核心,CMDB逐渐成为系统管理项目实施的热点.在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战.同时,由于CMDB是IT管理信息的集中,CMDB也是一个重要的工具和手段. 在CMDB落地过程中需要注意的是,CMDB项目不是一个简单的软件安装过程,而是一个咨询.培训.实施.优化密切结合的综合过程,涉及到平台工具采购.咨询服务.实施服务.培训.甚至扩展开发等内容.同时,一个成功的CMDB项目不能一蹴而就,而是一个循序渐进.持续发展的过程,需要企业后续的投入和

敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

邀请函:尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧.时间:2014.06.07(周六),上午9:00-12:00,下午14:00-17:30(时长6.5小时)地点:郑州市畜牧路16号牧业经济学院实验楼B座2518(可乘坐B11.909.962.47路等公交车到老长途汽车北站下车畜牧路向东300米路北)软件知识原创基地www.umlonline.or