软件工程第四章软件设计.ppt
《软件工程第四章软件设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第四章软件设计.ppt(85页珍藏版)》请在课桌文档上搜索。
1、软件工程,第4讲 软件设计,第4讲 软件设计,4.1 软件设计的任务、过程和原则4.2 软件设计的基本概念和原理4.3 面向数据流的结构化设计方法4.4 数据设计4.5 用户界面设计4.6 软件过程设计4.7 软件设计文档的内容及其复审的方法,4.1 软件设计的任务、过程和原则,软件设计是后续开发步骤及软件维护工作基础。如果没有设计,只能建立一个不稳定的系统结构。比如,如果信息安全是对用户的关键需求,那么体系结构设计时就应该采用分层结构,将重要资源放在内层。如果可用性是一个关键需求,则需要考虑冗余的体系结构设计。,软件设计的任务,将软件需求规格说明书转化为实际软件系统的一个模型或软件表示。形成
2、必要的设计文档,包括:软件概要设计说明书,软件详细设计说明书,数据库设计说明书,软件设计的主要内容 数据设计将实体关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要模块的功能及其之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计把结构成分转换成软件的过程性描述。,软件设计与软件需求之间的关系,软件设计可细分为两个阶段,概要设计:确定系统的主要模块构成以及这些模块相互间的关系 详细设计:对此框架中每一部件进行过程化描述,把它刻画为在细节上非常接近于源程序的软件表示。,例:机
3、器人控制系统,4.2 软件设计的基本概念和原理,1)模块化模块化就是将大型软件按照规定的原则划分解成一个个较小的、相对独立的但又相互关联的模块的设计方法。PASCAL中的BeginEnd对C、C+和Java语言中的.对过程、函数、子程序和宏等面向对象方法中的对象是模块,对象内的方法也是模块模块化依据,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2),1)模块化模块的分解不能太多也不能太少。,2)抽象 解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性而不考虑细节。,3)信息隐藏 模块内部的数据与过程(操作),应该对不需要了解这些数据和过程
4、(操作)的模块隐藏起来。信息隐藏的目的 提高模块的独立性,减少把一个模块的错误扩散到其他模块中去的机会。信息隐藏的例子全局变量:任何函数都可以访问。堆栈:通过函数Push()、Pop()、Clear()操作栈其他函数并需要、也不知道栈的具体情况。,4)软件复用 软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。构件(component)可以复用的软件成分,可被用来构造其他软件。它可以是:被封装的对象类 功能模块 软件架构(或体系结构Architecture)设计模式等,5)模块独立性模块独立性的度量:内聚度和耦合度内聚:指模块内部各个成分之间的联系。也称:块内联系、
5、模块强度。耦合:指一个模块与其它模块之间的联系。也称块间联系。模块独立性的度量准则:块内联系程度越强、块间联系程度越弱,则模块的独立性越高。模块独立性强的模块的优点降低复杂性,便于并行开发和实现容易测试和维护,(1)内聚的分类,从功能的角度来看模块内部的聚合程度,可以按照由弱到强的顺序,把内聚分为7类。,低内聚,中内聚,高内聚,偶然 逻辑 时间 过程 通信 顺序 功能,偶然性内聚模块:即无任何联系。块内各组成成分在功能上是互不相关的。例如,“记录人员信息”和“产生公司财务报表”构成了一个模块。逻辑性内聚模块:即有某种类型联系。通常由若干逻辑功能相似的成分组成,每次调用由传给模块的参数确定执行哪
6、种功能。时间性内聚模块:即从时间方面看有联系。一个模块包含的任务必须在同一段时间内执行。例如,意外故障处理模块,必须在中断处理的同时完成关闭文件、报警和保留现场等任务。,过程化内聚模块:即一组任务有次序的联系。一个模块中包含的一组任务必须按照某一特定的次序执行。例如,“读入炉温”-“记录炉温”-“比较温度”-“计算阀门开度”-“驱动阀门”等。通信性内聚模块:即数据结构的区域联系。模块内部的各个组成部分都引用一组相同的数据。如下图的例子:,顺序性内聚模块:即有输入/输出的紧密联系。模块中各组成部分密切相关且必须顺序执行,前一处理部分的输出就是下一处理部分的输入。例如,排序程序:“读如一组整型数”
7、-“对这组数从小到大排序”-“将排序后的这组数输出”。功能性内聚模块:内聚性最强。即有功能的紧密联系。一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的.例如,求一元二次方程ax2+bx+c=0的实根。Root(a,b,c,X1,X2):计算b2-4ac;sqrt(b2-4ac);X1=(-b+sqrt(b2-4ac)/2a;X2=(-b-sqrt(b2-4ac)/2a,设计时对模块内聚性的选择,“一个模块,一个功能”是模块化设计的一条准则,也是设计人员争取的目标。功能性内聚模块是最理想的。中、高内聚的模块也可使用。低内聚模块的可维护性和可复用性差,设计时应尽量避免使用。
8、,(2)耦合的分类,模块间的引用方式,数据量,数据格式,数据类型都对耦合的强度产生影响按照影响程度耦合可分为7类,如下图所示。,非直接 数据 特征 控制 外部 公共 内容,数据耦合模块间通过参数表交换数据,且交换的都是数据项参数(而不是控制参数、公共数据结构或外部变量)。数据耦合是松散的耦合,模块之间的独立性比较强。,非直接耦合两个模块之间没有直接关系,相互之间没有信息传递,它们之间的联系完全是通过主模块的控制和调用来实现的。这种耦合的耦合度最低,模块独立性最强。,特征耦合(也称标记耦合):如果2个以上的模块都需要共享某一数据结构的子结构时,不能用全局变量的共享方式,而是采用记录传递方式。例如
9、,A调用B,向B传递某个人的记录(而B可能只需要记录中的几个数据项)。,控制耦合:模块间传递的是用作控制信号的开关值或标志。这种耦合的实质是在单一接口上选择多功能模块中的某项功能。因此,对被控制模块的任何修改,都会影响控制模块。这也意味着控制模块必须知道被控制模块内部的一些逻辑关系,这些都会降低模块的独立性。,外部耦合:允许一组模块访问同一个全局变量(单域变量)。例如,C中的extern。问题:当max的值发生错误时,是哪个函数造成的?,#define MAXLINE 1000 char line MAXLINE;char save MAXLINE;int max;main()int len;
10、extern int max,line;extern int save;,getline()int c,j;extern char line;Copy()int j;extern char line,save;,公共耦合一组模块都访问同一个公共数据结构。公共的数据结构可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,内容耦合(1)一模块直接访问另一模块的内部数据(2)一模块不通过正常入口转到另一模块内(3)两模块有一部分代码重叠(4)一模块有多个入口,A,B,模块代码重叠,Entry1 Entry1,多入口模块,设计时对模块耦合度的选择,耦合越弱,则模块的独立性越强,因此应尽量使用耦合度
11、低的设计。但实际开发软件系统时,中等或较强耦合是不可避免的,也不需要禁止使用。最强耦合度的内容耦合,会给维护工作带来很大的困难,应该不用。,4.3 概要设计方法结构化设计方法,4.3.1 概要设计 概要设计应该包括两方面内容:()产生一个模块化的程序结构,并明确各模块之间的控制关系,亦称为系统结构;()说明每个程序模块的输入输出数据结构。,软件设计从需求定义开始,逐步分层导出系统结构和数据结构,当需求定义中所述的每个部分最终都能由一个或几个软件元素实现时,整个求解过程即告结束。,例如:机器人控制系统,依据不同软件设计方法总能推导出一个软件结构,对于同一问题的各种软件结构,4.3.2 面向数据流
12、的结构化设计方法,结构化设计方法(SD)是以数据流图为基础的,它定义了把数据流图变换成软件系统结构的映射方法,所以这种方法也称为面向数据流的设计方法。(1)主要任务,映射 DFD 软件系统的结构(软件系统(软件的 逻辑模型)初始结构描述),(2)SD方法的设计过程,步1:鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;步2:划分流界,按照SD方法规定的规则,把DFD图转换为初始的SC图;,步3.根据设计优化的指导原则改进初始SC图,生成最终的SC图。,(3)数据流图的两种类型,变换型数据流图,变换中心,输入路径,输出路径,(3)数据流图的两种类型,事务型数
13、据流图,输入边界,输出边界,(4)软件结构表示,4.1)层次图(HC)每个方框代表一个模块,方框间的连线表示调用关系,模块:用矩形表示模块间的调用关系:用带箭头的连线表示数据流:在调用关系线的旁边用命名的箭头表示选择调用:循环调用:,4.2)软件结构图(SC),(5)变换分析方法,5.1)划分边界,5.2)第一级分解(建立初始SC框架),5.3)第二级分解(建立每个分支的下级模型),传入分支的分解,传出分支的分解,加工中心的分解,(6)事务分析方法,6.1)在DFD上确定事务中心、接收部分和发送部分。6.2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。6.3
14、)分解细化接收分支和发送分支,完成初始SC。,(7)结构设计案例:用户命令交互子系统,事务型设计,变换型设计(1),变换型设计(2),(8)软件结构设计优化,保持高扇入/低扇出;模块的作用范围应在其控制范围之内;模块的控制范围:由它本身及其所有的从属模块。模块的作用范围:由此模块的某些判定而影响的所有模块所组成。可预测性:一个模块应该是可预测的;相同输入必产生相同输出反例:模块中使用全局变量或静态变量,则可能导致不可预测必要的错误处理,(8)软件结构设计优化 高扇入/低扇出,模块F的控制范围:F、G、H、I,模块F的作用范围:B,(8)软件结构设计优化 控制域在作用域之内,(8)软件结构设计优
15、化 控制域在作用域之内,(8)软件结构设计优化 出错处理,当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因,/*Insert trigger ti_store_account_history for table STORE_ACCOUNT_HISTORY*/create trigger ti_store_account_history on STORE_ACCOUNT_HISTORY for insert asbegin declare numrows int,numnull int,errno int,errmsg varchar(255)select numrows=row
16、count if numrows=0 return/*Parent STORE_ACCOUNT must exist when inserting a child in STORE_ACCOUNT_HISTORY*/if update(GOODSID)begin if(select count(*)from STORE_ACCOUNT t1,inserted t2 where t1.GOODSID=t2.GOODSID)!=numrows begin select errno=30002,errmsg=Parent does not exist in STORE_ACCOUNT.Cannot
17、create child in STORE_ACCOUNT_HISTORY.goto error end end return/*Errors handling*/error:raiserror errno errmsg rollback transactionend,又例,MRP/ERP软件中入/出库处理入库模块的一种处理方式:录入产品项目编号;在产品清单中查找该产品项目编号;如果存在 则 记入入库明细帐中;更新库存总帐;否则 按照该错误条件(编号)查找错误信息表并获取信息;启动例外处理过程;例外处理过程 给用户显示错误信息;返回录入界面;,错误信息表,窗口的形状、位置、大小文字的字体、大小
18、、颜色,(1)数据库设计概念设计ER模型/EER模型逻辑设计设计阶段的任务把ER模型/EER模型转换成关系模型,用SQL表示物理设计借助于RDBMS的有关功能进行。(2)数据结构设计,4.4 数据设计,数据库设计科借助于工具来完成把ER模型/EER模型转换成关系模型,用SQL表示,/*=*/*Database name:SMSTORE_1*/*DBMS name:Sybase System 11*/*Created on:2/25/2005 12:41 AM*/*=*/*Table:SUPPLIER*/create table SUPPLIER(SUPPLIERID char(10)not n
19、ull,SUPPLIERNAME varchar(40)null,JURISTICPERSON char(10)null,JURISTICPERSONRP char(10)null,IFSIGN bit null,SIGNDATE datetime null,TEL varchar(30)null,ADDR varchar(60)null,TAXNO varchar(20)null,BANKNAME varchar(40)null,ACCOUNTS char(1)null constraint CKC_ACCOUNTS_SUPPLIER check(ACCOUNTS in(1,0),FAX v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第四 软件设计
链接地址:https://www.desk33.com/p-235738.html