版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5讲讲 软件设计基础软件设计基础毛新军毛新军 教授教授计算机科学与技术系计算机科学与技术系602教研室教研室 0731-(45)73649软件工程导论软件工程导论 之之copyright xinjun mao软件设计基础软件设计基础2本讲内容本讲内容1.软件设计任务和过程2.软件设计原则3.软件设计结果描述工具4.软件设计规格说明书及评审copyright xinjun mao软件设计基础软件设计基础3软件设计的任务软件设计的任务n依据和基础 软件需求规格说明书srs,描述了欲解决的问题(用户需求)。 what?n 任务 以srs为基础设计出满足用户需求的软件(软件结构,),给出软件实现的
2、解决方案,生成软件设计的规格说明书 how?copyright xinjun mao软件设计基础软件设计基础4软件设计的过程软件设计的过程n总体结构设计 设计和定义软件的整体实现框架,模块以及模块间关系 “黑盒子” 高层抽象、全局角度n 过程设计 模块内部细节 低抽象、局部角度n 数据设计 信息描述 数据结构 数据库,数据文件(配置文件),网络消息包copyright xinjun mao软件设计基础软件设计基础5 设设计计 编编码码 信信息息描描述述 功功能能描描述述 行行为为描描述述 其其它它需需求求 数数据据设设计计 过过程程设设计计 总总体体结结构构设设计计 软软件件需需求求规规格格说
3、说明明书书 软软件件设设计计规规格格说说明明书书 软件需求分析与软件设计之间软件需求分析与软件设计之间的关系的关系copyright xinjun mao软件设计基础软件设计基础6总体结构设计总体结构设计n什么是软件总体结构 确立了目标软件系统的整体实现框架:那些模块?每个模块的功能?他们间相互控制关系? 框架,各个模块是一个“黑盒子”n什么是模块 结构化:过程、函数n什么是模块间的关系 结构化:调用关系copyright xinjun mao软件设计基础软件设计基础7软件总体结构示意图软件总体结构示意图 模模块块1 1 模模块块2 2 模模块块3 3 模模块块4 4 模模块块5 5 模模块块
4、6 6 结构化结构化模块模块:过程、函数、关系关系:函数和过程调用copyright xinjun mao软件设计基础软件设计基础8数据设计数据设计n把需求规格说明书中的各种信息描述转换为计算机可识别和处理的数据结构如表、数组n数据设计的内容: 数据库设计(如库、表、字段、属性) 数据类型(如堆栈、队列等) 数据文件的设计(如配置文件) 通讯协议(如网络消息包)n总体结构设计和数据设计属于概要设计copyright xinjun mao软件设计基础软件设计基础9数据设计示意图数据设计示意图n数据库n数据结构n通讯协议n数据文件n 模模块块1 1 模模块块2 2 模模块块3 3 模模块块4 4
5、模模块块5 5 模模块块6 6 数数据据库库 数数据据结结构构 数数据据文文件件 通通讯讯协协议议 概概要要设设计计 copyright xinjun mao软件设计基础软件设计基础10过程设计过程设计n任务 描述每个模块内部的具体内容(算法、数据结构) 结构化:过程和函数内部算法n属于详细设计copyright xinjun mao软件设计基础软件设计基础11过程设计示意图过程设计示意图 内内部部算算法法和和数数据据结结构构 i in nt t n nl le en n i if f ( (s st tr r 为为空空字字符符串串) ) t th he en n n nl le en n =
6、 =0 0; ; e el ls se e 返返回回n nl le en n; ; 模模块块1 1 模模块块2 2 模模块块3 3 模模块块4 4 模模块块5 5 模模块块6 6 数数据据库库 数数据据结结构构 数数据据文文件件 通通讯讯协协议议 概概要要设设计计 copyright xinjun mao软件设计基础软件设计基础12本讲内容本讲内容1.软件设计任务和过程2.软件设计原则3.软件设计结果描述工具4.软件设计规格说明书及评审copyright xinjun mao软件设计基础软件设计基础13软件设计的基本原则软件设计的基本原则n软件设计原则60年代后陆续提出,指导软件设计决策以开发
7、高质量的软件系统 抽象 逐步求精 模块化 信息隐藏copyright xinjun mao软件设计基础软件设计基础14抽象抽象n什么是抽象思想? 在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分, 以便将注意力集中于与当前目标相关的方面n软件开发实际上就是一个从高层次抽象到低层次抽象逐步过渡的过程copyright xinjun mao软件设计基础软件设计基础15形体形体衣着衣着性格性格抽象抽象抽象例子抽象例子外表外表copyright xinjun mao软件设计基础软件设计基础16逐步求精逐步求精(1/2)n 什么是逐步求精思想? 对一个事物的认识是一个从高层次抽象向
8、低层次抽象逐步转化和过渡的过程, 首先一般性、抽象的,然后才是具体和详细的copyright xinjun mao软件设计基础软件设计基础17逐步求精逐步求精外表外表形体形体衣着衣着性格性格头发头发脸形脸形领带领带抽象抽象逐步求精的例子逐步求精的例子copyright xinjun mao软件设计基础软件设计基础18逐步求精逐步求精(2/2)n软件开发的抽象和逐步求精 软件的设计过程应当是在不同的抽象级别上, 逐步求精寻求问题基于计算机解的过程n计算机软件的二种不同类型的抽象 过程抽象(计算) 数据抽象(表示)copyright xinjun mao软件设计基础软件设计基础19过程抽象过程抽象
9、n什么是过程抽象 把完成一个特定功能的动作序列抽象为一个函数名和参数表(模块) 例子: 计算字符串的长度, 比较字符串n int comare (cstring, cstring)n int getlength(cstring ) copyright xinjun mao软件设计基础软件设计基础20数据抽象数据抽象n什么是数据抽象 把诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象 例子n1, 2, 3 integern软件工程书,人工智能书 书 类copyright xinjun mao软件设计基础软件设计基础21抽象和逐步求精例子抽象和
10、逐步求精例子(1/3)n抽象1.用问题域本身的语言来描述问题及其解 cad图形软件包可画各种直线和曲线,能完成所有几何图形的计算。图形设计的结果存于图形文件中,图形文件可是几何的、正文的和其他各种设计信息copyright xinjun mao软件设计基础软件设计基础22抽象和逐步求精例子抽象和逐步求精例子(2/3)n抽象2.总体结构层次上的抽象 图形软件包软件任务 图形用户界面 创建二维图形任务 显示图形任务 管理图形文件任务 end 图形软件包copyright xinjun mao软件设计基础软件设计基础23抽象和逐步求精例子抽象和逐步求精例子(3/3)n抽象. 过程层次抽象(以管理图形
11、文件任务为例)procedure 管理图形文件任务if openfile then询问打开的文件名打开文件显示文件内容else if savefile then询问存储文件名存储文件end if end procedurecopyright xinjun mao软件设计基础软件设计基础24模块化模块化n 什么是模块化思想? 把软件划分为一组具有相对独立功能的部件,每个部件称为一个模块,当把所有的模块组装一起时,便可获得满足用户需求的软件系统 模块化体现了“分而治之”的问题分析和解决方法 模模块块1 1 模模块块2 2 模模块块3 3 模模块块 4 4 模模块块5 5 模模块块6 6 copyr
12、ight xinjun mao软件设计基础软件设计基础25 模模块块总总数数 最最小小成成本本区区 软软件件总总耗耗费费 用用于于接接口口的的开开销销 成成本本/每每个个模模块块 成成本本或或工工作作量量 软件开发成本与模块间关系示意图软件开发成本与模块间关系示意图n如何设计模块使得软件开发成本最小? 软件设计准则: 信息隐藏、高内聚度、低耦合度copyright xinjun mao软件设计基础软件设计基础26内聚度内聚度n什么是内聚度 指该模块内各成分间彼此结合的紧密程度n内聚度分类 偶然性内聚: 模块内各成分为完成一组功能而结合在一起,关系松散 逻辑性内聚: 模块完成的诸任务逻辑上相关
13、时间性内聚: 模块内诸任务必须在同一时间段内执行 过程性内聚: 模块内各成分相关且必须按特定次序执行 通讯性内聚: 模块内各成分对数据结构的同一区域操作 顺序性内聚: 模块内各成分与同一功能相关且顺序执行 功能性内聚: 模块内各成分是一整体,完成单个功能copyright xinjun mao软件设计基础软件设计基础27耦合度耦合度n什么是耦合度 模块间的相关程度,越低越好n耦合度分类 非直接耦合: 二个模块都不依赖对方而独立存在 数据耦合: 二个模块通过参数交换信息且仅限于数据 控制耦合: 二个模块通过参数交换信息包含控制信息 特征耦合: 介于数据耦合和控制耦合之间 外部耦合: 二个模块与同
14、一外部环境相关联(文件等) 公共耦合: 模块间通过全局数据环境相互作用 内容耦合: 一个模块使用另一模块内的数据和控制信息,或者直接转移到另一模块内执行copyright xinjun mao软件设计基础软件设计基础28信息隐藏信息隐藏(1/2)n什么是信息隐藏 模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问,模块之间仅仅交换那些为完成系统功能所必需交换的信息n例子 int ngetlen(char string) int i, ilen; . copyright xinjun mao软件设计基础软件设计基础29信息隐藏信息隐藏(2/2)n优点 模块的独立性更好
15、支持模块的并行开发(设计和编码) 便于测试和维护,减少错误向外传播 便于增加新的功能copyright xinjun mao软件设计基础软件设计基础30本讲内容本讲内容1.软件设计任务和过程2.软件设计原则3.软件设计结果描述工具4.软件设计规格说明书及评审copyright xinjun mao软件设计基础软件设计基础31软件总体设计软件总体设计n软件总体设计的任务n耦合度和内聚度是判断总体设计好坏主要标准n结构化软件总体结构的表示工具 层次图 hipo图 结构图n面向对象软件总体结构的表示工具 类图copyright xinjun mao软件设计基础软件设计基础32软件结构的层次图软件结构
16、的层次图copyright xinjun mao软件设计基础软件设计基础33 书名书名 i 根据书名查根据书名查询书的详细询书的详细信息信息 p 书的详细书的详细信息信息 o 根据书名查询书的详细信息根据书名查询书的详细信息 软件结构的软件结构的hipo图图nhipo图 = 层次图 + 输入/处理/输出n采用ipo图方式说明层次图中各模块的处理功能copyright xinjun mao软件设计基础软件设计基础34软件结构的结构图软件结构的结构图n结构图 层次图 调用信息copyright xinjun mao软件设计基础软件设计基础35数据设计数据设计n为srs中定义的数据对象进行组织和设计
17、 数据的组织 外部数据库的设计 相关文件的安排 数据类型的设计copyright xinjun mao软件设计基础软件设计基础36数据设计的例子数据设计的例子1n一个配置文件的设计(acd.ini)systemsocketportno = 800; /the port no of the listening socketdsn = data; /the data source namelogfilename = system.log; /the system log file namecopyright xinjun mao软件设计基础软件设计基础37数据设计的例子数据设计的例子2n数据库中读
18、者信息表的设计(treader)1. id char10 key unique not null2. name char10 not null 3. type int not null4. department int not null5. birthdate datecopyright xinjun mao软件设计基础软件设计基础38过程设计过程设计n过程设计的任务n涉及二个方面的问题: 如何进行过程设计技术和原则 如何描述过程设计的内容-表示方法或者描述语言copyright xinjun mao软件设计基础软件设计基础39过程设计技术结构化过程设计过程设计技术结构化过程设计n结构化过程设
19、计主要思想 自顶向下、逐步求精的设计方法和单入口单出口的控制结构 结构化设计的基本控制结构: 顺序,分枝,循环 用三种基本结构可构造任何单入口单出口程序n优点 确保软件具有良好的结构copyright xinjun mao软件设计基础软件设计基础40 a b x 1 x 2 d c e x 3 0 tr u e tr u e tr u e f a ls e f a ls e f a ls e 表示工具表示工具n流程图copyright xinjun mao软件设计基础软件设计基础41 循循环环条条件件 do-while 部部分分 repeat 部部分分 循循环环条条件件 任任务务 任任务务 任
20、任务务 顺顺序序 f 条条件件 t else then 部部分分 部部分分 选选择择 循循环环 盒图盒图copyright xinjun mao软件设计基础软件设计基础42 a b f x1 t f x2 t e d c x3 盒图例子盒图例子copyright xinjun mao软件设计基础软件设计基础43判定表判定表copyright xinjun mao软件设计基础软件设计基础44过程设计语言过程设计语言(pdl)(1/2)n以正文形式表示软件设计信息的表示工具 关键字语法:定义模块内部控制结构和数据结构 自然语言的形式:灵活自由表示模块内工作流程 数据结构的说明手段:说明简单和复杂的
21、数据结构 模块的定义和调用描述:接口描述n优点 可作为注释插入到源程序中, 简便,易于自动处理copyright xinjun mao软件设计基础软件设计基础45过程设计语言过程设计语言(2/2)integer ngetlen(char s1)int nlen;if s1为空 then nlen = 0end if返回nlen;copyright xinjun mao软件设计基础软件设计基础46各种表示工具比较各种表示工具比较n表示工具的好坏主要看:表示能力强弱、简便、易于理解等 模块化:支持模块化的软件开发并提供接口描述机制 整体简洁:易学、易用、易于理解 便于编辑, 机器可读性 可维护性 强制结构化:有助于得到好的软件设计 自动产生报告 数据结构的表示copyright xinjun mao软件设计基础软件设计基础47本讲内容本讲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年度供应商合作公告7篇范本
- 贸易合同风险防范与控制策略
- 2026年中国铁路兰州局集团有限公司人员招聘笔试备考试题及详细答案解析
- 会议议定事项2026年年终总结落实催办函(3篇)
- 2026年陕西煤业化工集团有限责任公司人员招聘考试备考试题及详细答案解析
- 2026年重庆化医控股集团公司人员招聘考试参考题库及详细答案解析
- 2026年长沙城市发展集团有限公司人员招聘考试参考试题及详细答案解析
- 2026年北京城建集团有限责任公司人员招聘笔试备考试题及详细答案解析
- 智能楼宇自动化系统调试工程师参数设置与校准指引
- 企业财务报销流程标准化指南
- 2026年癌症早诊早治项目实施方案
- 2026新教材语文 六年级上册语文园地三 课件
- 2026年湖南省高考真题历史试题试卷答案解析
- 2026年精神卫生日宣传课件
- 室外消防给水管道敷设施工方案
- 2026秋新教材人教版四年级上册数学|第三单元 多位数乘两位数 教案(共13课时)
- 2026年法律硕士(法学)考研真题及完整答案解析(统考回忆版)
- 测绘涉密成果管理责任人及岗位安排
- 组织培养与植物离体种质资源保存
- 2026年银行团队主管竞聘面试题库
- 自来水水厂检验工作制度
评论
0/150
提交评论