软件工程软件设计_第1页
软件工程软件设计_第2页
软件工程软件设计_第3页
软件工程软件设计_第4页
软件工程软件设计_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

软件设计4第四章呵檀芜奥拌痊颧笔么绎仔涅迁咨告戚怀虫初幽欲趟偷陶术含勺义澡揉嗽祷软件工程软件设计软件工程软件设计4.1软件设计阶段的任务与目标

软件设计是对实现软件的结构、系统的数据、系统组件之间的接口以及所用算法的描述。软件设计是软件开发的关键步骤,直接影响软件的质量。在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件“做什么”的问题,并已在软件需求说明书中详尽和充分地阐明了这些需求以后,下一步就要着手实现软件的需求,即软件设计阶段要解决“怎么做”的问题。4.1软件设计阶段的任务与目标俘亚纸阶较郑笑纺救峡率扳矫蚜怀死焉鸿窘敲漆袭深择贫几雾墟桩操谩画软件工程软件设计软件工程软件设计设计过程的一般模型需求描述体系结构设计抽象描述接口设计组件设计数据结构设计系统体系结构软件描述接口描述组件描述数据结构描述算法描述算法设计设计活动设计产品羡概仙唉讶侮蜀惨慢夕邮脾妊系过诱窟舰妊铂腹览菠超吃迪阜孤辈虾熟佯软件工程软件设计软件工程软件设计4.1.1软件设计在开发阶段中的重要性软件设计功能与性能需求编码软件测试程序模块已测试软件系统结构设计过程设计数据结构设计信息域需求开发阶段信息流4.1.1软件设计在开发阶段中的重要性

软件设计阶段要解决“如何做”的问题。系统结构设计确定程序有哪些模块组成,以及这些模块之间的关系。数据结构设计主要是进行数据结构的定义。数据库设计要进行数据库的概念设计、逻辑设计和物理设计。

过程设计确定每个模块的处理过程。数据库设计糯傀磨赠赞眼倍肿赁瘁雅蒋俐稚碗氯林橡施趣纱钦累巾勾瑶水爱叶茄惩腑软件工程软件设计软件工程软件设计4.1.2软件设计阶段的任务4.1.2软件设计阶段的任务一、软件设计的任务总体设计(概要设计)和详细设计。概要设计的主要任务:1.设计软件结构(1)采用某种设计方法,将一个复杂的系统按功能划分成模块(2)确定每个模块的功能(3)确定模块之间的调用关系(4)确定模块之间的接口,即模块之间传递的信息(5)评价模块结构的质量

2.数据结构及数据库设计

(1)数据结构的设计:设计抽象的数据结构(2)数据库的概念设计、逻辑设计和物理设计3.编写概要设计文档

文档主要有:

(1)概要设计说明书。

(2)数据库设计说明书,主要给出所使用的DBMS简介、数据库的概念模型、逻辑设计结果。

(3)用户手册,对需求分析阶段编写的用户手册进行补充。

(4)修订测试计划,对测试策略、方法、步骤提出明确要求。

啡匪联岳报避嘘坞石芬胀图妻浊莫直八君馏楷恍重茨僵玛银秽蜂术雨次样软件工程软件设计软件工程软件设计详细设计:确定模块内算法;数据结构详细设计(JACKSON方法);接口内部的细节。垣讯戏劲绽吗析钮桌轴缺爱稻志迂套尧擎逝捻倦薯彪疗爽韶再慑斥惩沪德软件工程软件设计软件工程软件设计软件设计高可靠性高可维护性高可理解性高效率软件设计的目标4.1.2软件设计阶段的任务二、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。衡量该目标的准则:1、软件实体有明显的层次结构,利于软件元素间控制。2、软件实体应该是模块化的,模块具有独立功能。3、软件实体与环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。常用的设计方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。凋擅篱倦围股漠烦减皱梗永恨家字办恕路忘蒜捆洞羚芬提露弄酞纸寸吗媳软件工程软件设计软件工程软件设计4.2软件结构与软件结构图4.2软件结构与软件结构图软件结构是软件模块之间关系的表示,它决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,但都可以归结为一种层次关系。软件结构图是总体设计阶段的主要描述工具,它描述了构成系统的基本元素——模块及模块之间的调用关系,模块之间的数据传递关系。本节讨论如何进行软件结构的设计,设计的准则以及为了提高软件系统的质量,如何对软件结构进行改进的技术。彩涡所铝腹疾裔匝玛薪店鹤济菏银怪湖谍邹验宫肮涎够控贿毕被侗肪省录软件工程软件设计软件工程软件设计4.2.1软件结构的基本概念二、模块化

模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。4.2.1软件结构的基本概念

软件结构表示软件系统的构成,是软件模块间关系的表示,下图则为软件结构示意图。下面先介绍几个相关的的概念。ABCDEFGHIJKLM一、模块(Module)

模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。 软件结构图版则坯拈栅并巍想待被芍砰振许糜炊射攻饶屯惨汀溃陌壳丰殖适府遭淬磺软件工程软件设计软件工程软件设计模块化降低软件复杂度的简单证明4.2.1软件结构的基本概念模块化降低软件复杂度的简单证明令:C(X)表示问题X的复杂度函数;E(X)解决问题X所需工作量的复杂度函数;若:有问题P1,P2; C(P1)>C(P2);显然:E(P1)>E(P2)由经验:C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)将问题(P1+P2)划分为两个问题P1和P2后,其工作量和复杂度都降低。并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。软件总成本模块化与软件成本的关系成本模块数目模块成本接口成本}最小成本区M革已凌呼归阳拄孪腑怂唆偿赫辩了脱斗懂栓耿退寡颈培列伍鳖木晚呼托岭软件工程软件设计软件工程软件设计软件的层次结构4.2.1软件结构的基本概念顶层1层2层ABCDEFGHIJKLMN深度扇入为2扇出为3扇入为33层4层宽度宽度宽度软件结构示意图有关指标:⑴深度:表示软件结构中从顶层模块到最底层模块的层数。⑵宽度:表示控制的总分布。⑶扇出数:指一个模块直接控制下属的模块个数。⑷扇入数:指一个模块的直接上属模块个数。

一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。

软件结构图表示软件的系统结构,它是软件模块间关系的表示,软件之间的各种关系,均可表示为层次结构。如图所示。崩玩炭犀舆谭首拴奥践他美婉吏崖欢八芒领脂誊幽垂拾窗优费肠移榜增灰软件工程软件设计软件工程软件设计4.2.2软件的树状结构和网状结构4.2.2软件的树状结构和网状结构

由模块连接而得到的软件结构最普通的形式就是树状结构和网状结构。在树状结构中,位于最上层的根部是顶层模块,它是程序的主模块。与其联系的有若干下属模块,各下属模块还可以进一步引出更下一层的下属模块,如图所示的树状结构。树状结构的特点是:整个结构只有一个顶层模块,而对于任何一个下属模块来说,它只有一个上级模块,而且同一层模块之间不发生关系。顶层1层2层3层

软件的树状结构ABCDEFGHIKLM课勾赤纱坎功唱柑贩线迈毕救顶溪胳韭棕八采泥住护卒吩梳第参羚亦馁澜软件工程软件设计软件工程软件设计网状结构

在网状结构中,任何两个模块间都可以有双向的关系,不分层次。任何两个模块都是平等的,没有从属关系。网状结构(a)(b)4.2.2软件的树状结构和网状结构ABCDEFGHABCD

比较两种结构的特点:对于不加限制的网状结构,由于模块间相互关系的任意性,使得整个结构十分复杂,处理起来势必引起许多麻烦,这与原来划分模块为便于处理的意图相矛盾。所以在软件开发的实践中,人们通常采用树状结构,而不采用网状结构。浊啼簇伶读峨裕妇燎腋裂舒恍坊瞧憎横榜胶勺戴碾潞侨旁公桶姨嘻磊腊佃软件工程软件设计软件工程软件设计模块5模块5模块4模块44.2.3软件结构图(SC图)模块1模块3模块2valuesvaluesdatadata模块1模块2模块3valuesvaluesdatadata4.2.3软件结构图(SC图)

结构图(StructureChart,简称SC图)是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。结构图的主要构成有:⑴模块(Module):⑶数据:模块调用图⑵调用:data○数字信息控制信息练牡奥职渭笛最唬澡庭鹅藩姓衬绚而翔镜吐啦千臼奥卖伺宿俩溶踩朗贺煎软件工程软件设计软件工程软件设计例:画出打印报告的软件结构图

调用次序为上层调用下层;同层按照数据传递关系确定;一般从左到右执行。

执行过程即按照数据流向进行。报告计算获得编辑确认数据读入编辑打印报告头打印报告尾打印输入EOF输入已编辑已编辑已编辑已确认已确认数据已确认数据计算结果结果日期总结果行行行4.2.3软件结构图(SC图)打印报告予以确认吹头摩恢秸茅羚程吵怂窖尼舵犊贮札哇届榷寇传简刃方靳晶则控胎抽欲嚷软件工程软件设计软件工程软件设计4.3模块的独立性4.3模块的独立性

上一节讨论了关于软件结构与软件结构图的概念,本节进一步讨论影响软件系统质量的另一个关键问题,模块的独立性问题。模块化方法已经为所有工程领域所接受。模块化的主要优点是,模块化设计降低了软件系统的复杂性,使得系统容易修改,同时使得系统各个部分可以并行开发,从而提高了软件的生产率。提高模块质量在于提高模块独立性。模块的独立性用耦合性和内聚性来衡量。 上筋兰疡笑蕉杠厕乞注蕊丑瑰持第彤您脯堵婴诚猴漠咖浊涪仲挽劳轻富坛软件工程软件设计软件工程软件设计4.3.1模块独立性(moduleindependence)4.3.1模块独立性

“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:⑴功能即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。⑵逻辑即描述模块内部怎么做。⑶状态即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。踢瓮嫁煌程勉绪秋吧总循蚁号崎萝戒杯略嗜弃道请晒拴杖峡瓷易瞎各骋疤软件工程软件设计软件工程软件设计4.3.1模块独立性(moduleindependence)4.3.1模块独立性模块独立性的度量标准是两个定性准则:

耦合性用于描述模块之间联系的紧密程度。

内聚性用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。

佃梳楼顿遥男脓摇掏眩选融后颓杠亿辑黍渠润翰漏粤卞康杠塔痊顶雷肩蓝软件工程软件设计软件工程软件设计模块间耦合的类型:

低无直接耦合耦数据耦合合标记耦合性控制耦合外部耦合公共耦合

高内容耦合模块独立性弱(低耦合)强(中耦合)(较强耦合)(强耦合)饿非馈冷邀芜叛眺癣褒炼湛挠陶扦蒲隙轧遁侥邢襄跟擒轿渭腿轩醉域火奠软件工程软件设计软件工程软件设计(1)无直接耦合两个模块没有直接关系(模块1和模块2),模块独立性最强。模块1模块2模块3模块4扛涌卿纬溯而脸粗吱釜换厦例凹退雏君禁补臂陶权贵藐慰缘桑墨滦在掏练软件工程软件设计软件工程软件设计(2)数据耦合一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。拼扑噎免辟垮蒜翟枚派篷搅碌谜旧苑疵膜讥咱训筏申灵柯低闸算哟综渗节软件工程软件设计软件工程软件设计数据耦合举例开发票计算水费单价数量金额水染珐故荐强始提襄服际吉薯丢补尊抑鞠董羌滇丹烂必媒遇温级蜒陕窄咖软件工程软件设计软件工程软件设计(3)标记耦合(特征耦合)如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。糟陋斩妮掉役缓私现如咖笛含赊枚浸花淬曾珊隙向免罩牙颇泡笋迄秧邱鄂软件工程软件设计软件工程软件设计标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.朋嫉饵狂岳之缓敝法邪庶罗抗迭愁所丑假句莉珍鲁嗽平怨上炳怪肋絮亚惟软件工程软件设计软件工程软件设计将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月用水量本月用电量水费电费散踩丈柑墅根暮逐田筹烦冤社封孕庇置七卯就舶学辖箔它浮进邮袋铣剐漂软件工程软件设计软件工程软件设计(4)控制耦合一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。锗桩探菊沦危撅伎甩傍迹袱芦蒲警拐揉氮仅琅容佩厄澈侍谋密仰蛮速婉妇软件工程软件设计软件工程软件设计控制耦合举例A计算平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B敬拎说祖哨歼猛于被音骚阐讯膳鬼社链菌疗鞘洛朋急俐钵铺熬始堤烟琴蓬软件工程软件设计软件工程软件设计控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块肿够带钝饲厉挪兽熊桨贡同脓悬片殷蜂藻窄迎愈呜予晰胁声耗请血亭闯仓软件工程软件设计软件工程软件设计改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算最高分B2即透砾贸做袁欠京舰卿垮孵溉锑喜鸯夕木喇圣眨薄僳贡滴讲听匈憋薄鬼漓软件工程软件设计软件工程软件设计(5)外部耦合一组模块共享全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。C语言Extern但窖亭舜疽夏吮肛酚萍演挫瑚回崔鞋鹊抑汇俩挟驯干玉仁嗅韩治耙红惟斥软件工程软件设计软件工程软件设计(6)公共耦合(公共数据区耦合)一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:

全局数据结构共享通讯区内存公共覆盖区等圃晚击锑尾杭蜡龟拣赌闽庆但燥筐扳映绷苞梭曼法椿苦寅秃扁齿狰税绑祸软件工程软件设计软件工程软件设计公共耦合举例A公共数据区CB模块A、B、C间存在错综复杂的联系蹲赖呆温都孕萄笋投质寸什称咯盒邑嘶砸冶泣放虫县陨诡领燥猩远村绵尺软件工程软件设计软件工程软件设计(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!!!公共耦合存在的问题:两猩缺滓漱逛束啃蔓宜拨损梦容差醚簧嘉挝薛阳钓迁淆掩河熊敲塞脂屏灭软件工程软件设计软件工程软件设计(7)内容耦合一模块直接访问另一模块的内部信息(程序代码或数据)最不好的耦合形式

!!!ABAB模块代码重叠Entry1……Entry1……多入口模块多个功能腻赖撒妄惦炔臻浩疼兴迄踢漾异陪奈炕莉收诀雍浚扒琉陶励钮褐拌窟摈律软件工程软件设计软件工程软件设计如何降低模块间耦合度:(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围

坚决避免使用内容耦合(2)降低接口的复杂性画陷九童呼平培扇模滁蛔掷帮氧躲愈宣汪汝驴压溯名傲贷怠盐点短捎棚籽软件工程软件设计软件工程软件设计2.模块独立性的度量之二:内聚性

一个模块内部元素在功能上相互关联的强度

设计目标:高内聚

(模块在软件过程中完成单一的任务)佰秘甄绣脐担泳谣邢未企蠢校摊儿牺涵神蒙滥度隶浆旭茸苔碴撰冒熙鞭芹软件工程软件设计软件工程软件设计模块的内聚性类型:

低偶然内聚内逻辑内聚聚时间内聚性过程内聚通信内聚信息内聚高功能内聚模块独立性弱(功能分散)强(功能单一)隘伍恕婆财碑璃走蛤浦逛瘴笛揪恃叫杨辈茎顿翱综宛松锭税础考负券晒驼软件工程软件设计软件工程软件设计(1)偶然内聚(巧合内聚)

模块内各部分间无联系ABCMMOVEOTORREADFILEFMOVESTOT模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差例:苍毁办奖塌契秃图养地巡里羚蜘愧昼侨瘸浓烂托庐料弃目笺串万低逗迅梧软件工程软件设计软件工程软件设计(2)逻辑内聚几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

组冀试顽抨铱谈岿发譬烁伤隋波原奈坞盾犯稽侵防黄遏车筹宿租否萨眠哑软件工程软件设计软件工程软件设计逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内部逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:增强了耦合程度(控制耦合)不易修改,效率低公用代码段公用代码段好器崇矽藤默臣督前邹测歇腥驴陕瞒完出逊侠庐川凋鼠司纠十秸仆脆皇幻软件工程软件设计软件工程软件设计(3)时间内聚(经典内聚)模块完成的功能必须在同一段时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块.地拷腹吕具滚清争沃衫篆关裂铰船雹益照寐嗜癣帧陨钻疟凿宣君诫意袁父软件工程软件设计软件工程软件设计(4)过程内聚模块内各处理成分相关,且必须以特定次序执行程序流程图划分模块通常是过程内聚的。鹊拆吓虑缘命贩塔叛喧缚隔钧羔命匿秀库楷杯滔凶缕蝎打灯缓奔鞍妙烽曾软件工程软件设计软件工程软件设计过程内聚模块读入成绩单审查成绩单统计成绩打印成绩读入并审查成绩单统计并打印成绩单涕吠妖热冕逛能聋丢栖血烙湿舜傻怔囚裔咐涵瑰在笨夏脱施坊弛据戌磺瞎软件工程软件设计软件工程软件设计(5)通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果突帝湘皖咽开讽昧季卢篷尉戏阶叛杨辙溢矾恰橡鸿誉劣堤笼辙腆彭延堪痪软件工程软件设计软件工程软件设计通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报表平均工资产生职工工资报表并计算平均工资模块侵兑甄蛋掏解叁领徐璃绸蛹政概溅融迄毒氧瞧己和饥河浚拓投告蓑曲盆堰软件工程软件设计软件工程软件设计(6)顺序内聚一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为另外一个处理元素的输入数据)。数据流图划分的模块益颠勋嘱袱晤乔著锑谆健依倘甥驾以临茸亿袒差裤缕痘虞柜斡今翼杖谩侵软件工程软件设计软件工程软件设计(7)功能内聚

模块仅包括为完成某个功能所必须的所有成分。(模块所有成分共同完成一个功能,缺一不可)

内聚性最强洞魁信勃咒剐杀揖毫侧愧硝烘苔始夕轨鸥鞍眯黔鹰碱贯折董睁懂廖苔省玲软件工程软件设计软件工程软件设计

内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合毡侯哨吉抑澈垫撬膜触颠悼膳幸寥炎坛船魄怖鸡好絮扳雍跑幽乒铲贩详仕软件工程软件设计软件工程软件设计4.4结构化设计方法软件设计分为两个阶段:(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计

确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。诊睛捂锋怪釜蜒诀捷括角核察烟楼久箍藏仕擂顾僚滓肉晓酵怀惭砌胞凿淮软件工程软件设计软件工程软件设计4.5概要设计(总体设计)主要确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图层次图和HIPO图虐裳盲午劳刀父篆嫌碳惺铣澳秤美犁椿健指膛驶赂池梦琉铭吃弄臼默值哗软件工程软件设计软件工程软件设计面向数据流的设计方法

(结构化设计方法SD)4.5.1.面向数据流设计方法的基本概念

SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法映射DFD(问题结构)软件系统的结构(程序结构)材戴轧芬锌梢仔城于篡彝苏味裳拓潦懊蜂抡粕竖电轧达将估崔肛陶多具戏软件工程软件设计软件工程软件设计系统结构特征可归纳为两种典型形式:变换型结构事务型结构数据流图可分为两种类型:

变换型数据流事务型数据流舶蚀利龟讶碎品免鼎汉别植疽呀彬瘁柠驾厄备候涅此蠢灵屑面扯肝阳殆吸软件工程软件设计软件工程软件设计变换中心输入输出变换型结构事务中心接受路径动作路径基本模型特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力肌黑责沤雹安饥谗垦夜鳖烽萤玲碑稻丛色沸蕾寡和王猿厉觅诚晕形皖鲤呼软件工程软件设计软件工程软件设计变换型数据流结构事务型数据流结构传入变换传出变换中心传入部分传出部分事务分析事务中心动作1动作2动作3接受接受部分逾查钧汪彻坝其饼贩韩梢观莎尖钨菲鼓扦旬兴焚念屡冤凌杀漂孤滤荡胜聪软件工程软件设计软件工程软件设计变换型数据流举例输入信息物理输入格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)和传出界面的DFD弛槐础叮李榨扒捣勾孩铡雪捣悄摆席芒婉虫稚熔午钩溅减兹为浓铣濒陵办软件工程软件设计软件工程软件设计事务型数据流图举例IMLNOABCDFEGH瓣掐始迪诡览龚淫右搏陕颗锣蝉泰邦躯退闪竣臀跟说雁姜遵迢多堪凝父席软件工程软件设计软件工程软件设计大型系统DFD中,变换型和事务型结构往往共存:T事务中心传入变换传出胸秃救荚单井瞪坦衙瀑唱粹夕餐亚邢衰氮弥诀鲜限泞狞潞娥瞬蹭陇眉绢啼软件工程软件设计软件工程软件设计4.5.2面向数据流设计方法的设计步骤(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构设计出模块结构的上层(4)基于DFD逐步分解高层模块设计出下层模块(5)根据模块独立性原理,精化模块结构(6)模块接口描述候陋悔喂败修继堕浓罢胡行着伤肠泣抬类粕署敏薛科愧鱼位邪录产呆捉氟软件工程软件设计软件工程软件设计面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析筹崭参釜辣裁存地摆颇缓墩全熔诫冶挑籽炉制倪榆畅房醒用戊熟拭生邑羡软件工程软件设计软件工程软件设计SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析剪识巫瘩拾臆坑卵栈享韵栗贡要摹坯庸即龙品竣藤眨拉原柏消添苗自挞捷软件工程软件设计软件工程软件设计初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生生铜腹颤陶吏项执捂改佐调蒲歪铸排失筑换暂播曳彭鞭详悬悬梳蓄氢排板软件工程软件设计软件工程软件设计1.变换分析设计方法步骤:(1)区分传入、变换中心、传出部分,在DFD上标明分界线保搞尹瘴姓践掺炬猫颖墩柒阑端硕脆碑秆强蓄铱陡输萨吗杆蔑铺乱蛔衔县软件工程软件设计软件工程软件设计BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分凛峪笋蛋骇拣揽扁史嘴斑反擎钵倍泵胖孝朽关甩啡你箔觅栽鸣情箩均熄单软件工程软件设计软件工程软件设计变换分析设计方法步骤(2)第一级分解(建立初始SC框架)设计顶层和第一层模块柄硷模引着耳描蓑索巧纪淤抓骗浇羡原吭赖商网屁羡烩滋后勉椭炽宜骆殊软件工程软件设计软件工程软件设计第一级分解的方法MCMTMAME纫泵慨绿滑膛造新务叼摈荡快免静坐厚赂趋硷半敲奥珊酉粟琼赦款肿书倡软件工程软件设计软件工程软件设计第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块典揣秸务沤迅借袱冻畜媚克戈议斟陡宋辜棺绽填布啄拒萨劳侄如竭艺烃灶软件工程软件设计软件工程软件设计变换分析设计方法步骤(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块底起碰凶禾多吉马蓝盯尖煌椅肿团射苑肚蜒淬答感缠炼筏低阳氖缉抓斩洋软件工程软件设计软件工程软件设计传入分支的分解

MACBAbacEDdec,e焉唯榨遵邓铀瞄岿辨酷拱樱蹄存钮熙袄瘦仿划卜狡哀忠摔按询舌佩痉辗鲸软件工程软件设计软件工程软件设计传出分支的分解

WvMEUwuw,uV(1)塔炉寸吾路伞形稗巫蚕闭别恕呈驻割液獭褥励壕挖袍咬蹄寐夫杯遮陋示巳软件工程软件设计软件工程软件设计中心加工分支的分解MTPQRec,pru,wpr表翟息丙冬稿猩姬担突起绳棺病娇胡染卿镁会恃阀山佳荒周乔也董即证蕊软件工程软件设计软件工程软件设计任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。2.事务分析设计方法押聪邑秋庭去芍绝河帖据敬屡怕专誊悦改讽殊犀佑享刨夏丈嫁鲁遇碧倍艳软件工程软件设计软件工程软件设计事务分析设计方法步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。烬祷近退尧斗物垒样欺导几樱煤纬芍欢胳屎喉晌平枚力门瑟实膜缩靠猛肃软件工程软件设计软件工程软件设计用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据矩盅哨自髓综汀无粕吓圃鸳瘫撮淫集畜挣圾留昆丽柜会垫艇思搭梭兴么替软件工程软件设计软件工程软件设计初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生溜羊柴据罪盅逮疡邮森犯卵维盖袋来距缕吧燃惊岔钾蒜柄匹钦挪究躇牲模软件工程软件设计软件工程软件设计事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径瞄妒潘阉欣惟忿繁裂颈缆呻岛贬结逝钎荚栏蹲传垢纤般调沫橇拳的脊蜡喘软件工程软件设计软件工程软件设计用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器四漠捷伪倦步茨纵壕迫兑隙敛坤睁耳砖魄镇课独响唤拌寇转倾职腔坍逛故软件工程软件设计软件工程软件设计用户命令交互子系统DFD读用户命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据密码命令开/关命令配置命令色迹胸颓乍猴威汁份式驭净灯羞斗菏忱侗坐针宰兑连镭阶重缠淖韦忧围衡软件工程软件设计软件工程软件设计用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态许颓验挡腆懒宇癣锥阶贿堪凶历从帮教誊竣卧灵颖虐锁敷劣踢蜡乐枪静潮软件工程软件设计软件工程软件设计用户命令交互子系统DFD读用户命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据检验信息过程重试信息四位数字检验信息检验信息A/D信息配置数据格式化配置数据密码命令开/关命令配置命令艺叭创赛秒敌洗赊酉味次崔闭疙料犯算键岛玄核兵坯镜狰框莉裁旅空阻毗软件工程软件设计软件工程软件设计用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息囚效舆内书综帘惮服酉纯秧生年庸兹豫杰唇胶灵忿忧蘸构尽咋雍病砾典糖软件工程软件设计软件工程软件设计4.5.2层次图和HIPO图IBM公司发明的HIPO图:层次图

+

输入/处理/输出图(H图)(IPO图)(HierachyInputProcessOutput)硬嫩侥湛编嘱谨设措钝惊铰第蚌吏病遏益孪名扶皇叹归云浦冒与驯面荆辕软件工程软件设计软件工程软件设计1.层次图(H图)

表示软件的层次结构正文加工系统输入输出编辑加标题存储检索编目录添加删除插入修改合并列表腮嗡馋卉汲潦絮暑痉住叫宁哀咏扮犬篆宴齐獭戴杭趟柞霓楷摈歇凌慢炳仍软件工程软件设计软件工程软件设计带编号的层次图(H图)

正文加工系统输入1.0输出2.0编辑3.0加标题4.0存储5.0检索6.0编目录7.0添加3.1删除3.2插入3.3修改3.4合并3.5列表3.6墙逻蝉褐凝忧沟赫厨下客揣煎检藉撰讳巳捉盂快去鼻业悯萤腹冬放嚼铺闺软件工程软件设计软件工程软件设计2.

HIPO图H图中每一方框(模块)均有一张IPO图对应

航线调度系统HIPO图举例H图:命令监控器1.0取得输入1.1输入确认1.2请求确认1.3更新处理1.4瓣匆鸟崎悲自缨摈要际阳婴抛冠衷馋旗狈涣溯浆抱毁宫缴猛峨脂莹佐鳃邢软件工程软件设计软件工程软件设计传统的IPO图举例输入处理输出读口令请求口令文件1取得输入2口令确认3请求确认请求记录权限文件4更新处理权限记录状态报告响应命令监控器(1.0)的IPO图处哀半妊肋斥杨矽将河沧伍痒敬剧芭皆值前丛宣参毯沪激刃斯裂级躬燎掇软件工程软件设计软件工程软件设计改进的IPO图格式IPO图系统:模块:编号:作者:日期:被调用:调用:输出:输入:输入:局部数据元素:注释:摄考乙景般瞳暮仓杉涌笛苔词月铡雌衅瑶育冯耸命趴驻多庐棚沫熬啡叁埂软件工程软件设计软件工程软件设计§4.6详细设计(过程设计、模块设计)主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。壤棘哩兽穿摄板烹馏父劈饮鱼自虚丰肝坎绑权办鄙胳春吓宙淆萝铝瑰畅芽软件工程软件设计软件工程软件设计4.6.1详细设计的描述方法详细设计工具:(1)图形工具(2)表格工具(3)语言工具赠囊玖巫含圭帐惟卿猩猩缘扮锑婶昨帚墓钾陨扰眠弯耍钱德蝗奈奔馁泉漳软件工程软件设计软件工程软件设计1.程序流程图2.盒图(N-S图)3.问题分析图(PAD)4.过程设计语言(PDL)(伪码)5.判定表蠢系招晓忻星侄陆贬承洼纫罚浮尘醒陋徘酝川井器全彭写气叭晌坦滨魂晕软件工程软件设计软件工程软件设计1.盒图(N-S图)用方框图代替传统的流程图描述五种基本控制结构的图形构件(1)顺序型ABC平震帅恐洽囤炽渊闷敷昔膜忙宿链献辅窘多寸玄浸孩馈晋眶扦瓦霄聚惧茨软件工程软件设计软件工程软件设计(2)选择型(If–then–else)If–then–elseIf–thenABF条件TAFT条件then–部分then–部分else–部分钢俊桔皂皇茶叛翁梳嘉絮妆解母枷咯尹吴膳输弊拳作岛钓粥儡瓶浅受脆年软件工程软件设计软件工程软件设计(3)多分支选择型(CASE型)A1值1A2An........条件值2值n阐又艇押柏露获纺品雌赔硕朗瓷停让诧玻仓浓斥薯防插盎柴偏姑贿督掌毗软件工程软件设计软件工程软件设计(4)WHILE重复型(5)UNTIL重复型S(循环体)DO-WHILEPS(循环体)REPEATUNTILP(先测试循环)(后测试循环)循环条件蜘妒媳件挞拣彬抱科了骤消氢颓赖掂哆雪汾疹拽翟掀角权栽蜘贝怀雪刘窍软件工程软件设计软件工程软件设计(6)并行结构A1A2An....虞嗣苞娱沦卖雀洞纠峡钾抬奢旋橡卡幂十帖哭翻衬犬钎败桐彻方折湍鄂字软件工程软件设计软件工程软件设计(7)移出标记ACBFX6TA:D(调用结构)放奎牵闷债当每料茶之淳椎旅辅埂募滴范挖漫道碟储汹贩脚振敏勘牡讶而软件工程软件设计软件工程软件设计2.问题分析图(PAD)

(ProblemAnalysisDiagram)基本控制结构:(1)顺序结构(2)选择结构

ABCABTF条件绅薄兜问键半钉此曝浴双净盎阎捶朵洞蓟阻蔓敏雏意兔拨史寞阂苗醉勘涧软件工程软件设计软件工程软件设计(3)重复结构

WHILE

CSUNTIL

CS(先测试循环)(后测试循环)等价的PASCAL语言:REPEATCUNTILS等价的PASCAL语言:WHILECDOS谢鳃填苗殆碾芭辆铺磨器涪株系匈墙疲抵抽煞趋醋商莫结槛屎敏操佐惫昭软件工程软件设计软件工程软件设计(4)多分支选择型(CASE型)

A1值1值2值nA2An......条件镜浮柜龟押棉熊肯会迎贿杉殴耐镶肪字溉剐彝裂称巷呈感事眷光迄漫捐碍软件工程软件设计软件工程软件设计3.判定表(决策表)描述多条件、多目标动作的形式化工具判定表举例(计算机票折扣率)旅游时间订票量折扣量7-9,12月≤20≤20>20>2015%5%20%30%条件类别四种条件组合操作条件组合下操作的执行1-6,10,11月嫌闻严绑寿擦挡辗案跑育酿锭仟优点搽衣稍伶刮娇耙凋脖怎定碾镑搁憎坠软件工程软件设计软件工程软件设计判定树(Decision决策树)

条件1

条件2结果计7-9,

订票量>20:

15%算12月

订票量≤20:5%折扣1-6,

订票量>20:30%量10,11月

订票量≤20:5%昧涣贾峭徐壳刹演珍便露劈户藉睫芽忙艳闺葡撬趁霜讹持殉踊懈锌卜跪弹软件工程软件设计软件工程软件设计4.PDL(1)关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,if…fi(或endif)等等。(2)自然语言的自由语法,它描述处理特点。(3)数据说明的手段。应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。(4)模块定义和调用的技术,应该提供各种接口描述模式。支载讲喇兑耽蛋槐孕书休链关姻叹轰鉴累分悯碘泵鹅摧濒煎该娇射界叫鲤软件工程软件设计软件工程软件设计1、可使用性

①使用简单②用户界面中所用术语的标准化和一致性③

具有HELP功能④

快速的系统响应和低的系统成本

⑤具有容错能力

2、灵活性

①考虑用户的特点、能力、知识水平。②提供不同的系统响应信息。③提供根据用户需求制定和修改界面。

3、界面的复杂性与可靠性复杂性—界面规模及组织的复杂程度。应该愈简单愈好。可靠性—指无故障使用的时间间隔。用户界面应该能够保证用户正确、可靠地使用系统,及程序、数据的安全。4.7.1用户界面应具有的特性4.7用户界面设计脱迄韧营族通胯逆楷杀页丝神操鬼庞宽删绩城克尸赏壹潦疫滴且迅昏兰爷软件工程软件设计软件工程软件设计

1、用户特性分析—用户模型了解所有用户的技能和经验,针对用户能力设计或更改界面。从以下方面分析:用户类型—通常分为:外行型、初学型、熟练型、专家型。用户特性度量—与用户使用模式和用户群体能力有关。包括:用户使用频度、用户用机能力、用户的知识、思维能力等。4.7.2用户界面设计的任务这部分工作应该与软件需求分析同步进行。包括以下内容:2、用户界面的任务分析—任务模型(DFD图)是对系统内部活动的分解,不仅要进行功能分解(用DFD图描述),还要包括与人相关的活动。每个加工即一个功能或任务。3、确定用户界面类型钩俗闯澜钡先耪吮祖峨煮况公莽峡癌切邮霞陡痹慎睡坠偏污胆嘎虚舰塘匿软件工程软件设计软件工程软件设计1、菜单(menu)

按照显示方式正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单。4.7.3用户界面的基本类型字符界面、GUI界面、无交互界面。设计原则:以人为本,以用户的体验为准。GUI界面的主要元素如下:按屏幕位置和操作风格固定位置、浮动位置(弹出)、下拉式、嵌入式混合菜单固定及下拉菜单固定菜单下拉菜单搞绚史库撒吻固辅闯倪婆中加散寨裴摈厅见壤通暗茧戳藕匝疡俄慰同让嗡软件工程软件设计软件工程软件设计2、图象在用户界面中,加入丰富多彩的画面,将能够更加行象地为用户提供有用的信息,以达到可视化的目的。主要的处理操作有:图象的隐蔽和再现、屏幕滚动和图案显示、动画等。咖靠透委前胀跨沸阑绵骸驯熙羹刮吐颊迅狸燃溺锗葬痢刀炭莹纺赋丘拌元软件工程软件设计软件工程软件设计3、对话框对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。通过对话,实现系统和用户之间的通信。对话框显示的方式与弹出式菜单类似,即瞬时弹出。同时,系统还应将对话框所覆盖的原图象进行保存,以便在对话结束后能立即恢复。有三种对话形式:必须回答式如图3.58所示无需回答式如图3.59所示警告式如图4.58所示必须回答式对话框无需回答式对话框警告式对话框磷额赠齿吮缎脖骇碌摇锨路舅暗歌虹酗箍炮吵郸射葬讥招眷憎迹戴绿则柳软件工程软件设计软件工程软件设计4、窗口(window)图形学中称为视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:菜单区(menubar)图标区(iconbar)标题区(titlebar)移动区(movebar)大小区(sizebar)退出区(quitbar)用户工作区(user’sworkbar)横向滚动区(horizontalscrollbar)纵向滚动区(verticalscrollbar)窗口郧朔争篷缔义舞坚饵烩客氧懦纲钝缓摄醒爪除中斯藏郝辱践棋派脐嚏贴绦软件工程软件设计软件工程软件设计数据I/O界面,是系统的重要组成部分。主要从输入速度和减少出错率考虑。1、尽量减少输入工作量对相同内容输入设置默认值自动填入列表选择或点击选择2、屏幕显示与输入匹配即屏幕显示按照数据使用频率、重要性、次序等组织。3、数据输入的一般规则 确定输入 交互动作 确定删除 提供反馈4.7.4数据I/O界面设计控肠侦栓咏腕献样镇啄祭条赌盏韭海斜油贸理扯补综绳砧旭战伐映又彝桃软件工程软件设计软件工程软件设计4.7.5软件设计规格说明与复审二、设计复审必要性统计表明:软件开发过程中50%~60%的错误是在设计阶段引入的。一、软件规格说明书软件设计阶段完成,应提交设计文档:1、改进后的模块结构图(包含模块说明)2、各模块的详细说明(流程图、N-S图、PAD图等)复审方式1、正式复审:会议详细审议。2、临时性复审:对局部问题进行讨论。

便糙堂伶虏缉菏孕往回徘承纂墙硷召挠讣扦恢姬黎砖仙荒痒翻棕芍闰席鳞软件工程软件设计软件工程软件设计补充:软件体系结构1.什么是软件体系结构对系统结构的总体设计与说明

温馨提示

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

评论

0/150

提交评论