登陆注册
8724600000015

第15章 软件设计(1)

4.1软件设计概述

需求分析结束之后,已经明确目标系统要做什么了,此时进入了设计阶段,需要解决“怎么做”的问题。对于设计,可以给出如下的严格定义,“应用各种技术和原理,对设备、过程或系统作出足够详细的定义,使之能够在物理上得到实现”。软件设计衔接着需求分析和软件构造,是承上启下的关键环节。同需求分析一样,设计方法主要也是两大类,结构化设计(Structured Design)和面向对象的设计(Object Oriented Design)。传统结构化的方法中将软件设计分为两个明显的阶段:概要设计和详细设计。

结构化方法认为,最终的软件通过程序体现,而程序可以理解为数据结构加算法,所以结构化方法认为整个设计阶段主要完成软件系统两方面的描述:一是系统的静态描述,也就是系统的结构设计和数据设计或者是数据结构的设计。二是系统动态方面的描述,也就是系统的过程设计。其中,系统结构和数据的设计主要是概要设计阶段要完成的内容,过程的设计则是详细设计阶段要完成的内容。

随着软件设计不断发展,很多新的理念不断出现,对读者来说,值得参考。最近网上比较流行“设计已死”,这是对传统的软件工程方法提出全新的挑战。所谓设计已死,事实上是一种比较偏激的说法,但本质上说明设计精简及设计简单化已成为了当今的趋势,这一趋势事实上是由软件环境的多变而决定的。另一种相似的理念认为,代码就是最好的设计,虽然偏激,却也有一定的合理性。对于这些新的理念,本书只做简单介绍,希望能够拓展读者的思路。在设计精简这一大趋势下,最新的一些设计方法并不严格区分设计的两个阶段,特别是使用UML进行面向对象分析的时候。在使用UML进行面向对象的设计时更强调实际的软件系统的描述效果。在面向现代企业环境的软件设计中,需要考虑的因素更为复杂。

Pressman将软件设计分为4大部分,分别是数据设计、体系结构设计(又称为架构设计)、接口设计、过程设计。

数据设计,主要描述了系统数据结构的设计。这一内容主要包括两部分:一是从需求分析阶段的实体关系图得到数据库的模式以及子模式的设计,如可以将某一ER图转换为关系模式,也就是设计出表和表之间的关系;另一方面是软件具体实现时的相关算法所涉及的数据结构的设计。

体系结构的设计,在很多不同的软件工程教材上都有不同的说法,本文认为,现代软件体系结构的设计主要可以从两个方面来理解。一是从纵向角度来观察软件系统的结构,主要是系统模块结构的设计。如在常见的企业管理信息系统中,按照企业的各部门职能可以得到的系统模块结构图(详见本章的后续章节)。另一方面的内容主要是从横向角度来观察软件系统的结构,这主要是分层的软件体系结构设计。如常按照用户交互、商业规则、数据访问这几项主要功能将软件分为3层。在后面的内容将详细介绍。

接口设计主要完成软件内部之间交互的接口,软件与人交互的设计。特别是软件与人的交互设计,也就是人机交互,或者人机工程学,越加引起人们的重视,可以说它将成为软件工程领域一个新的热点。人机交互(Computer Human Interaction,CHI),国际上也称(Human Computer Interaction,HCI),主要研究人与机器的交互,它是一门相当综合的新兴学科。它的研究内容很广,包括心理学领域的认知科学,心理学,软件工程领域的系统构架技术,信息处理领域的语音处理技术和图像处理技术,人工智能领域的智能控制技术等。关于人机交互,读者可以参考其他专业类书籍,本书对此不作详细描述。过程设计又称为构件设计,是通过定义数据结构、接口和算法进行软件过程的设计。在结构化方法中,最常见的就是用数据流程图来描述过程设计(详见本章后面的内容)。

4.2架构设计

4.2.1概述

关于软件架构的一个重要概念是分层,通常软件通过分层来达到灵活的发展。如操作系统和其他软件的分离、中间件的概念、网络的7个层次等。目前软件架构中一个比较重要的层次概念就是表现、逻辑、数据的分离。

4.2.2常见的软件架构C/S,B/S,B/A/S,C/A/S及多层体系架构

1.C/S模式

C/S又称Client/Server,或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQL Server。客户端需要安装专用的客户端软件。C/S模式是一种两层结构的系统:第一层是在客户机系统上结合了表示与业务逻辑;第二层是通过网络结合了数据库服务器。

2.B/S模式

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器端安装Oracle、Sybase、Informix或SQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。

B/S模式是一种三层结构的系统。第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息,提交给后台,并提出处理请求,这个后台就是第二层的Web服务器。

第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQ请求,管理数据库。

3.C/A/S,B/A/S模式

C/A/S,B/A/S模式是由前两种结构演化而来的,就是加上了一个中间层,这个中间层可以专门处理企业的业务逻辑和其他的应用。其中中间层可以放在客户端,也可以放在服务器端,当然也可以单独出来。这样当应用层改变时,完全可以不用改动客户端和服务器端,因为企业应用变化比较大的就是业务逻辑的变化,这样改动就不会影响到其他层,或使影响最小化。现在有许多中间件技术,如微软的Com/Dcom技术,Corba技术及RMI(远程方法调用)等,许多公司也开发了一些这方面的软件,如IBM的WEBSPHERE、BEA的weblogic等。

4.2.3各自的优缺点

1.C/S模式

首先,交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。B/S虽然由JavaScript、VBScript提供了一定的交互能力,但与C/S的一整套客户应用相比是太有限了。

其次,C/S模式提供了更安全的存取模式。由于C/S是配对的点对点结构模式,采用适用于局域网、安全性比较好的网络协议(如NT的NetBEUI协议),安全性可以得到较好的保证。而B/S采用点对多点、多点对多点这种开放的结构模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性只能靠数据传输加密和数据服务器上管理密码的数据库来保证。INTERNET技术中关键的安全问题远未解决,其中信息传递过程中的加密和身份验证是关键性任务运用INTERNET技术的最大障碍,这就是现阶段INTERNET技术的主要应用仍停留于公开发布信息为主的原因。现代企业需要有开放的信息环境,需要加强与外界的联系,有的还需要通过Internet发展网上营销业务,这使得大多数企业将他们的内部网与Internet相连。由于采用TCP/IP,他们必须采用一系列的安全措施,如构筑防火墙,来防止Internet的用户对企业内部信息的窃取以及外界病毒的侵入。

再次,采用C/S模式将降低网络通信量。B/S采用了逻辑上的3层结构,而在物理上的网络结构仍然是原来的以太网或环形网。这样,第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用同一条网络线路。而C/S只有两层结构,网络通信量只包括Client与Server之间的通信量。所以,C/S处理大量信息的能力是B/S所无法比拟的。

最后,由于C/S在逻辑结构上比B/S少一层,对于相同的任务,C/S完成的速度总比B/S快,这使得C/S更利于处理大量数据。

C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。

缺点主要有以下几个:

只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要系统具有扩展性。对于这种方式,要实现远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况下,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有限制。可能适应于Windows98,但不能用于Windows2000或Windows XP,或者不适用于微软新的操作系统等,更不用说Linux、UNIX等。

2.B/S模式

首先,它简化了客户端。它无须像C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便。

其次,B/S特别适用于网上信息发布。受限于HTML语言交互性差的问题,输入输出的用户界面不能用纯INTERNET技术规范HTML/HTTP解决,因为INTERNET WWW技术的主要应用是发布信息而不是输入输出,“浏览器”是用于“浏览”而非终端输入输出。

所以为了解决浏览器和HTML页面交互性差的问题,“B/S”版软件往往在客户端采用微软独家支持的ACTIVEX技术,这其实是一个由浏览器启动的客户端程序。

B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。

企业MIS系统开发已发展到大量应用Web Server的新技术阶段,但一般的业务生成工具分为Browser/Server、Client/Server两种模式,尽管各种模式的产品在拥有自身优势的同时,也有一定的不足。对于用户来讲,对客户端应用程序要求越来越高,既要求保持原有客户端程序的操作方便性,又要求具有Web界面风格。虽然在某种意义上,一些开发商在客户端程序上嵌入IE界面,但是客户端程序处理功能却比原来的C/S结构的客户端程序处理功能大大降低,还是没有解决IE界面对业务的笨拙处理,不具备灵活性和人性化。

3.C/A/S及B/A/S的优缺点

首先,这两种结构是从上面两种结构演化而来,在原有的基础上又有许多其他优点。其次,中间层的概念可以使许多企业复杂的业务独立出来,将来无论对于软件的变化或升级都比较方便。由于中间层可以独立进行部署,这样就把部署的复杂性进行了分离。

4.2.4关于软件体系结构的选取

在进行软件体系结构设计的时候,通常可以采取的结构是C/S和B/S,及C/A/S情况,下面对这些情况分别加以比较和讨论。

传统的C/S结构表面上存在的主要问题是维护烦琐,其实这个问题在“胖”客户/应用/服务结构中也存在,因为客户总得去更新界面。而采用B/S的话,在做许多应用时又会显得“底气不足”。这也是目前B/S方式主要用在电子商务上的原因之一。

同类推荐
  • 三维动画审美谈

    三维动画审美谈

    数字时代,美的标准充满更多的不确定性。而三维动画以数字图像形式成为这个图时代的代表。三维动画及三维图像不仅仅是由于应用了仿真数字图像技术而带来的虚拟空间,还有更多的是由三维图像技术所引发或引导的被扩展的图像技术,这些技术无不应用在现代视觉设计领域的各个方面,并且,由此引起社会的追热,引起审美观念的改变。这些改变是在进行中的,变化中的,也是在发展中的。对于未知的美,我们做的只是追寻和记录,我们不知道以后的美将会是什么样,尽管我们苦苦追寻,孜孜探讨,同时也在默默审视。我们在追寻中享受美,在探讨中认知美,在审视中体验美……
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
  • 初级会计电算化

    初级会计电算化

    本书是作者根据历年会计从业资格考试的考试大纲以及多年对真题的分析,并结合多为专家、学者的实践经验而编写的。本书主要分为八套模拟试卷,以对考生考前的学习进行模拟实战,达到提高考生成绩的目的。
  • 黑客就在你身边

    黑客就在你身边

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

    如何组装电脑

    本书以问答的形式介绍了组装电脑的基本知识。内容包括:电脑硬件的部件组成、CPU的发展历程、CPU主频、内存的组成、内存的主要性能参数等。
热门推荐
  • 天行

    天行

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

    重生之海上霸主

    小职员刘致远遭遇车祸,重生为明嘉靖年间一文弱书生。他本想着就此过上风花雪月的幸福生活,可天不遂人愿,万恶的倭寇入侵,毁灭了他美好生活的梦想。走投无路之下,他被迫下海。众小弟:我们是海盗,快乐的海盗,专打海盗的海盗。东洋倭寇:俺们也是走投无路,才过海打劫的。尊敬的刘老大,放俺们一条活路走吧。刘:他娘的,我最恨你们这帮狗日的。你们再敢出海,我就把你们轰下海去喂王八。嘉靖皇帝:朕是个不想干活的懒人,以后你跑船,朕当皇帝,咱们井水不犯河水,可好?刘:什么?你还想闭关锁国?再不开放海禁,信不信我打到北京,把你们老朱家赶回凤阳老家种地去。西方海盗:俺们欧罗巴穷啊,尊敬的刘老大,收俺们当小弟吧。以后您吃肉,给俺们一点汤喝就行。刘:你们这帮混蛋,没素质没人品,想当我的小弟?门儿都没有。你们从哪来就滚回哪去,以后绝不允许你们踏入大海半步。因为:大海是我的领土,我是海上霸主。
  • 亘古魔

    亘古魔

    “不灭动,风云涌,阴阳现,日月颠。轮回悟,乾坤变,大魔出,天地哭。”这段禁忌口诀中究竟预言着什么?所有的阴谋都会在这里展开,所有宿命都会在这里结束。
  • 神探胡别

    神探胡别

    在武琦县卫城镇的中学里,有一位学生,擅长逻辑推理,立志成为侦探。他就是胡别……
  • 异世之勇者传说

    异世之勇者传说

    芙蕾雅大陆,法兰王国,魔力,精神力,宠物,魔兽,如何来拯救这片被黑暗笼罩的大陆?
  • 迷途的信任

    迷途的信任

    贺强辞职后,决定去投奔主任为他介绍的从未谋面的王总,在跟随王总一起闯荡的日子他经历了人生中的大是大非,有怎样的命运在等待着他,又有怎么样事情等待着考验他?权利,金钱,阴谋等待他来,商场如战场,官场如刑场,他将选择怎样的人生?
  • 云起深深

    云起深深

    人活一世,各自逍遥,追梦煮酒,轻叹缘浅,何必相逢.....他和她在血腥中相逢,却注定此生牵绊,原以为这可以是幸福终点,不想命运弄人。若是缘深,就不该彼此折磨.....
  • 社会不教,精英不讲,坎儿还得自己过

    社会不教,精英不讲,坎儿还得自己过

    本书作者在咨询实践中,接触到大量在人生路上苦苦打拼的年轻人和正在被事业诸多不顺折磨的中年人,这些人的奋斗经历、种种痛苦和对人生、工作的感悟,给作者带来了极大的震撼。作者把其中的故事精华、心得体会和蕴藏其中的规律结合在一起,写成这本给社会精英的人生建议书。
  • 余生请你指教

    余生请你指教

    『为了追赶他的步伐,我努力了十五年。』苏冉阳一直暗恋一个人。那个和她生活在同一屋檐下的人,那个永远都用冷漠高傲的眼神看她的人。他对她一直漠不关心。她却越挫越勇,从不曾放弃。*后来他身世揭开,变成C市最大金融公司的掌权人,身居高位,步步为营。复仇之路荆棘丛生,他亦犹鱼得水,泰然处之。*他有佳人相伴,羡煞旁人。她父母病重,伶俜无依。在她即将倒下之际,他缓缓朝着自己走来,伴随着木槿花的清香,就如第一次见面时,那个阳光灿烂的午后。只是不同的是他主动地向她伸出了手:“自我遇见你的那天起,我所做的一切都是为了接近你。”可是父亲因他而死,她万念俱灭,第一次用冰冷的目光看着他:“付息,我宁愿从不曾认识你。”付息这一生从不惧怕什么,但唯独怕她的冷漠。付息这一世从不曾有顾虑,却始终担心她会受委屈。*他做的每一次她认为伤害自己的决定,都是为了守护她。只是苏冉阳从未明白,他一直在用他那独特的方式爱着自己。*你因经历沧桑而失去的童真,由我还你。——苏冉阳
  • 王爷倒追废柴逆袭之无双姐妹花

    王爷倒追废柴逆袭之无双姐妹花

    一朝玛丽苏的告白穿越了,穿到废柴废柴身上,好吧,无语,耶?那不是学姐吗?为什么学姐比我厉害唉请看两位女主的“麻雀”蜕变之路