收藏 分享(赏)

浅谈软件的架构设计.doc

上传人:dzzj200808 文档编号:2253664 上传时间:2018-09-07 格式:DOC 页数:7 大小:298.50KB
下载 相关 举报
浅谈软件的架构设计.doc_第1页
第1页 / 共7页
浅谈软件的架构设计.doc_第2页
第2页 / 共7页
浅谈软件的架构设计.doc_第3页
第3页 / 共7页
浅谈软件的架构设计.doc_第4页
第4页 / 共7页
浅谈软件的架构设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、浅谈软件的架构设计 http:/第 1 页 共 7 页浅谈软件的架构设计作者:张传波我将以我主持开发的“工程量自动计算软件” ,谈一下我对软件架构设计的体会。我们公司主要开发建筑造价领域的软件,其中工程量自动计算软件是技术含量最高、难度最大的软件。我是这个项目的主要开发者,我参与了这个项目的全过程。这个项目从立项至今已经差不多 3 年的时间了。软件的第一个版本是 2000 年 11 月 1 日发布的。这个软件是和建筑造价行业紧密相关的,我有必要先介绍一些背景资料。建造一栋建筑物需要多少成本呢?它是如何计算的呢?建筑物除了是由钢筋混凝土做的外,它还有门、窗,装饰用料等等。如果细分,建筑物用料可以

2、细分成成千上万种。国家的建筑造价的部门对许多工程进行了分析,统计出建筑物不同的部分、不同的材料的单价造价。也就是说,如果建筑物的各个部分的工程量算出来的,乘以单价就可以知道建筑物的造价了。比方说,由一栋私人的别墅,要知道它的造价,就要算出它各种型号的混凝土用了多少,其中柱用了多少混凝土,梁用了多少,板用了多少,各种型号和直径的钢筋用了多少,各种型号门、窗用了多少等等,就可以算出它的造价了。建筑物的结构是很复杂的,梁、板、柱等等东西是交错在一起的,如何计算它们的工程量是有规则的。全国各地的定额站对此作了规定。我们这个软件的任务是,按照工程量的计算规则,算出工程量。如果没有软件,用户原来是怎样计算

3、工程量的呢?用户根据图纸,用纸加计算器,把计算的过程列出来,最后得出各个部分的结果。人手计算的工作量很大,很繁复,也很容易出错。我们的这个软件工作的流程大致是,用户根据图纸,把构件(梁、柱、板等) 画上去,绘图完成后,软件计算工程量,计算的结果以报表的形式输出。软件把原来繁复的手工计算工程变成形象画图的过程,大大的减轻了工作量,增加了工作的乐趣。附图(软件概貌):浅谈软件的架构设计 http:/第 2 页 共 7 页下面谈一下这个软件的设计过程。 概念设计用户手算时的情景:用户要仔细的看图纸,包括建筑施工图、结构施工图,把各种平面、立面、剖面图在脑中形成立体的模型,在脑中建立各种构件的关系,要

4、计算的内容也一一明确。用户根据自己的经验和本工程的实际情况,开始计算工程量,计算的过程一般是先算基础,然后是主体结构,接着是装饰和脚手架。最后是汇总计算结果。计算的过程中需要不断的看图纸,不能算错,不能多算和漏算,计算要留有中间结果,以备检查。手算时的工作流程:手算的特点:1. 要分析许多图纸,掌握许多资料。2. 手算者思维要严谨,不过多算、漏算。3. 计算要步步为营,不能有错,需要反复的检查和较验。4. 计算的工作很繁复和枯燥。5. 计算者经验越多,出错的机会越低。本软件要满足以下两点的基本需求:1. 降低计算者的工作量。2. 保证计算的准确度。用软件计算的工作流程:用软件工作时,软件极大地

5、降低了计算者的的工作强度和工作量,迭代的过程只有一个。计算者只需要熟悉图纸,然后“依样画葫芦”的输入数据,剩下的工作就交给软件了。 逻辑设计先看模块与数据关系图:浅谈软件的架构设计 http:/第 3 页 共 7 页各模块简介如下:A 数据输入模块:用户采用什么方式输入图纸的数据。参考方案:1) 表格法输入:用户以表格的形式输入数据,类似于手算的方式。2) 图形法输入:用户以“画图”的方式输入数据。表格法方式接近于手算的方式,用户的工作量还是很大,所以我们采用图形法输入。考虑到已经有许多自主图形平台的工程量计算软件,我们不应该再走别人的老路,还有工程量计算的复杂性,我们决定采用了 AutoCA

6、D2000 作为绘图的平台,这样可以充分利用 AutoCAD 强大的绘图功能和三维实体布尔运算的功能。B 数据处理模块:对模块 D 的数据进行处理,也就是要进行工程量的计算。软件要减轻人的工作量主要是体现在这个地方,也是软件的核心部分。此模块需要很强的人工智能技术。C 数据输出模块:以报表的形式输出模块 E 的数据。D 工程数据:用户输入的数据的储存方式。参考方案:1) 数据库方式。2) 对象模型方式。本软件的关键问题是人工智能的问题,软件要解决这个问题:怎样去模拟人脑辨别出复杂的工程情况准确无误的计算出结果。本软件处理的数据量很大,采用数据库的方式应该是很适合的。但如果采用数据库的方式来保存

7、工程的数据,会因为数据库的灵活性不足,难以构造满足现实工程的模型。我们决定采用对象模型的方式,用类来构造现实的工程模型。软件数据的存储直接对工程模型进行,运算也直接对工程模型进行,这样上层编程的难度会降低很多,也更容易解决“模拟人脑辨别出复杂的工程情况准确无误的计算”的问题。工程对象模型:浅谈软件的架构设计 http:/第 4 页 共 7 页红色矩形:表示集合对象蓝色矩形:表示非集合对象对象描述:数据输入模块把输入的数据通过接口保存在工程模型里面。数据处理模块通过接口访问工程数据。浅谈软件的架构设计 http:/第 5 页 共 7 页E 计算结果数据:计算结果的储存方式。此部分数据量大,而且不

8、需要进行运算,采用数据库的方式保存已经可以满足需要了。数据输出模块直接读取计算结果数据库,生成报表。 物理设计A 数据输入:1. 软件的 UI2. 工程管理器3. 构件属性窗口4. DB 数据处理:1. 智能扣减数据库2. 用户选择计算的范围3. 计算4. 输出计算结果5. C 数据输出:1. 各式报表的生成2. 计算结果的动态查询3. 输出其他格式的文件4. 输出成公司其他软件的接口文件5E软件采用的编程语言和数据库:AutoCAD2000 的二次开发最好是通过 ARX 的方式进行,这样的控制力最强,实现的功能最强大。但因为要熟练 ARX,必须熟悉 VC,考虑到公司目前没有精通 VC 的人,

9、而我们对 VB 是最熟悉的,所以采用通过 COM 接口与 AutoCAD2000 通讯,用 VB 通过 COM 接口调用 AutoCAD2000 对象的属性和方法。这种方式控制力较弱,但好处是我们可以很快掌握。但是后来在计算部分,我们发现通过 COM 接口进行运算速度较慢,而且 AutoCAD2000 会出现内存泄漏,会导致无法计算较大的工程。所以这部分不得不采用 ARX 的方式进行,计算部分底层的代码用 VC 来实现,然后编译成 COM 组件,由 VB 来调用。数据库方面只涉及到简单的存取操作,不涉及多用户并发的复杂情况,所以采用了 Microsoft Access。考虑到我们对编程语言的熟

10、悉程度,软件的特点,还有对性能的考虑,软件主要用 VB开发,部分地方使用了 VC 开发了 AutoCAD2000 的 ARX 程序,数据库采用 Microsoft Access。软件性能方面的考虑:AutoCAD2000 本身对计算机的资源消耗较大,而我们软件要在 AutoCAD 里面建立的三维实体对资源的消耗也是很大的。当工程巨大时,软件在计算时很可能会出现资源不足的情浅谈软件的架构设计 http:/第 6 页 共 7 页况。我们采用了一些设计来提高性能。1. 数据动态加载,需要的时侯才载入,不需要时马上释放。2. 优化计算的过程,降低计算时对资源的需求。3. 数据输出部分设计成 Activ

11、eX EXE 方式,需要时才加载。4. 软件设计成可以分步计算,最终的计算结果可以通过多次的运算的结果汇总而成。可扩展性方面的考虑:实际工程的情况很复杂,软件不可能计算所有的情况。而且我们的软件是分版本发布的,所以我们在软件的体系上为以后的扩展作了充分的考虑。工程模型上的考虑:工程模型的框架是不会改变的,不过模型最底层构件是不断变化的。柱、梁、墙等等都是构件。按实际工程分析,不同的构件的属性是不同的。我们用 VB 构造这些构件的时侯,并没有采用一种构件一个类的办法,而是都采用同一个类来构造所有的构件。采用动态添加属性的办法,来适应不同构件不同属性的情况。计算模块的考虑:实际的计算情况是很复杂的

12、,有 10 种构件和 20 种构件的相交判断情况差异很大。软件没有把代码写死,设计了一个智能扣减数据库,程序根据智能扣减的数据进行运算。就算以后增加了很多构件,都不需要修改程序,只需要修改智能扣减数据库就可以了。构件属性输入界面:不同的构件属性不同,同类软件的做法是不同的构件用不同的输入界面。而我们软件不同的构件属性输入界面使用同一个窗体,利用外部的数据动态生成不同的输入界面。 总结这软件很大的特点是具有强烈的专业特点,要设计好这个软件,要对建筑造价有很深的认识。要开发好专业领域的软件,软件的架构师最好是具备这个领域的知识,这样才能更好的用计算机语言来描述用户的场景,设计出满足实际需要的软件架

13、构出来。而我是学城镇建设毕业的,对建筑行业是很熟悉的,这对我的软件架构工作是很有帮助的。软件架构师要作好设计的工作,需要对相关的行业有相当程度的认识。软件架构是一个不断认识,螺旋迭代的过程。没有最好的设计,最好的设计是永远都不会出现的。任何一个设计出来以后,都可以挑出许多毛病出来。我们开发工程量自动计算软件过程中大的体系的修改就经历过好几次,软件发布后,我们发现还是有许多问题没有解决,有些问题是比较严重的,需要修改软件的体系才能妥善的解决。可见,软件架构是一个长期的迭代过程,它贯穿软件的整个生命周期。软件架构是一个权衡的过程。软件架构要考虑到许多方面:软件功能、软件性能、开发人员技术熟悉程度、

14、开发可用的资源、发布时间、对手软件的情况等等。好的软件架构师就是要找一个好的平衡点。工程量自动计算软件,采用 AutoCAD2000 作为绘图平台,而不自主开发图形平台,这是考虑到我们我们开发时间较晚,不能步其他公司的后尘,这样技术会处于长期落后的局面。我们不主要采用 ARXAutoCAD2000 二次开发的强大方式,是因为我们对这方面的技术不甚了解。软件架构考虑的重点是可用性、可扩展性、可维护性。工程量自动计算软件对用户的需求进行了仔细的分析,对用户可能的操作进行了大量的分析,对同类软件也进行了详细的研究。我们设计出来的软件可用性是很高的。软件的架构要灵活,以适应不断变化的需求和没有考虑到的情况。工程量自动计算许多地方的设计都是采用数据库控制代码的运行的方式进浅谈软件的架构设计 http:/第 7 页 共 7 页行的,需求的变更,一般通过修改数据就可以满足,而不需要修改代码。另外软件架构要采用灵活的组件方式进行开发,组件相互的互动性越低越好,组件之间的联系最好是单向的。在满足可用性的基础上采用灵活的设计,这是对软件架构师的功力的考验。作者:张传波2001/12/19

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报