软件制造工程
第二章 程序设计
1、程序设计概述 –概念
? 程序设计
程序设计是在 内部设计 结果的基础上进行的
作业,它把内部设计结果进行细化处理,进
行程序内部模块结构和实现方法设计,描述
一个程序单元(模块)内的输入数据信息、
输出数据结果、程序单元内各个模块的详细
处理要求,以此作为程序编码和测试工程的
主要依据。
1、程序设计概述 –位置
? 程序设计在软件开发工程中的位置
软
件
工
程
管
理
规划阶段
需求分析A
开发阶段
内部设计
B 外部设计
移植, 安装, 维护
移植安装维护H
D 程序设计 ·制造
E 组合测试
F 系统测试
G 运行测试
以内部设计书为基础, 对程序单元内的功
能模块进行分割和功能模块的功能处理给
予说明, 作出程序设计书 。
按照程序设计书进行程序编码 。
按照程序设计书进行程序单元测试 。
C
1、程序设计概述 –目的
? 程序设计 ?制造的目的
? 以内部设计书为基础,写出各个程序单元的
处理说明书。
? 按照程序单元设计书进行程序编码。
? 按照程序单元设计书对所编写的代码进行单
元测试,确认该程序单元的功能是否满足设
计的要求 。
1、程序设计概述 –作业流程及描述
D1 开发准备工作
D1.1详细设计成果物的确认
D1.1.1 确认详细设计成果物
D1.2 制定工作计划
D1.2.1 制定工作计划
D1.3 检查工作计划
D1.3.1 检查工作计划
在进行程序设计 ·制造作业之前, 要确
认详细设计的成果物 。
为了进行程序设计 ·制造的进度管理和
项目运营管理, 要作出项目开发体制
表和详细的日程计划表 ( 中, 小日程
表 )
对于制定的工作计划, 要进行检查,
确认作业内容 。
1、程序设计概述 –作业流程及描述
D2 程序设计
D2.1 程序设计
D2.1.1 模块划分
D2.1.2 模块功能设计
工作区变量定义D2.1.3
模块逻辑设计D2.1.4
D2.2 程序设计检查
D2.2.1 程序设计检查
以详细设计中确认的程序单元为基础, 对程
序单元内的功能模块进行分割处理 。
对程序功能结构图中的功能处理给与说明 。
定义程序中使用的公用变量和重要变量 。
设计各个模块的处理内容及其算法 。
对程序设计说明书进行检查, 作出程序设计
检查结果报告 。
1、程序设计概述 –作业流程及描述
D3 程序编码
D3.1 程序编码
D3.1.1 程序编码
D3.1.2 编译连接
D3.2 程序代码检查
D3.2.1 程序代码检查
以程序设计说明书为基础, 按照选定的语
言和编码规则, 进行各个程序单元 ( 模块 )
的代码编制 。
对程序代码进行编译, 修改语法错误, 生
成可以执行的目标程序 。
打印出程序代码清单, 在办公桌上进行程
序逻辑和规范化检查 。
1、程序设计概述 –作业流程及描述
D4 程序单元测试
D4.1 程序单元测试的准备
D4.1.1 设定测试项目
按照程序设计说明书写出程序测试项目表
( PCL), 对设定的测试项目进行检查,
填写质量汇总数据表 。
D4.1.3 作出测试数据
按照程序测试项目表, 做出要使用的测试
数据, 设定好相关的数据库表及其文件中
的数据 。
D4.2组合测试环境的再度确认
D4.2.1 组合测试环境的确认
D4.3程序单元测试的实施
D4.3.1 程序单元测试
实施程序单元测试过程中发生问题时, 要
填写 B票 ( 问题处理表 ), 如果问题的原
因是由于设计书所产生的情况下, 要通知
修改程序设计说明书 。
D4.1.2 测试项目检查
为进入下一个测试工程阶段, 而对组合测
试环境再度确认, 以做好组合测试准备 。
1、程序设计概述 –作业流程及描述
D5开发结束工作
D5.1确认程序测试的质量状况
D5.1.1 程序单元测试报告
把各种反映程序质量的数据收集起来,
填写到质量数据汇总表中, 作为能否转
入下一个测试工程进行测试的依据 。
1、程序设计概述 –工作用表
质量数据汇总表D5开发结束工作
问题处理票( B票)
简单问题处理票
质量数据汇总表(程序单元)
程序单元测试项目表 (矩阵型 )
程序单元测试项目表D4 程序单元测试
问题记录一览表
检查记录表
模块功能的定义说明书
工作缓冲区格式定义表
程序追加处理说明书
程序功能结构图D2 程序设计
问题记录一览表
检查记录表
开发体制表
工作计划表 (小日程表 )
工作计划表 (中日程表 )
基本 /详细设计作业内容检查表(确认基本 /详细设计的成果物)D1`开发准备工作
工作用表名称作业阶段
2、程序设计的原理和结构 -内容
? 软件程序设计与详细设计的主要任务,就
是将整个系统合理的划分成各个功能模块,
正确地处理模块之间与模块内部的联系及
它们之间的调用关系和数据联系,定义各
模块的内部结构等等。
2、程序设计的原理和结构 -内容
? 设计的原则:
( l)分解 —协调的原则。
( 2)信息隐蔽,抽象的原则,即上层模块只规定下层模块做
什么和所属模块间的协调关系,但不规定怎么做,以保证模
块的相对独立性和内部结构的合理性,使得模块与模块之间
层次分明,易于理解,易于实施,易于维护。
( 3)自项向下原则:首先抓住总的功能目标,然后逐层分解,
即先确定上层模块的功能,再确定下层模块的功能。
( 4)一致性原则:要保证整个软件设计过程中具有统一的规
范,统一的标准,统一的文件模式等等。
( 5)面向用户的原则,每个模块必须功能明确,接口明确,
坚决消除多重功能和无用接口。
2、程序设计的原理和结构 -内容
? 程序设计的一个重要课题就是模块划分和模块设计,
把开发的软件系统按功能逐次分割成层次结构,使每一
部分完成简单的功能且各个部分之间又保持一定的联系,
这种功能设计所包括的内容有:
? 采用某种设计原理和方法,将一个复杂的系统按功
能划分为成模块的层次结构;
? 确定每个模块的功能,建立与已确定的软件需求的
对应关系;
? 确定模块间的调用关系;
? 确定模块间的接口,设计接口的信息结构;
? 评估模块划分的质量及导出模块结构的规则。
2、程序设计的原理和结构 –模块化
? 模块的概念
? 在软件的体系结构中,模块是可组合、分解和更换的单元。程
序设计单元都被看成为“模块”,所谓模块就是程序对象的有
名字的集合,例如,过程、函数、子程序、宏等。
? 是指这样一组程序语句,它包括输入输出和逻辑处理功能.内
部信息及其运行环境。
( l)输入与输出。模块的输入来源和输出去向在正常的情况下
都是同一个调用者,即模块。从调用者处获得输入信息,经过
模块本身的处理后,再把输出返送给调用者。
( 2)逻辑功能。模块的逻辑功能描述了该模块能够做什么样的
事情,具备什么样的功能,即对于输入信息能够加工成什么样
的输出信息。
( 3)内部信息。模块的内部信息是指模块执行的和在模块运行
时所需要的属于该模块自己的数据。
( 4)运行环境。模块的运行环境说明了模块的调用与被调用的
关系。
2、程序设计的原理和结构 –模块化
? 模块化就是把程序划分成若干个模块,每个模块完成一个子功
能。然后把这些模块汇集起来组成一个整体(即系统),用以
完成指定功能的一种方法。
? 把软件划分成可单独设计、编码、测试和维护的模块,可以减
少开发软件的复杂性,从而提高生产率、可靠性和可维护性。
? 模块具有以下几种基本属性:
? 接口:指模块的输入与输出;
? 功能:指模块实现什么功能;
? 逻辑:描述内部如何实现要求的功能所需的数据和处理流
程;
? 状态:指该模块的运行环境,即模块的调用与被调用关系。
2、程序设计的原理和结构 –模块化
? 模块独立性是指它在一定抽象层次上的信息隐
藏。抽象帮助我们确定组成软件的过程(或信
息)实体,而信息隐藏则定义和实施了对模块
的过程细节和局部数据结构的存取限制。
2、程序设计的原理和结构 –模块化
? 模块的概念
? 一个模块的规模应当取决于它的功能和用途。
? 应减少接口的代价,提高模块的独立性。
? 模块的独立性可以由两个定性标准度量,这两个标准分别称为聚合和
耦合。
成本
(工作量 )
软件成本
接口成本最小区域
成本 /模
块
模块数
M
2、程序设计的原理和结构 –模块化
? 模块化的设计原则
? 设计时应该力求做到模块的高聚合
? 在耦合方式上降低模块间接口的复杂性
? 改进软件结构提高模块独立性
? 尽量减少高扇出结构
? 将模块的作用域保持在其控制域内
? 模块功能应该可以预测
? 设计单入口单出口的模块
2、程序设计的原理和结构 –结构化程序设计
? 结构化程序设计的模式
结构化程序设计的模式是以模块化的结构为
基本模式。
? 需求和求解的方法分离
? 把数据结构和算法集中在一个模块中
? 数据隐蔽在模块中,每个模块有二个接口,
模块的执行只能通过接口进行
? 模块在第一次使用前要初始化
2、程序设计的原理和结构 –结构化程序设计
? 结构化程序设计的内容
? 使用三种控制结构
? 逐步求精的设计方法
f
g
c
f g c
f
(c)(a) (b)
1=?
f1 f2 f3 fn
1 2 3 n
(d)
f
c
T
(e)
2、程序设计的原理和结构 –结构化程序设计工具
? 图
? 流程图
? 处理用四方形图表示
? 条件判断用菱形图表示
? 用连接线把这些图形连接起来表示处理的
流程
? 结构化图
N-S图 PSD图
2、程序设计的原理和结构 –结构化程序设计工具
过程
过程
过程
2过程1
值 2值 1值 2值 1
过程 过程 过程 过程 1
过程 1
过程 2
过程 1
过程 2
过程 1
过程 2
过程 1
过程 2
过程 1 过程 2
值 1 值 2
条件
过程 1 过程 2
过程 1
过程 2
值 1
条件
值 2
条件
控制
过程
控制
过程
控制
过程
控制 过程
控制 过程
控制 过程
条件
条件
条件
反复
(后判断 )
反复
(先判断 )
分支
连接
基本
HCPPADPSD( NS图)流程图要素
2、程序设计的原理和结构 –结构化程序设计工具
? 表
? HIPO图(层次图加输入 /处理 /输出图 )
HIPO图由下面三部分组成:
? H(分层)图。即以方框形式表示程序的主要功能、次要功能及其
与模块间的关系。
? 总览 IPO图。为 H图提供输入变量表、处理功能表和输出变量表。
? 详细 IPO图。为底层模块提供输入变量表、处理功能表和输出变量
表。
HIPO图是一种图解式设计工具。在概要设计、详细设计、程
序设计、测试和维护的不同阶段,都可以使用 HIPO图对设计进行
描述
2、程序设计的原理和结构 –结构化程序设计工具
班级号、学号
学生姓名
语、数、外
成绩
输入
显示处理
DB存在检查
处理 输出
DB
显示处理
显示处理
输入数据检查
DB登录
学生基本成绩表
班级号、学号
学生姓名
语、数、外
成绩
错误信息
不存在 存在
正确 不正确
2、程序设计的原理和结构 –结构化程序设计工具
? 判定表
? 在许多软件设计中,常常需要设计一个模块,根据 多种条件的
复杂组合,选择执行相应的动作,这种设计过程用判定表表示
比较合适。
? 判定表可作为输入数据,被直接读入机器,由“表驱动”算法
程序自动处理,
? 判定表的第一行是规则号,每一列对应一条处理规则,它根据
不同的条件组合选择执行相应的动作。为了能表示出总的控制
流程,单单用这个工具是不行的,还需加上其他信息。通常,
判定表可以有效地用来作为其他详细设计工具的补充。
判定表采用以下步骤进行处理:
? 列出与一个具体过程(或)有关的所有处理;
? 列出过程执行期间的所有条件(或所有判断);
? 将特定条件取值组合与特定的处理相匹配,消去不可能发生的条
件取值组合;
? 将右部每一纵列规定为一个处理规则。
2、程序设计的原理和结构 –结构化程序设计工具
条件
动作
输出平均成绩出错信息
输出基本成绩出错信息
输出学生成绩表正常数据
显示信息, 平均文件打开失败,
显示信息, 基本文件打开失败,
N平均成绩文件记录不存在
YY平均成绩文件记录存在
N基本成绩文件记录不存在
YY基本成绩文件记录存在
YYY平均成绩文件打开正常
Y平均成绩文件打开出错
基本成绩文件打开正常
Y基本成绩文件打开出错
654321规则号 →
2、程序设计的原理和结构 –面向对象的程序设计
面向对象的方法开始也只是着眼于编程,后来才形成了从
分析、设计到编程、测试与维护一整套的软件工程体系,即产
生了面向对象分析( OOA)、面向对象设计( OOD)、面向对
象编程( OOP)、面向对象测试( OOT)
? 面向对象程序设计的特征
? 面向对象的程序设计将计算看作是一个系统的开发过程,系统由对象
组成,经历一连串的状态变化以完成计算任务。
? 面向对象程序的基础构件是对象和类,从程序设计角度来看,对象是
一种不信赖于外界的模块,对应着存储器的一块被划分的区域。它包
含数据,在逻辑上包含作用于这些数据的过程,这些过程称为方法。
? 面向对象程序设计的基本机制是继承性、消息和方法,还有在特定方
面提供更为专门的、灵活的机制,如重置、多态等 。
结构化程序设计就是把内部设计中的功能模块的设计、功能模块间接口的
设计、数据库的定义等详细化的设计过程。而面向对象开发时,在 OOD阶段已
把各个类直到接口 (方法 )都已定义,程序设计的对象就如同结构化程序设计一
样就是进行类内部处理的详细化设计。
3、程序设计过程中的技术和管理
? 程序设计阶段的实施体制
A组组长 (GL)
项目经理 (Project Manager)
项目负责人 (Project Leader)
检查者 A 检查者 B
作成者 A1 作成者 A2 作成者 B1 作成者 B2 作成者 C1 作成者 C2 作成者 C2
检查者 C
B组组长 (GL)
A组,学生成绩管理 B组,教务管理
3、程序设计过程中的技术和管理
? 技术
? 遵守标准的公文格式
? 程序设计书的评审要点
? 管理
? 确定分割单位
? 设计书评审的体制
? 进度管理
程序设计书评审注意点
⊙ 设计者与评审者是不同的技术人员;
⊙ 在项目负责人,项目管理人确认之后必须严格保管;
⊙ 按修改的实际内容做准确的变更管理。
修正的内容概要
修正的日期
修正者的名字
4、程序设计书的构成和理解
,程序设计书主要内容, ( 交互式处理 )
○ 程序处理概要图
○ 程序概要说明书
○ 程序功能结构图
○ 程序追加处理说明书
○ 工作缓冲区格式定义表
○ 模块功能定义书
○ 模块功能定义书 (补充 )
○ 输入数据检查处理说明书
〈 参照以下基本设计资料 〉
○ 屏幕设计说明书
○ 报表/文件输出编辑说明书
○ DB设计说明书
○ 共通处理设计说明书
○ 公共子程序设计说明书
程序设计书
4、程序设计书的构成和理解
? 程序处理概要图 是内部设计阶段的成果文档,是程序设计阶段
的输入,他是程序设计书的重要内容,主要描述该程序单元的
处理概要,输入输出文件和屏幕、报表的关连图,给出了与该
程序相关的文件 ID、文件名称、屏幕 ID、名称、报表名称等。
? 程序处理概要说明书 也是内部设计阶段的成果文档,是程序设
计阶段的输入,是程序设计书的重要内容,它对于程序处理概
要图中的程序处理概要进行展开,给出了程序的各个功能模块
的处理概要说明,小型的或简单的程序可以从程序功能概要说
明书入手编写代码。
? 程序功能结构图 是程序设计阶段的成果文档,它是程序结构设
计的图形结果,在开发周期短,程序设计时间不足的情况下,
程序功能结构图可以省略。有程序功能结构图的情况下,要注
意编写的程序结构是否实现了程序功能结构图的要求。
? 程序追加处理说明书 是在程序概要说明书的基础上,对程序设
计阶段所增加的功能进行补充说明。在程序编码之前,一定要
注意确认程序追加处理说明书的功能是否能够实现,有无设计
上的问题或文字上的疏漏。
4、程序设计书的构成和理解
? 工作缓冲区格式定义表 给出了程序中使用的主要工作缓冲区和
变量的命名、类型、长度、初期值和编辑方法等说明。在理解
工作缓冲区格式定义表中的各个变量的定义时,一定要对照相
关的程序设计书的内容。
? 模块功能定义书 是在程序处理概要说明书的基础上对于每个程
序模块的实现方法进行了详细的说明,对于复杂的程序单元,
一定要注意理解各个模块功能定义书的详细处理说明。对于程
序设计阶段补充的功能模块和个别模块的补充功能,在模块功
能定义书 (补充 )中给出了详细说明。
? 输入数据检查处理说明书 主要说明屏幕输入项目的检查条件,
所有登录到数据库的数据都必须通过屏幕输入检查处理,以保
证用户数据的完整性和一致性。
5、程序设计实例
? 系统概要说明
本案例是一个学生成绩管理子系统。它包含学生基本成绩登录、学生平均成
绩计算、班级平均成绩计算、学生成绩表生成等 4个程序模块
基本成绩
登录画面
学生成绩管理子系统
学生基本成绩文件
学生平均成绩计算
( XSCJP001)学生基本成绩文件 学生平均成绩文件
学生成绩表生成
( XSCJP003)
班级平均成绩计算
( XSCJP002)学生基本成绩文件 班级平均成绩文件
学生平均成绩文件
学生基本成绩文件
学生成绩表文件
学生基本成绩登录
( XSCJP000)
5、程序设计实例
? 开发准备
? 确认基本 /详细设计的成本物;
? 制定工作计划,作出开发计划中日程表和开发计划小日程表;
? 确立开发体制(开发人员的构成和组织体制);
? 检查所制定的工作计划和工作内容
? 程序设计
“学生成绩管理系统流程图”的处理要求,该系统由四个处理模块构成,
它们是:
? ① 学生基本成绩登录;
? ② 学生平均成绩计算;
? ③ 班级平均成绩计算;
? ④ 学生成绩表生成。
第二章 程序设计
1、程序设计概述 –概念
? 程序设计
程序设计是在 内部设计 结果的基础上进行的
作业,它把内部设计结果进行细化处理,进
行程序内部模块结构和实现方法设计,描述
一个程序单元(模块)内的输入数据信息、
输出数据结果、程序单元内各个模块的详细
处理要求,以此作为程序编码和测试工程的
主要依据。
1、程序设计概述 –位置
? 程序设计在软件开发工程中的位置
软
件
工
程
管
理
规划阶段
需求分析A
开发阶段
内部设计
B 外部设计
移植, 安装, 维护
移植安装维护H
D 程序设计 ·制造
E 组合测试
F 系统测试
G 运行测试
以内部设计书为基础, 对程序单元内的功
能模块进行分割和功能模块的功能处理给
予说明, 作出程序设计书 。
按照程序设计书进行程序编码 。
按照程序设计书进行程序单元测试 。
C
1、程序设计概述 –目的
? 程序设计 ?制造的目的
? 以内部设计书为基础,写出各个程序单元的
处理说明书。
? 按照程序单元设计书进行程序编码。
? 按照程序单元设计书对所编写的代码进行单
元测试,确认该程序单元的功能是否满足设
计的要求 。
1、程序设计概述 –作业流程及描述
D1 开发准备工作
D1.1详细设计成果物的确认
D1.1.1 确认详细设计成果物
D1.2 制定工作计划
D1.2.1 制定工作计划
D1.3 检查工作计划
D1.3.1 检查工作计划
在进行程序设计 ·制造作业之前, 要确
认详细设计的成果物 。
为了进行程序设计 ·制造的进度管理和
项目运营管理, 要作出项目开发体制
表和详细的日程计划表 ( 中, 小日程
表 )
对于制定的工作计划, 要进行检查,
确认作业内容 。
1、程序设计概述 –作业流程及描述
D2 程序设计
D2.1 程序设计
D2.1.1 模块划分
D2.1.2 模块功能设计
工作区变量定义D2.1.3
模块逻辑设计D2.1.4
D2.2 程序设计检查
D2.2.1 程序设计检查
以详细设计中确认的程序单元为基础, 对程
序单元内的功能模块进行分割处理 。
对程序功能结构图中的功能处理给与说明 。
定义程序中使用的公用变量和重要变量 。
设计各个模块的处理内容及其算法 。
对程序设计说明书进行检查, 作出程序设计
检查结果报告 。
1、程序设计概述 –作业流程及描述
D3 程序编码
D3.1 程序编码
D3.1.1 程序编码
D3.1.2 编译连接
D3.2 程序代码检查
D3.2.1 程序代码检查
以程序设计说明书为基础, 按照选定的语
言和编码规则, 进行各个程序单元 ( 模块 )
的代码编制 。
对程序代码进行编译, 修改语法错误, 生
成可以执行的目标程序 。
打印出程序代码清单, 在办公桌上进行程
序逻辑和规范化检查 。
1、程序设计概述 –作业流程及描述
D4 程序单元测试
D4.1 程序单元测试的准备
D4.1.1 设定测试项目
按照程序设计说明书写出程序测试项目表
( PCL), 对设定的测试项目进行检查,
填写质量汇总数据表 。
D4.1.3 作出测试数据
按照程序测试项目表, 做出要使用的测试
数据, 设定好相关的数据库表及其文件中
的数据 。
D4.2组合测试环境的再度确认
D4.2.1 组合测试环境的确认
D4.3程序单元测试的实施
D4.3.1 程序单元测试
实施程序单元测试过程中发生问题时, 要
填写 B票 ( 问题处理表 ), 如果问题的原
因是由于设计书所产生的情况下, 要通知
修改程序设计说明书 。
D4.1.2 测试项目检查
为进入下一个测试工程阶段, 而对组合测
试环境再度确认, 以做好组合测试准备 。
1、程序设计概述 –作业流程及描述
D5开发结束工作
D5.1确认程序测试的质量状况
D5.1.1 程序单元测试报告
把各种反映程序质量的数据收集起来,
填写到质量数据汇总表中, 作为能否转
入下一个测试工程进行测试的依据 。
1、程序设计概述 –工作用表
质量数据汇总表D5开发结束工作
问题处理票( B票)
简单问题处理票
质量数据汇总表(程序单元)
程序单元测试项目表 (矩阵型 )
程序单元测试项目表D4 程序单元测试
问题记录一览表
检查记录表
模块功能的定义说明书
工作缓冲区格式定义表
程序追加处理说明书
程序功能结构图D2 程序设计
问题记录一览表
检查记录表
开发体制表
工作计划表 (小日程表 )
工作计划表 (中日程表 )
基本 /详细设计作业内容检查表(确认基本 /详细设计的成果物)D1`开发准备工作
工作用表名称作业阶段
2、程序设计的原理和结构 -内容
? 软件程序设计与详细设计的主要任务,就
是将整个系统合理的划分成各个功能模块,
正确地处理模块之间与模块内部的联系及
它们之间的调用关系和数据联系,定义各
模块的内部结构等等。
2、程序设计的原理和结构 -内容
? 设计的原则:
( l)分解 —协调的原则。
( 2)信息隐蔽,抽象的原则,即上层模块只规定下层模块做
什么和所属模块间的协调关系,但不规定怎么做,以保证模
块的相对独立性和内部结构的合理性,使得模块与模块之间
层次分明,易于理解,易于实施,易于维护。
( 3)自项向下原则:首先抓住总的功能目标,然后逐层分解,
即先确定上层模块的功能,再确定下层模块的功能。
( 4)一致性原则:要保证整个软件设计过程中具有统一的规
范,统一的标准,统一的文件模式等等。
( 5)面向用户的原则,每个模块必须功能明确,接口明确,
坚决消除多重功能和无用接口。
2、程序设计的原理和结构 -内容
? 程序设计的一个重要课题就是模块划分和模块设计,
把开发的软件系统按功能逐次分割成层次结构,使每一
部分完成简单的功能且各个部分之间又保持一定的联系,
这种功能设计所包括的内容有:
? 采用某种设计原理和方法,将一个复杂的系统按功
能划分为成模块的层次结构;
? 确定每个模块的功能,建立与已确定的软件需求的
对应关系;
? 确定模块间的调用关系;
? 确定模块间的接口,设计接口的信息结构;
? 评估模块划分的质量及导出模块结构的规则。
2、程序设计的原理和结构 –模块化
? 模块的概念
? 在软件的体系结构中,模块是可组合、分解和更换的单元。程
序设计单元都被看成为“模块”,所谓模块就是程序对象的有
名字的集合,例如,过程、函数、子程序、宏等。
? 是指这样一组程序语句,它包括输入输出和逻辑处理功能.内
部信息及其运行环境。
( l)输入与输出。模块的输入来源和输出去向在正常的情况下
都是同一个调用者,即模块。从调用者处获得输入信息,经过
模块本身的处理后,再把输出返送给调用者。
( 2)逻辑功能。模块的逻辑功能描述了该模块能够做什么样的
事情,具备什么样的功能,即对于输入信息能够加工成什么样
的输出信息。
( 3)内部信息。模块的内部信息是指模块执行的和在模块运行
时所需要的属于该模块自己的数据。
( 4)运行环境。模块的运行环境说明了模块的调用与被调用的
关系。
2、程序设计的原理和结构 –模块化
? 模块化就是把程序划分成若干个模块,每个模块完成一个子功
能。然后把这些模块汇集起来组成一个整体(即系统),用以
完成指定功能的一种方法。
? 把软件划分成可单独设计、编码、测试和维护的模块,可以减
少开发软件的复杂性,从而提高生产率、可靠性和可维护性。
? 模块具有以下几种基本属性:
? 接口:指模块的输入与输出;
? 功能:指模块实现什么功能;
? 逻辑:描述内部如何实现要求的功能所需的数据和处理流
程;
? 状态:指该模块的运行环境,即模块的调用与被调用关系。
2、程序设计的原理和结构 –模块化
? 模块独立性是指它在一定抽象层次上的信息隐
藏。抽象帮助我们确定组成软件的过程(或信
息)实体,而信息隐藏则定义和实施了对模块
的过程细节和局部数据结构的存取限制。
2、程序设计的原理和结构 –模块化
? 模块的概念
? 一个模块的规模应当取决于它的功能和用途。
? 应减少接口的代价,提高模块的独立性。
? 模块的独立性可以由两个定性标准度量,这两个标准分别称为聚合和
耦合。
成本
(工作量 )
软件成本
接口成本最小区域
成本 /模
块
模块数
M
2、程序设计的原理和结构 –模块化
? 模块化的设计原则
? 设计时应该力求做到模块的高聚合
? 在耦合方式上降低模块间接口的复杂性
? 改进软件结构提高模块独立性
? 尽量减少高扇出结构
? 将模块的作用域保持在其控制域内
? 模块功能应该可以预测
? 设计单入口单出口的模块
2、程序设计的原理和结构 –结构化程序设计
? 结构化程序设计的模式
结构化程序设计的模式是以模块化的结构为
基本模式。
? 需求和求解的方法分离
? 把数据结构和算法集中在一个模块中
? 数据隐蔽在模块中,每个模块有二个接口,
模块的执行只能通过接口进行
? 模块在第一次使用前要初始化
2、程序设计的原理和结构 –结构化程序设计
? 结构化程序设计的内容
? 使用三种控制结构
? 逐步求精的设计方法
f
g
c
f g c
f
(c)(a) (b)
1=?
f1 f2 f3 fn
1 2 3 n
(d)
f
c
T
(e)
2、程序设计的原理和结构 –结构化程序设计工具
? 图
? 流程图
? 处理用四方形图表示
? 条件判断用菱形图表示
? 用连接线把这些图形连接起来表示处理的
流程
? 结构化图
N-S图 PSD图
2、程序设计的原理和结构 –结构化程序设计工具
过程
过程
过程
2过程1
值 2值 1值 2值 1
过程 过程 过程 过程 1
过程 1
过程 2
过程 1
过程 2
过程 1
过程 2
过程 1
过程 2
过程 1 过程 2
值 1 值 2
条件
过程 1 过程 2
过程 1
过程 2
值 1
条件
值 2
条件
控制
过程
控制
过程
控制
过程
控制 过程
控制 过程
控制 过程
条件
条件
条件
反复
(后判断 )
反复
(先判断 )
分支
连接
基本
HCPPADPSD( NS图)流程图要素
2、程序设计的原理和结构 –结构化程序设计工具
? 表
? HIPO图(层次图加输入 /处理 /输出图 )
HIPO图由下面三部分组成:
? H(分层)图。即以方框形式表示程序的主要功能、次要功能及其
与模块间的关系。
? 总览 IPO图。为 H图提供输入变量表、处理功能表和输出变量表。
? 详细 IPO图。为底层模块提供输入变量表、处理功能表和输出变量
表。
HIPO图是一种图解式设计工具。在概要设计、详细设计、程
序设计、测试和维护的不同阶段,都可以使用 HIPO图对设计进行
描述
2、程序设计的原理和结构 –结构化程序设计工具
班级号、学号
学生姓名
语、数、外
成绩
输入
显示处理
DB存在检查
处理 输出
DB
显示处理
显示处理
输入数据检查
DB登录
学生基本成绩表
班级号、学号
学生姓名
语、数、外
成绩
错误信息
不存在 存在
正确 不正确
2、程序设计的原理和结构 –结构化程序设计工具
? 判定表
? 在许多软件设计中,常常需要设计一个模块,根据 多种条件的
复杂组合,选择执行相应的动作,这种设计过程用判定表表示
比较合适。
? 判定表可作为输入数据,被直接读入机器,由“表驱动”算法
程序自动处理,
? 判定表的第一行是规则号,每一列对应一条处理规则,它根据
不同的条件组合选择执行相应的动作。为了能表示出总的控制
流程,单单用这个工具是不行的,还需加上其他信息。通常,
判定表可以有效地用来作为其他详细设计工具的补充。
判定表采用以下步骤进行处理:
? 列出与一个具体过程(或)有关的所有处理;
? 列出过程执行期间的所有条件(或所有判断);
? 将特定条件取值组合与特定的处理相匹配,消去不可能发生的条
件取值组合;
? 将右部每一纵列规定为一个处理规则。
2、程序设计的原理和结构 –结构化程序设计工具
条件
动作
输出平均成绩出错信息
输出基本成绩出错信息
输出学生成绩表正常数据
显示信息, 平均文件打开失败,
显示信息, 基本文件打开失败,
N平均成绩文件记录不存在
YY平均成绩文件记录存在
N基本成绩文件记录不存在
YY基本成绩文件记录存在
YYY平均成绩文件打开正常
Y平均成绩文件打开出错
基本成绩文件打开正常
Y基本成绩文件打开出错
654321规则号 →
2、程序设计的原理和结构 –面向对象的程序设计
面向对象的方法开始也只是着眼于编程,后来才形成了从
分析、设计到编程、测试与维护一整套的软件工程体系,即产
生了面向对象分析( OOA)、面向对象设计( OOD)、面向对
象编程( OOP)、面向对象测试( OOT)
? 面向对象程序设计的特征
? 面向对象的程序设计将计算看作是一个系统的开发过程,系统由对象
组成,经历一连串的状态变化以完成计算任务。
? 面向对象程序的基础构件是对象和类,从程序设计角度来看,对象是
一种不信赖于外界的模块,对应着存储器的一块被划分的区域。它包
含数据,在逻辑上包含作用于这些数据的过程,这些过程称为方法。
? 面向对象程序设计的基本机制是继承性、消息和方法,还有在特定方
面提供更为专门的、灵活的机制,如重置、多态等 。
结构化程序设计就是把内部设计中的功能模块的设计、功能模块间接口的
设计、数据库的定义等详细化的设计过程。而面向对象开发时,在 OOD阶段已
把各个类直到接口 (方法 )都已定义,程序设计的对象就如同结构化程序设计一
样就是进行类内部处理的详细化设计。
3、程序设计过程中的技术和管理
? 程序设计阶段的实施体制
A组组长 (GL)
项目经理 (Project Manager)
项目负责人 (Project Leader)
检查者 A 检查者 B
作成者 A1 作成者 A2 作成者 B1 作成者 B2 作成者 C1 作成者 C2 作成者 C2
检查者 C
B组组长 (GL)
A组,学生成绩管理 B组,教务管理
3、程序设计过程中的技术和管理
? 技术
? 遵守标准的公文格式
? 程序设计书的评审要点
? 管理
? 确定分割单位
? 设计书评审的体制
? 进度管理
程序设计书评审注意点
⊙ 设计者与评审者是不同的技术人员;
⊙ 在项目负责人,项目管理人确认之后必须严格保管;
⊙ 按修改的实际内容做准确的变更管理。
修正的内容概要
修正的日期
修正者的名字
4、程序设计书的构成和理解
,程序设计书主要内容, ( 交互式处理 )
○ 程序处理概要图
○ 程序概要说明书
○ 程序功能结构图
○ 程序追加处理说明书
○ 工作缓冲区格式定义表
○ 模块功能定义书
○ 模块功能定义书 (补充 )
○ 输入数据检查处理说明书
〈 参照以下基本设计资料 〉
○ 屏幕设计说明书
○ 报表/文件输出编辑说明书
○ DB设计说明书
○ 共通处理设计说明书
○ 公共子程序设计说明书
程序设计书
4、程序设计书的构成和理解
? 程序处理概要图 是内部设计阶段的成果文档,是程序设计阶段
的输入,他是程序设计书的重要内容,主要描述该程序单元的
处理概要,输入输出文件和屏幕、报表的关连图,给出了与该
程序相关的文件 ID、文件名称、屏幕 ID、名称、报表名称等。
? 程序处理概要说明书 也是内部设计阶段的成果文档,是程序设
计阶段的输入,是程序设计书的重要内容,它对于程序处理概
要图中的程序处理概要进行展开,给出了程序的各个功能模块
的处理概要说明,小型的或简单的程序可以从程序功能概要说
明书入手编写代码。
? 程序功能结构图 是程序设计阶段的成果文档,它是程序结构设
计的图形结果,在开发周期短,程序设计时间不足的情况下,
程序功能结构图可以省略。有程序功能结构图的情况下,要注
意编写的程序结构是否实现了程序功能结构图的要求。
? 程序追加处理说明书 是在程序概要说明书的基础上,对程序设
计阶段所增加的功能进行补充说明。在程序编码之前,一定要
注意确认程序追加处理说明书的功能是否能够实现,有无设计
上的问题或文字上的疏漏。
4、程序设计书的构成和理解
? 工作缓冲区格式定义表 给出了程序中使用的主要工作缓冲区和
变量的命名、类型、长度、初期值和编辑方法等说明。在理解
工作缓冲区格式定义表中的各个变量的定义时,一定要对照相
关的程序设计书的内容。
? 模块功能定义书 是在程序处理概要说明书的基础上对于每个程
序模块的实现方法进行了详细的说明,对于复杂的程序单元,
一定要注意理解各个模块功能定义书的详细处理说明。对于程
序设计阶段补充的功能模块和个别模块的补充功能,在模块功
能定义书 (补充 )中给出了详细说明。
? 输入数据检查处理说明书 主要说明屏幕输入项目的检查条件,
所有登录到数据库的数据都必须通过屏幕输入检查处理,以保
证用户数据的完整性和一致性。
5、程序设计实例
? 系统概要说明
本案例是一个学生成绩管理子系统。它包含学生基本成绩登录、学生平均成
绩计算、班级平均成绩计算、学生成绩表生成等 4个程序模块
基本成绩
登录画面
学生成绩管理子系统
学生基本成绩文件
学生平均成绩计算
( XSCJP001)学生基本成绩文件 学生平均成绩文件
学生成绩表生成
( XSCJP003)
班级平均成绩计算
( XSCJP002)学生基本成绩文件 班级平均成绩文件
学生平均成绩文件
学生基本成绩文件
学生成绩表文件
学生基本成绩登录
( XSCJP000)
5、程序设计实例
? 开发准备
? 确认基本 /详细设计的成本物;
? 制定工作计划,作出开发计划中日程表和开发计划小日程表;
? 确立开发体制(开发人员的构成和组织体制);
? 检查所制定的工作计划和工作内容
? 程序设计
“学生成绩管理系统流程图”的处理要求,该系统由四个处理模块构成,
它们是:
? ① 学生基本成绩登录;
? ② 学生平均成绩计算;
? ③ 班级平均成绩计算;
? ④ 学生成绩表生成。