教案
2009—2010学年第一学期
课程名称______ _ 软件工程导论 _____
授课对象___ 08软件工程1、2、3班_ __
授课教师 _______ 马 丽______ ______
职___ 称__ ______ 副教授_________ _
教材版本_ 软件工程导论 张海藩著
参 考 书_ 软件工程 齐治昌等编著
平顶山学院教务处印制
教案纸
第六章_ 详细设计 | ||
教学目标与要求 | 1、了解结构程序设计,掌握过程设计的工具和面向数据结构的设计方法,并能在实际开发软件的过程中应用所学到的方法。 2、掌握人机界面的设计中需要解决的问题,并能将所学知识应用在实训课程中。 | |
教学重点与难点 | 重点:人机界面设计过程和实现原则、过程设计的工具、面向数据结构的设计方法 难点:判定表、Jaclson方法 | |
教学过程设计 | 新课导入、案例教学、课堂提问、课堂讨论、课堂练习、作业讲评。 | |
教学方法 | 以多媒体讲授为主,适当结合提问、设问、练习、讨论等方法。 | |
教学课时 | 8课时(不含实验课时)。 | |
6.1 结构程序设计 一、结构程序设计的三种基本的控制结构
二、结构程序设计的概念
6.2 人机界面设计
一、人的因素 l 人对感知过程的认识,包括视觉、阅读时的认知心理、记忆、归纳与演绎推理等; l 用户已有的技能和行为方式; l 用户所要求完成的整个任务以及用户对人机交互部分的特殊要求。 1_ 人类感知基础 感官是人类认知客观世界的初始通道。因此,设计人机界面要充分考虑视觉、触觉和听觉的作用,这样才能使用户有效地从系统获取信息,并存入记忆中,并通过大脑用归纳和演绎的方法进行推理。 大多数人机界面都在可视介质上实现,此时,用户总是眼脑并用,并根据所显示的内容、体积、形状、颜色、方向、移动和其他表现解释所获可视信息。如何表示这些可视信息是设计“友好”界面的关键。 2_ 用户的技能 3_ 任务与用户的特殊要求 n 通信型任务(communication task):使信息从生产者传递到使用者的活动。 n 对话型任务(dialogue task):使用户能指挥和控制与系统交互的活动。 n 认知型任务(cognitive task):获得信息即可执行的活动,或与系统功能关联的活动。 n 控制型任务(control task):允许用户对信息及其他任务处理的顺序进行控制的活动。 具体开发这些任务时,将用到用户界面设计技术——任务分析和建模。 二、_ 人机界面风格 1、第一代界面——命令和询问方式。 ___ 通信完全以正文形式并通过用户命令和用户对系统询问的响应来完成。 缺点:易出错、不友好,且不易于学习。 2、第二代界面——简单的菜单式 缺点:这种方式与命令行方式相比不易出错,但使用起来仍然乏味。 3、第三代界面——面向窗口的点选界面point and pick interface)亦称为WIMP界面, 即:窗口(windows)、_______________ _______ 图标(icons)、_____________________ _______ 菜单(menus)、_________________ _______ 指示器(pointing device) 第三代界面的优点 n 能同时显示不同种类的信息,使用户可在几个工作环境中切换而不丢失几个工作之间的联系,窗口使用户能自如地执行许多通信型和认知型任务。 n 用户通过下拉式菜单(pull‑down menu)可方便地执行控制型和对话型任务。 n 引入图标、下拉式菜单、按钮和滚动条技术,可大大减少键盘输入,这对那些不精于打字的用户无疑提高了交互效率,极大地推动了计算机应用。 4、第四代界面:
三、_ 人机界面设计过程 人机界面设计过程可分为下面几个步骤: 1)创建系统功能的外部模型; 2)确定为完成此系统功能人和计算机应分别完成的任务; 3)考虑界面设计中的典型问题; 4)借助CASE工具构造界面原型; 5)实现设计模型; 6)评估界面质量。 1、界面设计的有关模型 在人机界面的设计过程中先后涉及四个模型: n 由软件工程师创建的设计模型(design model), n 由人机工程师(或软件工程师)创建的用户模型(user model), n 终端用户对未来系统的假想(system perception或user's model) n 系统实现后得到的系统映象(system image)。 一般来说,这四个模型之间差别很大,界面设计时要充分平衡四者之间的差异,设计协调一致的界面。 总之,只有了解用户、了解任务,才能设计出好的用户界面。 2_ 任务分析与建模 n 任务分析有两种途径。 u 一种是从实际出发,通过对原有处于手工或半手工状态下的应用系统的剖析,将其映射为在人机界面上执行的一组类似的任务。 u 另一种是通过研究系统的需求规格说明,导出一组与设计模型、用户模型和系统假想相协调的用户任务。 n 任务分析采用的技术: u 逐步求精技术——可把任务不断划分为子任务,直至对每个任务的表达都十分清楚。 u 面向对象分析技术——可识别出与应用有关的所有客观的对象以及与对象关联的动作。 n 界面设计首先要完成下列工作: 确定任务的目标和含义; u 将每个目标/含义映射为一系列特定动作; u 说明这些动作将来在界面上执行的顺序; u 指明各个系统状态,即上述各动作序列中每个动作在界面上执行时界面呈现的形式; u 定义控制机制,即便于用户修改系统状态的一些设置和操作; u 说明控制机制怎样作用于系统状态; u 指明用户应怎样根据界面上反映出的信息解释系统的状态。 3_ 界面设计的一般问题 必须考虑四个方面: ________ 系统的响应时间; _________ 用户求助机制; _________ 错误信息处理; ________ 命令方式。 4_ 实现工具 用户界面设计是一个迭代过程,直至与用户模型和系统假想一致为止。 为支持这种迭代式设计,大量的用户界面快速原型工具涌现出来: ___ 用户界面工具箱(user interface toolkits)或用户界面开发系统(user interface development systems)。 这些工具通过提供现成的模块和对象,包括窗口、菜单、设备交互、出错信息和命令等。 四、_ 人机界面实现的原则与标准 1_ 一般可交互性 提高可交互性的措施: u 在同一用户界面中,所有的菜单选择、命令输入、数据显示和其他功能应始终保持同一种形式和风格; u 通过向用户提供视觉和听觉上的反馈,保持用户与界面间的双向通信; u 3.对所有可能造成损害的动作,坚持要求用户确认,例如,提问“你确实要删除…?”; u 对大多数动作应允许恢复(UNDO); u 尽量减少用户记忆的信息量; u 提高对话、移动和思考的效率,即最大可能地减少击键次数,缩短鼠标移动的距离,避免使用户产生无所适从的感觉; u 用户出错时采取宽容的态度; u 按功能分类组织界面上的活动; u 提供上下文敏感的求助系统; u 用简短的动词和动词短语提示命令。 2_ 信息显示 信息显示的形式和方式的一些原则: u 仅显示与当前上下文有关的信息; u 采用简单明了的表达方式,避免用户置身于大量的数据中; u 采用统一的标号、约定俗成的缩写和预先定义好的颜色; u 允许用户对可视环境进行维护,如放大、缩小图象; u 只显示有意义的出错信息; u 用大、小写,缩进和按意群分组等方法提高可理解性; u 用窗口(在适合的情况下)分隔不同种类的信息; u 用“类比”手法,生动形象地表示信息; u 合理划分并高效使用显示屏。 3_ 数据输入 数据输入的一般准则: n 尽量减少用户输入的动作; n 保证信息显示方式与数据输入方式的协调一致; n 允许用户定做输入格式; n 采用灵活多样的交互方式,允许用户自选输入方式; n 隐藏当前状态下不可选用的命令; n 允许用户控制交互过程; n 为所有输入动作提供帮助信息; n 去除所有无实际意义的输入,尽量采用缺省值。 4_ 人机界面标准 最通用的界面标准是X?Windows系统,它定义了人机界面设计的语法和语义,提供了一套用于创建显示(display)、窗口(window)和图形(graphics)的工具,以及有关资源处理(resource handling)、设备交互(device interaction)和事件处理(event handling)的一套协议。 6.3 过程设计的工具 描述程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言3类。 一、_ 图形表示法 1.流程图(也称为程序框图)是最常用的一种表示法, “顺序”、“分支”和“循环”三个基本控制构件用流程图表达的形式如图所示。
程序流程图虽然比较直观,灵活,并且比较容易掌握,但是它的随意性和灵活性却使它不可避免地存在着一些缺点: n 由于程序流程图的特点,它本身并不是逐步求精的好工具。因为它使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的全局结构; n 程序流程图中用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制; n 程序流程图在表示数据结构方面存在不足。 练习1:给出一个程序流程图,让学生读出程序的功能
2、盒图 1973年,Nassi和Shneiderman提出了盒图,又称为N-S图或Chapin图。每个处理步骤都用一个盒子来表示,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图可以在一张纸上容纳下就行。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。 在课件上给出盒图的基本符号。 练习2:用盒图表示练习1中的程序结构。 第一步:先学生先将练习1中的两个条件分支转化成对应的盒图。 第二步:将练习1中的循环结构转化继盒图对应的结构 第三步:将上面两步合并,生成系统的总结构图(如下)
N-S图有以下一些特点: n 功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很直观地从N-S图上看出来; n 它的控制转移不能任意规定,必须遵守结构化程序设计的要求; n 很容易表现嵌套关系,也可以表示模块的层次结构。 3、PAD图 PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。下面给出PAD图的基本符号。
PAD图的优点:6点省略 二、_ 判定表与判定树 当模块中包含复杂的条件组合,并要根据这些条件的组合选择动作时,只有判定表和判定树能够清晰地表达出复杂的条件组合与各种动作之间的对应关系。 1、判定表由四部分组成: 左上部——列出所有条件; 左下部——列出所有可能的动作; 右上部——所有可能的条件组合(矩阵); 右下部——条件组合与动作之间的对应关系。 判定表的每一列可解释为一条处理规则。 2、判定树 判定树是判定表的变种,它也能清楚地表示复杂的条件组合与应做的动作之间的对应关系。 3例子: 例1:问题处理描述:耗电记费系统可以采用固定价格收费、浮动价格收费和其他方式收费三种方式。若采用固定价格方式收费,对每月耗电100kW?h以下的用户只征收最低标准费,超过100kW?h的用户按价格表A收费;若采用浮动价格方式收费,则每月耗电100kW?h以下的用户按价格A收费,超过100kW?h的用户按价格B收费。 分析:先画条件再画动作 判定表:
判定树:省略
例6.2:某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。 试画出判定表和判定树。
例6.3:假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法。 试画出判定表和判定树。
由上面的例子总结出判定树的优缺点。 优点:形式简单,直观明了,易于掌握。 缺点: u 存在着数据冗余的问题,相同的数据元素往往要重复多次,而且越接近树的叶端重复的次数越多。 u 判定树要求对条件进行层次划分,若条件所处层次不对,可能会导致增加判定树的复杂性。
三、_ 过程设计语言(PDL) 1、PDL概念 PDL(Procedure Design Language)也称为结构英语或伪码,是所有正文形式的过程设计工具的统称。 PDL经常表现为一种“混杂”的形式,允许自然语言(如英语)的词汇与某种结构化程序设计语言(如Pascal、C、Ada等)的语法结构交织在一起 2、PDL应具有下述特点: n 关键字采用固定语法并支持结构化构件、数据说明机制和模块化; n 处理部分采用自然语言描述; n 允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构; n 子程序的定义与调用规则不受具体接口方式的影响。 3、PDL的基本成分:(重点,补充知识) 子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和I/O结构。 4、例子: 某公司有200名职工,公司拟为每名职工增加工资,具体增加办法为:年工资超过36000元者工资不变,其他人员增加工资算法是为其每个赡养人(包括本人)每年补助150元,此外每年工龄增加100元,但是增加后的年工资不能超过36000元。每们职工的数据存贮于磁盘文件上,包括职工姓名,年工资额S,赡养人数N和工龄数Y。要求更新磁盘文件的工资额,并打印出下列形式的工资表。 姓名 原工资 现工资 张三 36000 36000 李四 24000 36000 … 程序的伪码如下: 打开文件 打印表头 I 1 while(I<=200) do ____ 读一个工资记录 if S<36000_ then __________ s’=s+150.N+100.Y ________ if S>36000_ then ___________ S’=36000 ________ end if ________ 用S‘更新工资文件中的S ______ end if _______ 在表格中打印一行 ____ End do ___ 关闭文件
5、 PDL优缺点: n 可以作为注释直接插在源程序中间 n 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。 n 已经有自动处理程序存在,而且可以自动由PDL生成程序代码。 n PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。
6.4__ 面向数据结构的设计方法 面向数据结构的设计方法,也就是根据数据结构设计程序处理过程的方法。 面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程。___ Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法,使用面向数据结构的设计方法,当然首先需要分析确定数据结构,并且用适当的工具清晰地描绘数据结构。 一、Jackson图 1、Jackson图标示方法
2、Jackson图的优点: u Jackson图不仅便于表示层次结构,而且也有利于对结构自顶向下分解; u Jackson图形象直观,可读性好; u Jackson图不仅能表示数据结构,也能表示程序结构 3、Jackson图的缺点: 在选择结构和重复结构中,选择条件或循环结束条件不能直接在Jackson图中表示出来。这样就影响了图形的表达能力,也不利于直接把图翻译成程序。 4、改进的Jackson图
二、Jackson程序设计方法 例1:高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。 Jackson程序设计方法由五个步骤组成: 第一步_ 数据结构表示 对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构。 第二步__ 找出输入数据结构和输出数据结构的对应关系 找出输入数据结构和输出数据结构中有对应关系的数据单元,即有直接因果关系、在程序中可以同时处理的数据单元。 第三步_ 确定程序结构图 根据三个原则确定,此处省略 第四步___ 列出并分配所有操作和条件 列出所有操作和条件(包括分支条件和循环结束条件),并把它们分配到程序结构图的适当位置。 第五步___ 用伪码表示程序_ Jackson方法中使用的伪码与Jackson图是完全对应的。针对三种基本程序结构,有相对应的Jackson伪码。 (1)顺序结构 A_ seq B C D A_ end (2)选择结构 A_ select_ condition1 B A_ or_ condition2 C A_ or_ condition3 D A_ end (3)重复结构 A_ iter_ until(或while)_ condition B A_ end
用Jackson伪码描述的程序: 产生新文件_ seq 打开两个输入文件 从输入文件中各读一条记录 分析考生记录iter_ until文件结束 处理考生记录_ seq 产生准考证号 产生姓名 产生通讯地址 产生考分 生成一条新记录 将新记录写入输出文件 从输入文件中各读一条记录 处理考生记录_ end 关闭全部文件 停止 产生新文件_ end
例2:一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。 由上面给出Jackson程序设计方法由五个步骤完成例子。具体步骤省略 例3:用Jackson图描绘下述的一列火车的构成。学习辅导P63第15题 练习:请用Jackson数据结构图表示Pascal文件结构: type persons=record ____________________ age: integer; _____________________ sex: (male,female); _____________________ case t of _____ ____________________ 1:_ factory; _____ ______________________ 2:_ office; _____ ______________________ 3:_ administration _________________________ end; ______________________ end; ___ var ______________ thefile:file of persons;
答案:
补充知识:6.5_ 设计规格说明与评审 软件设计阶段的输出主要是设计规格说明书,本节给出设计规格说明的10节内容,并给出一个设计规格说明书示例。 6.6 程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值,使用得比较广泛的有McCabe方法和Halstead方法。 对课后习题作提示 | 进行正题之前先补充讲解“详细设计的任务与原则”由此引出结构设计结构
do-until、do-case控制结构
由现在应用的许多软件比如上期学过的Java引出人机界面设计。
本节讨论人的因素、人机界面风格、人机界面设计过程和人机界面实现的原则。
对这三个方面进行阐述
让学生讨论自己将如何表示这些信息.
学生讨论:什么样的界面用户比较喜?由此引出下面的问题
每种界面格式举例说明
四位一体,形成桌面
给出HCI的全称 Human Computer Interface:
对每个模型进行介绍
先引导同学对每个方面进行理解,然后结合学生的讨论对每个方面进行阐述
让学生讨论提高可交互性的措施,然后再归纳总结
让同学们列出输入设备
对每一项进行阐述
让学生回忆C语言中的程序流程图的的画法,由此 引入程序流程图中使用的符号
让学生回忆在哪种语言的学习中用到过盒图
可引导学生一个一个分支画
根据上面的讲解和练习,让学生总结N-S图的特点,然后归纳。
阐述每个优点 本章重点和难点
对照判定表的组成部分,引导学生画出判定表
判定树的简浩程序受分枝次序的影响 主要让学生练习,老师引导 并改变判定树分枝的不同顺序,比较画出的判定树。
经过前面两个例子的讲解让学生自己画出判定表和判定树
对基本成分的每个部分进行详细说明
先让学生试着用伪码写程序
本章重点内容
让学生解释优点的第三条
由缺点引出改进的Jackson图
通过例子引出Jackson程序设计方法的步骤
对5个步骤讲解,先给出原理,先后 引导学生画图
给出每种结构对应的伪码,然后让学生写伪码程序
多引导少指导
以学生为中心,多引导少指导
练习目的是把学过的知识和本节内容联系起来
本节知识主要是为学生的实训服务
| |
小结:过程设计应该在数据设计、体系结构设计和接口设计完成之后进行,它的任务是设计解题的详细步骤(即算法),它是详细设计阶段应完成的主要工作。过程设计的工具可分为图形、表格和语言3类,这3类工具各有所长,读者应该能够根据需要选用适当的工具。 | ||
作业:P140 习题6 3、4、7、8 |