[软件工程学]5.docx

上传人:王** 文档编号:1743962 上传时间:2024-12-27 格式:DOCX 页数:14 大小:47.57KB
下载 相关 举报
[软件工程学]5.docx_第1页
第1页 / 共14页
[软件工程学]5.docx_第2页
第2页 / 共14页
[软件工程学]5.docx_第3页
第3页 / 共14页
[软件工程学]5.docx_第4页
第4页 / 共14页
[软件工程学]5.docx_第5页
第5页 / 共14页
[软件工程学]5.docx_第6页
第6页 / 共14页
[软件工程学]5.docx_第7页
第7页 / 共14页
[软件工程学]5.docx_第8页
第8页 / 共14页
[软件工程学]5.docx_第9页
第9页 / 共14页
[软件工程学]5.docx_第10页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[软件工程学]5.docx》由会员分享,可在线阅读,更多相关《[软件工程学]5.docx(14页珍藏版)》请在优知文库上搜索。

1、第五章系统设计系统设计是把需求转化为软件系统的最虫要的环节,系统设计的优劣在根本上决定了软件系统的侦业。就象“一切帝国主义都是纸老虎”那样可以断定“差的系统设计必定产生差的软件系统,所以我们要努力保证系统设计“根正苗红”,把一切左倾、右帧的设计思潮消灭在萌芽状态。Wind”SNT的一位系统设it师拥有8辆法拉利胞车,让MiCroSor1.公司的一线程序员I分黑红,但你只旎蛋翳而不能愤怒,因为并不足俗个程序员都有本领成为焚杂软件系统的设计师.系统设计要比纯粹的编程困难得多.即便你清是客户的需求,却未必知道应该设计什么样的软件系统一一既能挣最多的钱又旎让客户满意-“天下西湖三十六,最美是杭州,千年

2、前苏东坡大学士对西湖精果绝伦的系统设计,使杭州荣升为“天堂”,让后人只剩下酊叹和破坏的份了.木章讲述系统设计的四方面内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计。如果将软件系统比喻为人体,那么:(1)体系结构就如同人的竹架,如果某个家伙的什架是般子,那么无论怎样喂养和美容,这家伙始终都是赛子,不会成为人。(2)模块就如同人的湍宫.具有特定的功能.人体中最出色的模块设计之一是手,手只有几种动作,却能做无限多的事情.人体中最碉糕的模块设计之一是嘴巴,嘛巴符最有价值但意无相干的几种功能如吃饭、说话、亲吻混为一体,使之无法并行处理,真乃人类之不幸.(3)数据结构与匏法就如同人的血脉和

3、神经,它让器官具有生命并能发挥功能.数据消构与究法分布在体系结构和模块中,它将协调系统的各个功能,人的耳朵和嘴巴虽然是相对独立的器官,但如果耳朵失聪了,联巴就只能发出明呜的声音,等于丧失了说话的功能(所以注子天生就是哑巴,可人们却又使用手势代替说话,人体的数据结恸与算法设计JX是I分神奇并且I分可笑。(4)用户界面就如同人的外表,最容易让人一见钟情或一见恶心,象人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好.但的着生活节奏的加快,人们已少有兴趣去品味深微不露的内在美.如果把1.nix系统比作是健壮的汉子和妇人,那么Windows系统就象妩媚的小白脸和我狸新.想

4、不到WindgS系统竟然能兴风作浪,占去大半市场.有鉴于此,我力应该鼓励女士多买化装品(男士付钱)以获得更好的界面.在诳行系统设计时,我们要深情地关注软件的旗心因素,如正确性与精确性、性能与效率、易用性、可理解性与简法性、可配用性与可扩充性等等。即使把系统设计做好了,也并不意味着就能产生好的软件系统。在程序设计、测试、维护等环节还要整大麻的工作,无论哪个环节出了过杷,都会把好事搞砸了。据说上帝把所有的女士都设计成天使,可是天使们在下凡时有线双脚先荷地,有脸先着地。上帝的这一疏忽让很多女孩伤透了心.我们在开发软件时,一定要吸收这个教训.5.1 体系结构设计杨叔子院子曾这样指点其弟子:文学中有科学

5、,音乐中有数学,漫画中有现代教学的拓扑学,漫画家可以“儿簿”就把一个人画出来,不管怎么美化或H化,就是活像.为什么?因为那“几笔”不是别的,而是拓扑学中的特征不变城,这是事物最本质的东西.体系结构是软件系统中最本质的东西:(1)体系结构是对红杂事物的一种抽象.良好的体系结构是普的适用的,它可以高效地处理多种多样的个体需求.一提起“房子”,我们的腑中q上就会出现房子的印象(而不是地洞的印象r房子”是人们对住宿或办公环境的一种抽象,不管是办公楼还是民房,同一类建筑物(甚至不同类的建筑物)之间都具有非常相似的体系结构和构造方式.如果13亿中国人民每个人都要用特别的方式构造奇异的房子,那么960万平方

6、公里的土地将会变得庵百孔,终11不得安宁。(2)体系结构在一定的时间内保持校定。只有在稔定的环境下,人们才能干点少情,社会才能开展科学告诉我们,宇宙间万物无时无刻不在运动、飞行。由于我的的生活环境在地球上保持相财佬定,以致于我们可以无忧无虑地吃饭和M觉,压根就意识不到自己是活生牛的导弹.软件开发最伯的就是需求变化,但“需求会发生变化.是个无法逃避的现实.人的希望在IS求发生变化时,最好只对软件做些皮皮毛毛的修改,可千万别改动软件的体系结构.就如人们对住宿的需求也会变动,你可以经常改变房间的奘璜和摆设.但不会在每次变动时都要去折墙、拆柱、挖地基.如果当需求发生变化时,程序员不得不去修改软件的体系

7、结树,那么这个软件的系统谀计毡失败的.良好的体系结构意味希普适、诲效和稳定,本节将论述两种非常通用的软件体系结构:层次结构和客户机/效劳器(C1.ientZServer)结构.5.1.1 层次结构层次结构表达了这么一种常识:有些事情比较复杂.我的没法一口气干完,就把事情分为好几层,一层一层地去做.高层的工作总是建立在低层的工作之上.层次关系主要行两种:上下级关系和顺序相邻关系.一、上下fii关系的层次结构我们从小学一百读到博士研究生毕业,要读20多年,可以分为五个层次。而范进的知识结构只有两层:“私票”和秀才*,但读了五十多年,如图5.1所示.一般地处于较御层次的学生应该怖得所有低层次的知识,

8、而处于低层次学生无法怪得所有高层次的知识。图5.1的层次结构存在上下缎关系,如同在军队中,上级可以命令卜级,而卜级不能命令上拨。如果把图5.1的层次结构当成是一个软件系统的结构,那么上层子系统可以使用下层子系统的功能.而下层子系统不能修使用上层子系统的功能.二、序相邻关系的层次结构顺序相邻关系的层次结构说明通讯只能在相邻两层之间发生,信息只能被一层-层地顺序传递.这种层次结构的经典之作是计算机网络的OS1.参考模型,如图5.2所示.为了减少设计的笈杂性,大多数网络都按层(1.ayer)或级(1.eve1.)的方式组织,好一层的目的都是向它的上一层提供一定的效劳,而把如何实现这一效劳的细节对上一

9、层加以屏被,一台机器上的第n层与另一台机器上的第n层进行对话.通话的规则就是第n层的协议。数据不是从一台机器的第n层立接传送到另一台机器的第n层。发送方把数据和控制信息逐层向卜传递。最低层是物理介质,它进行实际的通讯。接收方则将数据和控制信息逐层向上传递.每一对相邻层之间都有接口。接口定义了下层提供的原语操作和效劳“当网络设计者在决定一个网络应包含多少层,每一层应当做什么的时候,其中很用:要的工作是在相邻层之间定义法斯的接1.接口可以使褥同一层能轻易地用某一种实现(Imp1.ementation)来替换另一种完全不同的实现(如用R星信道来代侨所有的电话线),只要新的实现能向上层提供同一机效劳就

10、可以了。Tanenbaun1998考上“举人”时已五十多岁了乂习报考“举人”用了几十年H5.1(b而进的知识结构图5.1(八)从小学读到博t:存在的五个学习阶段图5.2计算机网络的OS1.专考模型三、其它的层次结构目前在大型商业应用软件系统中还流行一种包含中间件(ZiddIeWare)的层次结构,如图5.3所示Jacobson】997。中间件支持与平台无关的分布式计算,可以用DeO相和CORBA对象来实现。It1.S.3包含中间件的层次结构5.1.2 客户机/效劳号结构让我们先回忆一下早期的电话系统.贝尔(A1.exanderGrahamBe1.1.)于1876年申请了电话专利.爆时期的电话必

11、须一对一对地卖.用户自己在两个电话之间拉一根线.如果一个电话用户想和其它几个电话用户通话,他必须拉n根胞独的纹到每个人的房子里.于是在很短的时间内,城市里到处都是穿过房屋和树木的混乱的电话线.很明显,企图把所有的电话完全互联(如图5.4(八)所示)是行不通的.贝尔电话公司在1878年开办了第一个交换局.公司为每个客户柒设一条战,打电话时,客户摇动电话的曲柄使电话公司办公室的启响起来,操作员听到铃比以后根据要求将呼叫方和被呼叫方刖跳税手工连接起来。这种集中交换式的模型如图5.1(b所示。很快地,贝尔系统的交换局就出现在各地。人们又要求能打城市间的长途电话,就出现了:级交换局,以后进一步开展为多个

12、:锹交换局,Tonenbnun199815.4(n)完全互联的电话系统5.4(b)条中交换式的电话系统如果将图54(b)中的电话看成是客户程序,将中心的交换局柠成足效劳程序,那么图5.4b)就是典型的客户机/效劳湍结构.注意这里客户机和效劳器都是指软件而不足指硬件(一台计算机可以放多个客户机和效劳器软件.客户机/效劳器结构存在两个显然的优点:(1)以集中的方式高效率地管理通讯。前面讲电话系统的故M就是要说明这一点.(2)可以共享资源.比方在信息管理系统中,效劳器将信息集中起来,任何客户机都可以通过访问效劳潞而获得所需的信息。客户机和效劳器之间的通讯以请求一一响应”的方式进行。客户机先向效劳器发

13、起“请求”(Request).效劳再响应(Response)这个请求,如图5.5所示.请求科应图5.5CHcnt和SCrVCr之何的通讯以“请求一一晌应”的方式进行采用“请求-响应”这种通讯方式的根本动机是为了解决“聚集(Rendezvous)问盅.为了理耨这一个问他.设想一个人试图在别离的机涔上启动两个程序并让它们进行通讯,还需记住.计修机的运行速度要比人的操作速度高出许多数玳级.在他后动第一个程序后,该程序开始执行并向对等程序发送消息.在几个微秒内,它便发现对等程序还不存在,于是就发出一条错误消息,然后退出.此后,他启动了第二个程序,不幸的是,当笫二个程序开始执行时,它也找不到第一个程序早

14、已退出)。即使这两个程序连续地Hi新武希通讯,但由于它们的执行速度那么高,以致于它们在向瞬间联系上的概率作常低。在客户机/效劳器结构中,效劳器在启动后必须(无限期地)等待客户机的“谛求”,因此就形成了“请求一一响应”的通讯方式。在InternetZIntranct银域,目前“浏览潺-Web效劳器一数据库效劳器”结构是一种非常流行的客户机/效劳耦结构,如图5.6所示.这种结构最大的优点是:客户机统一采用浏览器,这不仅让用户使用方便,而此使得客户机端不存在维护的何越“当然.软件开发布和维护的工作不足自动消失了,而是转移到了eb效劳器端.在Ieb效劳;端.程序员要川脚本谱音媪写响应页面例如用MiCr

15、oSOft的ASP谱方查沏数据库效劳器,物结果保存在Beb页面中,再由浏览器显示出来.HTP请求ftittHrTP响应图5.6.浏览戕-Neb效劳:S一敢找碑效劳战结构5.2 模块设计在设计好软件的体系结构后,就1.i经在宏观上明确了各个模块应具有什么功能,应放在体系结构的哪个位置.我们习惯地从功能上划分模块,保持“功能独立”是模块化设计的根本原则.因为,“功能独立的模块可以降低开发、测试、维护等阶段的代价.但是“功能独立”并不意味着模块之间保持绝对的孤立.一个系统要完成某项任务,寓要各个模块相互花合才能实现.此时模块之间就要进行信息交流.比方手和脚抽两个“功能独立”的模块.没有脚时.手照样能

16、干活.没有手时.脚仍可以走路.但如果希里跑得快,那么迈左脚时一定要伸右将用左F3迈右脚时则要伸左臂用右肾.在设计一个模块时不仅要考虑“这个模块就该提供什么样的功能,还要考虑“这个模块应该怎样与其它模块交流信息.本节将论述评价模块设计优劣的三个特征因洪:“信息除畿、内墩与耦合”和封闭一一开放性.5.2.1 信息*1在一节不和谐的课堂里,老帅叹气道:“要是坐在后排聊天的同学能象中间打牌的同学那么安静.就不会影响到前排瞳觉的同学.这个故事告诉我们,如果不想让坏事传播开来,就应该把坏事Ra藏起来,“家丑不可外扬”就是这个道理,为了尽吊防止某个模块的行为去干扰同一系统中的其它模块,在设计模块时就要注意信息的凝,应该让模块仅仪公开必须要让外界知道的内容,而隐藏其它一切内容。模块

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 软件工程

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!