当前位置:文档之家› 软件设计基础

软件设计基础

❖ 数据设计的内容:
▪ 数据库设计(如库、表、字段、属性) ▪ 数据类型(如堆栈、队列等) ▪ 数据文件的设计(如配置文件) ▪ 通讯协议(如网络消息包)
❖ 总体结构设计和数据设计属于概要设计
软件设计基础
数据设计示意图
模块 1 模块 2 数据库 数据结构
模块 3


模块 5
4
模块 6
数据文件
通讯协议
❖ 数据库 ❖ 数据结构 ❖ 通讯协议 ❖ 数据文件 ❖ ……
概要设计
软件设计基础
过程设计
❖ 任务
▪ 描述每个模块内部的具体内容(算法、数据结构) ▪ 结构化:过程和函数内部算法
❖ 属于详细设计
软件设计基础
过程设计示意图
模块 1 模块 2 数据库 数据结构
模块 3


模块 5
4
模块 6
数据文件 通讯协议
❖ 数据设计
▪ 信息描述 数据结构 ▪ 数据库,数据文件(配置文件),网络消息包…
软件设计基础
软件需求分析与软件设计之间的关系
信息描述
总体结构设计
功能描述 设计
行为描述
其它需求
软件需求规格说明书
过程设计
编码
数据设计
软件设计规格说明书
软件设计基础
总体结构设计
❖ 什么是软件总体结构
▪ 确立了目标软件系统的整体实现框架:那些模块?每 个模块的功能?他们间相互控制关系?
外表 抽象 形体 衣着 性格
头发 脸形 领带 逐步求精
软件设计基础
逐步求精(2/2)
❖ 软件开发的抽象和逐步求精
▪ 软件的设计过程应当是在不同的抽象级别上, 逐步求精 寻求问题基于计算机解的过程.
❖ 计算机软件的二种不同类型的抽象
▪ 过程抽象(计算) ▪ 数据抽象(表示)
软件设计基础
过程抽象
❖ 什么是过程抽象
❖ 软件开发实际上就是一个从高层次抽象到低层次 抽象逐步过渡的过程
软件设计基础
抽象例子
抽象
外表
形体 衣着 性格
软件设计基础
逐步求精(1/2)
❖ 什么是逐步求精思想?
▪ 对一个事物的认识是一个从高层次抽象向低层次抽象 逐步转化和过渡的过程, 首先一般性、抽象的,然后才 是具体和详细的
软件设计基础
逐步求精的例子
▪ 例子
• 1, 2, 3 Integer • 软件工程书,人工智能书 书 类
软件设计基础
抽象和逐步求精例子(1/3)
❖ 抽象1.用问题域本身的语言来描述问题及其解
▪ CAD图形软件包可画各种直线和曲线,能完成所有几 何图形的计算。图形设计的结果存于图形文件中,图 形文件可是几何的、正文的和其他各种设计信息
软件设计基础
抽象和逐步求精例子(2/3)
❖ 抽象2.总体结构层次上的抽象
▪ 图形软件包软件任务 ▪ 图形用户界面 ▪ 创建二维图形任务 ▪ 显示图形任务 ▪ 管理图形文件任务 ▪ End 图形软件包
软件设计基础
抽象和逐步求精例子(3/3)
❖ 抽象3. 过程层次抽象(以管理图形文件任务为例)
Procedure 管理图形文件任务 If OpenFile Then 询问打开的文件名 打开文件 显示文件内容 Else if SaveFile Then 询问存储文件名 存储文件 End if End Procedure
软件工程导论 之
第5讲 软件设计基础
用工程化的方法来开发软件
本讲内容
1. 软件设计任务和过程 2. 软件设计原则 3. 软件设计结果描述工具 4. 软件设计规格说明书及评审
软件设计基础
软件设计的任务
❖ 依据和基础
▪ 软件需求规格说明书SRS,描述了欲解决的问题(用户 需求)。
▪ What?
❖ 任务
▪ 以SRS为基础设计出满足用户需求的软件(软件结 构,…),给出软件实现的解决方案,生成软件设计的 规格说明书
▪ How?
软件设计基础
软件设计的过程
❖ 总体结构设计
▪ 设计和定义软件的整体实现框架,模块以及模块间关系 ▪ “黑盒子” ▪ 高层抽象、全局角度
❖ 过程设计
▪ 模块内部细节 ▪ 低抽象、局部角度
概要设计
Int nLen …… if (str 为 空 字 符 串 ) then { nLen =0;} else { …… }
返 回 nLen;
内部算法和数据结构
软件设计基础
本讲内容
1. 软件设计任务和过程 2. 软件设计原则 3. 软件设计结果描述工具 4. 软件设计规格说明书及评审
软件设计基础
❖ 如何设计模块使得软件开发成本最小?
▪ 软件设计准则: 信息隐藏、高内聚度、低耦合度
软件总耗费

最小成本区
用于接口的开销





成本/每个模块
模块总数
软件设计基础
内聚度
❖ 什么是内聚度
▪ 指该模块内各成分间彼此结合的紧密程度
❖ 内聚度分类
▪ 偶然性内聚: 模块内各成分为完成一组功能而结合在一起,关系松 散
▪ 框架,各个模块是一个“黑盒子”
❖ 什么是模块
▪ 结构化:过程、函数
❖ 什么是模块间的关系
▪ 结构化:调用关系
软件设计基础
软件总体结构示意图
模块 1 模 块
模块 2
4
模块 3 模块 5 模块 6
结构化
模块:过程、函数、 关系:函数和过程 调用
软件设计基础
数据设计
❖ 把需求规格说明书中的各种信息描述转换为计算 机可识别和处理的数据结构如表、数组
软件设计基础
模块化
❖ 什么是模块化思想?
▪ 把软件划分为一组具有相对独立功能的部件,每个部 件称为一个模块,当把所有的模块组装一起时,便可 获得满足用户需求的软件系统
▪ 模块化体现了“分而治之”的问题分析和解决方法
模块 1

模块 3
块 4
模块 5模块 2模块Fra bibliotek6 软件设计基础
软件开发成本与模块间关系示意图
软件设计的基本原则
❖ 软件设计原则60年代后陆续提出,指导软件设计 决策以开发高质量的软件系统
▪ 抽象 ▪ 逐步求精 ▪ 模块化 ▪ 信息隐藏
软件设计基础
抽象
❖ 什么是抽象思想?
▪ 在认识事物、分析和解决问题的过程中,忽略那些与 当前研究目标不相关的部分, 以便将注意力集中于与当 前目标相关的方面
▪ 把完成一个特定功能的动作序列抽象为一个函数名和 参数表(模块)
▪ 例子: 计算字符串的长度, 比较字符串
• int Comare (CString, CString) • int GetLength(Cstring )
软件设计基础
数据抽象
❖ 什么是数据抽象
▪ 把诸多数据对象的定义(描述)抽象为一个数据类型 名,以后可通过该数据类型名来定义多个具有相同性 质的数据对象
相关主题