`
hongan
  • 浏览: 175066 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

构建软件程序的基本步骤

阅读更多

转载,有删改: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>>)

分享到:
评论

相关推荐

    构建安全的 ASP.NET 应用程序(中文译作+英文原作)

    如果知道您的应用程序目前采用或将要采用的体系结构和部署模式,则可通过本指南的这一部分了解相关的安全问题,以及保障特定方案的安全性所需的基本配置步骤。 最后,本指南第 IV 部分的补充信息和参考材料可帮助您...

    构建编程环境

    如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐) 1.首先要下载我提供的软件包(里面已经包含所有所需软件); 2.把它解压到D盘根目录下(如果需要安装在其它的地方,请注意设好路径); 3.解压后,里面有:idesetup.exe ,...

    计算机软件用户界面设计的基本原则.doc

    计算机软件用户界面设计的基本原则 摘要:目前,大部分软件应用程序和许多Web网站都是使用图形用户界面(GUI)开发工 具构建的。这些工具都提供了一组用于构建GUI的控件,也称为"窗口小部件(widget)。控 件包括文本和数字...

    whippet:Whippet是用于构建WordPress网站的框架,可简化部署,插件管理和构建步骤

    该项目是用于构建WordPress应用程序的框架,该框架简化了部署,插件管理和构建步骤。 Whippet是dxw构建和托管基于WordPress的应用程序的工作的一部分,该应用程序更符合12因子原则。 Whippet有一些基本目标: 允许...

    java应用软件程序设计

    ODBC桥 180 实例60 使用单独JDBC连接驱动程序 184 实例61 数据库基本操作 185 实例62 使用游标 189 实例63 使用事务 191 实例64 实现SQL语句的检索功能 192 实例65 SQL嵌套检索 194 实例66 ...

    8.7章节测验1

    第6章 列表6.1 数组6.2 列表的基本操作6.3 列表的使用6.4 章节测验6.5 课外拓展第7章 函数7.1 函数7.2 实参与形参7.3 函数的创建与使

    精选源码拉格朗日插值 MATLAB源程序代码

    拉格朗日插值的基本思想是通过构建一个多项式函数来拟合数据点。其算法步骤如下: 1. 给定一组已知数据点。 2. 构建一个与已知数据点一一对应的拉格朗日基函数。 3. 将多个拉格朗日基函数加权求和,得到一个多项式...

    【毕业设计】基于小程序的交友系统的设计与实现【源码+lw+部署+讲解】

    源码包括了小程序前端代码,部署文档详细介绍了系统的部署步骤和环境配置要求,讲解内容涵盖了系统的功能模块、技术选型理由、设计思路以及使用方法。 适合人群:对小程序开发和社交应用有兴趣的毕业生、学生或者...

    数学建模案例MATLAB实用程序百例

    以下是一些MATLAB模型构建和求解的基本步骤: 定义问题:首先需要明确需要解决的问题,包括问题的背景、目标、限制等。例如,需要构建一个线性回归模型,来预测房价与面积之间的关系。 数据准备:然后需要收集和...

    openfllier

    OpenFlipper,这是一个可扩展的开源几何图形处理和渲染框架。OpenFlipper是用于几何...除了软件开发人员外,最终用户还可以从该通用框架中受益,因为在此框架之上构建的所有应用程序都共享相同的基本功能和交互隐喻。

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    实验1:第一个Android程序.pdf

    使⽤eclipse+ADT插件和Android Studio开发应⽤程序的⼀般步骤 ⼆、实验内容: ⼆、实验内容: 1. 安装JDK并配置好环境变量; 2. 安装eclipse和ADT插件 3. 安装Android Studio 4. 在eclipse和Android Studio中创建...

    软件分析建模与PowerDesigner实现.part1.rar

    本书系统地介绍了业务建模、数据建模和应用程序建模的方法和过程,通过PowerDesigner的实现,使读者全面掌握软件分析建模的思想,是软件工程师学习软件分析、建模的入门教材。PowerDesigner 12.5集中体现了软件分析...

    react-ready:样板文件,包含使用 React、React Router、Redux 和 Material UI 开始构建单页应用程序所需的基本元素

    样板文件,包含使用 React、React Router、Redux 和 Material UI 开始构建单页应用程序所需的基本元素。 样板文件包括: 典型的集装箱结构 Redux 和 Redux-thunk 集成 清单和表格(进行中) 管理面板 React路由器...

    软件标准化大纲模板(整套软件开发文档项目过程管理).doc

    5.2.2 标准化文件体系表的构建程序 4 5.2.3 标准化文件项目表 4 6 标准化工作范围和研制各阶段的主要工作 4 6.1 标准化工作范围 4 6.2 产品研制各阶段的主要工作 4 6.3 标准化工作协调管理要求 5 7 技术文档编制格式...

    Version: 1.5.0-GA

    本文档描述了GUI guide,目标是在NXP MCU设备上具有基本C知识的嵌入式GUI应用程序开发人员。 本用户指南的主要部分如下: •介绍- GUI指南的一般信息和功能列表。 •安装-安装软件和设置环境的步骤。 •GUI指南使用-...

    基于WCF的即时通讯软件的设计与实现

    基于此,文章通过介绍一套即时通信软件的具体开发过程来展现基于WCF技术的分布式软件研发的基本步骤与高级技巧。 二、WCF概述 对于一个好的分布式系统来讲,设计时应当考虑到异构性、开放性、安全性、可扩展性、...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

Global site tag (gtag.js) - Google Analytics