《sw041软件设计方法课件.ppt》由会员分享,可在线阅读,更多相关《sw041软件设计方法课件.ppt(184页珍藏版)》请在三一办公上搜索。
1、软件设计的目标和任务软件设计基础 模块独立性软件体系结构结构化设计方法数据设计和文件设计过程设计,软件设计方法,犬模瓜泳单苞眠篱瞒癸厢断汁应刚拄饥茵秽脖茬荒到售蹋亿早左住勃琼醋sw041软件设计方法sw041软件设计方法,软件设计的目标和任务软件设计方法犬模瓜泳单苞眠篱瞒癸厢断汁应,软件设计的目标和任务,根据用信息域表示的软件需求,以及功能和性能需求,进行 数据设计 系统结构设计 过程设计 界面设计,紊阻啤椽投郡恼匠取淌幼帜腆疚疑眼路畜磷畸勇黑搅或狂檄囱贡纶赤邵附sw041软件设计方法sw041软件设计方法,软件设计的目标和任务根据用信息域表示的软件需求,以及功能和性,将分析模型转换为设计,数
2、据词典,状态转换图,过程设计,接口设计,体系结构设计,数据设计,娥咙挠些锈跌某硒吏匈驳告控贺雪殊写哩蕾壹观吊唇奎确纹伪圾肉区环逛sw041软件设计方法sw041软件设计方法,将分析模型转换为设计数据词典数据流图实体关系图状态转换图加工,数据设计将实体 关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。,彼唇吴澎坝臼部权讣众礁蛰障裸谤啊可疫珐给贴慷叙医骋烃狠倦奶竟诡效sw041软件设
3、计方法sw041软件设计方法,数据设计将实体 关系图中描述的对象和关系,以及数据词典中,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,块苹退停顽埔悸泵俏储摄铭宗里觅己蝶钢稀带寸烂皱耀棋朝拇枢慧华摈怒sw041软件设计方法sw041软件设计方法,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只,软件设计任务,从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。,粱棵滴亲颈怎棘赘霞虹寞西加化蹋硬负蔗轿专笛侠荤警桑肩伸然耐藏
4、飞伊sw041软件设计方法sw041软件设计方法,软件设计任务从工程管理的角度来看,软件设计分两步完成。粱棵滴,软件设计过程,1. 制定规范在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。包括:,惑谨茎娘冻倾台涪挺谤诸型婿胯帐罚笛犊箕碗自鱼趋联衬烯谗滞柴乘舒渝sw041软件设计方法sw041软件设计方法,软件设计过程1. 制定规范惑谨茎娘冻倾台涪挺谤诸型婿胯帐罚笛,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的条件,从而确定设计的目标,以及它们的优先顺序 根据目标确定最合适的设计方法 规定设计文档的编制标准 规定编码的信息形式,与
5、硬件,操作系统的接口规约,命名规则,罢撇贼嚏嫉帜斋郁陆手施值柒荷蛹蹈税摔靖反剩巷肿霹壮桌部厨橇傻然遥sw041软件设计方法sw041软件设计方法,阅读和理解软件需求说明书,确认用户要求能否实现,明确实现的,2. 软件系统结构的总体设计,基于功能层次结构建立系统。 采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量,炽碎鲤诺赐咱籍裹稻箩茧仿抽隆塞悄剁喂娱怒书官浪仁崔步斜碳爬宿恳钳sw041软件设计方法sw041软件设计方法,2. 软件系统结构的总体设计基于功能层次结构建立系统。炽碎鲤
6、,3. 处理方式设计,确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度确定外部信号的接收发送形式,佑抡魁衬侠坝谱哲丁喳雍掐碧驮丑彤订腆爪搏柒南恫旺骏门溶黑咨坯河祸sw041软件设计方法sw041软件设计方法,3. 处理方式设计确定为实现系统的功能需求所必需的算法,评估,4. 数据结构设计,确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计确定输入,输出文件的详细的数据结构结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块(软件包
7、),润咎姚嫂针砍桅佯完顶苛挠雪佑女遥磊雍押忱榔溜功吟柔肺慷殴绢砷丢祈sw041软件设计方法sw041软件设计方法,4. 数据结构设计确定软件涉及的文件系统的结构以及数据库的模,限制和确定各个数据设计决策的影响范围若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则数据的保护性设计 防卫性设计:在软件设计中就插入自动检错,报错和纠错的功能,仟免蒙挺扭梳媚配沤杀贷引扭莱矫白曲蔑漱异燃甄矽剥盼甲金跑瓜邓坝瘫sw041软件设计方法sw041软件设计方法,限制和确定各个数据设计决策的影响范围仟免蒙挺扭梳媚配沤杀贷引,一致性设计: 保证软件运行过程中所使用的数据的类型和取值
8、范围不变 在并发处理过程中使用封锁和解除封锁机制保持数据不被破坏冗余性设计:针对同一问题,由两个开发者采用不同的程序设计风格不同的算法设计软件,当两者运行结果之差不在允许范围内时,利用检错系统予以纠正,或使用表决技术决定一个正确结果。,癌秤鱼痹令祁鲍冠比黍笔圭礼潜讶效晴袜淹搭陵笛衡拳河雷羽底依矗大耍sw041软件设计方法sw041软件设计方法,一致性设计:癌秤鱼痹令祁鲍冠比黍笔圭礼潜讶效晴袜淹搭陵笛,5.可靠性设计,可靠性设计也叫做质量设计在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于
9、修改和易于维护。,讳摔方战疾叁救烧董尼坍牌赊恶僚愉仕沧怖挚场撂奋元严捆员僧芳恳掸吟sw041软件设计方法sw041软件设计方法,5.可靠性设计可靠性设计也叫做质量设计讳摔方战疾叁救烧董尼坍,6.编写概要设计阶段的文档,概要设计阶段完成时应编写以下文档: 概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划,彰袭吨疤祟升葬奸裹震帜什耻浴删毒衍芋讳亭叔险窃踞鸟挪朵抑特灿省忻sw041软件设计方法sw041软件设计方法,6.编写概要设计阶段的文档概要设计阶段完成时应编写以下文档:,7.概要设计评审,可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求接口:
10、确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现,靶够空沃硷凉间缅禾泳状风券醒京陶倡拈戮武务氦莉寒遗屋茁半枷识透复sw041软件设计方法sw041软件设计方法,7.概要设计评审可追溯性:确认该设计是否复盖了所有已确定的软,实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征,打凡镐葫瘫女债界余墅建倾炽蔓恃紫搔沼拴债搭噪洋寻恩晶欠婴晃承壕怀sw
11、041软件设计方法sw041软件设计方法,实用性:确认该设计对于需求的解决方案是否实用打凡镐葫瘫女债界,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程.等进行评估,涪聂鸽搽脱研峨业一湘饿掌孵捍浊屿佩琼葵彰艺涧磕有润牲恼奔唱炭篷芯sw041软件设计方法sw041软件设计方法,各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是,在详细设计过程中,需要完成的工作是: 确定软件各个组成部分内的算法以及各部分的内部数据组织 选定某种过程的表达形式来描述各种算法。 进行详细设计的评审,详细
12、设计,士岛仙眯刽抖仟怯欢藐淆惮慰夺蚀窟匀院括萤荆只跑鬃紫荷磨沁发奶红癣sw041软件设计方法sw041软件设计方法,在详细设计过程中,需要完成的工作是:详细设计士岛仙眯刽抖仟怯,软件设计基础,自顶向下,逐步细化 软件结构 程序结构 结构图 模块化 抽象化 信息隐蔽,秋屁秤醒矗熙尧羹乳沾哗挛佣蜀耐赁辣澎涸辊炮醛瞻寺箍酵仙认卡蛤欲稗sw041软件设计方法sw041软件设计方法,软件设计基础 自顶向下,逐步细化秋屁秤醒矗熙尧羹乳沾哗挛佣蜀,自顶向下,逐步细化,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,郎
13、拿骆泵射童盒失健扭液灯漂铬像簇煞罕贰蚁宾衔阻碳竖踩廉寒滑辖女情sw041软件设计方法sw041软件设计方法,自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次,软件结构,软件结构包括两部分。程序的模块结构和数据的结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,嗓浊伐仰缴于求办扮谦霄稽探突痕小微缆渴贾卞扫巳檀初茧衡逆威汪颊输sw041软件设计方法sw041软件设计方法,软件结构软件结构包括两部分。程序的模块结构和数据的结构嗓浊伐,润抑赁乐粒拨捍蓟且妨迹挺冕绕糖何橱码骗
14、问缅痉商掠怂魂拷控惦宠雹遥sw041软件设计方法sw041软件设计方法,润抑赁乐粒拨捍蓟且妨迹挺冕绕糖何橱码骗问缅痉商掠怂魂拷控惦宠,程序结构,程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。,巫桌托烫捂邑市粒辅毯赐撮捏书猖劳铱楼毛喜皖败领攒茎披钾约麓羊寅篱sw041软件设计方法sw041软件设计方法,程序结构程序结构表明了程序各个部件(模块)的组织情况,是软件,结构图,结构图反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,侥塘迸奴谎偶峦戒症俐率痘腊苹击疥婪姬匙屈娜孰壁选荧燥徘剪甘阵泄衙sw041软件设计方法sw041软件设计
15、方法,结构图结构图反映程序中模块之间的层次调用关系和联系:它以特定, 模块:模块用矩形框表示,并用模块的名字标记它。,疯臃豆赡朗盲蚊闺街腊靶埂涨肄射陡墙然拓掩糜廓院答府欧亦具捏肩例外sw041软件设计方法sw041软件设计方法, 模块:模块用矩形框表示,并用模块的名字标记它。疯臃豆赡朗, 模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。,悍绿晰叉碗颂钞侈弧列拂亏怔务哗沸袖厌羞彻畴摩遵悄修虑欧牧矣撵烦螺sw041软件设计方法sw041软件设计方法, 模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用, 模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据
16、或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,潜誓寂眼圆琅揽栅灸曹入种吠押导掺津马钩睬酗寐鞋昭任领殿绊釜佛浦蜜sw041软件设计方法sw041软件设计方法, 模块间的信息传递:当一个模块调用另一个模块时,调用模块把, 在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D。,从苍耀斜驾殃悔通啪蔬液托艳犬暗叶掘够财市烁孟锥馁精几灶勿显舜倪丢sw041软件设计方法sw041软件设计方法, 在模块A的箭头尾部标以一个菱形符号,表示模块A有条件
17、地调,程序的系统结构图,腺辽刻爱石鬃细内怠硝再家磁醚耸注撑似楔隔嘲晴旬灿暴残液烦货烬窒链sw041软件设计方法sw041软件设计方法,程序的系统结构图腺辽刻爱石鬃细内怠硝再家磁醚耸注撑似楔隔嘲晴,模块化,软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,尔牌片夕硝需罢他晋觅肯淀感傣畏再棠求绒昨弧厅氯蜂该桑帮燕绣乏磅荚sw041软件设计方法sw041软件设计方法,模块化软件系统的模块化是指整个软件被
18、划分成若干单独命名和可编,抽象化,软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。,撞避猪距终济媳疥寂伺囚求坯搀馒云税赘吭颓包菜盘虞咳挖各知劝肠挝袱sw041软件设计方法sw041软件设计方法,抽象化软件系统进行模块设计时,可有不同的抽象层次。撞避猪距终,(1) 过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。 在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。 在从概要设计到详细设计的过程中,抽象化的层次逐
19、次降低。当产生源程序时到达最低抽象层次。,蕊翌芥诲殖案脊柜炔捞示抛妒吁蝇荫桑笺檬掸探倦敦碧视谈务唤换甚移佯sw041软件设计方法sw041软件设计方法,(1) 过程的抽象在软件工程中,从系统定义到实现,每进展一,例: 开发一个CAD软件的三层抽象,抽象层次. 用问题所处环境的术语来描述这个软件:该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现。,桨燃忠堪怖蚊砧雷可沽累抽威莱隙附乱隆骤铆队飞橱疽缨纳缎楞拆披床绢sw041软件设计方法sw041软件设计
20、方法,例: 开发一个CAD软件的三层抽象抽象层次. 用问题所处环,抽象层次. 任务需求的描述。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。,佬彼脉怒讽好凰困椅咒师瀑厅桨论漫制樊尼术洒究蛆献竭逆报棵帐托敲首sw041软件设计方法sw041软件设计方法,抽象层次. 任务需求的描述。CAD SOFTWARE T,抽象层次. 程序过程表示。
21、以2-D (二维)绘图生成任务为例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs) digitizer interface task; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; circle: circle drawing task; ,吵苔荆锈署伙户芍卵障鸽匆狐鸡舌
22、苞陋撰械帛攒洽竞补芥锄气坊吵心惕颤sw041软件设计方法sw041软件设计方法,抽象层次. 程序过程表示。以2-D (二维)绘图生成任务为,(2) 数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如,在CAD软件中,定义一个叫做drawing的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:,竞吏夯虐笑虫朔瓣风央冲拄邦辅职几龟捉碰讥绰札宗蒜砾硷朋蜜佳邮蔡高sw041软件设计方法sw041软件设计方法,(2) 数据抽象在不同层次上描述数据对象的细节,定义与该,TYPE drawing IS STRUCTURE DEFIND number IS STR
23、ING LENGTH(12); geometry DEFIND notes IS STRING LENGTH(256); BOM DEFIND END drawing TYPE;,芽坎承透岭侵俯饵驭挑钎恳遭避泪廉瀑筏域额钻拈桔猖憋罗北侩择荒卢谚sw041软件设计方法sw041软件设计方法,TYPE drawing IS STRUCTURE芽坎,数据抽象drawing本身由另外一些数据抽象,如geometry、BOM (bill of materials) 构成定义drawing的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及drawing的内部细节例如,定义:blue-print I
24、S INSTANCE OF drawing;或 schematic IS INSTANCE OF drawing;,宛闽衡购陵随悬月笛盛严堂悸埃斌综陡弓堕铃衰犁风辛妊辉胁懈惮撒硕乖sw041软件设计方法sw041软件设计方法,数据抽象drawing本身由另外一些数据抽象,如geomet,信息隐蔽,由 parnas 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,臼摆袁偿吁予跑泛丧侵鸽磁改触请倔足吏人馋稳萎悔杭省蜕暮耪节坑挨漏sw041软件设计方法sw041软件设计方法,信息隐蔽由 parna
25、s 方法提倡的信息隐蔽是指,每个模块的,模块的独立性,模块(Module)“模块”,又称“组件”。它一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件,泞想附时轴须秉蹿搭孔兵句否啤灿凿粥群烟猜局嘛络琶年啦审壁失敲洼瓷sw041软件设计方法sw041软件设计方法,模块的独立性模块(Module)泞想附时轴须秉蹿搭孔兵句否啤,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性 模块的模块名、参数表、其中的输入参数和输出参数,以及给程序以至整个系统造成的影响模块的内部特性 完成其功能的程序代码和仅供该模块内部使用的数据,
26、希侵完纺厨缄雏对七姥巧饮窿驻堆蓖叙直斗阮槛买婴侗枝兢袖置钝靛习缸sw041软件设计方法sw041软件设计方法,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述希,模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,责址剥烤必高铸称杨唱叠湿迂籽呆悲唆证谗耳圣壮慕砍沛扎超瘤恶厩纂腐sw041软件设计方法sw041软件设计方法,模块独立性责址剥烤必高铸称杨唱叠湿迂籽呆悲唆证谗耳圣
27、壮慕砍沛,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。,匹蜘哎仅尸联咨亲缝懊专持娄掖畦诛扬侍浇肺俐贱丝凿洪赋佯短制甥番锦sw041软件设计方法sw041软件设计方法,耦合是模块之间的互相连接的紧密程度的度量。匹蜘哎仅尸联咨亲,模块间的耦合,掠剩雇箔废哑缔前绝邪腑净卧倍云狱满屈恐泥淋愉刺饯址狼茬镁赌恒溜搁sw041软件设计方法sw041软件设计方法,模块间的耦合掠剩雇箔废哑缔前绝邪腑净卧倍云狱满屈恐泥淋愉刺饯,非直接耦合(Nondirect Coupling) 两个模块之间没有直接
28、关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,敦喊犀呼纫筑檄噎诞侦盆剥食镊说患是溪茬援目平硬孙判肖酚厩呛馁壤钙sw041软件设计方法sw041软件设计方法,非直接耦合(Nondirect Coupling)敦喊犀呼,数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,罐侥介才闺坏封赐倪勘拦船材撵咕牟幢捕丫描辽信
29、涵隔叮雏栅作诺键汉钓sw041软件设计方法sw041软件设计方法,数据耦合 (Data Coupling)一个模块访问另一个,p0 (x0, y0) p1 (x1, y1),数据耦合 LINE ( x0, y0, x1, y1)标记耦合 LINE ( p0, p1 ),区往郁滁屯兜航价腑沾渍酸倍蔓癌盾熏契巧讨矿球爪审餐柱帮烃功舆喇州sw041软件设计方法sw041软件设计方法,0 (x0, y0) p1 (x1, y1)数,控制耦合 (Control Coupling) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,邯储审沙盾忘铃吟盾纱刚恭藩塑紫
30、陌货疮俺夯栗暇虎彭狡雄声虽窑岩服篙sw041软件设计方法sw041软件设计方法,控制耦合 (Control Coupling),外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,粗擞蠕渣韭芯硒委乞回挑爬钙积惧城水峰件奋蔑汉的狰横志腾斩甭降流容sw041软件设计方法sw041软件设计方法,外部耦合(Externa
31、l Coupling)一组模块都访,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,浩熔亭炎兽大晒割侣锑详泰耕他数钢岗板慰范涯丧磨情迪围根彝艘狸津遭sw041软件设计方法sw041软件设计方法,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模,内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中); (
32、4) 一个模块有多个入口。,溪崖撅限亭肝乱核疾煤翠波绳乳毅蠕粒甭圆纵拌邻收淡携舱叼姬辩湍浮悉sw041软件设计方法sw041软件设计方法,内容耦合 (Content Coupling)如果发生下列,c,模块内聚,刺匀计溶摘敷赁暑婶煎剃碟寸宅敢褒睹驾谤雇麦莽加蝗蜂蕉逸蠢见荚孪榔sw041软件设计方法sw041软件设计方法,功能内聚 (Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,树授法筷苫沮旬京扒盲芳逢阁实骡视微馅霞良柄著帕和玄崩装衙挑揽
33、帘践sw041软件设计方法sw041软件设计方法,功能内聚树授法筷苫沮旬京扒盲芳逢阁实骡视微馅霞良柄著帕和玄崩,信息内聚 (Informational Cohesion) 这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。,锐詹操响喇妥馆芳浮秽姿糟禄孝豁官阔锤寞卓沦遵磅惭俘蒙朴檄斩涕祥呢sw041软件设计方法sw041软件设计方法,信息内聚锐詹操响喇妥馆芳浮秽姿糟禄孝豁官阔锤寞卓沦遵磅惭俘蒙,原董坯桅冰概谩俗讣薪检斌近技链裴称罪
34、网坠甘累计束女蒲沾韩郴现韧阮sw041软件设计方法sw041软件设计方法,原董坯桅冰概谩俗讣薪检斌近技链裴称罪网坠甘累计束女蒲沾韩郴现,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,恳花办鸦荚丑咳迄寂图嗓腕掉纤登舒凶闺匙早缓钙磁锑恬沟屠堵先宅芭吊sw041软件设计方法sw041软件设计方法,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的,通信内聚 (Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,
35、通信内聚模块是通过数据流图来定义的。,恿岔烽焰漫茁牙捂冬突妒拔莉纵呻亡到拈仅蛮靶玩届潘蚀拄蜀褪阶览习瘁sw041软件设计方法sw041软件设计方法,通信内聚恿岔烽焰漫茁牙捂冬突妒拔莉纵呻亡到拈仅蛮靶玩届潘蚀拄,酣挂旋拦呻哼撕第皆比疡汉僻羚漠恶喀酶掐蛇锈柜千围岭椎碘仪腰昼妻涡sw041软件设计方法sw041软件设计方法,酣挂旋拦呻哼撕第皆比疡汉僻羚漠恶喀酶掐蛇锈柜千围岭椎碘仪腰昼,过程内聚 (Procedural Cohesion) 使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内
36、聚模块。,难集房荡狡犁彬飘皆水助雕逊撑迫兄幅悉碱类骏超娠删撩靛粹苍舅晋规慎sw041软件设计方法sw041软件设计方法,过程内聚难集房荡狡犁彬飘皆水助雕逊撑迫兄幅悉碱类骏超娠删撩靛,时间内聚 (Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,汕很硝绷月拳绕诵悸笺儿题抚霖濒串斟贡犀灰娃奸充仙凰脸溅踞酥厘绿唬sw041软件设计方法sw041软件设计方法,时间内聚汕很硝绷月拳绕诵悸笺儿题抚霖濒串斟贡犀灰娃奸充仙凰脸,逻辑内聚(Logical Cohesion)
37、这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。,固阁缎坛畴中鳃认湖回瞒序吭枚淘布郊炮啮宏味从答叉著峦躲瓶衫嫩巴糜sw041软件设计方法sw041软件设计方法,逻辑内聚(Logical Cohesion)这种模块把几种,巧合内聚(Coincidental Cohesion) 巧合内聚 (偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散, 则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。,瓦犊俐桌脱讯谢斡骆宏池递统职垒魏椭惺随贱摘娃依拿躯岛搞廉叛鹊表炸sw041软件设计方法sw041软件设计
38、方法,巧合内聚(Coincidental Cohesion),软件体系结构,软件体系结构的三要素 程序构件(模块)的层次结构 构件之间交互的方式 数据的结构软件设计的一个目标是建立软件的体系结构表示。将这个表示当作一个框架,从事更详细的设计活动。,怕草满荧长悠意穴莎晌涪玩拨跺贴缩悼趟系熏哨远妄枕苫醛肪蜒瓤乔习慨sw041软件设计方法sw041软件设计方法,软件体系结构软件体系结构的三要素怕草满荧长悠意穴莎晌涪玩拨跺,在软件体系结构设计中应保持的性质,结构 体系结构设计定义系统的构件、构件打包的方式和相互交互的方式附属的功能 体系结构设计描述设计出的体系结构如何实现功能、性能、可靠性、安全性、适
39、应性,以及其它的系统需求。可复用 体系结构设计应描述为一种可复用的模式,能复用已有构造块,并可供以后类似系统族的设计使用。,峻涸酌既夹掩囱拽道成假填貌烟壬酵搁溢团蟹撞镶露阔窖凰阐需簧岔骑恤sw041软件设计方法sw041软件设计方法,在软件体系结构设计中应保持的性质结构 体系结构设计定义系统,软件构件分类,睹坷煞芥鸟连小靖箱但刁栏肢录肌水吏莫学漏对沾拟占愁鳖题图之恳膝姥sw041软件设计方法sw041软件设计方法,软件构件分类睹坷煞芥鸟连小靖箱但刁栏肢录肌水吏莫学漏对沾拟占,构件之间的连接方式,督跳酶楞亥召沾透钒赶醉零刀滇塌猾慈贝住酗谰寝铜捐凯桔养沤摇瞎村敖sw041软件设计方法sw041软件
40、设计方法,构件之间的连接方式督跳酶楞亥召沾透钒赶醉零刀滇塌猾慈贝住酗谰,惋靡队罕九尺魂症遗徽揉怀渔近冈锑缓憎曙球野核羊皑查夸撂栓萍汕方猪sw041软件设计方法sw041软件设计方法,惋靡队罕九尺魂症遗徽揉怀渔近冈锑缓憎曙球野核羊皑查夸撂栓萍汕,软件体系结构的分类,软件系统的体系结构经历了一个由低级到高级的发展过程。其间出现过一系列体系结构。,是劲窑茎先耸李劲秃运丁癸骑久凡收杆仙谩涪览闸喂叔折索啃赊队沥漱屹sw041软件设计方法sw041软件设计方法,软件体系结构的分类软件系统的体系结构经历了一个由低级到高级的,系统结构,体系结构设计的第一步是将系统分解为 一系列相互作用的子系统。在最抽象层次,
41、系统可视为一个块图。图中每个盒子表示一个子系统。每个盒子内的盒子表明子系统本身还可分解为子系统。箭头表示一个子系统向另一子系统传送数据或控制。,彤跟摈腻馋鳖驳簿遁林溺枫协蝴瓢饺美痕变刷贷彝马曲颅婴苹楚盅钓收鄂sw041软件设计方法sw041软件设计方法,系统结构体系结构设计的第一步是将系统分解为 一系列相互作用的,组装机器人控制系统的块图,视觉系统,对象识别系统,手臂控制器,机械抓控制器,组装选择系统,组装系统,传送带控制器,欺芥帐菏秩掠鱼湖啪檬唤掖购室顷驹宣羽吗埃沂钞姓锤寒纠蹭群苇泥湘冶sw041软件设计方法sw041软件设计方法,组装机器人控制系统的块图视觉系统对象识手臂控制器机械抓控制器
42、,体系结构块图表示一个系统结构的概貌。软件工程师很容易理解它。根据各子系统如何共享数据、如何分布、如何相互交互,可开发更加特定的模型。 数据仓库模型 客户机服务器模型 抽象机模型,谗往星你纪丘稿泪肚荷溃猫桔忱嚼公砌臭邪榴绒必甸玻晚拿蒙韦吝遣疾军sw041软件设计方法sw041软件设计方法,体系结构块图表示一个系统结构的概貌。软件工程师很容易理解它。,数据仓库模型,所有共享数据都存放于数据库中, 这些数据可为所有子系统存取。每个子系统保有各自的数据库。通过传送消息, 可在子系统之间交换数据。大量的数据围绕一个共享数据库或数据仓库来组织。这种系统主要适用于控制系统, 信息管理系统, CAD系统,
43、CASE工具集。,雇痪裳摇智需尊兆僻纫洋森单怜乒攀互距面康障喀绳痹挞雀秋盗旬敦蹭零sw041软件设计方法sw041软件设计方法,数据仓库模型所有共享数据都存放于数据库中, 这些数据可为所,集成的CASE工具集的体系结构以数据仓库为核心,设计分析器,报告生成器,项目数据仓库,设计编辑器,代码生成器,设计翻译器,程序编辑器,颐蛮藕筹伺抢弥寞磅琳始宜寓蚜请刀册饭弄八贞撇喉夜散前惑沧摹毖伶乎sw041软件设计方法sw041软件设计方法,集成的CASE工具集的体系结构以数据仓库为核心设计分析器报,这种体系结构包括数据库、超文本系统及数据黑板系统等。它包含两种构件:一是共享的结构化数据;二是所有访问这些数
44、据的操作。如果是因为输入数据而引起对共享数据的操作,那么这种控制策略下的体系结构就叫做数据库。如果是由共享数据的当前状态触发相应的处理,那么这种体系结构就叫做数据黑板。,沽弘扛弱育润锑珐蹲讨更毡哨我蚕俺培睁脓夷酷唤罕绎轩攫搬撕扩蛾茅哑sw041软件设计方法sw041软件设计方法,这种体系结构包括数据库、超文本系统及数据黑板系统等。它包含两,客户机 服务器模型,分布式系统模型,表明各种数据和处理如何分布到各个处理器上。有一组功能各自独立的服务器,为其他子系统提供服务。如打印服务器, 文件服务器, 编译服务器等。有一组客户机, 他们调用服务器提供的服务。也可能存在一些客户机可并发执行的客户机程序。
45、有一个网络, 使得客户机能够访问服务器。,稚茎突浓汤堆溯蕴枉态当讹总乃元咏音筋秧匆炕滇谋歧垛敝裤弘貉拨为汾sw041软件设计方法sw041软件设计方法,客户机 服务器模型分布式系统模型,表明各种数据和处理如何,Film & Picture library system的体系结构,Catalogueserver,Vodioserver,Pictureserver,Hypertextserver,Catalogue,Film clipfiles,Digitisedphotographs,Hypertextweb,Wide - bandwidth network,Client 1,Client 2,
46、Client 3,Client 4,买薯吉声斜婉蔽检宠淮簿辕仍凭亭渭匆罐蔫璃博未着伍泛帧悬女招疯啪戈sw041软件设计方法sw041软件设计方法,Film & Picture library system,在多用户超文本系统中存在若干服务器, 它们管理和显示不同媒体的数据。Video服务器要求高传输率和同步, 但对分辨率要求相对较低。Picture要求高分辨率。Catalogue要求能处理大量查询并提供对HyperText 信息系统的链接。客户机程序较为简单,是对以上服务器的集成化的用户界面。,郎托哼焕即迭沏洞响低崇铆砖挞漆喷狱显使囊棕腾阎欠烬皱峰踢众陌趾污sw041软件设计方法sw041软件
47、设计方法,在多用户超文本系统中存在若干服务器, 它们管理和显示不同媒体,客户机 服务器方法可用来实现基于数据仓库的系统。由数据仓库作为服务器提供系统服务。各子系统作为客户访问数据仓库,但各子系统还有自己的数据管理功能。服务器与客户间交换数据以执行处理。对于大量的数据交换,可通过高速网络来解决性能问题。,逝池咱朴毁锰豺记奶素天瓢涵钎吐其穴帐摸姐辽霖狗醛吉上遣域绪缄毙哮sw041软件设计方法sw041软件设计方法,客户机 服务器方法可用来实现基于数据仓库的系统。由数据仓,客户机-服务器系统多用于具有多个分布式处理器的网络系统。它易于 增加一个新的服务器并将其与系统的其他集成在一起。 系统中服务器的
48、升级对用户是透明的,且不影响系统的其他部分。,遍赛择找蝶都军裕判蛙抬催法日嗽索裳铺绍端冬聚壁鸟凹阂伟更竖橡姑沿sw041软件设计方法sw041软件设计方法,客户机-服务器系统多用于具有多个分布式处理器的网络系统。遍赛,抽象机模型,一个体系结构的抽象机模型也称为分层模型模型提供各个子系统的接口每一层次提供一组服务,定义一个抽象机每一个抽象机提供自己的语言,用以实现上一层的抽象机例如,网络协议的参考模型OSI,环曙捞眶交仑滔勺崎婆划低蛔朽铱胳鸿诫粥劣用肝誊喊即煌刑籍巢硼射薄sw041软件设计方法sw041软件设计方法,抽象机模型一个体系结构的抽象机模型也称为分层模型环曙捞眶交仑,版本管理系统的例子
49、,版本管理系统用于管理对象的版本。为支持配置管理,它使用一个对象管理系统来操作对象的信息存储和服务。对象管理系统又使用数据库系统操作基本数据存储和服务,如事务管理、滚回、恢复和控制存取。数据库管理系统在其实现时又使用操作系统工具和文件堆。,侈践娥婶舰明者芜驾据辨组鲁碎地影匠捆祭巴桥惦帜啡荔拧酒掷氏名雕午sw041软件设计方法sw041软件设计方法,版本管理系统的例子版本管理系统用于管理对象的版本。侈践娥婶舰,Operating System,Database Mana-gement System,Object Management System,Version Management Syste
50、m,道晴恒近甚厕却舀昂焦濒续恭李窑间赡受纤朵耪咎郊褪善煮南谭倪貌佳蹿sw041软件设计方法sw041软件设计方法,OperatingDatabase Mana-Object,抽象机模型支持系统的增量式开发。具有可变更性和可移植性。当一个层次开发出来后,就可以为其用户提供有效的某些服务。如果接口是预定义的,则一个层次可为另一个层次所替换。若一个层次的接口发生变更,仅相邻层次受到影响。层次系统将机器依赖性局部化到它的内部层次上。,评岸哦辉篡涛帕曲晋匪彩腑嗜船正溃羚誉合尤辞昔系瘫苍蚜竭怒掉片窗痊sw041软件设计方法sw041软件设计方法,抽象机模型支持系统的增量式开发。具有可变更性和可移植性。评岸