260 likes | 445 Views
软 件 工 程. 第 16 章 构件级设计. 第 16 章 构件级设计. 16.1 结构化程序设计 16.1.1 图形设计符号 16.1.2 表格设计符号 16.1.3 程序设计语言 16.1.4 一个 PDL 实例 16.2 设计符号的比较 16.3 小结. 第 16 章 构件级设计. 构件级设计也称为过程设计,它在数 据设计、体系结构设计和接口设计完 成之后进行。其意图是将设计模型翻 译为可运行的软件 。. 16.1 结构化程序设计. 逻辑构成的元素是结构化程序设计的基础, 这些逻辑构成元素包括有:.
E N D
软 件 工 程 第16章 构件级设计
第16章 构件级设计 16.1 结构化程序设计 16.1.1 图形设计符号 16.1.2 表格设计符号 16.1.3 程序设计语言 16.1.4 一个PDL实例 16.2 设计符号的比较 16.3 小结
第16章 构件级设计 构件级设计也称为过程设计,它在数 据设计、体系结构设计和接口设计完 成之后进行。其意图是将设计模型翻 译为可运行的软件。
16.1 结构化程序设计 逻辑构成的元素是结构化程序设计的基础,这些逻辑构成元素包括有: • 顺序:实现了任何算法规约中的核心处理步骤; • 条件:允许根据逻辑情况选择处理的方式; • 重复:提供了循环。
16.1.1 图形设计符号 流程图中,方框表示处理步骤,菱形表示逻辑条件, 箭头表示控制流。 • 顺序由两个表示处理的方框以及连接两者的控制线表示 • 条件也称if-then-else结构,菱形表示; • 重复 结构化的构成元素可以相互嵌套 • { do-while结构 repeat-until结构
嵌套构成的 流程图示例
盒状图称N—S图,或Chapin图 盒状图的特征: • 功能域 • 不允许随意的控制流 • 局部、全局数据的作用域很容易确定 • 表示递归很方便
16.1.2 表格设计符号 开发决策表的步骤: 1.列出与特定过程(或模块)相关的动作 2.列出执行该过程时的所有条件(或决策) 3.将特定的条件组合与特定的动作相关联,消除不可能的条件组合;或者找出所有可能的条件排列。 4.定义规则,指出一组条件应对应哪个或哪些动作
16.1.3 程序设计语言 程序设计语言(PDL)也称为结构化的英 语或伪码,是“一种混合语言,采用一 种语言的词汇(即英语)和另一种语 言的语法(即一种结构化编程语言)”
设计语言必须有以下特征: • 有为结构化构成元素、数据声明和模块化特征提供的固定的关键词语法; • 是自由的自然语言语法,能用以描述处理特性; • 数据声明机制应既可以说明简单数据结构(如标量和数组),也可以声明复杂数据结构(如链表和树); • 支持各种接口描述的子程序定义和调用技术
基本的PDL语法: • 子程序定义 • 接口描述 • 数据声明 • 针对块构成元素、条件构成元素、重复构成元素和I/O构成元素的技术
16.1.4 一个PDL实例 以前面提到的SafeHome安全系统的构件设计 为例: • SafeHome系统监控火、烟、盗贼、水(洪水)和温度(比如冬天房主外出时炉子熄火)等;产生报警信号;调用监控服务,发出合成的语音信息。
PDL定义了“安全监控”过程的设计 PROCEDURE security.monitor; INTERFACE RETURNS system.status; TYPE signal IS STRUCTURE DEFINED nameIS STRING LENGTH VAR; address IS HEX device location; bound.value IS upper bound SCALAR; message IS STRING LENGTH VAR; END signal TYPE;
TYPE system.statusISBIT(4); TYPE alarm.type DEFINED smoke.alarm ISINSTANCEOFsignal; fire.alarm IS INSTANCE OF signal; water.alarm IS INSTANCE OF signal; temp.alarm ISINSTANCEOFsignal; burglar.alarm IS INSTANCEOFsignal; TYPE phone.number IS area code+7-digit number; · ·
initialize all system ports and reset all hardware; CASE OF control.panel.switches(cps): WHEN cps=“test”SELECT CALL alarm PROCEDURE WITH“on” for test.time in seconds; WHEN cps=“alarm-off” SELECT CALL alarm PROCEDURE WITH“off”; WHEN cps=“new.bound.temp” SELECT CALL keypad.inputPROCEDURE; WHEN cps=“burglar.alarm.off” SELECT deactivate signal[burglar.alarm]; DEFAULT none; ENDCASE
REPEATUNTILactivate.switchis turnedoff reset all signal.values and switches; DO FOR alarm.type=smoke,fire,water,temp,burglar; READ address[alarm.type]signal.value; IF signal.value>bound [alarm.type] THEN phone.message=message[alarm.type]; set alarm.bell to“on” for alarm.timeseconds; PARBEGIN CALL alarm PROCEDURE WITH“on”,alarm.time in seconds; CALL phone PROCEDURE WITH message[alarm.type], phone.number; ENDPAR ELSE skip ENDIF ENDFOR ENDREP END security.monitor
注意到, security.monitor过程的设 计者采用了一个新的结构: PARBEGIN…ENDPAR,它表示并行的块, 其中的所有任务都以并行方式执行
16.2 设计符号的比较 设计符号应有的特性: • 模块性 • 整体简单性 • 易编辑性 • 机器可读性 • 可维护性 • 结构增强性 • 自动处理能力 • 数据表示 • 逻辑验证 • “面向代码”能力
16.3 小结 设计符号体系和结构化编程概念结合使得设计者可以用易于翻译成代码的方式表示过程细节 有图形、表格和文字三种符号体系用于表示设计。