软件开发——详细设计
应用设计模式
常用设计模式
创建型设计模式:描述对象创建的具体细节. 创建型设计模式:描述对象创建的具体细节. 模式 结构型设计模式 模式: 结构型设计模式:描述对象之间通过组织形成新结 实现新的功能. 构,实现新的功能. 行为型设计模式 模式: 行为型设计模式:描述算法与对象之间任务分配和 通讯模式. 通讯模式.
举例:BorrowerInfo的类操作
属性的设计
定义属性 —具体说明属性名称,类型,缺省值,可见性 等 基本原则 —将所有属性可见性设置为private; —仅通过set,get方法更新,访问属性; —在set方法中引入简单的有效性验证.(如果验 证逻辑过于复杂,则需建立独立的验证方法)
举例:BorrowerInfo的类
直 到 条 件5 成立 j
练习
S1; if (x>5) then S2 else S3; while (y<0) S4; S5; if u>0 then { S6; while (k>5) S7; } S8;
S1 F S3 y<0 S4 S5 F u>0 S6 k>5 S7 S8 T x>5 S2 T
Jackson图描述数据结构
顺序结构 —由一个或多个数据元素组成,每个元 素按确定次序出现一次.
选择结构
由两个或多个数据元素组成,每次使用这个数 据时按一定条件从这些数据元素中选择一个.
重复结构
根据使用时的条件由一个数据元素出现 零次或多次构成.
改进的Jackson图
Jackson结构程序设计方法
内容提纲
面向对象方法 —基本任务 —方法建模 —属性建模 —状态建模 —关系建模 详细设计的评审 用户界面的设计
面向对象方法—详细设计
定义 —细化分析和体系结构设计所产生的模型,消 除问题域与实现域之间的差距 —基于类,由单个开发人员实现 主要任务 —精化类的属性和操作,即明确属性的类型和 可见性,操作的参数和基本内部逻辑 —明确类之间的关系 —整理和优化设计模型
举例:指出所有的基本程序结构
a
多分支
选择 T
f
当循环
b
F
X2 X5
X1
F
T c
X3 X4 d e j
i
X7
直到循环
F
T
程序流程图的缺点
由于流程线随心所欲地使用,容易与结 构化程序设计思想相违背 难以描述逐步求精的过程 难以表示系统中的数据结构
N-S图
块1 块2 块3 块4 顺序结构 当循环条件 Do_until Do_while 部分 当型循环 部分 直到循环条件 直到型循环 调用子程序A 调用子程序A
S1 S2 x>5 S3 While y<0
S4
S5 S6 u>0 While k>5
S7
S8
练习:用选择排序法对数组X[1..n]进 行降序排列
思考: 思考: —选择排序法的程序基本结构? 选择排序法的程序基本结构? 选择排序法的程序基本结构 答:双重循环 —内层,外层循环任务分别是什么? 内层, 内层 外层循环任务分别是什么? 内层循环将X[i]和X[j]比较,取大 比较, 答:内层循环将 和 比较 外层循环将X[i]取值不断变化 外层循环将 取值不断变化 —内层,外层循环的初值,终值? 内层, 内层 外层循环的初值,终值? 内层[i+1..n-1] 答:内层 外层[0..n-2] 外层
N-S图的特点
功能域明确 不可能任意转移控制 很容易确定局部和全局数据的作用域 很容易表示嵌套关系,也可以表示模块 的层次结构
PAD图
任务1 任务1 值1 任务2 任务2 X= 任务3 任务3 顺序结构 条件 T F then部分 then部分 else部分 else部分 选择结构 值n 任务n 任务n 多分支选择结构 值2 任务2 任务2 任务1 任务1
程序结构图的最终形态
程序复杂程度的度量
用途 —把程序的复杂程度乘以适当常数可估算出软件中错 把程序的复杂程度乘以适当常数可估算出软件中错 误的数量 —估算软件开发需要用的工作量 估算软件开发需要用的工作量 —比较两个不同的设计或两个不同算法的优劣 比较两个不同的设计或两个不同算法的优劣 度量方法 —McCabe方法 McCabe方法 McCabe —Halstead方法 Halstead方法 Halstead
PAD图
WHILE 条件 循环体
先判定型循环结构
UNTIL 条件
循环体
后判定型循环结构
定义
举例:将下列伪代码转换成 举例:将下列伪代码转换成PAD表示 表示
S1; if (x>5) then S2 else S3; while (y<0) S4; S5; if u>0 then { S6; while (k>5) S7; } S8;
分析并确定输入数据和输出数据的逻辑结构, 并用Jackson图描绘这些数据结构. 找出输入数据结构和输出数据结构中有对应关 系的数据单元 将数据结构图转换为程序结构图 列出所有操作和条件,将它们分配到程序结构 图的适当位置 用伪码列出程序
举例
一个正文文件由若干个记录组成, 一个正文文件由若干个记录组成,每个记录是 个字符串. 个字符串. 要求: 要求: 统计每个记录中空格字符的个数 文件中空格字符的总个数 输出数据格式是,每复制一行输入字符串之后, 输出数据格式是,每复制一行输入字符串之后, 另起一行印出这个字符串中的空格数, 另起一行印出这个字符串中的空格数,最后印出 文件中空格的总个数. 文件中空格的总个数.
软件开发——详细设计
授课教师:张莹 E_mail:zying119@
内容提纲
结构化方法 —基本任务 —过程设计的工具 —面向数据结构的设计方法 —程序复杂度的度量
内容提纲
面向对象方法 —基本任务 —方法建模 —属性建模 —状态建模 —关系建模 详细设计的评审 用户界面的设计
OO模型在RDBMS中的实现
一对一关联
多对多关联
OO模型在RDBMS中的实现
一对多关联
OO模型在RDBMS中的实现
泛化关系
OO模型在RDBMS中的实现
关联类
ห้องสมุดไป่ตู้
应用设计模式
定义
—解决特定问题的经验,实质就是软件的复用. 解决特定问题的经验,实质就是软件的复用. 解决特定问题的经验
描述
模式名称—描述模式的问题,解决方案和效果. 模式名称 描述模式的问题,解决方案和效果. 描述模式的问题 面临问题—模式使用的场合 模式使用的场合. 面临问题 模式使用的场合. 解决方案—模式中组成成分 职责和协作方式. 模式中组成成分, 解决方案 模式中组成成分,职责和协作方式. 模式效果—模式使用的效果和应该权衡的问题 模式使用的效果和应该权衡的问题. 模式效果 模式使用的效果和应该权衡的问题.
A
条件 T then 块1 F else 块2
Case 条件
值1 值2 case1 case2 块1 块2
值3 case3 块3
选择结构
多分支选择结构
举例:请描述程序的运行过程
a b
T Case i i=1 当条件3成立 当条件 成立 i=2 i=3 T 条 件 1 F
f
条件2 F
g
i
c d
e
h
直到条件4成立 直到条件 成立
类的设计
边界类 —用户界面:考虑界面开发的工具和所创建界 面数量. —外部系统接口 实体类 —考虑性能对实体对象的影响 控制类 —是否需要?是否需要继续细分? —考虑复杂性,变化适应性,分布性和性能, 事务处理等需求.
操作的设计
定义操作的过程 —定义满足基本功能要求的操作; —补充必要的辅助操作,例如:初始化 类的实例,局部变量等; —完整地描述操作,即确定操作名称, 参数,返回值,可见性等; —简要说明操作实现的内部逻辑
状态建模
一般只发生在依赖状态展示不同行为的 类上 举例:MiniLibrary系统的书籍类
Borrow New Book Time Out Available Reserve Reserve Delete Cancle Return Borrow Borrowed
关系建模
针对类,需要进一步确定详细的关联关 系,依赖关系和聚合关系等.(如果关 系具有属性,则需建立关联类) 不同对象之间的可能连接 —全局(Global) —参数(Parameter) —局部(Local) —域(Field)
答案:选择排序的PAD图
i=0 i<nWHILE i<n-1 寻找剩余数组元素的最大值放在X[i] 寻找剩余数组元素的最大值放在 i++ j=i+1 交换
寻找剩余数组元素的最大值放在X[i] 寻找剩余数组元素的最大值放在
While j<n
X[j] > X[i] j++
T F
细化"交换x[i]和x[j]"
结构化方法——基本任务
对系统中每个模块的内部过程进行设计 和描述. 和描述. 结构化程序设计技术即保证了每个模块 结构化程序设计技术即保证了每个模块 功能的正确实现, 功能的正确实现,也让设计出的处理过 程简明易懂. 程简明易懂.
过程设计的工具
程序流程图 盒图( 盒图(N-S图) PAD图 Diagram) PAD图(Problem Analysis Diagram) PDL语言 语言( PDL语言(Process Design Language) Language)
作用和研究意义
优化的设计经验. 优化的设计经验. 极高的复用性. 极高的复用性. 丰富的表达能力. 丰富的表达能力. 极低的耦合度. 极低的耦合度.
内容提纲
面向对象方法 —基本任务 —方法建模 —属性建模 —状态建模 —关系建模 详细设计的评审 用户界面的设计