结构化系统设计(总体设计)精要.ppt

上传人:小飞机 文档编号:5299278 上传时间:2023-06-23 格式:PPT 页数:104 大小:2.09MB
返回 下载 相关 举报
结构化系统设计(总体设计)精要.ppt_第1页
第1页 / 共104页
结构化系统设计(总体设计)精要.ppt_第2页
第2页 / 共104页
结构化系统设计(总体设计)精要.ppt_第3页
第3页 / 共104页
结构化系统设计(总体设计)精要.ppt_第4页
第4页 / 共104页
结构化系统设计(总体设计)精要.ppt_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《结构化系统设计(总体设计)精要.ppt》由会员分享,可在线阅读,更多相关《结构化系统设计(总体设计)精要.ppt(104页珍藏版)》请在三一办公上搜索。

1、第8章 结构化系统设计,总体设计,本章主要内容,8.1 软件架构的设计(achitecture)8.2 结构化软件结构设计的基本概念(structure)8.3 结构化软件结构设计方法(structure),8.1 软件架构的设计(achitecture),8.1.1 什么是软件架构8.1.2 架构设计,8.1.1.软件架构的概念,建筑、文学、音乐、机械、电子、计算机软硬件等领域都会使用“架构(architecture)”这一概念。架构都提供了系统最高层的设计方案,以确保建筑、小说、乐曲、设备、计算机等系统满足期望的特性。好的建筑应该美观、坚固、实用好的计算机应用系统应该实用、好维护、可靠、性

2、价比高架构师(architect)需要发现特定系统的最重要的关注点,设计某种折衷的总体方案以满足关注点。架构包含系统的一组基本结构(structure),每种结构都有各种类型的部件(component)及其关系构成,架构描述了这些部件的组合、相互调用参照、通信以及其他动态交互。,架构和结构的关系,架构是抽象无形的,体现高层全局的决策,就像文章的中心思想和提纲。结构是具体有形的,体现决策的贯彻,如同文章的每个段落及细节描述。架构包含了结构的初步描述和决策。相同架构的系统,具体结构允许有差异。,使用桥梁来比喻,桥梁的架构设计可以使用草图描述,架构决定了桥梁的基本结构部件。桥梁有梁式桥、拱桥、斜拉桥

3、、悬索桥等架构,斜拉桥的基本结构:索塔 主梁 斜拉索,使用桥梁来比喻,桥梁的结构设计则需要考虑各种部件的数量、材料、重量、形态等方面,是可以施工的严谨的结构图。架构是抽象的,对结构进行了设计和限定,每座桥的结构是具体有形的、元素组合千变万化,1.软件架构,软件架构(software architecture)的定义没有统一的版本,一般认为:一个应用程序或计算系统的软件架构是一个或一组结构,它包含组成系统的软件元素、这些元素对外可见的性质以及它们之间的关系。对外可见的性质指软件元素能够提供的服务、性能特征、错误处理、共享资源的用法等。软件的一个结构元素可能是一个子系统、构件、进程、库、数据库、计

4、算结点、遗留系统等等。软件架构是最高层次的系统分解,它不会囊括所有的结构和行为的定义,它只关注那些被认为是重要的元素。架构难以更改,一旦修改,意味着整个系统重建,而结构修改只影响局部。,2.软件架构模式,大部分的架构来源于有相似关注点的系统的总结和抽象,这些相似性被描述成某种特殊模式的架构风格,也就是架构模式(architectural pattern)。一种架构模式就是一个经验秘籍,架构师在设计不同系统时可以重复使用这些先进经验。图10.1就是桥梁的四种常用架构模式。中国建筑有一种攒尖模式,被广泛应用在古典园林中,如三角、四角、五角、八角等亭子,宫殿、坛庙大量应用。,软件架构模式,软件架构模

5、式就是可重复使用的软件结构风格。,8.1.2 架构设计,主机-终端的集中控制结构分布式对象结构客户机-服务器的分布式结构C/S结构B/S结构,1、主机-终端式结构,软件配置在主机上,处理能力也集中于主机终端用于输入和输出,无CPU,主机Host,终端Terminal,控制台Console,主机-终端的一般硬件配置,主机终端网络拓扑结构,2、分布式对象结构,每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器,而提出服务请求的对象就是客户。,分布式对象结构的网络拓扑模型,分布式对象结构,星形网络,b.总线形网络,3、客户机-服务器结构,处理分布于客户机和服务器。客

6、户机完成本地运算,可向服务器请求某种服务(如查询数据),服务器响应请求,完成运算后,将结果返回给客户机,数据库服务器,客户机,客户机-服务器的一般硬件配置,客户机/服务器结构,客户机-服务器的软件配置,Client/Server(C/S):应用程序配置于客户机,DBMS配置于服务器。,Windows窗口程序,数据库,数据库服务器,数据库服务器,数据库,浏览器程序(如 IE),Browser/Server(B/S):应用程序配置于Web应用服务器,客户端配置浏览器程序,B/S的工作机制,B/S结构(Internet架构),如何选择架构模式,内部管理、安全性要求高、后台少数人使用的功能采用Wind

7、ows界面的C/S结构,也称为胖客户端。外部用户较多的功能采用浏览器界面的B/S结构,也成为瘦客户端。胖客户端/瘦客户端,各有优缺点:C/S架构的缺点主要是部署、更新的问题。B/S架构的缺点主要是受制于HTML的限制,无法像C/S那样使用丰富的效果来展示数据,用户体验比较糟糕。,软件架构的最新发展,丰富客户端,RIA(Rich Internet Application)的出现给我们带来重新在客户端和服务器端进行更好的平衡的机会。是集桌面应用程序的最佳用户界面功能与Web应用程序的普遍采用和快速、低成本布署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。有以下特点:在消息确认和格式编排方

8、面提供互动用户界面在无刷新页面之下提供快捷的界面响应时间(Ajax技术Asynchronous JavaScript and XML)提供通用的用户界面特性如拖放式(drag and drop)以及在线和离线操作能力结合了B/S配置的优势和C/S界面丰富的特点,8.2 结构化软件结构设计的基本概念(structure),8.2.1 结构化设计内容8.2.2 结构化设计思想8.2.3 模块8.2.4 结构图8.2.5 模块的联系8.2.6 模块间的耦合8.2.7 模块的内聚8.2.8 启发规则,采用强调自顶向下、逐层分解的功能模块设计,也称为结构化设计。主要包括:将系统划分成功能模块(Modul

9、e);决定每个模块的功能;决定模块的调用关系;决定模块的界面(Interface,接口),即调用时传入的信息(函数参数),以及返回的信息(返回值)。主要模型:模块结构图(SC,Structure Chart),也称功能结构图。,8.2.1 设计内容,8.2.2 设计思想,结构化:自顶向下,逐层分解求精结构化设计:软件模块化,按层次划分,模块化,因为根据经验:对于问题1(P1)和问题2(P2)若:C(P1)C(P2)则:E(P1)E(P2)有规律显示:C(P1+P2)C(P1)+C(P2)则:E(P1+P2)E(P1)+E(P2)C表示复杂度,E表示需要的工作量,模块化设计方法,使用功能分解一定

10、程度上能够简化系统结构,使系统容易修改和理解。具体做法:把整个软件划分为部分,其中每一部分的功能简单明确,即程序模块(可以是子过程或函数)划分模块的工作按层次进行,上层模块调用下层模块每一个模块应尽可能独立模块间的调用接口要阐明(模块名称、输入数据、输出数据),8.2.3 模块,模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数)。模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。,计算年龄,模块的图形表示方法,模块的函数接口表示,int GetAge(date birthday),小程序练习,计算 5!6!7!。代码如下:,x1=1;for

11、(int i=1;i=5;i+)x1=x1*i;x2=1;for(int i=1;i=6;i+)x2=x2*i;x3=1;for(int i=1;i=7;i+)x3=x3*i;x4=x1+x2+x3;,封装一个求阶乘的模块吧!,定义和调用子过程C#定义:Public void PrintGradeReport(String stuID)调用:PrintGradeReport(“2008012264”);,模块之子程序,可视化程序设计采用事件驱动的编程技术,使用事件过程,事件过程也是子程序。例如按钮button1单击的事件过程如下:C#.NET:事件过程的定义:private void butt

12、on1_Click(object sender,EventArgs e)事件过程的调用(与事件绑定后自动完成调用):this.button1.Click+=new System.EventHandler(this.button1_Click);,模块之事件过程,与子过程的区别:函数存在返回值调用函数通常要使用其返回值C#定义函数 Public long Factorial(int n)调用函数 x1=Factorial(5);x2=Factorial(6);,模块之函数,接口成本/集成成本,成本/工作量,模块数量,单元模块成本,软件总成本,模块数量和软件成本,粒度太大,单个模块复杂度升高、维护

13、困难 粒度太小,管理与运行成本升高试想一下:每个经理管理协调多少个下级合适?,8.2.4 结构图,结构图(Structure Chart)描述系统的模块结构及模块间的联系 结构图中的主要成分有:模块:用长方形表示调用:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用数据:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义)控制信息:带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息,主调模块,被调模块,被调模块,主调模块,被调模块,被调模块,循环调用,条件调用,结构图无严格的模块调用顺序,但一般习惯从左至右因为约定遵从从上向下的调用,调用关系也可以不使

14、用箭头,而直接使用直线模块间传递的信息如果出现在数据字典中,则视为数据,否则为控制信息,结构图的画法,计算,获得有效数据,生成报表,打印报表,读入数据,核对数据,打印表头,打印表尾,显示无效数据,打印一行,有效数据,EOF,数据,EOF,有效数据,数据,有效数据,结果,EOF,结果,日期,数据行,总计,行,总计,一个完整的结构图,简单画法的结构图(H图),借书模块还可分解:验证读者身份、修改图书状态、保存借阅记录等,简化后,忽略信息传递的结构图如下:,8.2.5 模块的联系,为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准耦合:模块和模块

15、之间的联系程度内聚:模块内部各元素之间的联系程度设计目标:模块内的联系越紧越好模块间的联系越少越好为什么?,8.2.6 模块的耦合,double CalculateAvg()int n;double total,average,value;scanf(“输入个数:n”,两个模块之间存在联系,影响耦合度的因素,如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素:联系方式模块间通过什么方式联系来往信息的作用模块间来往信息作什么用数量模块间来往信息的多少。,混合控制数据,用过程 直接引用语句调用,少,多,数量,方式,作用,0,离坐标原点越远,耦合程度越高,耦合的类型,

16、耦合分类如下:数据耦合:采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。标记耦合:如果调用模块将整个数据记录传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。控制耦合:一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解)公共环境耦合:如果两个模块共享同一全局数据,称为公共耦合。内容耦合:两个模块之间的内部属性有直接关联,也称病态耦合。(某些GOTO语句),松散,紧密,代码举例1,编写函数用于确定某年是否为闰年。Function IsLeapYear(yearAs integer)As Boolean If yea

17、r Mod 40 or(year Mod 100=0 and year Mod 4000)Then isLeapYear=False Else isLeapYear=True End IfEnd FunctionSub Button1_Click()if IsLeapYear(Convert.ToInt(Textbox1.Text)End Sub,代码举例2,编写函数可以实现温度值从华氏转换为摄氏和从摄氏转换为华氏。/source:需要转换的原始温度值/isCtoF:设置转换方式,True表示从摄氏到华氏,/False表示从华氏到摄氏/返回值为转换后的温度值int ChangeTemp(int

18、 source,bool isCtoF)if(isCtoF)return(source*9/5)+32);else return(source-32)*5/9);参数isCtoF 不用于计算,仅用于控制逻辑(分解),代码举例3,根据血常规分析感冒特征struct BloodWBC/白细胞 RBC/红细胞 HGB/血红蛋白 PLT/血小板 LYM/淋巴细胞百分比 int DiagCold(struct Blood bld)/利用白细胞、中性粒子百分比、淋巴细胞百分比三项分析DiagCold只需要传入数据中的部分内容,代码举例4,左边使用参数,右边使用全局变量,哪个耦合度更高?,struct Bo

19、x float length;float width;float height;float volume;,main()struct Box x;x=InputData();x.volume=CalcVolume(x);PrintData(x);return 0;,extern struct Box x main()InputData();CalcVolume();PrintData();return 0;void InputData()/输入数据到x void CalcVolumn()/利用x计算 void PrintData()/打印x各项内容,8.2.7 模块的内聚,double Cal

20、culateAvg()int n;double total,average,value;scanf(“input value:”,模块内部各元素(变量、语句)之间存在联系,内聚的好处,模块的内聚反映模块内部联系的紧密程度。一个模块只需要做好一件事情,不要过分关心其它任务。高内聚性的好处是可以提高程序的可靠性。有一个调查表明,50的强内聚性子程序是没有错误的,而只有 18的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高 6 倍,而修正成本则要高 19 倍。摘自代码大全,内聚的类型,模块的内聚可以分以下七类:、偶然内聚(coincidental cohesion)、逻辑内

21、聚(Logical cohesion)、时间内聚(temporal cohesion)、步骤内聚(procedural cohesion)、通信内聚(communicational cohesion)、顺序内聚(Sequential cohesion)、功能内聚(functional_cohesion),当同一个子程序中的操作之间无任何联系时,为偶然内聚性,也叫作“无内聚性”。比如只是为了将程序中某几处凑巧相同的一些语句组合起来形成的一个模块:,P,Q,R,S,1.偶然内聚,B=A;read(Cardfile);D=C;,T,将几个逻辑上相似的功能放在一个模块中,温度转换函数(摄氏和华氏温度的

22、互相转换,if-else语句)常见的出错处理模块,工作模块发现错误后,调用错误处理模块,将错误号作为控制参数传入,然后出错处理模块根据不同的错误号执行相应的操作(switchcase分支语句),2.逻辑内聚,int ComputeScore(bool type),3.时间内聚,将在有限时间单元内处理的成分组合为同一模块比如在窗口load事件过程:private void AddBook_Load(object sender,EventArgs e)/初始化图书类别选择框 cboType.Items.Add(哲学);cboType.Items.Add(法律);/初始化出版社选择框 Publish

23、er p1=new Publisher();DataTable dt=p1.GetAllPublishers();cboPublisher.DataSource=dt;cboPublisher.DisplayMember=name;cboPublisher.ValueMember=publisherID;,可视化程序设计中初始化窗口中的缺省选项还比如:C+的构造函数、析构函数,4.步骤内聚,当子程序中的操作是按某一特定过程结构进行的,就是步骤内聚。例如:用户想按一定的顺序打印告,子程序设计成是用于按顺序打印销售收入、开支、雇员电话表的。步骤内聚在时间内聚的基础上增加了次序的约束,当模块内的成分

24、引用共同的数据,而不存在其他联系时,称为通信内聚,修改库存,购货单,开发货单,库存,A、销售模块,B、产生留退名单模块,期末不及格统计,累计不及格统计,5.通信内聚,模块中某个成分的输出是另一成分的输入,顺序内聚有较强的内聚性,是步骤内聚和通信内聚的结合。但仍然不是最高的内聚类型,包含功能不单一。比如显示期末成绩通知:,6.顺序内聚,7.功能内聚,一个模块包括并且仅仅包括为完成一个具体任务所需要的所有成分,称为功能内聚。功能内聚性是最强也是最好的一种内聚例如:打印职工名单,PrintStaffList()例如:计算平均分,CalculateAvg()仅用一个动宾词组能明确指出这个模块的所有功能

25、。,内聚的评分,耦合和内聚的概念是Stevens等人提出的,是测量一个模块化系统好坏的标志。按他们的观点,给上述七种内聚评分如下:功能内聚分顺序内聚分通信内聚分步骤内聚分时间内聚分逻辑内聚分偶然内聚分可以给一个软件的所有模块打分,最后计算平均分,作为软件结构质量评价的参考,模块重构例1,获取某个数并且修改它以作其他用途,比如:void getTotalOutstandingAndSetReadyForSummaries()这是一个顺序内聚的模块,重构后:double getTatalOutstanding()void setReadyForSummaries(double x),8.2.8 启

26、发规则,优良的软件模块化设计往往能导致程序设计的高效。软件模块化设计常采用以下优化策略:改进软件结构,提高模块独立性。在满足模块化要求的前提下尽量减少模块数量。模块规模应适中,模块内语句数一般为50100。软件结构的深度、宽度、扇入数和扇出数都要适当。模块的作用域应该在控制域之内。力求降低模块接口的复杂程度,设计单入口、单出口的模块。,软件结构表示软件的系统结构,它是软件模块间关系的表示,均表示为层次关系。,软 件 结 构 示 意 图,顶层,1层,2层,A,B,C,D,E,F,G,H,I,J,K,L,M,N,深度,宽度,扇入为2,扇出为3,扇入为3,宽度,深度,宽度,3层,4层,模块的扇入与扇

27、出,深度:表示软件结构中从顶层模块到最底层模块的层数;宽度:表示控制的总分布;扇出数:指一个模块直接控制下属的模块个数;扇入数:指一个模块的直接上属模块个数。平均扇出系数最好是35;一个模块扇出的上限不超过7;高层模块高扇出,最低层模块高扇入;一个好的软件结构的形态准则是:上面尖、中间宽、下面小,像清真寺的塔。,有 关 指 标,作用域在控制域内,M的控制域为 M,A,B,C,作用域:A中的一个判定所影响的模块。例如:,上例中A的作用超出了控制域。改进方法之一,可以把A中的 if 移到M中;方法之二,可以把C移到A下面。,控制域:,(a),TOP,X,Y,A,B1,B2,(b),B,X,Y,A,

28、B1,B2,TOP,(c),X,B,A,B1,B2,TOP,(d),X,Y,A,B1,B2,作用范围和控制范围图示,作用域与控制域示例,D计算总工资,C计算职工工资,B计算临时工工资,A计算工资,模块A的控制范围是:A、B、C、D,假如判定出现在模块A,该判断的作用范围是:A、B、C,但D不受影响,思考:这个例符合结构化设计规则吗?,8.3 结构化软件结构设计方法(structure),转换,设计模型(物理模型),从数据流图导出结构图,8.3.1 变换分析(变换型数据流图映射成软件结构的设计)8.3.2 事务分析(事务型数据流图映射成软件结构的设计)8.3.3 综合型数据流图映射成软件结构的设

29、计8.3.4 优化设计,转换存在鸿沟,数据流图着眼于现实世界,结构图着眼于计算机世界。数据流图反映数据流,反映系统的逻辑功能,即系统能够“做什么”;结构图反映程序控制层次,反映系统的物理模型,即怎样逐步实现系统的总功能。简单地说:数据流图描述线性的工作流程,结构图描述工作的分配(谁负责做什么),转换有规律可循吗?,数据流图中存在两种典型的结构:变换型(Transform)结构事务型(Transaction)结构。这两种结构可以分别通过变换分析和事务分析方法导出标准形式的结构图。变换分析:用来描述输入、处理、输出数据流。事务分析:用来描述多种事务类型的处理。,变换流,变换型数据流,事务流,事务型

30、数据流,当信息流具有明显的“发射中心”时,可归结为事务流。,面向数据流方法的设计过程,8.3.1 变换分析,确定DFD中的变换中心、逻辑输入和逻辑输出。系统的变换中心,即主加工。如几股数据流的汇合处往往是系统的主加工。若一下不能确定,则要从物理输入端开始,沿着数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统的输入则它的前一个数据流就是系统的逻辑输入。同理,从物理输出端开始,逆数据流方向向中间移动,可以确定系统的逻辑输出。介于逻辑输入和逻辑输出之间的加工就是变换中心,用虚线划分出流界,DFD的三部分就确定了。,第1步 划分输入、加工、输出,原始数据,机内数据,正确数据,解,格式

31、化解,输出解,逻辑输出,逻辑输入,(物理输入),(物理输出),8.3.1 变换分析(续),2.设计软件结构的顶层和第一层变换结构。变换中心确定以后,就相当于决定了主模块的位置,这就是软件结构的顶层;其功能是主要完成所有模块的控制,它的名称是系统名称,以体现完成整个系统的功能。顶层确定之后,设计软件结构的第一层。第一层至少要有输入、输出和变换三种功能的模块。为每个逻辑输入设计一个输入模块,其功能为向顶层模块提供相应的数据。为每个逻辑输出设计一个输出模块,其功能为输出顶层模块的信息。为变换中心设计一个变换模块,它的功能是将逻辑输入变换为逻辑输出。,变换分析设计举例,8.3.1 变换分析(续),设计

32、中、下层模块对第一层的输入、变换及输出模块自顶向下、逐层分解。输入模块的下属模块的设计每个输入模块可以设计成两个下属模块:一个接收,一个转换。用类似的方法一直分解下去,直到物理输入端。如图中模块“get f3”和“get f2”的分解。模块“get f1”为物理输入模块。2)输出模块的下属模块的设计每个输出模块可以设计成两个下属模块:一个转换,一个发送,一直到物理输出端。如图中模块“put f7”,“put f8”和“put f10”的分解。模块“put f9”和“put f11”为物理输出模块。,8.3.1 变换分析(续),变换模块的下属模块的设计根据DFD变换中心的组成情况,按照模块独立性

33、的原则来组织其结构,一般对DFD中每个基本加工建立一个功能模块。如图中模块“C”,“D”和“E”。,8.3.1 变换分析(续),4.设计优化以上步骤设计出的软件结构仅仅是初始结构,还必须根据设计准则对初始结构精细和改进。输入部分的求精:对每个物理输入设置专门模块,以体现系统的外部接口;其他逻辑输入模块并非真正输入,当它与转换数据的模块都很简单时,可将它们合并成一个。(2)输出部分的求精:为每个物理输出设置专门模块,其他逻辑输出模块并非真正输出,当它与转换数据的模块都很简单时,可将它们合并成一个模块;同时注意把相同或类似的物理输出模块合并在一起,以降低耦合度。(3)变换部分的求精:根据设计准则,

34、对模块进行合并或调整。,优化后的变换分析举例,总之,软件结构的求精,带有很大的经验性。往往形成DFD中的加工与结构图中的模块之间是一对一的映射关系,然后再修改。但对于一个实际问题,可能把DFD中的两个甚至多个加工组成一个模块,也可能把DFD中的一个加工扩展为两个或更多个模块,根据具体情况要灵活掌握设计方法,以求设计出由高内聚和低耦合的模块所组成的、具有良好特性的软件结构。,8.3.1 变换分析(续),变换分析示例,例1:汽车数字仪表板的设计 功能:通过模-数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;指示

35、加速或减速;如果车速超过55mph,则发出警告铃声。,变换分析示例设计步骤,(1)复查基本系统逻辑模型。(2)确定数据流图具有变换特性还是事务特性。(3)确定输入流和输出流的边界,从而孤立出变换中心。完成“第一级分解”。完成“第二级分解”。(6)使用启发规则对第一次分割得到的软件结构进一步精化。,第一步:DFD的分界,先分出I、P、O三块,变换分析示例(续),第一级分解的方法,变换分析示例(续),数字仪表板系统的第一级分解,变换分析示例(续),第二级分解的方法,第二步:映射,变换分析示例(续),未经精化的输入结构,变换分析示例(续),未经精化的变换结构,变换分析示例(续),未经精化的输出结构,

36、变换分析示例(续),变换分析示例(续),未经精化的输出结构,第三步:优化 本着高内聚、低耦合的原则。输入结构中的模块“转换成rpm”和“收集sps”可以合并。变换结构中的模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合。输出结构中的模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。,变换分析示例(续),精化后的数字仪表板系统的软件结构,数字仪表板控制,数据转换控制,驱动仪表板,接收传感器信号,计算gal/h,读燃料流,转换成r/min,读旋转信号,确定加/减速,计算mile/h,计算mile/gal,计算里程,加/减速显示,显示mile/h,显示mile/gal,显

37、示里程,发出铃声,发光二极管显示,变换分析示例(续),上述设计步骤的目的是,开发出软件的整体表示。也就是说,一旦确定了软件结构就可以把它作为一个整体来复查,从而能够评价和精化软件结构。在这个时期进行修改只需要很少的附加工作,但是却能够对软件的质量特别是软件的可维护性产生深远的影响。,变换分析示例总结,思考题,试根据下面的数据流图,画出“工资处理”子系统的结构图。,思考题(续),8.3.2 事务分析,接收通路,调度,8.3.2 事务分析(续),虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法

38、为宜。事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。对于一个大系统,常常把变换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的结构。,8.3.3 综合型数据流图与分层数据流图映射成软件结构的设计,1.综合DFD的映射 一个大型系统的DFD中,既有变换流,又有事务流,属于综合的数据流图,其软件结构设计方法如下:(1)确定DFD整体上的类型。事务型通常用于对高层数据流图的变换,其优点是把一个大而复杂的系统分解成若干较小的简单的子系统。变换型通常用于对较低层数据流图的转换。变换型具有顺序处理

39、的特点,而事务型具有平行分别处理的特点,所以两种类型的DFD导出的软件结构有所不同。只要从DFD整体的、主要功能处理分析其特点,就可区分出该DFD整体类型。(2)标出局部的DFD范围,确定其类型。(3)按整体和局部的DFD特征,设计出软件结构。,分层DFD的映射,对于一个复杂问题的数据流图,往往是分层的。分层的数据流图映射成软件结构图也应该是分层的,这样便于设计,也便于修改。由于数据流图的顶层图反映的是系统与外部环境的界面,所以系统的物理输入与物理输出都在顶层或0层图,相应的软件结构图的物理输入与输出部分应放在主图中,便于同DFD的顶层图对照检查。分层DFD的映射方法分类:(1)主图是变换型,

40、子图是事务型(2)主图是事务型,子图是变换型,主图变换型,子图事务型,分层DFD的映射(续),主图事务型,子图变换型,分层DFD的映射(续),8.3.4 设计优化,考虑设计优化问题时应该记住,“一个不能工作的最佳设计的价值是值得怀疑的”。软件设计人员应该在致力于开发能够满足所有功能和性能要求的基础上,按照设计原理和启发式设计规则优化软件结构。应该在设计的早期阶段尽量对软件结构进行精化。可以导出不同的软件结构,然后对它们进行评价和比较,力求得到“最好”的结果。,要点归纳,熟练掌握客户机服务器软件架构,C/S、B/S架构的特点、区别和适用场合。模块独立性原理的衡量标准:内聚和耦合。模块的控制范围、

41、判断的作用范围。模块的扇入、扇出。结构化设计的启发规则。会使用变换分析、事务分析从数据流图导出结构图,要点归纳(续),一般掌握系统设计的任务、设计标准、内容。软件架构的类型、特点。系统总体设计的内容、详细设计的内容。模块的四个属性。,结构化系统分析与设计作业,需求陈述:高考录取统分子系统有如下功能:(1)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;(2)计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。要求:用结构化方法学对高考录取统分子系统进行 分析与设计,分别完成以下工作:给出高考录取统分子系统的功能模型(用数据流图表示)。给出高考录取统分子系统的软件体系结构(用模块结构图表示)。,结构化系统分析与设计作业,以图、表、文字的形式总结结构化分析与设计的建模技术,及其相互间的转换。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号