《软件工程软件设计精.ppt》由会员分享,可在线阅读,更多相关《软件工程软件设计精.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程软件设计第1页,本讲稿共89页软件设计概述内容软件设计是一个描述、组织、构造系统部件的过程,是确定软件“怎么做”的过程。这个过程分为两个层次:概要设计和详细设计。软件设计的输入是需求规格说明书,输出是概要设计说明书和详细设计说明书第2页,本讲稿共89页总体设计(概要设计)从全局的高度,确定系统的总体实现方案和整体框架它要覆盖需求规格说明书的全部内容,同时作为指导详细设计的依据详细设计确定应该怎样具体地实现各个软件元素,得到对目标系统的精确描述要覆盖总体设计的全部内容,同时作为指导程序设计的依据第3页,本讲稿共89页总体设计的具体任务制定规范系统命名规范,模块命名规范,构件命名规范,变量
2、命名规范,以及数据库中的表名、字段名、索引名、试图名、存储过程名、触发器名等总体结构设计总体结构设计系统体系结构的设计通常采用软件结构图的横向表示功能分解,纵向表示功能的层次调用第4页,本讲稿共89页处理方式设计数据设计数据设计数据结构设计文件设计数据库设计质量设计文档设计第5页,本讲稿共89页评审总体设计可回溯性接口定义是否清晰检查模块的内聚力风险性实用性质量属性各种选择方案限制其他问题第6页,本讲稿共89页总体设计的过程设想供选择的方案根据需求分析阶段的数据流程图中处理逻辑关系,归并形成子系统不同的子系统组合产生不同的系统实现方案材料要求:系统流程图、组成系统的元素清单、成本/效益分析、实
3、现这个方案的进度计划推荐最佳方案功能分解将复杂功能分解成简单功能,使之对应成一个模块只完成一个适当功能,便于实现第7页,本讲稿共89页设计软件结构采用层次图或结构图描述模块之 间调用的关系数据设计包括数据结构设计、文件设计和数据库设计制定测试计划针对软件结构的测试和集成测试书写文档总体设计规格说明书用户手册测试计划详细的实现计划第8页,本讲稿共89页设计过程的一般模型第9页,本讲稿共89页设计原则原则一,多样化设计原则二,设计对于分析模型应该是可跟踪的原则三,设计不应该从头做起原则四,软件设计应该尽可能缩短软件和现实世界的距离原则五,设计应该表现出一致性和规范性原则六,设计的易修改性原则七,容
4、错性设计原则八,设计的粒度要适当原则九,在设计时就开始评估软件的质量原则十,要复审设计,减少设计引入的错误第10页,本讲稿共89页影响软件设计的因素共同设计用户界面文化问题并发性第11页,本讲稿共89页软件设计的概念模块一个软件系统根据其功能分解成许多较小的程序单元模块的基本属性功能-模块要完成的任务逻辑 描述模块为了完成任务,模块内部怎么做状态 使用该模块时的环境和条件第12页,本讲稿共89页模块化定义即把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。模块规模的确定标准模块应该是高内聚的模块应该是松散耦合的第13页,本讲稿共89页第14页,本讲稿共89页
5、模块独立性“模块独立”是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设计的基本标准。模块独立性原则的两个定性标准度量耦合-衡量模块之间彼此依赖的紧密程度内聚-衡量一个模块内部各个元素彼此结合的紧密程度第15页,本讲稿共89页耦合 模块间相互关联的程度关联程度的决定因素一个模块对另一个模块的访问模块间传递的数据量一个模块传递给另一个模块的控制信息模块间接口的复杂程度第16页,本讲稿共89页耦合的分类内容耦合-一个模块直接参考另一个模块的内容例子结论-坚决避免使用内容耦合 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con=Dri
6、verManager.getConnection(jdbc:odbc:test);stmt=con.createStatement();rs=stmt.executeQuery(select areano,areafangxiang,areasell,endtime from landInformation);while(rs.next()第17页,本讲稿共89页公共耦合-多个模块都访问同一个公共数据环境分类松散公共耦合:一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据紧密公共耦合:两个模块都向公共数据环境中送数据,同时也都从公共数据环境中取数据例子动态并发程序的执
7、行结论-限制使用公共耦合第18页,本讲稿共89页外部耦合 两个模块都访问同一个全局简单公共变量,而不是同一全局数据结构,且不是通过参数表传递该全局变量的信息例子结论:限制使用外部耦合while(gloable T=0)if x25 then ModuleA();else ModuleB();第19页,本讲稿共89页控制耦合 模块A向模块B传递一个控制信息例子把一个数组名作为参数传递给另一个模块时,就形成了参数以传址的形式进行传递,降低模块的独立性。结论:少用控制耦合第20页,本讲稿共89页数据结构耦合 一个模块调用另一个模块时传递了整个数据结构数据耦合 两个模块之间传递的是数据项结论:尽量使用
8、数据耦合。第21页,本讲稿共89页非直接耦合 两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现例子If(x)then modelAelse modelB结论:独立性最强的耦合第22页,本讲稿共89页内容耦合公共耦合外部耦合控制耦合数据结构耦合数据耦合非直接耦合高低弱强模块耦合性模块独立性第23页,本讲稿共89页耦合的类型第24页,本讲稿共89页如何降低模块间的耦合根据系统的特点,选择恰当的耦合类型降低模块接口的复杂性把模块之间的通信信息放在缓冲区中软件设计的目标是降低模块间的耦合程度,设计时遵循的原则:尽量使用数据耦合,少用控制耦合,限制使用公共耦合,坚决不用内容耦合。
9、第25页,本讲稿共89页 内聚巧合内聚 一个模块执行多个完全互不相关的动作例子为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块程度:低内聚第26页,本讲稿共89页逻辑内聚 一个模块执行一系列相关动作例子程序执行的逻辑类似,并共用一部分代码,接口参数为了区分执行过程而显得非常复杂。程度:低内聚第27页,本讲稿共89页时间内聚 一个模块内部的多个任务是与时间有关例子 :程序的初始化过程程度:低内聚 public void init(ServletConfig config)throws ServletException moni_num_in=0;moni_num_end=0;r
10、Bundle=ResourceBundle.getBundle(immserver.servletConfig);transportType=rBundle.getString(TRANSPORT_TYPE);第28页,本讲稿共89页过程内聚 模块执行的若干动作之间有顺序关系例子验证用户登录信息If 合法 提取用户个性化信息Else 拒绝登录程度:中等程度内聚第29页,本讲稿共89页通信内聚 模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。例子读取文件记录重新计算文件记录将文件记录进行输出程度:中等程度内聚第30页,本讲稿共89页信息内聚 一个模块中执行一系列动作,每个动作
11、都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上。例子程度:高内聚第31页,本讲稿共89页功能内聚 一个模块中各个部分都是完成某一具体功能必不可少的组成部分。例子成功标志 用户身份验证(用户名,用户密码)验证过程;return 成功标志;程度:高内聚第32页,本讲稿共89页巧合内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性第33页,本讲稿共89页练习 1软件设计中划分模块的一个准则是 A。两个模块之间的耦合方式中,B 耦合的耦合程度最高,C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚程度最高,E 内聚的内聚度最低。A:低内聚低耦合
12、 低内聚高耦合 高内聚低耦合 高内聚高耦合B:数据 非直接 控制 内容C:数据 非直接 控制 内容D:偶然 逻辑 功能 过程E:偶然 逻辑 功能 过程 第34页,本讲稿共89页练习2软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 A 。三种可能的模块耦合是 B 。例如,一个模块直接引用另一模块中的数据。C 。例如,一个模块把开关量作为参数传递给另一模块。D 。例如,一个模块把一个数值量作为参数传递给另一模块。其中 E 的耦合性最强。A:强 适中 弱 BE:公共耦合 数据耦合 逻辑耦合 外部耦合 内容耦合 控制耦合 第35页,本讲稿共89页练习3模块内聚度用于衡量模块内部各成分
13、之间彼此结合的紧密程度1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是 A 的。2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是 B 的。3、模块中所有成分引用共同的数据,该模块的内聚度是 C 的。4、模块中所有成分结合起来完成一项任务,该模块的内聚度是 D 的。AE:功能性 逻辑性 通信性 过程性 偶然性 瞬时性第36页,本讲稿共89页抽象定义抽出事务的本质特性而暂时不考虑它们的细节。Wasserman提出的几种抽象方法功能分解法面向数据的分解法面向事件的分解法由外向内的设计面向对象的设计第37页,本讲稿共89页信息隐藏含义一个模块中所包含的
14、信息,不允许其他不需要这些信息的模块使用局部化把一些关系密切的软件元素物理地彼此靠近放置在一个局部的环境当中。第38页,本讲稿共89页软件体系结构风格(模式)管道和过滤器(数据流模型)该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据的情形。第39页,本讲稿共89页例子一个机构给其客户开出帐单。每星期将付款与帐单核对一次,若账单已经支付,则开出收据,若在一个规定的时间内尚未支付,则给出一个催款单。第40页,本讲稿共89页面向对象需求可以通过对象以及它们的抽象类型组织起来。隐式请求隐式请求设计模型是事件驱动的。面向数据流的设计将系统按层次划分,每一层都为上一层提供服务。过程控制将
15、过程输出维持在某个指定值的范围之内。客户机/服务器第41页,本讲稿共89页程序结构程序结构反映软件结构中的模块划分情况,它通常是树状结构或网状结构,其中蕴含了程序控制上的层次关系。第42页,本讲稿共89页程序结构分类树状结构整个树状结构只有一个根模块任何一个非根模块,只有一个调用模块,而且同一层模块之间不发生联系第43页,本讲稿共89页网状结构任意两个模块之间都可以有双向的关系,不存在上级模块和下属模块的关系第44页,本讲稿共89页表示软件结构的图形软件层次图第45页,本讲稿共89页软件结构图第46页,本讲稿共89页数据设计数据设计的原则用于软件的系统化方法也适用于数据要确定所有数据结构,以及
16、在每种数据结构上实施的操作应该建立一个数据字典,用它来定义数据和软件的设计底层数据设计的决策应该推迟到设计过程的后期进行,在数据设计中也可以使用自顶向下、逐步细化的方法数据设计时应遵从信息隐藏原则应当创建一个存放数据结构和相关操作的库软件设计和程序设计语言应当支持抽象数据类型的定义和实现第47页,本讲稿共89页数据结构设计原则尽量使用简单的数据结构在设计数据结构时要注意数据之间的关系为了加强数据设计的可复用性,应该针对常用的数据结构和复杂的数据结构设计抽象类型尽量使用经典数据结构在确定数据结构时一般先考虑静态结构对于复杂数据结构,应给出图形和文字描述,以便于理解第48页,本讲稿共89页文件设计
17、定义:指对数据存储文件的设计。文件的逻辑设计整理必需的数据元素分析数据间的关系确定文件记录的内容文件的物理设计理解文件的特性确定文件物理组织结构确定文件的存储介质确定文件的记录格式估计记录的存取时间估计文件的存储量第49页,本讲稿共89页数据库设计数据库设计的基本步骤逻辑设计 创建E-R图物理设计 按照第三范式设计表结构安全性设计 用户只能通过账号登录应用软件,通过应用软件访问数据库用户账号的密码进行加密处理。确保在任何地方不出现密码的铭文表示确定每个角色对数据库访问的权限。性能优化 优化表结构本身优化数据库的环境参数第50页,本讲稿共89页第一范式(1NF)在关系模式R中的每一个具体关系r中
18、,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。第二范式(2NF)如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。第三范式(3NF)如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。第51页,本讲稿共89页PowerDesign 9 使用方法安装认识环境练习建立逻辑模型(CDM)建立物理模型(PDM)生成SQL文件,同时生成数据库第52页,本讲稿共89页第53页,本讲稿共89页第54页,本讲稿共89页练习第55页,本讲稿共89页步骤建立实体图(Entity)填写属性(
19、Attributes)建立联系(Relationship)定义概念模型属性Model-Model Properties创建概念模型的域Model-Domains检查CDMTools-Check Model由CDM生成PDMTools-Generate new Physical Data Model第56页,本讲稿共89页观察标识符与联系的转换利用PDM创建数据库创建一个Access空数据库(test.mdb)配置数据源创建数据库,同时生成SQL文件Database-Generate Database选择 ODBC generation 选项检查Access数据库(test.mdb)第57页,本
20、讲稿共89页结构化设计方法数据流的类型交换流:可划分为明显的3个部分:逻辑输入、中心变换、输出数据。整个的数据流动以一种顺序的方式并沿一条或很少的几条“直线”路径进行。如果一部分数据流图体现了这些特征,这就是变换流。第58页,本讲稿共89页事务流一个数据数据流经过某个加工后,有若干个平行的数据流 流出,将这种变换称为事物流。事务流的特征是数据沿某输入路径流动,该路径将外部信息转换成事务,事务被估值,根据其值,启动沿很多动作路径之一的流。其中发射出多条动作路径的信息流中心被称为事务中心。第59页,本讲稿共89页设计过程 流程图类型区分事物中心和数据接受路径区分输入和输出分支”事物“”变换“映射成
21、事物结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构详细设计数据流程图复查第60页,本讲稿共89页变换分析变换分方法的步骤重画数据流图在数据流程图上区分系统的逻辑输入、逻辑输出和中心变换部分设计软件结构的顶层和第一层设计软件结构的第二层第61页,本讲稿共89页变换型数据流程图转化为软件结构图第62页,本讲稿共89页例子步骤1:评审和精化软件的数据流图。第63页,本讲稿共89页第64页,本讲稿共89页第65页,本讲稿共89页步骤2:确定DFD含有变换流还是事务流步骤3:刻画输入和输出流的边界,隔离变换中心。输入流被描述成信息从外部形式变换为内部信 息的路径。输出流是信息从
22、内部形式变换为外部形式的路径。第66页,本讲稿共89页第67页,本讲稿共89页步骤4:完成软件结构的顶层模块和第一层结构图第68页,本讲稿共89页步骤5:完成软件结构的第二层结构转化第69页,本讲稿共89页完成软件结构的第一次迭代第70页,本讲稿共89页步骤6:用提高软件质量的启发信息,精化第一次迭 代得到的程序结构第71页,本讲稿共89页事务分析事务分析方法的具体步骤重画数据流图确定事务流和变换流标识事务中心、事务接收路径和事务处理路径设计软件结构的顶层和第一层设计软件结构的第二层第72页,本讲稿共89页具有边界的用户交互子系统的第2层DFD步骤1:评审和精化软件的数据流图步骤2:确定DFD
23、含有变换流还是事务流特征。步骤3:标识事务中心和每条动作路径上的流特征。软件结构第一层图软件结构第二层图第73页,本讲稿共89页事务映射过程步骤4:将DFD映射到一个适合于进行事务处理的程序结构上第74页,本讲稿共89页用户交互子系统的第一层软件结构图第75页,本讲稿共89页用户交互子系统的第一次迭代软件结构图步骤5:完成第2层结构化并精化每条动作路径结构第76页,本讲稿共89页练习已知某系统的需求分析给出的系统数据流图如下请用SD方法划出对应的SC(软件结构图)第77页,本讲稿共89页第78页,本讲稿共89页第79页,本讲稿共89页优化软件设计软件结构的优化规则规则一:模块功能完善化规则二:
24、设计功能单一和结果可预测的模块规则三:消除重复功能,改善软件结构第80页,本讲稿共89页消除模块重复功能的方案第81页,本讲稿共89页规则四:模块的作用范围应在控制范围之内规则五:模块的大小要适中规则六:尽可能减少高扇出和高扇入的结构规则七:将模块中变化相对较大的部分剥离出去第82页,本讲稿共89页例子模块E的控制范围是I、H、J,模块J的一个判定传递给E,然后再传递给I和H,此时模块J的作用范围是模块E、I、H。第83页,本讲稿共89页练习已知A作用域为B,C,G,D,而B的作用域D,E,F,H,请将下图修改合理,并写出修改后M的作用域,B的作用域,A的作用域,M,A,B的控制域是什么?修改
25、后图示第84页,本讲稿共89页深度深度表示软件结构中控制的层次,它往往能 粗略的标志一个系统的大小和复杂程度,深度和程序的长度有着粗略的对应关系。宽度宽度是软件结构内同一层次上模块总数最大的,一般的是宽度越大系统越复杂。对宽度影响最大的是模块的扇出扇出扇出是一个模块直接控制调用的模块模块数目,扇出大意味着模块过分复杂需要控制和协调过多的下级模块。扇出过小,也不好。一个设计好的典型系统的平均扇出通常数是3或者4上限为5-9扇入扇入表明有多少个上级模块直接调用他,扇入越大则共享改模块的上级模块数目越多第85页,本讲稿共89页 深深度度宽度宽度扇出扇出扇入扇入第86页,本讲稿共89页软件优化优化有时间要求的软件走查软件结构图用快速原型法修正设计第87页,本讲稿共89页设计复查概要设计复查关键设计复查设计复查的问题第88页,本讲稿共89页接口设计模块间的接口设计模块的外部接口设计第89页,本讲稿共89页