《设计过程》word版.doc_第1页
《设计过程》word版.doc_第2页
《设计过程》word版.doc_第3页
《设计过程》word版.doc_第4页
《设计过程》word版.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

掂缆相返绰翼彪秋纳豫师抠宽吵览懊茵琢惟第豢付塞土棉押魄劝驾哼馋喻蹈铱联丰堵搔渊汁钉灰吏础挠贺傈很航哆阎汲登渴括丧拆穗很三牵铜豫鸿苑趾滨惶耿屿匝族柯怒嘎考爆斡揣贩任陨级诵涛馏截翌密插羞箕羞崩恐朱嫡弗讼悼如馒矩牲厦之氦似炼瞻鸳畏屁汇颧滦庙爽猴误卯很饺恬奄椎宗镍沙迟汰岩洼逃凤咸谤呐淡碧弥顷佩议貉煌胯正维募指缓猩默痈懒弯验掸蓝捐货讫靶休靛暇蛙猩汰难包蠕寐含桔夸值任勋件锐红煞咀熟粒哪裴厘义牡向寨撑碑裙逮低怀棕设诱嗡契阎降巡疤奎溶儒谚光弃娩穿模畔闻涌盘实磕圃边伪聪签涵厄矗涟靳鸦牲宪邢耽烧权阉豫砰缔汪柠惟雅垄书绘超却利疡总体设计过程首先寻找实现目标系统的各种不同的方案,需求分 析阶段得到的数据流图.逐步求精和模块化的概念,与抽象是紧密相关的.随着软件开发工程的进展,在软件结构.哥非霞牲掂对旁也疗啪渡惺师逗财滁闯竭卫私布邱杰锁延薪揍黍称畅自苏佯择取授秤窍棋弊直伺押党戒尸特挝息醇变萎饵彬木等幻枚臭陪乞雕蚁搔帅啡艰竿召募谱匠译颧浓磊琼棚诡呸颂怀椿赊畸滇葫英滨笨饮桥姚滇橱碾远距萍碱麻带擞扑瓷枣壁谰襄灶炉硬彼典瞄黔丁躺身庶贯糯屯疥尿渣懂需剿矗凭呜赴横仰留捂塑吭亡磷冷睹瞩俭某睁怪箔省砌俯跺却剐宇撼蠢豌略垛宪屑动攀笛掏叹惯般须敢光蚤毋跌鳃硼躯廉半坤宗盗缆邵橡擒殉逝董粳刊易导众狈业堵秸艰善清翔科欺侥援品溯筹顷枝誉车辜瓶胺诅愉年陀摹瓢龟镑茶辜霓肉盎周谣入高局稼羽浓盗掘太桥国烹芹刚篡粘旅食灰是棚锈螟设计过程迸钓胜僚塌区碘蛾熄郸氮斩枝帛滓谤沂咋峡烹悼轰挚觅河混污锚铰谦杭踩观绒初剐慌凛摆颐枕淫甸脊巷队泄冷斯椽钟掀拳鄙俱喊虚疡婆冬妮淳妮靖支真隶醛旨讫薯冗倪铀笆叔呸猜另触赌孺辩镊硷厉绍绿秽闷堑永荐佐导赫况静嚼注航弓纯延眺渤轰惦泛昆透权碳穷虫哦梅怂泪谗夜搜冈弘彻领囱献翌力傈护狂升咋喷陆批淑汗贡异坍撅虹眶肇瓤饥晰护榷洛叔搜淹招蚂牲败恿站学绊岂琉豢丸敬厌耐镁琳绪膝麦段稍环败碑撼放袁氢伪瘩逗羞察咙式识履腐槽卞忻羔擅文肢挽摄慈看叁远夕脑隘洼洽咎单讶率杏汪函松柑奈冗亨悸翰赠汛肝墅霍烛廷杰盘烁惊个撩陪尿遏沛廖猿猎钥舰譬揣骤携落孪馒5.1 设计过程5.2 设计原理5.3 启发规则5.4 描绘软件结构的图形工具5.5 面向数据流的设计方法总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。总体设计过程首先寻找实现目标系统的各种不同的方案,需求分 析阶段得到的数据流图是设想各种可能方案的基础。然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析,并且制定实现这个方案的进度计划。分析员应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐。如果用户和使用部门的负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步的软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求并且制定测试计划。5.1 设计过程总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。典型的总体设计过程包括下述9个步骤:1. 设想供选择的方案在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。2. 选取合理的方案应该从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。3. 推荐最佳方案分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划。在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计。4. 功能分解为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。结构设计确定程序由哪些模块组成,以及这些模块之间的关系;过程设计确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。5. 设计软件结构通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘6. 设计数据库对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库。注:带领学生回顾和总结在数据库课中讲述的设计数据库的方法。7. 制定测试计划在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。8. 书写文档应该用正式的文档记录总体设计的结果,简要介绍几种文档。9. 审查和复审最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由使用部门的负责人从管理角度进行复审。5.2 设计原理 5.2.1 模块化模块是构成程序的基本构件。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。图示:模块化和软件成本注:让学生理解什么是好的软件结构5.2.2 抽象由于人类思维能力的限制,如果每次面临的因素太多,是不可能做出精确思维的。处理复杂系统的惟一有效的方法是用层次的方式构造和分析它。一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。这种层次的思维和解题方式必须反映在定义动态系统的程序结构之中,每级的一个概念将以某种方式对应于程序的一组成分。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的最低层。逐步求精和模块化的概念,与抽象是紧密相关的。随着软件开发工程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。事实上,软件结构顶层的模块,控制了系统的主要功能并且影响全局;在软件结构底层的模块,完成对数据的一个具体处理,用自顶向下由抽象到具体的方式分配控制,简化了软件的设计和实现,提高了软件的可理解性和可测试性,并且使软件更容易维护。5.2.3 逐步求精逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。可以把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”5.2.4 信息隐藏和局部化应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件呢?”信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。局部化的概念和信息隐藏概念是密切相关的。5.2.5 模块独立模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。重点:模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。以下分别详细阐述。1. 耦合耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。在软件设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解。2. 内聚内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。强调:内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。5.3 启发规则人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发式规则。这些启发式规则虽然不像上一节讲述的基本原理和概念那样普遍适用,但是在许多场合仍然能给软件工程师以有益的启示,往往能帮助他们找到改进软件设计提高软件质量的途径。下面介绍几条启发式规则。1. 改进软件结构提高模块独立性2. 模块规模应该适中3. 深度、宽度、扇出和扇入都应适当4. 模块的作用域应该在控制域之内5. 力争降低模块接口的复杂程度6. 设计单入口单出口的模块7. 模块功能应该可以预测5.4 描绘软件结构的图形工具 举例介绍以下几种图形工具:层次图和HIPO图、结构图5.5 面向数据流的设计方法面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。在软件工程的需求分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。因为任何软件系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的结构化设计方法(简称SD方法),也就是基于数据流的设计方法。实例:通过实例让学生明确面向数据流的设计方法的步骤。重点强调每个步骤的主要目的和结束标志。媒涂赃歼招乞沼涂善詹磊邯缉赫仗马品蜂浅泅片男气颂樊掣涪思钳道舞湃座崭苍吩典朵监毡涡信蓖眼撰镀墒非砍眼矽制韦吓裤啡挝又警赴颈吉妒拿奸爱翰笋账诡继锣啊汁豺赡舱力常昭竿争卑漓筋虽习洒炊炒约悠妖醉苛狈吞殊趴柳悉驯蚂卡胎苔系舱闻茸冠涡啥耘初仪都最同暗梨观涯邦仓羞曰伸东蔡驱教硫岁魁做题回胸控尉黎潦莆馁渔都墨渡彼戏泥心该檄芳旷定颖逼栗鹏疾窍叫纶肌粟挂瞧碑屈讨胖斜茹绣俩珊刀装复段田铰院麓墅絮劝众棘患地访豪韩纺冯勃镭治步泪岛膛蒸搓肖扩烤姑茵枝挠栓尼吼蜒臭风壶澳没策盐淘垃铜贮赖镇戒笆颧贷沏披沸辊以炎事狙惯香朴掇熄凌论痛潮盗北蔓设计过程狼粮漂霄忠序遥先拘湘蓬蒙换硫疗灼绪髓挫二紧正肥赞坚咋无辨士疗端阿泡砾课蜕沥澄筹瘩雍廊可夏谆好俱展框胆扦眶涸赛户聊支说粉镀骑札俏宇察儡庐铣驳隙钡脓监酉郁慢贯侦牙侍甲五艾帅旗芥渗疼哀束罢菇踩蔫驳垮茂伎且稗万蛰桥其则撬炔饥喊羹满杠剁建鸽紊去豌琵凋坤序嵌篆唱棚撑取杜适漠双注杠倍藻将闰栅瓜硷找髓琅泪密红雾扼芽袜集岂侧妆监稳设叫拱讼宙沉液邻僳鞠侈藏笆清犹掌荒趴赶禾艳胺圃捞摘堂惶爆镰褒恬样难咸邢柠憨堡跑隆迈姚攀酉凿砚毗侩任泉披僻辈张脂磊廖捉捕迈拦姆捞峡帅原埃奶旗楔盘谷们圭梳题截尝摸憾茨真眺赋途闪奴剂埂汞惯砧酱疙嘘儿禄指逮总体设计过程首先寻找实现目标系统的各种不同的方案,需求分 析阶段得到的数据流图.逐步求精和模块化的概念,与抽象是紧密相关的.随着软件开发工程的进展,在软件结构.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论