登陆注册
8724600000016

第16章 软件设计(2)

但是从软件工程的四个阈(Problem Domain,Human Interface,Data Management,System Interface)来看,将业务层、数据层、界面层分开则是相当有必要的。界面层可交给交互设计师去设计(有几个程序员设计出来的界面值得欣赏),交互设计师不用考虑如何去与用户打交道,他只负责“画”出界面,而不用了解任何语言(Human Interface,HI);程序员去实现界面,并完成其中的逻辑(Problem Domain,PD),对他来说,不必知道数据是如何存放在哪种数据库中的,是如何组织的,他要做的就是对(Data Management,DM)说“我要×××××××”;而DM要做的是根据PD的要求,读写数据库;表面看上去,一层调用一层,显得烦琐,效率低。但结构很清晰,具有极好的可维护性。在当今,速度并不是决定软件好坏的唯一因素,良好的结构、易维护、可复用、易扩展等也是评价软件好坏的重要指标。

就传统的C/S结构而言,由于数据的存取和处理主要依赖于客户端程序,本地化的程序配制复杂(如必须配制本地ODBC或固定服务器机器名等),逐台配置机器对于一个拥有多用户的复杂系统而言,工作量较大,维护成本高;而应用程序由于需要经常更新,因此逐台更新的问题比较复杂;另一方面,C/S结构对网络底层协议的依赖性大,由于部分程序不是建立在TCP/IP协议之上的,因此对防火墙、多网端等问题的解决并不方便,对跨平台(如Unix—Windows)的支持也稍显不足;另外,目前的应用系统建设一般都超出了局域网范畴,传统C/S结构对实现内网/外网、局域网/广域网间的有机整合也有局限。

相对来说,B/S结构对用户的技术要求比较低,对前端机的配置要求也较低,而且界面丰富、客户端维护量小、程序分发简单、更新维护方便。它容易进行跨平台布置,容易在局域网与广域网之间进行协调,尤其适宜信息发布类应用。但是,B/S结构在客户端对大容量数据进行深层次分析、汇总、批量输入输出、批量更改的工作中出现困难,尤其更难实现图形图像等复杂应用,对于需要与本地资源(如调用本地磁盘文件或其他应用程序,如扫描驱动、OCR识别、图形压缩与解压缩和工作站本地密码机的调用等)进行交互性的操作上极不方便,因而难以适用于基于流程类的办公、办证、审核等系统。

对于C/A/S及B/A/S这种结构,如果企业涉及复杂的业务逻辑,就要单独划分出中间层,以利于软件具有更好的可维护性。中间层有可能会使编码的工作量有所增加,但这些增加的工作是非常有意义的。当然,如果企业的业务逻辑很简单,就不需要这个中间层。确定是否具有中间层的一个重要原则是:划分中间层的目的是为了使各个层次负载均衡,最大限度减少软件的复杂度和软件维护的代价。

以上分析表明,C/S结构与B/S及多层结构各有利弊,只有将他们的优缺点进行互补,按照自身特点选择适合的技术平台,才能得到最理想处理。

4.3结构化设计

4.3.1概述

软件需求分析阶段完成了对问题的分析建模工作,软件设计阶段则要完成对解决问题方案的设计建模工作。因此,软件设计阶段的工作任务和内容是在问题的分析模型基础上,用一定的方法和手段对问题的解决方案进行设计建模。设计结果的好坏、易理解性和易修改性将直接影响到后续阶段软件实现工作的质量和费用。

4.3.2工作内容和任务

结构化软件开发方法采用结构化设计(Structured Design,SD)技术进行问题解决方案的设计工作,它将问题的解决方案表述为:“结构图+关系数据模式”的形式,其中,结构图描述软件系统的程序结构,关系数据模式描述软件系统的数据库结构。因此,结构化设计工作主要包括程序结构设计和数据库结构设计,数据库设计在前面章节已有概述。程序结构设计,又称为概要设计或总体设计。首先是根据数据流图类型将问题分析划分为事务型问题和/或变换型问题,分别将它们映射成事务型结构图和/或变换型结构图;然后对映射得到结构图进行综合和评价改进;最后,按照有关规范编写概要设计说明书和进行复审。

4.3.3程序结构

程序结构或程序物理结构是对要解决的问题或要设计的系统一种分层的表示方法,它指出了组成程序(系统)的各个元素(即各个模块)以及它们之间的关系。程序结构是从需求分析阶段定义的分析模型导出的。程序结构隐含着控制层次的关系,但不表示程序的具体算法或过程关系,即不表示诸如处理的顺序,选择的出现和次序、操作的重复循环等。程序结构通常用结构图的形式表示。

4.3.4结构图

结构图(Structured Charts,SC)是准确表达程序结构的图形表示方法,它能清楚地反映出程序中各模块间的层次关系和联系。与数据流图反映数据流的情况不同,结构图反映的是程序中控制流的情况。

结构图中的主要成分有:

①模块:以矩形框表示,框中标有模块的名字。对于已定义(或者已开发)的模块,则可以用双纵边矩形框表示。

②模块间的调用关系:两个模块,一上一下,以箭头相连,上面的模块是调用模块,箭头指向的模块是被调用模块,模块A调用模块B。在一般情况下,箭头表示的连线可以用直线代替。

③模块间的通信:以表示调用关系的长箭头旁边的短箭头表示,短箭头的方向和名字分别表示调用模块和被调用模块之间信息的传递方向和内容。首先模块A将信息C传给模块B,经模块B加工处理后的信息D再传回给模块A。

④辅助控制符号:当模块A有条件的调用模块B时,在箭头的起点标以菱形。模块A反复地调用模块D时,另加一环状箭头。在结构图中条件调用所依赖的条件和循环调用的循环控制条件通常都无须注明。

一般说来,结构图中可能出现以下4种类型的模块:

①传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。

②传出模块:从上级模块取得数据,进行某些处理,传送给下属模块。

③变换模块:从上级模块取来数据,进行特定处理,送回原上级模块。

④协调模块:对其下属模块进行控制和管理的模块。

值得注意的是,结构图着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系。它和程序流程图(常称为程序框图)有着本质的差别。程序流程图着重表达的是程序执行的顺序以及执行顺序所依赖的条件。结构图则着眼于软件系统的总体结构,它并不涉及模块内部的细节,只考虑模块的作用,以及它和上、下级模块的关系。而程序流程图则用来表达执行程序的具体算法。

没有学过软件开发技术的人,一般习惯于使用流程图编写程序,往往在模块还未作划分、程序结构的层次尚未确定以前,便急于用流程图表达他们对程序的构想。这就像建一栋大楼,在尚未决定建筑面积和楼层有多少时,就已经开始砌砖了,这显然是不合适的。

在结构化分析和设计技术中,通常存在着两种典型的问题类型,变换型问题和事务型问题。它们的数据流图和结构图都有明显的特征。

4.3.5变换型问题

在数据处理问题中,通常会遇到这样一类问题,即从(程序)“外部”取得数据(如从键盘、磁盘文件等),对取得的数据进行某种变换,然后再将变换得到的数据传回给“外部”。其中取得数据这一过程称为传入信息(数据)流程,变换数据的过程称为变换信息(数据)流程,传回数据过程称为传出信息(数据)流程。当数据流图或其中某一段数据流表现出上述特征时,该数据流图或该段数据流图表示的就是一个变换型问题。完成数据变换的处理单元叫变换中心。

4.3.6模块说明

在完成上述程序结构的设计和改进工作之后,还必须对每个模块进行具体定义和说明,主要内容包括以下几个方面:

1.功能说明

描述模块的主要任务、条件决策和输入输出,并且着重说明处理中重要的算法或过程,它应是无歧义的和有限度的。

同类推荐
  • 云计算和现代远程教育

    云计算和现代远程教育

    本书介绍了云计算知识、云计算的特性、云计算技术、云计算中的访问云、云计算中的云存储、云计算在远程教育中的应用等内容。
  • 黑客就在你身边

    黑客就在你身边

    互联网络正在改变着我们的生活,每个人都处在互联网的天罗地网之中。本书以轻松的笔调,向人们介绍了有关“黑客”的知识。当你读完这本书后,你会发觉“黑客”一点都不神秘,他们渴望全社会对他们有一个公正的评价。
  • 如何建设网站

    如何建设网站

    本书以问答的方式介绍了建设网站的基本知识,内容包括:网站设计的八个步骤、建设网站需要掌握的工具软件、网页中插入图像、在网页中隐藏内容等。
  • 中文版AutoCAD2011基础与应用案例教程

    中文版AutoCAD2011基础与应用案例教程

    本书采用项目教学方式,通过大量案例全面介绍了AutoCAD2011软件的功能和应用技巧。全书共分8个项目,内容涵盖AutoCAD2011基本操作,绘制与编辑图形,标注尺寸,添加文字注释与应用表格,创建与应用块,绘制与编辑三维图形,图形输出等。
热门推荐
  • 破镜之黍离篇

    破镜之黍离篇

    ——作品简介——以反将之身夺帅印于三军前,退寇数里,对于黍离而言,这无疑是一场发自她内心的严峻考验——《古代——破军篇》面对真爱的告白,对于黍离而言,无论她身处何等境地,是一个怎样的人,爱这个东西,对于她太过深意,更何况不爱……这个东西?她从未渴求过这些,或者说早已舍弃——《网游——全息篇》和生死零距离接触,对于黍离而言,这仿佛是在寻找过去的自己,只是……为何,身在其中的她会如此揪心?——《仙侠——战神篇》信任是一种值得的托付,对于黍离而言,一个人最好的伪装,那便是那个人对自己的信任充满了自信,实则自欺欺人,那么所谓的信任也成了一种空谈——《古代——谋臣篇》沉寂在过去消亡于现在,对于黍离而言,她从过去中得到的解脱,来到现实之中她便真的解脱了吗?还是说一切皆是宿命——《现代——本源篇》黍离所看到的医者仁心,大概就是身为医者在面对每个可贵的生命时,都会尽自己最大的努力,挽回并让它得以绽放,得以永续……——《末世——仁心篇》——说明——1-《破镜之黍离篇》现定为六个世界,第一次接触快穿,希望大家能喜欢【鞠躬】2-不喜可以拐弯,可以提友善意见,不接受恶意吐槽,友好评论区。
  • 羽落槿晞亦寒心

    羽落槿晞亦寒心

    他是一朝太子宠她爱他胜过自己的生命,想给她全世界最好的,而另一个人却总是总是默默地陪在她的身边,不求回报,可惜她终究不会爱上她……
  • 腹黑王爷不好惹废柴小姐要逆天

    腹黑王爷不好惹废柴小姐要逆天

    她一一前世是王牌杀手,一朝穿越竟成了一个废物,而且没爹没娘,就放在他姑父家里寄养。机缘巧合,一个不小心就听到了他爹娘的真正死因,竟是被皇帝所害,她发誓一定要让皇家的人血债血偿。他一一擎天大陆的夜王,冷酷腹黑这辈子唯独栽在了她一个人手上。当他得知她接近他的真正原因,无奈的说:“小家伙,我该拿你怎么办呢?"
  • 暗黑狩猎记

    暗黑狩猎记

    开辟天地之初,混沌中诞生了两位主神,黑王与白帝。漫长岁月之后,主神们化作两个种族,黑洞一族与白洞一族。白洞一族天生神力,身怀无数种力量,并且能将自己的力量赐予别人;黑洞一族天生绝脉,无法修炼,却能吞噬别人的力量,迅速成长。人们恐惧黑洞一族的力量,所以将他们赶尽杀绝;人们敬畏白洞一族的力量,所以将他们当做圣者供奉。一个走投无路的少年,却因为不可思议的机缘而获得了黑王的传承之书……
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 恶魔圣武士

    恶魔圣武士

    为了拯救即将被毁灭的城市,半神圣武士圣凯文.奥克斯以自己的灵魂作为祭品与无尽深渊做交易。高贵的灵魂即便沦入罪恶的深渊,崇高的品性也不会被改变。从此,恶魔圣武士奥斯横空出世。我发誓要让魅魔学会忠贞要让怯魔学会勇敢要让狂战魔学会冷静要让暴食魔学会克制要让深渊变成一片乐土...(圣武士堕入深渊转生为恶魔不断自救和拯救别人的故事,伪dnd小说)
  • 神女大人有个纨绔丈夫

    神女大人有个纨绔丈夫

    九世轮回夫妻,霸道神女独宠纨绔丈夫。“为夫想要与你比肩。”“那就让天道尝尝什么叫神!”“烨烨不必勉强。”“你想要的就是散尽神识毁尽肉身烨华也替你换来。”
  • 网游之神墟职业玩家

    网游之神墟职业玩家

    什么?打Boss输出不够?S级任务需要找可靠的人帮忙!想找人带您混荣誉!只要您金币给够!相信我!因为我是职业的!一个无学历无技术无颜值的三无人员在残酷的万恶的黑作坊辞职后终于找到了自己的第一份工作工作室打金员,在接触到虚拟游戏世界之后慢慢熟悉了里面的一切,并且发现自己有一定的游戏天赋,于是开始做一名职业玩家。世界前三游戏巨头联合开发了一款历史性的游戏,全球联网游戏《神墟》马上就要开放了,还在等什么呢,进来试试吧。
  • 我真的一看就会

    我真的一看就会

    聂木只是一个小人物,只想在江湖中喝喝酒,把把妹,生个孩子,当个父亲。武林事?与他何干?本文轻松快意不血腥。
  • 循环区

    循环区

    一个圆,又叫一个封闭图形;一个球,又叫一个封闭空间。一段奇异经历从这里开始,而我,只希望生存。这里,是迷宫,是死穴,是地狱。这里,我叫它循环区。