版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程( Software Engineering )计算机学院计算机学院 软件工程系软件工程系 杨易扬杨易扬 常典型环境下各个开发阶段需要使用的人力百常典型环境下各个开发阶段需要使用的人力百分比大致如下:分比大致如下:任务任务人力()人力()可行性研究可行性研究需求分析需求分析设计设计编码与单元测试编码与单元测试综合测试综合测试总计总计510252040100第第2章:可行性研究章:可行性研究 是否可解?是否值得去解? 可行性研究的内容: 技术可行性: 技术,人员,软硬件资源 经济可行性:投入VS产出,估算模型 操作可行性:对管理模式、用户工作环境等产生的影响 社会可行性:法律(专利,是否
2、侵权),社会(道德,影响等)2.1 可行性研究的任务(总成本总成本5%)2.2 2.2 可行性研究的步骤可行性研究的步骤 1 1)复查系统规模和目标;)复查系统规模和目标;2 2)研究目前正在使用的系统;()研究目前正在使用的系统;(系统流程图系统流程图)3 3)导出新系统的高层逻辑模型()导出新系统的高层逻辑模型(数据流图数据流图、数据字典数据字典););4 4)重新定义问题;重新定义问题; 5 5)导出和评价供选择的解法()导出和评价供选择的解法(物理解决方案物理解决方案)6 6)推荐行动方案;)推荐行动方案;7 7)草拟开发计划;)草拟开发计划;8 8)书写文档提交审查。)书写文档提交审
3、查。 1 1)货币的时间价值货币的时间价值 假设年利率为假设年利率为i i, ,如果现在存入如果现在存入P P元钱,元钱,则则n n年以后可以得到的钱数为:年以后可以得到的钱数为: 反之,如果反之,如果n n年后能收入年后能收入F F元钱,那么这元钱,那么这些钱现在的价值是:些钱现在的价值是: niPF)1( niFP)1/( 2.6 成本成本/效益分析效益分析第3章:需求分析 3.1.1 3.1.1 确定对系统的综合要求确定对系统的综合要求 1 1功能需求功能需求 2 2性能需求性能需求 如:相应时间(速度)、主存容量、磁如:相应时间(速度)、主存容量、磁盘容量、安全性、等。盘容量、安全性、
4、等。3.1 需求分析的任务3. 3. 可靠性和可用性需求可靠性和可用性需求4. 4. 出错处理需求出错处理需求 系统发现错误时采取的行动,主要在系统关键部分设置。系统发现错误时采取的行动,主要在系统关键部分设置。5. 5. 接口需求接口需求 用户接口、硬件接口、软件接口、通信接口、等。用户接口、硬件接口、软件接口、通信接口、等。6. 6. 约束约束 精度、工具和语言、设计约束、硬件约束、标准,等。精度、工具和语言、设计约束、硬件约束、标准,等。7. 7. 逆向需求逆向需求 8. 8. 将来可能提出的要求将来可能提出的要求 3.1.3 导出系统的逻辑模型导出系统的逻辑模型 包括完善的数据流图、实
5、体联系图、状态转换图、包括完善的数据流图、实体联系图、状态转换图、数据字典、主要的处理算法(数据字典、主要的处理算法(IPO图)等。图)等。3.1.2 分析系统的数据要求分析系统的数据要求 通过建立数据模型来分析,如数据字典、层次方框图、通过建立数据模型来分析,如数据字典、层次方框图、Warnier图,并将数据结构规范化。图,并将数据结构规范化。3.1.4 修正系统开发计划修正系统开发计划 修订前期制定的开发进度计划、等。修订前期制定的开发进度计划、等。3.2 与用户沟通获取需求的方法与用户沟通获取需求的方法 3.2.1 访谈访谈 正式访谈正式访谈:系统分析员提出事先准备好的问题。:系统分析员
6、提出事先准备好的问题。非正式访谈非正式访谈:提出一些用户可以自由回答的开放性问:提出一些用户可以自由回答的开放性问题,鼓励被访者说出自己的想法。题,鼓励被访者说出自己的想法。需要访问大量人员时,利用调查表访问较佳。需要访问大量人员时,利用调查表访问较佳。3.2.2 面向数据流自顶向下求精面向数据流自顶向下求精 分析追踪数分析追踪数据流图据流图用户复查用户复查细化数据流细化数据流图图有补充修正有补充修正无 补 充无 补 充修正修正需要分解需要分解不需分解不需分解图图3.1 需求分析基本过程需求分析基本过程 借助数据流图、数据字典、借助数据流图、数据字典、IPO图等,细化、完善详图等,细化、完善详
7、细的数据流图,等到各处理环节对应的功能。细的数据流图,等到各处理环节对应的功能。仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表定货系统数据流图定货系统数据流图更新更新库存库存清单清单1.2产生产生报表报表2D1 库存清单库存清单D2 定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息例:例:分析销售趋势分析销售趋势统计功能统计功能3.2.3 简易的应用规格说明技术简易的应用规格说明技术 面向团队的需求收集法面向团队的需求收集法: (用户与开发者配合)(用户与开发者配合)1)初步访谈;)初步访谈;2)开发者和用户分别写出)开发者
8、和用户分别写出“产品需求产品需求”;3)开会讨论,各自展示需求列表;)开会讨论,各自展示需求列表;4)得出一致意见,为需求列表制定小型规格说明;)得出一致意见,为需求列表制定小型规格说明;5)根据会议成果,起草完整的软件需求规格说明。)根据会议成果,起草完整的软件需求规格说明。3.2.4 快速建立软件原型快速建立软件原型 快速建立能演示目标系统主要功能的程序。快速建立能演示目标系统主要功能的程序。(1)第四代技术)第四代技术(2)可重用的软件构件)可重用的软件构件(3)形式化规格说明和原型环境)形式化规格说明和原型环境3.3 分析建模与规格说明分析建模与规格说明3.3.1 分析建模分析建模 为
9、了开发复杂的系统,应从不同角度(模型)抽象出为了开发复杂的系统,应从不同角度(模型)抽象出目标系统的特性(数据模型、功能模型、行为模型)。目标系统的特性(数据模型、功能模型、行为模型)。1)实体联系图:建立数据模型,描述数据对象及数据对)实体联系图:建立数据模型,描述数据对象及数据对象之间的关系;象之间的关系;2)数据流图:建立功能模型的基础;)数据流图:建立功能模型的基础;3)状态转换图:描绘系统的状态和状态间转换的方式。)状态转换图:描绘系统的状态和状态间转换的方式。3.3.2 软件需求规格说明软件需求规格说明3.4 概念模型(实体联系图 )概念模型的用途概念模型用于信息世界的建模概念模型
10、用于信息世界的建模是现实世界到机器世界的一个中间层次是现实世界到机器世界的一个中间层次是数据库设计的有力工具是数据库设计的有力工具数据库设计人员和用户之间进行交流的语言数据库设计人员和用户之间进行交流的语言对概念模型的基本要求较强的语义表达能力较强的语义表达能力能够方便、直接地表达应用中的各种语义知识能够方便、直接地表达应用中的各种语义知识简单、清晰、易于用户理解简单、清晰、易于用户理解一、信息世界中的基本概念(1) 实体(Entity) 客观存在并可相互区别的事物称为实体。客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念可以是具体的人、事、物或抽象的概念。(2) 属性(
11、Attribute) 实体所具有的某一特性称为属性。实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。一个实体可以由若干个属性来刻画。 (3) 码(Key) 唯一标识实体的属性集称为码。唯一标识实体的属性集称为码。信息世界中的基本概念(续)(4) 域(Domain) 属性的取值范围称为该属性的域属性的取值范围称为该属性的域。 (5) 实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实用实体名及其属性名集合来抽象和刻画同类实体称为实体型体型(6) 实体集(Entity Set) 同一类型实体的集合称为实体集同一类型实体的集合称为实体集信息世界中的基本概
12、念(续)(7) 联系(Relationship) 现实世界中事物内部以及事物之间的联系在信息世界现实世界中事物内部以及事物之间的联系在信息世界 中反映为实体内部的联系和实体之间的联系。中反映为实体内部的联系和实体之间的联系。实体内部实体内部的联系通常是指组成实体的各属性之间的联系的联系通常是指组成实体的各属性之间的联系实体之间实体之间的联系通常是指不同实体集之间的联系的联系通常是指不同实体集之间的联系两个实体型之间的联系实体型A联系名实体型B111:1联系实体型A联系名1n1:n联系实体型A实体型B联系名mnm:n联系实体型B用图形来表示两个实体型之间的这三类联系 一对一联系(1:1) 实例一
13、个班级只有一个正班长一个班级只有一个正班长一个班长只在一个班中任职一个班长只在一个班中任职定义:定义: 如果对于实体集如果对于实体集A A中的每一个实体,实中的每一个实体,实体集体集B B中至多有一个(也可以没有)实体中至多有一个(也可以没有)实体与之联系,反之亦然,与之联系,反之亦然,则称实体集则称实体集A A与实与实体集体集B B具有一对一联系,具有一对一联系,记为记为1:11:1 班级班级-班长班长111:1联系一对多联系(1:n)实例一个班级中有若干名学生,一个班级中有若干名学生,每个学生只在一个班级中学习每个学生只在一个班级中学习定义:如果对于实体集如果对于实体集A A中的每一个实体
14、,实体集中的每一个实体,实体集B B中中有有n n个实体(个实体(n0n0)与之联系,反之,对于实体)与之联系,反之,对于实体集集B B中的每一个实体,实体集中的每一个实体,实体集A A中至多只有一个中至多只有一个实体与之联系,则称实体与之联系,则称实体集实体集A A与实体集与实体集B B有一对有一对多联系,记为多联系,记为1:n1:n班级组成学生1n1:n联系多对多联系(m:n)实例课程与学生之间的联系:课程与学生之间的联系:一门课程同时有若干个学生选修一门课程同时有若干个学生选修一个学生可以同时选修多门课程一个学生可以同时选修多门课程定义:如果对于实体集如果对于实体集A A中的每一个实体,
15、实体集中的每一个实体,实体集B B中中有有n n个实体(个实体(n0n0)与之联系,反之,对于实)与之联系,反之,对于实体集体集B B中的每一个实体,实体集中的每一个实体,实体集A A中也有中也有m m个实个实体(体(m0m0)与之联系,则称实体集)与之联系,则称实体集A A与实体与实体B B具有多对多联系,记为具有多对多联系,记为m:nm:n课程选修学生mnm:n联系3.4 实体联系图实体联系图 (ER图)图) 数据对象可以是外部实体、事物、行为、事件、数据对象可以是外部实体、事物、行为、事件、角色、单位、地点、结构等。角色、单位、地点、结构等。数据对象数据对象3.4.1 数据对象数据对象3
16、.4.2 属性属性 属性定义了数据对象的性质。属性定义了数据对象的性质。属性属性3.4.3 联系联系(1)一对一联系()一对一联系(1:1)(2)一对多联系()一对多联系(1:N)(3)多对多联系()多对多联系(M:N) 在在ER图中,用菱形框表示联系。图中,用菱形框表示联系。 联系联系教师教师学生学生课程课程学号学号姓名姓名系系年级年级职务职务性别性别职称职称性别性别姓名姓名教工号教工号教教学学成绩成绩学分学分学时学时课名课名课程号课程号图图3.2 某校教学管理某校教学管理ER图图MN1N例子:例子:一个实例用E-R图表示某个工厂物资管理的概念模型实体仓库: 仓库号、面积、电话号码零件 :零
17、件号、名称、规格、单价、描述供应商:供应商号、姓名、地址、电话号码、帐号项目:项目号、预算、开工日期职工:职工号、姓名、年龄、职称 实体之间的联系如下: (1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。(2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,仓库和职工之间是一对多的联系。职工实体型中具有一对多的联系 (3)职工之间具有领导-被领导关系。即仓库主任领导若干保管员。(4)供应商、项目和零件三者之间具有多对多的联系通常用范式定义消除数据冗余的程度。通常用范式定义消除数据冗余的程度。 1)第一
18、范式第一范式 2)第二范式第二范式 3)第三范式第三范式3.5 数据规范化数据规范化3.6 状态转换图状态转换图3.6.1 状态状态 状态是任何可以被观察到的系统行为模式,状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。一个状态代表系统的一种行为模式。3.6.2 事件事件 事件是某个特定时刻发生的事情,它是引起事件是某个特定时刻发生的事情,它是引起系统做动作或状态转换的控制信息。系统做动作或状态转换的控制信息。3.6.3 符号符号3.6.4 例子例子3.7 其他图形工具其他图形工具 层次方框图层次方框图用树用树形结构的一系列多层形结构的一系列多层次的矩形框描绘数据次的矩形
19、框描绘数据的层次结构。的层次结构。 产品产品硬件硬件软件软件服务服务处理机处理机存储器存储器外部设备外部设备系统软件系统软件应用软件应用软件软件服务软件服务硬件维修硬件维修培训培训编译程序编译程序软件工具软件工具操作系统操作系统图图3.5 层次方框图的一个例子层次方框图的一个例子3.7.1 层次方框图层次方框图 Warnier图图也用树形结构描绘信息,但是这种图形工具也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。比层次方框图提供了更丰富的描绘手段。 软件产品软件产品软件工具软件工具编辑程序(编辑程序(P3)应用软件应用软件编译程序(编译程序(P2)操作系统(操作系统
20、(P1)系统软件系统软件测试驱动程序(测试驱动程序(P4)设计辅助工具(设计辅助工具(P5)图图3.4 Warnier图的一个例子图的一个例子3.7.2 Warnier图图IPO图是输入图是输入/处理处理/输出图。输出图。 旧的主文件旧的主文件事务文件事务文件1.校验主记校验主记录录2.校验事务校验事务记录记录3.更新主记更新主记录录有效的主记有效的主记录录有效的事务有效的事务记录记录更新后的主更新后的主文件文件输入输入处理处理输出输出图图3.7 IPO图的一个例子图的一个例子3.7.3 IPO图图IPO表表系统:系统:模块:模块:编号:编号:作者:作者:日期:日期:被调用:被调用:调用:调用
21、:输入:输入:输出:输出:处理:处理:局部数据元素:局部数据元素:注释:注释:图图3.8 改进的改进的IPO图的形式图的形式3.8 验证软件需求验证软件需求 1)一致性)一致性2)完整性)完整性3)现实性)现实性4)有效性)有效性3.8.1 验证软件需求的正确性验证软件需求的正确性1)验证需求的一致性)验证需求的一致性2)验证需求的现实性)验证需求的现实性3)验证需求的完整性和有效性)验证需求的完整性和有效性 3.8.2 验证软件需求的方法验证软件需求的方法用于需求分析的软件应该满足下列要求:用于需求分析的软件应该满足下列要求: 1)必须有形式化的语法)必须有形式化的语法 2)使用这个软件工具
22、能够导出详细的文)使用这个软件工具能够导出详细的文档档 3)必须提供分析规格说明书的不一致性)必须提供分析规格说明书的不一致性和冗余性的手段和冗余性的手段 4)使用这个软件工具后,应该能够改进)使用这个软件工具后,应该能够改进通信状况通信状况3.8.3 用于需求分析的软件工具用于需求分析的软件工具 R S L ( 需 求 陈 述 语 言 ) : 信 息 集需 求 陈 述 语 言 ) : 信 息 集ASSMPASCAL模拟程序模拟程序 PSL/PSA(问题陈述语言问题陈述语言/问题陈述分析程序)问题陈述分析程序)系统系统 第第3章小结章小结 软件需求说明书(软件规格说明书)软件需求说明书(软件规
23、格说明书) 对所开发软件的功能、性能、用户界面及运行环境等对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。作出详细的说明。 它是在用户与开发人员双方对软件需求取得共同理解它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。成和维护系统数据文件做好准备。第4章:形式化说明技术1.非形式化方法:自然语言描述非形式化方法:自然语言描述2.半形式化方法:数据流图或实体联系
24、图半形式化方法:数据流图或实体联系图3.形式化方法:基于数学技术描述形式化方法:基于数学技术描述4.1 概述概述4.1.1 非形式化方法的缺点非形式化方法的缺点 自然语言书写的系统规格说明书可能存在:自然语言书写的系统规格说明书可能存在: 1)矛盾;)矛盾; 2)二义性;)二义性; 如:如:“操作员标识由操作员姓名和密码组成,密码由操作员标识由操作员姓名和密码组成,密码由6 6位数位数字构成,当操作员登陆系统时它被存储在注册文件中。字构成,当操作员登陆系统时它被存储在注册文件中。” 3)含糊性;)含糊性; 4)不完整性;)不完整性; 5)抽象层次混乱。)抽象层次混乱。4.1.2 形式化方法的优
25、点形式化方法的优点(1)数学是理想的建模工具,适合于表示)数学是理想的建模工具,适合于表示系统状态和描述系统需求;系统状态和描述系统需求;(2)用数学表达的需求可在不同开发阶段)用数学表达的需求可在不同开发阶段平滑过渡。平滑过渡。4.1.3 应用形式化方法的准则应用形式化方法的准则(1)选择合适的形式化方法;)选择合适的形式化方法;(2)需要形式化,但不能过渡形式化,不能放)需要形式化,但不能过渡形式化,不能放弃传统的需求表达方法;弃传统的需求表达方法;(3)应该有形式化方法的专家提供指导。)应该有形式化方法的专家提供指导。4.2 有穷状态机法(有穷状态机法(FSM)4.2.1 概念概念锁的三
26、个位置:锁的三个位置:1、2、3; 转盘可向左(转盘可向左(L)或右(或右(R);); 锁密码:锁密码:1L、3R、2L一个有穷状态机包括一个有穷状态机包括5部分:部分: 1)状态集)状态集J:保险箱锁定,保险箱锁定,A,B,保险箱解锁,报警保险箱解锁,报警 2)输入集)输入集K:1L,1R,2L,2R,3L,3R 3)转换函数转换函数T,如表如表4.1 4)初始状态)初始状态S:保险箱锁定保险箱锁定 5)终态集)终态集F:保险箱解锁,报警保险箱解锁,报警 更形式化的术语:更形式化的术语: 一个有穷状态机可表示一个为一个有穷状态机可表示一个为5元组(元组(J,K,T,S,F)状态转换形式状态转
27、换形式: 当前状态【菜单】事件【所选择的项】当前状态【菜单】事件【所选择的项】下个状态下个状态加入谓词集加入谓词集P P,把系统扩展成一个把系统扩展成一个6 6元组后元组后: 当前状态【菜单】事件【所选择的项】谓词当前状态【菜单】事件【所选择的项】谓词下个状态下个状态 计算机系统中每个菜单驱动的用户界面都是计算机系统中每个菜单驱动的用户界面都是一个有穷状态机的实现。一个有穷状态机的实现。定义状态:定义状态:(1)M(d,e,f):电梯:电梯e正沿正沿d方向移动,即将到达第方向移动,即将到达第f层楼。层楼。(2)S(d,e,f):电梯:电梯e停在停在f层楼,将朝层楼,将朝d方向移动(未关方向移动
28、(未关门)。门)。(3)W(e,f):电梯:电梯e在在f层等待(已关门)。层等待(已关门)。(4)DC(e,f):电梯:电梯e在楼层在楼层f关上门。关上门。(5)ST(e,f):电梯:电梯e靠近靠近f层时触发传感器,电梯控制器层时触发传感器,电梯控制器决定在当前楼层是否停下。决定在当前楼层是否停下。(6)RL:电梯按钮或楼层按钮被按下进入打开状态:电梯按钮或楼层按钮被按下进入打开状态4.2.2 例子例子:电梯的状态转换电梯的状态转换电梯状态转换规则:电梯状态转换规则:S(U,e,f)+DC(e,f)=M(U,e,f+1);S(D,e,f)+DC(e,f)=M(D,e,f-1); S(N,e,f
29、)+DC(e,f)=W(e,f)4.2.3 评价评价 有穷状态机描述规格说明:有穷状态机描述规格说明: 当前状态事件谓词当前状态事件谓词=下个状态下个状态 易于书写、验证、转变成设计或程序代码。易于书写、验证、转变成设计或程序代码。有穷状态机方法比数据流图技术更精确,有穷状态机方法比数据流图技术更精确,一样易于理解。一样易于理解。但不能处理定时需求。但不能处理定时需求。1.大系统时,数量迅速增长大系统时,数量迅速增长4.3 Petri网网4.3.1 概念概念Petri网包含网包含4种元素:种元素: 1)一组位置)一组位置P,上例上例 PP1,P2,P3,P4 2)一组转换一组转换T,上例上例
30、Tt1,t2 3)输入函数输入函数I,上例上例 I(t1)=P2,P4 I(t2)=P2 4)输出函数输出函数O,上例上例O(t1)=P1 O(t2)=P3,P3更形式化的更形式化的Petri网结构,是一个网结构,是一个4元组(元组(P,T,I,O)更形式化地:更形式化地:标记标记 M:P0,1,2,Petri网成为一个网成为一个5元组元组(P,T,I,O,M)对对Petri网的一个重要扩充是加入禁止线:网的一个重要扩充是加入禁止线:4.3.2 例子例子1. 电梯按钮电梯按钮EBf 电梯中楼层电梯中楼层 f 的按钮;的按钮;Fg 楼层楼层g;Ff 楼层楼层 f。2. 楼层按钮楼层按钮FBfu
31、第第 f 楼层向上按钮;楼层向上按钮; FBfd 第第 f 楼层向下按钮;楼层向下按钮;小结 基于数学的形式化说明技术,目前还没有在基于数学的形式化说明技术,目前还没有在软件产业界广泛应用;软件产业界广泛应用; 应该把形式化方法与传统方法有机结合。应该把形式化方法与传统方法有机结合。第5章:总体设计 5.1 设计过程设计过程 1.设想供选择的方案设想供选择的方案 2.选择合理的方案选择合理的方案 对每个合理的方案要提供:对每个合理的方案要提供: A系统流程图系统流程图 B组成系统的物理元素清单组成系统的物理元素清单 C成本成本/效益分析效益分析 D实现这个系统的进度计划实现这个系统的进度计划
32、3.推荐最佳方案推荐最佳方案4.功能分解功能分解5.设计软件结构设计软件结构6.数据库设计数据库设计 A模式设计模式设计 B子模式设计子模式设计 C完整性和安全性设计完整性和安全性设计 D优化优化 7.制定测试计划制定测试计划8.书写文档书写文档 A系统说明系统说明 B用户手册用户手册 C测试计划测试计划 D详细的实现计划详细的实现计划 E数据库设计结果数据库设计结果9.审查和复审审查和复审 5.2 设计原理设计原理 如果一个大型程序仅由一个模块组成,很难被人理解。如果一个大型程序仅由一个模块组成,很难被人理解。 设函数设函数C(x)定义问题定义问题x的复杂程度,函数的复杂程度,函数E(x)定
33、义解决定义解决问题问题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) 5.2.1 模块化模块化模块数目模块数目接口成本接口成本成本成本/模块模块软件总成本软件总成本M最小成本区最小成本区成本成本图图5.1 模块化与软件成本模块化与软件成本5.2.2 抽象抽象 5.2.3 逐步求精逐步求精模块的独立性很重要,因为:模块的独立性很重要
34、,因为: 1)有效的模块化的软件比较容易开发出来)有效的模块化的软件比较容易开发出来; 2)独立的模块比较容易测试和维护。)独立的模块比较容易测试和维护。 5.2.4 信息隐蔽和局部化信息隐蔽和局部化 5.2.5 模块独立模块独立一、耦合一、耦合 耦合耦合:指软件结构内不同模块彼此之间:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。相互依赖(连接)的紧密程度。 模块独立程度可以由两个定性标准度量:模块独立程度可以由两个定性标准度量:耦合耦合与与内聚内聚。模块的偶合分四类:模块的偶合分四类:1)数据耦合数据耦合 两个模块之间只是通过参数交换信息,而且两个模块之间只是通过参数交换信息,而
35、且交换的信息仅仅是数据。交换的信息仅仅是数据。 数据耦合是最低程度的耦合。数据耦合是最低程度的耦合。 AB数据数据(1)数据耦合)数据耦合2)控制耦合控制耦合 两个模块之间所交换的信息包含控制信息。两个模块之间所交换的信息包含控制信息。 控制耦合是中等程度的耦合。控制耦合是中等程度的耦合。 图中模块图中模块A的内部处理程序判断是执行的内部处理程序判断是执行C还是执行还是执行D,要取决于模块要取决于模块B传来的信息状态(传来的信息状态(Status)。)。BACD(2)控制耦合)控制耦合astatus3)公用耦合公用耦合 两个或多个模块通过一个公共区相互作用两个或多个模块通过一个公共区相互作用时
36、的耦合。时的耦合。 公共区可以是:全程数据区、共享通信区、公共区可以是:全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理内存公共覆盖区、任何介质上的文件、物理设备等。设备等。 软件结构中存在大量的公用耦合时会给诊软件结构中存在大量的公用耦合时会给诊断错误带来困难。断错误带来困难。 图中存在公用耦合,假设模块图中存在公用耦合,假设模块A、C、E都存取全程数据都存取全程数据区(如公用一个磁盘文件)中的一个数据项。区(如公用一个磁盘文件)中的一个数据项。 如果如果A模块读取该项数据,然后调用模块读取该项数据,然后调用C模块对该项重新计模块对该项重新计算,并进行数据更新。算,并进行数据更
37、新。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合 如果此时如果此时C模块错误地更新了该项数据,在往下的处模块错误地更新了该项数据,在往下的处理中模块理中模块E读该数据项时出现错误。读该数据项时出现错误。 表面上看,问题由模块表面上看,问题由模块E产生,实际上由模块产生,实际上由模块C引起。引起。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合4)内容耦合内容耦合 一个模块与另一个模块的内容直接发生联系。一个模块与另一个模块的内容直接发生联系。 内容耦合对维护会带来严重的困难。内容耦合对维护会带来严重的困难。 模块模块ALAB:MOVE 1模块模块BGOTO LAB内容耦合内容耦
38、合(4)内容耦合)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中,或一个模块程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的耦合,应该避免采用。度的耦合,应该避免采用。 软件设计应追求尽可能松散耦合,避免强软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立耦合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。性就越强,对模块的测试、维护就越容易。 因此建议:因此建议:尽量使用数据耦合,少用控制尽量使用数
39、据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合耦合,限制公用耦合,完全不用内容偶合。 二、内聚二、内聚 内聚内聚:一个模块内部各个元素彼此结合:一个模块内部各个元素彼此结合的紧密程度。的紧密程度。 它是衡量一个模块内部组成部分间整体它是衡量一个模块内部组成部分间整体统一性的度量。统一性的度量。 常见的内聚有七类。常见的内聚有七类。 1)功能内聚功能内聚(Functional Cohesion) 如果一个模块内所有处理元素完成一个,而如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。且仅完成一个功能,则称为功能内聚。 功能内聚是最高程度的内聚。但在软件结构功能内聚是最
40、高程度的内聚。但在软件结构中,并不是每个模块都能设计成一个功能内聚中,并不是每个模块都能设计成一个功能内聚模块。模块。2)顺序内聚顺序内聚(Sequential Cohesion) 如果一个模块内处理元素和同一个功能密如果一个模块内处理元素和同一个功能密切相关,而且这些处理元素必须顺序执行,则切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。称为顺序内聚。 如图,一个求一元二次方程根的模块由三如图,一个求一元二次方程根的模块由三个处理元素组成,该模块中存在顺序内聚。个处理元素组成,该模块中存在顺序内聚。 通常,顺序内聚中一个处理元素的输出是通常,顺序内聚中一个处理元素的输出是另一个处理元素
41、的输入。另一个处理元素的输入。 求一元二次方求一元二次方程根模块程根模块1 1输入方程系数输入方程系数2 2求解求解3 3打印方程的解打印方程的解顺序内聚示例顺序内聚示例3)通信内聚通信内聚(Communicational Cohesion) 如果一个模块中所有处理元素都使用同一个如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称为通输入数据和(或)产生同一个输出数据,称为通信内聚。信内聚。 如图,模块如图,模块A的处理单元将根据同一个数的处理单元将根据同一个数据文件据文件FILE的数据产生不同的表格,因此它的数据产生不同的表格,因此它存在通信内聚。存在通信内聚。 通
42、信内聚有时也称为数据内聚。通信内聚有时也称为数据内聚。A从文件从文件FILE中读出数据中读出数据1.由数据产生报表由数据产生报表A2.由数据产生报表由数据产生报表B通信内聚示例通信内聚示例4)过程内聚过程内聚(Procedural Cohesion) 如果一个模块内的处理元素是相关的,而如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称为过程内聚。且必须以特定的次序执行,称为过程内聚。 过程内聚与顺序内聚的区别是:过程内聚与顺序内聚的区别是: 顺序内聚中是数据流从一个处理单元流到顺序内聚中是数据流从一个处理单元流到另一个处理单元,而过程内聚是控制流从一个另一个处理单元,而过程内聚是
43、控制流从一个动作流向另一个动作。动作流向另一个动作。 5)时间内聚时间内聚(Temporal Cohesion) 如果一个模块包含的任务必须在同一段时间如果一个模块包含的任务必须在同一段时间内执行,称为时间内聚。也称为瞬时内聚。内执行,称为时间内聚。也称为瞬时内聚。 例如,完成各种初始化工作的模块,或者处理故障的模例如,完成各种初始化工作的模块,或者处理故障的模块都存在时间内聚。块都存在时间内聚。 如图,在如图,在“紧急故障处理模块紧急故障处理模块”中,中,“关闭文件关闭文件”、“报警报警”、“保留现场保留现场”等任务都必须无中断地同时处理。等任务都必须无中断地同时处理。紧急故障处理紧急故障处
44、理模块模块1关闭文件关闭文件2报警报警3保留现场保留现场时间内聚示例时间内聚示例6)逻辑内聚逻辑内聚(Logical Cohesion) 如果模块完成的任务在逻辑上属于相同或如果模块完成的任务在逻辑上属于相同或相似的一类,称为逻辑内聚。相似的一类,称为逻辑内聚。 如图,如图,A、B、C模块合并成模块合并成ABC模块之后,模块之后,ABC模块就是逻辑内聚模块。模块就是逻辑内聚模块。 XYZABCXYZABC合并合并逻辑内聚示例逻辑内聚示例 对逻辑内聚模块的调用,常常需要有一个功能对逻辑内聚模块的调用,常常需要有一个功能开关,由上层调用模块向它发出一个控制信号,开关,由上层调用模块向它发出一个控制
45、信号,在多个关联性功能中选择执行某一个功能。在多个关联性功能中选择执行某一个功能。 这种内聚较差,增加了模块之间的联系,不易这种内聚较差,增加了模块之间的联系,不易修改。修改。 7)偶然内聚偶然内聚(Coincidental Cohesion) 如果一个模块由完成若干毫无关系的功能如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。处理元素偶然组合在一起的,就叫偶然内聚。 偶然内聚是最差的一种内聚。偶然内聚是最差的一种内聚。 常犯这种错误的一种情况是:有时在写完常犯这种错误的一种情况是:有时在写完程序后,发现一组语句在多处出现,于是为程序后,发现一组语句在多处出现,于是
46、为了节省空间而将这些语句作为一个模块设计,了节省空间而将这些语句作为一个模块设计,就出现偶然内聚。就出现偶然内聚。 如图,模块如图,模块A、B、C出出现公共代码段现公共代码段W,于是将于是将W独立成一个模块,而独立成一个模块,而W中这中这些语句并没有任何联系。些语句并没有任何联系。 如果在测试中发现模块如果在测试中发现模块A不需要做不需要做“X=Y+Z”,而应而应该做该做“X=Y*Z”,此时对此时对W的维护就很困难了。的维护就很困难了。ABCW模块模块X=Y+ZGET CARDIF I=5 THEN E=0偶然内聚示例偶然内聚示例 软件设计中应该:软件设计中应该:力求做到高内聚力求做到高内聚,
47、尽量少用中内尽量少用中内聚,不用低内聚聚,不用低内聚。 5.3 启发式规则启发式规则 1. 改进软件结构提高模块独立性改进软件结构提高模块独立性2.模块规模应该适中模块规模应该适中 3. 深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当 深度深度:软件结构中控制的层数;:软件结构中控制的层数; 宽度宽度:软件结构内同一个层次上的模块总数的最大值;:软件结构内同一个层次上的模块总数的最大值; 扇出扇出:一个模块直接控制(调用)其它模块的数目;:一个模块直接控制(调用)其它模块的数目; 扇入扇入:一个模块被其它模块调用的数目。:一个模块被其它模块调用的数目。 正文加工正文加工系统系统输
48、入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合并合并列表列表对扇出、扇入过大的改进:对扇出、扇入过大的改进: (a)对扇入过大的改进对扇入过大的改进(b)对扇出过大的改进对扇出过大的改进4. . 模块的作用域应该在控制域之内模块的作用域应该在控制域之内 MAGBCEDF图图5.2 模块的作用域和控制域模块的作用域和控制域作用域:受该模块内一个判定影响的所有模块的集合。作用域:受该模块内一个判定影响的所有模块的集合。控制域:模块本身以及所有从属于它的模块的集合。控制域:模块本身以及所有从属于它的模块的集合。 如:如:QUAD-ROOT
49、(TBL,X) 求一元二次方程的根的模块,其中求一元二次方程的根的模块,其中TBL,X都为数组,分别代表方程的系数和方程的根。都为数组,分别代表方程的系数和方程的根。 应该使接口更简单,如:应该使接口更简单,如: QUAD-ROOT(A,B,C,ROOT1,ROOT2) A、B、C是方程的系数,是方程的系数,ROOT1,ROOT2是方程的根。是方程的根。 5. 力争降低模块接口的复杂度力争降低模块接口的复杂度6.设计单入口、单出口的模块设计单入口、单出口的模块 7.模块功能应该可以预测模块功能应该可以预测 5.4 图形工具图形工具5.4.1 层次图和层次图和HIPO图图 正文加工正文加工系统系
50、统输入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合并合并列表列表图图5.3 正文加工系统的层次图正文加工系统的层次图正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图5.4 带编号的层次图(带编号的层次图(H图)图)HIPO图是:图是:“层次图输入层次图输入/处理处理/输出图输出图”5.4.2 结构图结构图 产生最佳解产生最佳解得到好输入得到好输入计
51、算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入结果格式化结果格式化显示结果显示结果图图4.5 结构图的例子结构图的例子产生最佳解的一般结构产生最佳解的一般结构MAB图图5.6 判定为真时调用判定为真时调用A,为假时调用为假时调用BMABC图图5.7 模块模块M循环调循环调用模块用模块A、B、C5.5 面向数据流的设计方法面向数据流的设计方法 面向数据流设计(面向数据流设计(Data Flow-Oriented Design,DFOD)是与数据流分析(是与数据流分析(DFA)对应对应的结构化软件设计技术。的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础面向数据流的设
52、计将得到以数据流图为基础的的软件模块结构图软件模块结构图。 数据流可以分为两种类型:数据流可以分为两种类型: 1)变换型数据流)变换型数据流 2)事务型数据流)事务型数据流 5.5.1 变换流与事务流变换流与事务流一、一、变换流变换流 具有较明确的输入、变换(或称主加工)和输具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。出界面的数据流图称为变换型数据流图。 如图所示,该变换中心可以理解为数据的加工如图所示,该变换中心可以理解为数据的加工和处理程序。和处理程序。 读入原读入原始数据始数据校验原校验原始数据始数据计算最计算最优结果优结果编辑打印编辑打印最优结果最优结果
53、输入输入变换中心变换中心输出输出 事务型数据流图中存在一个事务中心(也就是数据处事务型数据流图中存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径。形成许多活动路径,并根据输入值选择其中一条路径。要求类要求类别处理别处理分房处理分房处理调房处理调房处理退房处理退房处理住房要求住房要求事务中心事务中心活动路径活动路径 二、二、事务流事务流 通常,一个实际系统的数据流图是变换型和事务型通常,一个实际系统的数据流图是变换型和事务型两种类型的混合体。两种类型的混合体。 如图所示
54、,中间的子块属事务型数据流,如果把中如图所示,中间的子块属事务型数据流,如果把中间子块视为一个处理整体的话,整个程序属变换型程序。间子块视为一个处理整体的话,整个程序属变换型程序。 A(事务型,(事务型,A为事务中心)为事务中心)变换中心变换中心输入输入输出输出混合型数据流图混合型数据流图面向数据流设计软件结构的基本步骤有七步:面向数据流设计软件结构的基本步骤有七步: 1)复审并精化数据流图;)复审并精化数据流图; 2)确定数据处理流图的类型;)确定数据处理流图的类型; 3)确定变换中心或事务中心;)确定变换中心或事务中心; 5.5.2 面向数据流设计的步骤面向数据流设计的步骤4)将数据流图映
55、射成软件模块结构图,设计)将数据流图映射成软件模块结构图,设计出该数据流图对应的第一层模块结构;出该数据流图对应的第一层模块结构;5)基于数据流图逐步分解,设计下层模块;)基于数据流图逐步分解,设计下层模块;6)运用模块设计和优化准则优化软件结构;)运用模块设计和优化准则优化软件结构;7)描述模块的接口。)描述模块的接口。复查、精化数据流图复查、精化数据流图类型类型找出事务中心找出事务中心找出变换中心找出变换中心映射成事务结构映射成事务结构映射成变换结构映射成变换结构优化软件模块结构优化软件模块结构导出模块结构导出模块结构复查复查不满意不满意变换变换事务事务变换设计变换设计事务设计事务设计面向
56、数据流的设计步骤面向数据流的设计步骤 变换设计变换设计就是从变换型数据流图映射出软件模块结构就是从变换型数据流图映射出软件模块结构的过程,也称以变换为中心的设计。的过程,也称以变换为中心的设计。 5.5.3 变换设计变换设计变换设计的基本方法有两步:变换设计的基本方法有两步:1)分解第一层模块结构)分解第一层模块结构 就是把整个变换分解成输入控制模块就是把整个变换分解成输入控制模块Ci、输输出控制模块出控制模块Co和变换中心控制模块和变换中心控制模块Ct,由主控由主控模块控制。模块控制。 主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块C
57、i2)分别设计输入、输出和处理的下层模块结构)分别设计输入、输出和处理的下层模块结构 方法是:方法是: 从变换中心边界向两侧移动从变换中心边界向两侧移动,分别把输入通,分别把输入通路和输出通路的每个处理映射成输入控制模块路和输出通路的每个处理映射成输入控制模块Ci和输出控制模块和输出控制模块Co的下属模块。的下属模块。 变换中心的下层模块,是把每个处理映射成变换中心的下层模块,是把每个处理映射成变换中心控制模块变换中心控制模块Ct的一个直接下属模块。的一个直接下属模块。 ABCDFEGHIJK变换中心变换中心输入输入输出输出主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控
58、制模块Ct输入控制模块输入控制模块CiDCBAEFGIHJK 事务设计事务设计就是从事务型数据流图映射出软件模块结就是从事务型数据流图映射出软件模块结构的过程,也称为以事务为中心的设计。构的过程,也称为以事务为中心的设计。 5.5.4 事务设计事务设计事务设计的基本方法有两步:事务设计的基本方法有两步: 1)建立主控模块、接收输入类型分析模块和事务)建立主控模块、接收输入类型分析模块和事务调度模块;调度模块;主模块主模块调度调度输入类型分析输入类型分析2)分别设计输入类型分析模块和调度模块的)分别设计输入类型分析模块和调度模块的下层模块结构。下层模块结构。 方法是:将输出的每条通路作为调度模块
59、方法是:将输出的每条通路作为调度模块的一个判断分支,而输入类型分析模块的下层的一个判断分支,而输入类型分析模块的下层模块与变换设计类似。模块与变换设计类似。 I2I3I1TCA1B1C1A2B2C2事务中心事务中心主模块主模块调度调度输入类型分析输入类型分析I1I3I2A1A2B1B2C1C2第第5章小结章小结 概要设计说明书概要设计说明书 该说明书是概要实际阶段的工作成果,它应说明该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处以及接口设计、运行设计、数据结构设计和出
60、错处理设计等,为详细设计提供基础。理设计等,为详细设计提供基础。第第6章:详细设计章:详细设计 目标目标:确定如何具体实现所要求的系统。:确定如何具体实现所要求的系统。 不是具体编写程序,而是设计程序的不是具体编写程序,而是设计程序的“蓝图蓝图”。 详细设计的结果决定最终程序代码的详细设计的结果决定最终程序代码的质量。质量。6.1 结构程序设计结构程序设计 E.W.Dijkstra 最早提出结构程序设计:程序质量与最早提出结构程序设计:程序质量与程序中包含的程序中包含的Goto语句的数量成反比(语句的数量成反比(1965)。)。 1966 ,Bohm, Jacopini ,证明了只用,证明了只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶叶行业培训合作协议(2026年)
- 仓储服务2026年冷链物流配送合同
- 小麦返青拔节期肥水管理
- 脉诊与舌诊辅助诊断技术
- 门店销售话术培训服务手册
- 甜瓜品种选育与高产栽培技术方案
- 客户预约排班管理实施细则流程
- 沉睡客户唤醒行动方案书
- 西瓜病毒病阻断防控综合方案
- 减脂塑形轻食代餐搭配操作指南
- 野生动植物保护勘测服务合同
- 施工电梯防护架安全专项施工方案
- 2024年3月30日事业单位联考A类《职业能力倾向测验》试题
- 液晶拼接显示屏维修项目投标方案(技术方案)
- DL∕T 1950-2018 变电站数据通信网关机检测规范
- 保险公司增员新人养成新人辅导训练课件
- 通信安全员ABC证报名考试题库及答案
- 2023年江苏苏州高铁新城国有资产控股有限公司招聘考试真题及答案
- 供配电工程清单
- 医院培训课件:《中医科工作制度、岗位职责》
- 初始过程能力分析报告(PPK)
评论
0/150
提交评论