欢迎来到天天文库
浏览记录
ID:5338083
大小:208.39 KB
页数:30页
时间:2017-12-08
《软件设计的基本原则》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件设计的基本原则邱志东BAIDUCONFIDENTIAL2005前言•软件设计基本原则•软件设计的方法•软件设计文档编写BAIDUCONFIDENTIAL2005“培训”方法•列举大家公认的原则•补充case•所有的原则实际上都不是必须遵守的“金律”,熟练把握的人可以反其道而行BAIDUCONFIDENTIAL2005第一部分基本原则BAIDUCONFIDENTIAL2005基本原则•简单性•一致性•可扩展性•低耦合,高内聚BAIDUCONFIDENTIAL2005简单性(一)1、进行功能拆分,每个模块尽量简单
2、。在做总体设计时,对数据、逻辑、呈现的拆分应有充分的考虑,保持三者的低耦合度,即每一层都尽量简单。在做总体设计时,应对服务器的部署、模板分布进行拆分,每一层的服务器尽量只做单一的工作。在做详细设计时,模块(函数、类),只完成最简单的工作BAIDUCONFIDENTIAL2005简单性(二)2、模块间的接口保持简单。模块可以是“子系统”,也可以是具体的函数、类。模块间只传输最基本的数据,而不能为了便利对数据进行加工例子:原始数据中有”&”符号,没有必要在数据层转换为”&”;以适应XML格式的输出。子系统之间的
3、接口尽量定义为最基本、最原始的结构。子系统之间的接口尽量保持数据和数据结构剥离例子:as和bs、di之间的接口是一个非常好的caseBAIDUCONFIDENTIAL2005简单性(三)3、使用简单的实现方法。不要使用太复杂的数据结构。如果有现成的实现方法,尽量复用。不要把事情复杂化:例子:•在html中提取正文,如果设计目标仅仅就是需要获取正文,可以简单地把tag标签(<,>之间的内容)忽略,剩余的就是正文。而不需要建立复杂的树形结构BAIDUCONFIDENTIAL2005•Q:在各自负责的模块中,是否有过分
4、复杂化的设计?请举例。例子:(1)WSTPB(PageBuilder),数据、呈现、逻辑混为一体,无法剥离和拆分(2)常见的“简历设计”,即为了简历好看,而做的一些花哨、复杂设计。WSTPB是一个典型的“简历设计”BAIDUCONFIDENTIAL2005一致性(一)1、概念一致(1)先界定概念,再做设计考虑(2)基本概念,在MRD阶段进行界定(3)影响到核心数据结构设计的概念,在总体设计中界定2、各个模块使用的方法、接口、模式保持一致反例:(1)一个模块的数据使用纯文本格式,另外一个模块使用XML格式(2)UR
5、L长度定义,一个模块定义为256bytes,另外一个模块定义为200bytesBAIDUCONFIDENTIAL2005一致性(二)3、使用一致的系统限制数据(1)基本功能、性能数据在MRD中就需要能有体现(2)总体设计和详细设计需要有明确的系统限制数据(3)不能确定的数据,尽量使用经验值(例:URL长度,凭经验,也觉得256bytes比200bytes合理)4、避免在一个功能中做过多的特殊处理反例:intf1(){if(!strcmp(CTDI.cityname,"吉林省"))gotoNO_ABR_HANDLE
6、R;}BAIDUCONFIDENTIAL2005一致性(三)5、始终贯彻当初的理念(1)确定了的概念和策略需要始终贯彻例子:同义词策略,不再使用“包含匹配”概念。(2)如果有需求更改,不要修改当初的设计,而是在设计中做适配。6、开发者遵循共同的软件设计风格和设计格式(1)建立合适的文档规范、设计规范,多个开发者遵循(2)个人养成一致性习惯例子:在编写这个ppt中,有意思的保持标题使用32号字,描述使用18号字,例子使用12号字。BAIDUCONFIDENTIAL2005•Q:什么原因使得很难保持严格的一致性?A1
7、:需求变更A2:接口定义不明确,数据之间的关系拆分不合理A3:没有形成良好的一致性习惯友情提示:在设计数据结构中,建议先充分考虑到数据的流向,在流程的各个阶段的产出以及对应的数据结构。保持各个数据结构的一致性BAIDUCONFIDENTIAL2005可扩展性(一)1、明确和预估可扩展需求(1)MRD中需要有可预见的未来需求(2)在性能评估中,有适当的冗余度(3)预估值的考虑:a、凭经验b、适当的调研分析BAIDUCONFIDENTIAL2005可扩展性(二)2、数据和逻辑分离。所有的设计都可以简单的理解为:数据+
8、赋予数据的操作。数据和逻辑分离的设计显然有良好的可扩展性。最复杂、最难扩展的设计就是数据、逻辑、呈现三者的混合3、接口预留•在接口设计中,可以做适当的冗余•在接口设计中,可以很容易地实现在接口上再做一层适配。即低层接口是上层接口的一个子集BAIDUCONFIDENTIAL2005可扩展性(三)4、进行适当的逻辑抽象,以抽象层做为接口。在关键接口中,可以在数据、逻辑之外做抽
此文档下载收益归作者所有