转载,有删改:http://www.blogjava.net/sitinspring/archive/2008/01/26/177949.html
1.如何建立起领域模型
途径一:分析业务中的业务流和业务规则,从中归纳出功能的基本单位,这个基本单位就是领域模型之一或领域模型的一部分.
途径二:从原型界面中观察显示的数据,它们是领域模型的外在体现.
途径三 :从持久化介质中推导领域模型,如从数据库的表结构和ER图中推导领域模型.
途径四:向领域专家问询业务流程中的核心单元是什么,甚至自己进入问题领域去学习探究。
途径五:将不熟悉的领域和相似的自己熟悉的领域做对照,类比出领域模型。
途径六:从已有的知识系统中学习,参考功能相似的软件代码,向优秀代码学习。
2.如何完善领域模型
领域模型是经常发生相互联系的,上一步只是建立了孤立的,仅能表现单个领域对象信息的模型,要使它们丰富完善起来,需要做以下工作:
1) 从程序的功能角度入手,考虑需要几个领域对象才能完成这个功能,再由此考虑领域对象之间的联系.这方面的典型例子是需要雇员类和资源类的协助,借贷关系才能完整的表现出来.
2) 从领域对象本身入手,考虑领域对象之间是否有级联,回溯,包含等常见关系.如个人信息包含地址信息,公司类和雇员类的级联关系,雇员类查找自己所属公司的回溯关系等.
3) 从反持久化入手,考虑把一个领域对象从存储介质中提取出来需要那些领域对象的帮助,这些领域对象是通过那种方式联系在一起的,这方面的典型例子是表之间的主键和外键,领域对象同样也要具有相对应的成员变量.
3.领域对象设计完成之后
一旦领域对象设计完成,程序的设计工作就可以说完成了一大半,其余工作都是围绕领域对象来进行,这些工作有:
1) 从考虑怎么为领域对象服务入手,为领域对象设计服务类,服务类的常用方法有添加,删除,更新,查询领域对象四种以及从ID取得一个领域对象,判断持有某个ID的领域对象是否存在等.具体的操作实际上由服务类的持久层类成员完成,服务类实际上起到的是一个领域对象上下传输通道的作用.一般来说Service层的六大函数是add,delete,update ,search, hasId(String id), getById(String id))再加上一些用于查询的函数。
2) 考虑到实现服务类中要求的方法,设计持久层类,其中的成员函数基本是服务类的六大方法的具体化,持久层类实际上起到一个把领域对象存储到持久介质中和从持久介质中取出领域对象的作用.如果持久层是关系型数据库的话,还需要设计领域对象对应的表以及表之间的关系ER图。
3) 从功能的角度设计控制层的函数和类,在这里控制层类调用服务层类来操作领域对象,业务逻辑主要体现在这里.
4) 从领域对象的输入输出和表现的角度设计各个表现层类.设计这一层类时应该从用户立场考虑而不是从代码编写者的立场考虑,怎么让用户感到直观,方便,快捷就怎么设计界面.
5) 在设计上述层次的同时,考虑到减少重复代码,突出主干代码而设计实用层类,把共通的操作都归纳到一起,这样既提高的代码的清晰程序和可读性,也使修改变得方便容易起来.
6) 如果有些变量在使用过程中是可能发生变化的,如数据库的地址,业务中一些硬编码信息等,这样的量就不该硬编码(Hard Code)在程序中,否则修改后还需要重新编译,打包,发布.而应该把这些量写在XML形式的配置文件里,在程序启动时读取.
4.软件的六大层次
上面的工作完成后,我们会得到以下六大层次:
1) Domain层
2) Service层(允许Control层访问,能访问Persistence层)
3) Persistence层(也称为DAO层,只允许Service层访问)
4) Control层(访问Service层和View层)
5) View层(仅被Control层访问)
6) Util层
5.逐步完善六大层次中类的各个具体函数
6.绘出各层次类的静态类图
7.最后的步骤:子程序内部的设计
8.软件的最终需要具备的现代软件的八个典型特征
(1)最小的复杂度:整个系统可以分解为简单而易于理解的各个部分.
(2)易于维护:程序有良好的可维护性.
(3)松散耦合:通过应用类接口中的合理抽象,封装性以及信息隐藏等原则,设计出相互关联尽可能最少的类.
(4)适应变化:能在不改变系统基本构架的基础上,适应未来的变化,有良好的扩展性,程序可扩展,可重用.
(5)有明晰的层次:每层各司其职,有良好分工.
(6)高扇入低扇出:系统很好的利用了较低层次上的工具类,重复代码很少或没有.
(7)有良好的规范:无论多少人参与了项目,从代码看来犹如出自一人之手.
(8)使用标准技术.
(以上八点来自<<代码大全2>>)
分享到:
相关推荐
### 开发iPhone应用程序基本步骤详解 #### 一、创意构想阶段 在开始任何应用程序的开发之前,最重要的一环就是构思一个独特的应用理念。正如文中所述,“开发iPhone应用程序基本步骤”首先强调的是需要有一个新颖...
通过本文的学习,我们可以了解到CMake作为一种强大的构建工具,在Linux环境下构建应用程序时的优势和基本用法。无论是简单的单文件程序还是复杂的多模块项目,CMake都能够提供灵活而高效的构建方案。此外,CMake还...
通过这种方法,能够有效地解决汇编嵌入式软件程序流程图的自动生成问题,尤其是对子过程多出口的分析,这对于后续的程序结构评估、自动插桩和覆盖测试等关键步骤具有基础性作用。 总的来说,该研究提供了一种创新的...
构建一个基本的嵌入式Linux根文件系统需要一系列的步骤,这些步骤通常包括选择文件系统类型、配置工具链、安装基础软件包以及定制系统服务。下面将详细介绍这些步骤。 首先,我们需要选择合适的文件系统类型。常见...
在深入探讨如何构建Linux环境下的设备驱动程序之前,让我们先理解设备驱动程序的基本概念及其与Linux操作系统之间的关系。设备驱动程序是计算机硬件和操作系统之间的桥梁,负责管理和控制硬件设备,使操作系统能够...
在“软件技术基础和基本程序算反的应用和讲解”这一主题中,我们主要探讨的是软件开发的基石,包括编程语言的基础、程序设计的基本概念以及算法分析。这些内容是大学软件技术课程的核心,对于任何计算机科学或软件...
在IT行业中,应用程序的打包和发布是软件开发流程中的重要环节,确保用户能够方便地安装和运行软件。这里主要讨论的是在两种不同的集成开发环境中,即MyEclipse和Eclipse,进行C/S(客户端/服务器)应用程序的打包...
在课件中的“获取信息2004”可能涉及到数据输入和处理,而“张家港塘桥初中谢利芳程序设计基本方法”可能是一个示例,用于展示程序设计的基本步骤和技巧。SWF文件通常用于存储Flash动画或交互式内容,这可能是教学...
在使用CMake构建跨平台应用程序时,首先需要了解其基本概念和工作流程。CMake的核心是CMakeLists.txt文件,它通过一系列命令来定义目标(可执行文件或库),指定源代码文件,设置编译器标志,寻找依赖库,并配置安装...
以上就是制作触摸屏程序的基本步骤,涉及到硬件连接、软件操作、界面元素的设计与交互,以及工程验证和部署等关键环节。对于开发工业自动化或人机交互界面的工程师来说,掌握这些步骤至关重要。
单片机系统开发基本步骤 单片机系统开发是一个复杂的过程,涉及到硬件系统的设计、应用软件开发和可靠性设计等多方面的知识。为了帮助开发者更好地理解单片机系统开发的基本步骤,本文将详细介绍单片机应用系统设计...
无论是在Windows、Linux还是macOS上,编译C程序都是将源代码转换为可执行文件的必要步骤。本文将详细介绍如何在不同的操作系统上编译C程序,包括所需的工具、编译过程以及可能遇到的问题和解决方案。 C程序的编译...
在分子生物学研究中,载体构建是基因工程的核心步骤之一,它涉及到将特定的DNA片段插入到一个能够自我复制的DNA分子中,以便在宿主细胞中表达或进行遗传分析。Gene Construction Kit(gck35)是一款专为分子生物学家...
在IT领域,特别是软件开发与系统管理中,创建Windows服务程序是实现后台...每个步骤都是构建健壯、高效Windows服务的关键,对于系统管理员和软件开发者来说,掌握这些技能将极大提升其在Windows平台上的应用开发能力。
程序规划方法和程序流程图...总之,程序规划和流程图绘制是软件开发人员必备的技能,它们有助于构建高质量、可维护的软件系统。通过不断学习和实践,我们可以提高在这两方面的能力,为我们的职业生涯打下坚实的基础。
以下是C程序开发的基本步骤及其详细解释: 1. **分析问题**:这是任何软件开发项目的起点。在这个阶段,开发者需要明确程序的目标,理解需求,并确定解决问题的最佳策略。这通常包括与用户或项目相关人员的沟通,...
《软件技术基础教程及程序代码》是一本针对初学者和进阶者编写的教育性教材,旨在帮助读者理解和掌握软件开发的基本概念和技术。该书由高等教育出版社出版,内容涵盖广泛,包括了软件工程的各个重要方面,如需求分析...
以下是使用ndk-build的基本步骤: 1. 创建一个名为`jni`的目录,通常放在Android项目的根目录下。 2. 在`jni`目录下创建一个名为`Android.mk`的文件,这是Makefile的特定于Android的版本,用来描述编译的目标、...
通过以上解析,我们可以看出这个“蓝色小程序电商软件开发公司网站源码”是一个全方位的解决方案,不仅可以满足企业的基本展示需求,还具备电商功能和优秀的用户体验设计,非常适合技术型企业在互联网上树立品牌形象...