




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅谈软件的架构设计作者:张传波我将以我主持开发的“工程量自动计算软件”,谈一下我对软件架构设计的体会。我们公司主要开发建筑造价领域的软件,其中工程量自动计算软件是技术含量最高、难度最大的软件。我是这个项目的主要开发者,我参与了这个项目的全过程。这个项目从立项至今已经差不多3年的时间了。软件的第一个版本是2000年11月1日发布的。这个软件是和建筑造价行业紧密相关的,我有必要先介绍一些背景资料。建造一栋建筑物需要多少成本呢?它是如何计算的呢?建筑物除了是由钢筋混凝土做的外,它还有门、窗,装饰用料等等。如果细分,建筑物用料可以细分成成千上万种。国家的建筑造价的部门对许多工程进行了分析,统计出建筑物
2、不同的部分、不同的材料的单价造价。也就是说,如果建筑物的各个部分的工程量算出来的,乘以单价就可以知道建筑物的造价了。比方说,由一栋私人的别墅,要知道它的造价,就要算出它各种型号的混凝土用了多少,其中柱用了多少混凝土,梁用了多少,板用了多少,各种型号和直径的钢筋用了多少,各种型号门、窗用了多少等等,就可以算出它的造价了。建筑物的结构是很复杂的,梁、板、柱等等东西是交错在一起的,如何计算它们的工程量是有规则的。全国各地的定额站对此作了规定。我们这个软件的任务是,按照工程量的计算规则,算出工程量。如果没有软件,用户原来是怎样计算工程量的呢?用户根据图纸,用纸加计算器,把计算的过程列出来,最后得出各个
3、部分的结果。人手计算的工作量很大,很繁复,也很容易出错。我们的这个软件工作的流程大致是,用户根据图纸,把构件(梁、柱、板等)画上去,绘图完成后,软件计算工程量,计算的结果以报表的形式输出。软件把原来繁复的手工计算工程变成形象画图的过程,大大的减轻了工作量,增加了工作的乐趣。附图(软件概貌):下面谈一下这个软件的设计过程。l 概念设计用户手算时的情景:用户要仔细的看图纸,包括建筑施工图、结构施工图,把各种平面、立面、剖面图在脑中形成立体的模型,在脑中建立各种构件的关系,要计算的内容也一一明确。用户根据自己的经验和本工程的实际情况,开始计算工程量,计算的过程一般是先算基础,然后是主体结构,接着是装
4、饰和脚手架。最后是汇总计算结果。计算的过程中需要不断的看图纸,不能算错,不能多算和漏算,计算要留有中间结果,以备检查。手算时的工作流程:手算的特点:1. 要分析许多图纸,掌握许多资料。2. 手算者思维要严谨,不过多算、漏算。3. 计算要步步为营,不能有错,需要反复的检查和较验。4. 计算的工作很繁复和枯燥。5. 计算者经验越多,出错的机会越低。本软件要满足以下两点的基本需求:1. 降低计算者的工作量。2. 保证计算的准确度。用软件计算的工作流程:用软件工作时,软件极大地降低了计算者的的工作强度和工作量,迭代的过程只有一个。计算者只需要熟悉图纸,然后“依样画葫芦”的输入数据,剩下的工作就交给软件
5、了。l 逻辑设计先看模块与数据关系图:各模块简介如下:A数据输入模块:用户采用什么方式输入图纸的数据。参考方案:1) 表格法输入:用户以表格的形式输入数据,类似于手算的方式。2) 图形法输入:用户以“画图”的方式输入数据。表格法方式接近于手算的方式,用户的工作量还是很大,所以我们采用图形法输入。考虑到已经有许多自主图形平台的工程量计算软件,我们不应该再走别人的老路,还有工程量计算的复杂性,我们决定采用了AutoCAD2000作为绘图的平台,这样可以充分利用AutoCAD强大的绘图功能和三维实体布尔运算的功能。B数据处理模块:对模块D的数据进行处理,也就是要进行工程量的计算。软件要减轻人的工作量
6、主要是体现在这个地方,也是软件的核心部分。此模块需要很强的人工智能技术。C数据输出模块:以报表的形式输出模块E的数据。D工程数据:用户输入的数据的储存方式。参考方案:1) 数据库方式。2) 对象模型方式。本软件的关键问题是人工智能的问题,软件要解决这个问题:怎样去模拟人脑辨别出复杂的工程情况准确无误的计算出结果。本软件处理的数据量很大,采用数据库的方式应该是很适合的。但如果采用数据库的方式来保存工程的数据,会因为数据库的灵活性不足,难以构造满足现实工程的模型。我们决定采用对象模型的方式,用类来构造现实的工程模型。软件数据的存储直接对工程模型进行,运算也直接对工程模型进行,这样上层编程的难度会降
7、低很多,也更容易解决“模拟人脑辨别出复杂的工程情况准确无误的计算”的问题。工程对象模型:红色矩形:表示集合对象蓝色矩形:表示非集合对象对象描述:数据输入模块把输入的数据通过接口保存在工程模型里面。数据处理模块通过接口访问工程数据。E计算结果数据:计算结果的储存方式。此部分数据量大,而且不需要进行运算,采用数据库的方式保存已经可以满足需要了。数据输出模块直接读取计算结果数据库,生成报表。l 物理设计A数据输入:1. 软件的UI2. 工程管理器3. 构件属性窗口4. DB数据处理:1. 智能扣减数据库2. 用户选择计算的范围3. 计算4. 输出计算结果5. EC数据输出:1. 各式报表的生成2.
8、计算结果的动态查询3. 输出其他格式的文件4. 输出成公司其他软件的接口文件5软件采用的编程语言和数据库:AutoCAD2000的二次开发最好是通过ARX的方式进行,这样的控制力最强,实现的功能最强大。但因为要熟练ARX,必须熟悉VC,考虑到公司目前没有精通VC的人,而我们对VB是最熟悉的,所以采用通过COM接口与AutoCAD2000通讯,用VB通过COM接口调用AutoCAD2000对象的属性和方法。这种方式控制力较弱,但好处是我们可以很快掌握。但是后来在计算部分,我们发现通过COM接口进行运算速度较慢,而且AutoCAD2000会出现内存泄漏,会导致无法计算较大的工程。所以这部分不得不采
9、用ARX的方式进行,计算部分底层的代码用VC来实现,然后编译成COM组件,由VB来调用。数据库方面只涉及到简单的存取操作,不涉及多用户并发的复杂情况,所以采用了Microsoft Access。考虑到我们对编程语言的熟悉程度,软件的特点,还有对性能的考虑,软件主要用VB开发,部分地方使用了VC开发了AutoCAD2000的ARX程序,数据库采用Microsoft Access。软件性能方面的考虑:AutoCAD2000本身对计算机的资源消耗较大,而我们软件要在AutoCAD里面建立的三维实体对资源的消耗也是很大的。当工程巨大时,软件在计算时很可能会出现资源不足的情况。我们采用了一些设计来提高性
10、能。1. 数据动态加载,需要的时侯才载入,不需要时马上释放。2. 优化计算的过程,降低计算时对资源的需求。3. 数据输出部分设计成ActiveX EXE方式,需要时才加载。4. 软件设计成可以分步计算,最终的计算结果可以通过多次的运算的结果汇总而成。可扩展性方面的考虑:实际工程的情况很复杂,软件不可能计算所有的情况。而且我们的软件是分版本发布的,所以我们在软件的体系上为以后的扩展作了充分的考虑。工程模型上的考虑:工程模型的框架是不会改变的,不过模型最底层构件是不断变化的。柱、梁、墙等等都是构件。按实际工程分析,不同的构件的属性是不同的。我们用VB构造这些构件的时侯,并没有采用一种构件一个类的办
11、法,而是都采用同一个类来构造所有的构件。采用动态添加属性的办法,来适应不同构件不同属性的情况。计算模块的考虑:实际的计算情况是很复杂的,有10种构件和20种构件的相交判断情况差异很大。软件没有把代码写死,设计了一个智能扣减数据库,程序根据智能扣减的数据进行运算。就算以后增加了很多构件,都不需要修改程序,只需要修改智能扣减数据库就可以了。构件属性输入界面:不同的构件属性不同,同类软件的做法是不同的构件用不同的输入界面。而我们软件不同的构件属性输入界面使用同一个窗体,利用外部的数据动态生成不同的输入界面。l 总结这软件很大的特点是具有强烈的专业特点,要设计好这个软件,要对建筑造价有很深的认识。要开
12、发好专业领域的软件,软件的架构师最好是具备这个领域的知识,这样才能更好的用计算机语言来描述用户的场景,设计出满足实际需要的软件架构出来。而我是学城镇建设毕业的,对建筑行业是很熟悉的,这对我的软件架构工作是很有帮助的。软件架构师要作好设计的工作,需要对相关的行业有相当程度的认识。软件架构是一个不断认识,螺旋迭代的过程。没有最好的设计,最好的设计是永远都不会出现的。任何一个设计出来以后,都可以挑出许多毛病出来。我们开发工程量自动计算软件过程中大的体系的修改就经历过好几次,软件发布后,我们发现还是有许多问题没有解决,有些问题是比较严重的,需要修改软件的体系才能妥善的解决。可见,软件架构是一个长期的迭
13、代过程,它贯穿软件的整个生命周期。软件架构是一个权衡的过程。软件架构要考虑到许多方面:软件功能、软件性能、开发人员技术熟悉程度、开发可用的资源、发布时间、对手软件的情况等等。好的软件架构师就是要找一个好的平衡点。工程量自动计算软件,采用AutoCAD2000作为绘图平台,而不自主开发图形平台,这是考虑到我们我们开发时间较晚,不能步其他公司的后尘,这样技术会处于长期落后的局面。我们不主要采用ARXAutoCAD2000二次开发的强大方式,是因为我们对这方面的技术不甚了解。软件架构考虑的重点是可用性、可扩展性、可维护性。工程量自动计算软件对用户的需求进行了仔细的分析,对用户可能的操作进行了大量的分析,对同类软件也进行了详细的研究。我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州墨尔本理工职业学院《建筑装饰材料与工艺》2023-2024学年第一学期期末试卷
- 东南大学《土木工程施工技术A》2023-2024学年第二学期期末试卷
- 四川传媒学院《新媒体黑白故事漫画制作》2023-2024学年第一学期期末试卷
- 吉林省长春市九台区重点中学2024-2025学年初三下学期第七次月考英语试题含答案
- 2025二手房买卖合同融资协议
- 2025主要债权合同抵押物清单
- 2025学校餐厅与小商店经营合同
- 2025年北京市海淀区一零一中学初三3月份调研考试英语试题含答案
- 辽宁省大连市第十六中学2025年高三TOP20三月联考(全国II卷)物理试题含解析
- 达县2024-2025学年数学五下期末考试模拟试题含答案
- 基坑工程土方开挖支护与降水监理实施细则
- 江苏徐州市深地科学与工程云龙湖实验室社会招考聘用9人模拟试卷【附答案解析】
- 土方回填施工记录表
- 植物根茎叶课件
- 反生产行为讲稿
- 施工现场消防安全技术交底
- 冀教版二年级语文下册看图写话专项加深练习题含答案
- 焊接工艺评定及焊接工艺技术评定管理标准
- 洗衣房各岗位工作流程
- 基于SWOT分析的义乌市现代物流业发展研究
- 基于自适应滤波对音频信号的处理详解
评论
0/150
提交评论