登陆注册
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方式主要用在电子商务上的原因之一。

同类推荐
  • 悟道:一位IT高管20年的职场心经

    悟道:一位IT高管20年的职场心经

    本书是一位有20多年职场经验的IT企业高管撰写的一系列有关职场悟道的短文集成,讲述的是在企业里如何修炼自己,如何摆平自己的心态,怎样做到“世事洞明”和“人情练达”,如何“搞定老板”,怎样做到工作和生活平衡等诸多话题,涉及到跳槽、转行、升迁、环境、沟通、老板、下属、老外等等。每一篇都以作者的亲身经历或者身边的故事说明道理,语言简洁流畅,妙趣横生,更有不少经典片段和发人深省的职场警句,读起来就像是一个睿智幽默的老朋友坐在你面前娓娓道来。
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 如何操作电脑

    如何操作电脑

    信息社会是科技、文化发展,知识爆炸的结果。不懂得计算机,将处于半文盲的境地。因此,对于计算机,不仅要作为工具使用,已经是一项文化普及的要求。我们不仅要会使用计算机做一些诸如文字处理等具体工作,更要培养一种计算机意识。
  • 中文版AutoCAD2011基础与应用案例教程

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

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

    EDA技术

    根据课堂教学和实验操作的要求,以提高实际工程设计能力为目的,深入浅出地对EDA技术相关知识作了系统和完整的介绍,相关知识作了系统和完整的介绍。
热门推荐
  • 全职高手之信仰

    全职高手之信仰

    荣耀,永不散场!路还很长,现在只是刚开始而已!昔日的嘉世少年邱非,曾经的一句“前辈,嘉世没有倒”,让无数嘉世粉心疼不已。历经了豪门嘉世王朝的兴盛至衰败,俱乐部的人情冷暖。却无法磨灭那颗追求荣耀的初心。率领新嘉世战队重返职业联赛,开启第十一赛季的征程。同样还肩负着已退役的“荣耀教科书”叶修传承给自己的那一份荣耀信仰,就此踏上了新的荣耀之路。从硝烟弥漫的第十三区荣耀网游,到国内荣耀联赛赛季总冠军的激烈角逐,乃至苏黎世世界荣耀职业联赛的正式举办,就此开启荣耀世邀赛总冠军之争。
  • 魔法研究会

    魔法研究会

    孜孜不倦求进取,默默无闻护苍生。时之彼岸何人语,空间尽头谁曾立。
  • 颜值即正义

    颜值即正义

    方满满是一只在人间游荡了几千年的小葡萄精,忽然间重生在花瓶女星方满满身上,还被告知原身最喜欢的就是葡萄。小妖精感受到了人间对她的深深恶意。那个谁,我都可以当你的祖祖祖奶奶了,你还敢对我死缠烂打,要点儿脸行吗。
  • 容术

    容术

    一次艳遇,让著名整容师程浩对神秘女子念念不忘,再次相遇,她成了他的手下,兄弟的未婚妻,对手的情人,多重身份的迷影背后,却是两大美容整形巨头的实力较量,冲破机关算尽的层层迷雾,他和她,能否再续前缘。。。
  • 妖魔神仙

    妖魔神仙

    这是个光怪陆离的世界。空间中的六道,时间中的四玄。妖,顺应世界规律而生的一条修行道路,修的是与世界同化,与宇宙共鸣。魔,只求自己本心畅快,修执念之意,修不羁之魂。神,探寻世界本质,利用世界的本质规律,强化自身。仙,炼精化气,天命者,世界顺其意而生,逆其意而亡。一切的一切,要从妖与魔,也就是炼道与化道开始讲起。顺天,逆天,化道,炼道。一场无休止的的战争.......
  • 暗黑之末世降临

    暗黑之末世降临

    这是一个围绕着九千年前就灭亡的亚特兰帝国所写的故事,讲述的是一个废材主人公,经过生与死的磨难,洗礼之后,逐渐成长的故事、一场光明与黑暗的较量正在来临。
  • 浮生为欢几何有庭枇杷树

    浮生为欢几何有庭枇杷树

    浮生若梦,为欢几何有庭枇杷树,盛结橙红果。
  • 星魂之冢

    星魂之冢

    一念成神,一念成魔。神魔一念间,该何去何从!我的世界有我主宰!
  • 天行

    天行

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

    英雄联盟之影

    穿越而来瓦罗兰大陆的华夏狙击手今后会何去何从?预言中的人会是他吗?虚空的裂缝会再次打开吗?谁又会有能力来阻挡虚空的入侵呢?可能开头会烂点...我觉得100章以后应该不会那么烂了吧...大概吧....