




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件建模与文档写作第软件建模与文档写作第6 6章章 详细设详细设计计模块的界面设计直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命。软件系统的某些部分并不需要提供用户界面,这种模块无须考虑界面设计,与用户交互的模块必须考虑界面设计。1. 界面设计问题用户界面的设计,必须考虑4个方面的问题:系统响应时间、用户帮助设施、出错信息处理和命令交互。6.1.1 界面设计(1)系统响应时间系统响应时间是指从用户完成某个动作(按回车键或点击鼠标),到系统给出响应之间的时间间隔。系统响应时间不能过长或过短,应与用户的工作速度相适应;且响应时间应具有较低的易变性(偏差小),这样有利于用户建立稳定的工
2、作节奏。(2)用户帮助设施交互式系统的用户都需要帮助,当用户遇到问题可以查看用户手册以寻找答案。大多数现代软件都有联机帮助,用户可以不离开界面就能够自己解决大部分问题。6.1.1 界面设计(1)系统响应时间系统响应时间是指从用户完成某个动作(按回车键或点击鼠标),到系统给出响应之间的时间间隔。系统响应时间不能过长或过短,应与用户的工作速度相适应;且响应时间应具有较低的易变性(偏差小),这样有利于用户建立稳定的工作节奏。(2)用户帮助设施交互式系统的用户都需要帮助,当用户遇到问题可以查看用户手册以寻找答案。大多数现代软件都有联机帮助,用户可以不离开界面就能够自己解决大部分问题。帮助设施可以是与软
3、件集成在一起的,也可以是附加到软件中的。集成的帮助设施从一开始就设计在软件中,它通常对用户工作内容是敏感的;附加的帮助设施是在系统建成后再添加到软件中的。多数情况下它是一种查询能力有限的联机帮助手册。6.1.1 界面设计具体设计帮助设施时,必须解决下面的一系列问题。 用户与系统交互期间是否随时都能获得帮助?可以提供部分帮助或全部帮助信息。 用户如何请求帮助?可以是帮助菜单、特殊功能键或help命令。 如何显示帮助信息?可以在单独的窗口中指出某个参考文档,或者在屏幕上固定位置显示简短信息。 如何返回正常的交互方式?可以用屏幕上的返回按钮或功能键。 如何组织帮助信息?可以用平面结构(通过关键字访问
4、)、层次结构(用户可以在该结构中查找更详细的信息)或超文本结构。6.1.1 界面设计(3)出错信息处理出错信息或警告信息,是用户操作系统时软件系统给出的坏消息。有效的出错信息能够提高交互式系统的质量。出错信息或警告信息具有下列属性; 以用户可以理解的术语描述问题。 信息应该提供有助于从错误中恢复的建议; 信息应该指出错误可能导致的后果,以便用户检查是否出现这些问题,并再确实出现问题时予以改正。 信息应该伴随听觉或视觉的提示,如警告、光标闪烁或特殊颜色。6.1.1 界面设计(4)命令交互命令行是早期用户和系统软件交互的常用方式,现在面向窗口的、点击和拾取方式的界面已经减少了用户对命令行的依赖。但
5、是很多软件在提供窗口界面的同时,依然提供了面向命令行的交互方式供高级用户使用。提供命令行交付方式,应注意以下问题: 是否每个菜单选项都有对应命令。 采用何种命令方式。可以是控制序列、功能键或键入命令。 学习和记忆的难度。忘记了命令怎么办?。 是否可以定制或缩写命令。理想情况下,软件应该和所有其他的软件一样,有一致的命令使用方法。再很多软件中,界面设计者需要提供“命令宏机制”,这允许用户使用自定义名字代表一个命令序列。6.1.1 界面设计2.界面设计过程界面设计是一个迭代的过程。通常是先创建设计模型,再用原型实现这个设计模型,并由用户评估(或试用),评估可以是正式的或非正式的,然后根据用户的意见
6、进行修改,设计者根据用户意见修改设计并实现下一级原型。大多数情况下,原型系统都是界面原型。在某些迭代的开发过程中,界面往往和用例一起构成用户需求。为了支持界面设计的迭代过程,各种用于界面设计和原型开发的工具应运而生。这些工具被称为用户界面工具箱或用户界面开发系统,他们为简化窗口、菜单、设备交付、出错信息、命令以及交付环境的许多其他元素的创建提供了相应的例程和对象。6.1.1 界面设计3.界面设计指南用户界面设计更多的是依赖设计者的经验,总结以往经验而得到的设计指南,有助于指导设计者设计出友好高效的人机界面。(1)一般交互一般交互涉及信息显示、数据输入和整体系统控制,这些指南是全局性的。严格遵循
7、这些普遍性的设计规则,将避免设计界面中出现较大风险。6.1.1 界面设计 保持一致性。界面中的菜单选择、命令输入、数据显示,其他的功能使用一致的格式。 提供有益的视觉或听觉反馈。 破坏性动作之前要求用户确认。在执行删除文件、覆盖信息、终止程序运行等动作前要求用户确认。 提供UNDO或REVERSE命令,允许取消大多数操作。 减少操作之间需要记忆的信息。 提高动作的效率。尽量减少按键次数、鼠标移动距离。 允许犯错误,用户误操作不至于造成严重后果。 按功能对动作分类并设计屏幕布局。 提供对工作内容敏感的帮助设施。 使用简单的动词或者动词短语作为命令名。6.1.1 界面设计(2)信息显示)信息显示页
8、面显示的信息必须是准确而完整的,可以用多种方式来显示信息:如文字、图片和声音;位置、移动和大小;颜色、分辨率和省略。关于信息显示的设计指南如下: 只显示与当前工作内容有关的信息,无关的信息不显示。 使用用户友好的方式来表示信息,比如用图形或图表取代表格。 使用一致的标记、标准的缩写,和可预知的颜色。显示的含义应该非常明确,用户能够直观地理解。 允许用户保持可视化的语境。 产生有意义的出错信息。 使用大小写、缩进和文本分组等良好的布局和形式帮助用户理解。 使用窗口风格不同类型的信息。 使用直观的模拟显示方式表示信息,以使信息更容易被用户理解。 高效率使用显示屏。当使用多个窗口时,应该有足够的空间
9、使得每个窗口都显示一部分,且屏幕大小应该和应用系统的类型相匹配。6.1.1 界面设计(2)信息显示)信息显示页面显示的信息必须是准确而完整的,可以用多种方式来显示信息:如文字、图片和声音;位置、移动和大小;颜色、分辨率和省略。关于信息显示的设计指南如下: 只显示与当前工作内容有关的信息,无关的信息不显示。 使用用户友好的方式来表示信息,比如用图形或图表取代表格。 使用一致的标记、标准的缩写,和可预知的颜色。显示的含义应该非常明确,用户能够直观地理解。 允许用户保持可视化的语境。 产生有意义的出错信息。 使用大小写、缩进和文本分组等良好的布局和形式帮助用户理解。 使用窗口风格不同类型的信息。 使
10、用直观的模拟显示方式表示信息,以使信息更容易被用户理解。 高效率使用显示屏。当使用多个窗口时,应该有足够的空间使得每个窗口都显示一部分,且屏幕大小应该和应用系统的类型相匹配。6.1.1 界面设计(3)数据输入输入数据是用户与计算机系统交互的主要方式,目前键盘还是多数应用系统中的主要输入介质。数据输入的设计指南如下: 尽量减少用户输入动作。可以使用鼠标从预定义的一组输入中选择,用滑动标尺在给定的值域中指定输入值;把复杂的输入数据用宏表示。 保持数据输入和信息显示间的一致性。显示的视觉特征应该与输入域一致。 允许用户自定义输入。 交互应该是灵活的,可调整成用户最喜欢的输入方式。 当前语境中不会出现
11、的动作不可见或不可用。 用户可以自主控制交互流程。用户能够跳过必要的动作、改变所需做的动作的顺序、在不退出程序的情况下从错误中恢复。 所有的输入动作都提供帮助。 尽可能提供默认值,消除可能的冗余输入。6.1.1 界面设计模块/类方法是详细设计阶段应该完成的主要任务。模块/类方法设计不是具体的编写代码,而是设计出程序模块/类方法的蓝图,程序员将根据这个蓝图写出实际的程序代码。因此,模块/类方法设计的结果基本决定了最终程序代码的质量。衡量程序的质量,不仅要看它的逻辑是否正确,性能是否满足要求,更重要的是要看它是否容易阅读和理解。必须采用结构化的程序设计技术作为过程/类方法设计的逻辑基础。以保证正确
12、地实现每个模块的功能,以及设计出的过程尽可能简明易懂。从这里也可以看到,面向对象方法并不是完全抛弃了结构化方法,而是融合采用了结构化方法的长处。不同在于,结构化方法下,被模块操作“数据”一般来说都是外来的,而面向对象方法下,被类方法操作的“数据”主要是类对象本身的,当然也可以从外界以其他对象或变量的形式传递进来。6.1.2 模块/类方法设计模块/类方法结构通常以“独立功能、单出口、单入口”的原则进行设计,使用顺序、选择、循环三种基本结构来构建模块,并严格控制GOTO语句的使用。这样编出的程序在结构上具有以下效果: 以控制结构为单位,整个模块/类方法只有一个入口,一个出口,所以能独立地理解这一部
13、分。 能够以控制结构为单位,使得程序流程简洁、清晰,增强可读性。相关人员可以从上到下顺序地阅读程序文本。 由于程序的静态描述与执行时的控制流程容易对应,所以能够方便正确地理解程序/类方法的动作。 如果模块/类方法内部只允许使用顺序、IF-THEN-ELSE选择和DO-WHILE循环这3种基本控制结构,则称为经典的结构程序设计;如果除了上述3种基本控制结构之外,还允许使用DO-CASE多分支结构和DO-WHILE循环结构, 称为扩展的结构程序设计;如果再加上允许使用BREAK结构, 则称为成为修正的结构程序设计。6.1.2 模块/类方法设计6.2.1 程序流程图6.2.2 判定表6.2.3 判定
14、树6.2 详细设计的模型 程序流程图又称为程序框图,它是历史最悠久、使用最广泛、最直观的描述过程设计的方法,程序流程图的主要缺点如下。 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全部结构。 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。 程序流程图不易表示数据结构。6.2.1 程序流程图 6.2.1 程序流程图当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后即将介绍的过程设计语言(PDL)都不一清楚的描述。然而判断判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关
15、系。一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,左下部是和每种条件组合相对应的动作。6.2.2 判定表12345678国内乘客TTTTFFF头等舱TFTFTFT残疾乘客FFTTFFT行李重量 WTFFFFFFF免费x(W-30) X2x(W-30)X3x(W-30)X4xx(W-30)X6x(W-30)X8x(W-30)X12x6.2.2 判定表6.2.3 判定树判定表虽然能清晰的表示复杂的条件组合与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。此外,当数据元素的值多于
16、两个时,判定表的简洁程度也将下降。判定树是判定表的变种,他也能清晰的表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。6.2.3 判定树6.3详细设计方法面向数据结构的设计方法,如Jackson方法和Warnier方法,是详细设计中描述模块(或类方法)内部细节的主要方法。它们先想办法找出模块的数据结构,根据得到的数据结构,再设计其内部处理细节。6.3.1 Jackson方法方法6.3.2 Jackson方法下模块设计方法下模块设计6.3.3 面向对象方法下的类方法设计面向对象方法下的类方法设计6.3.1 Jac
17、kson方法每个模块都有自己的输入、输出和内部数据,这些数据都可能有独特的结构。数据结构影响程序的结构又影响程序的处理过程。比如,重复出现的数据通常由具有循环控制结构的程序段来处理;选择数据(其中包含可能出现、也可能不出现的部分)往往用带分支结构的程序段来处理;层次数据通常和使用这些数据的程序段的层次结构十分相似。Jackson方法使用面向数据结构的设计模块内部细节,首先需要分析确定数据结构,并且用适当的工具清晰的描绘数据结构,对不同的数据结构映射出对应的控制结构,最终可得到程序的内部细节。6.3.2 Jackson方法下模块设计1. 数据结构数据结构根据数据结构中内部元素彼此间的逻辑关系,可
18、以得到3种基本的逻辑数据结构:顺序,选择,重复。6.3.2 Jackson方法下模块设计1. 数据结构数据结构根据数据结构中内部元素彼此间的逻辑关系,可以得到3种基本的逻辑数据结构:顺序,选择,重复。6.3.2 Jackson方法下模块设计用Jackson图来表示数据结构有很多优点:便于表示层次结构,而且是对结构进行,自顶向下分解的有力工具;形象直观可读性好;请来表示数据结构,也能表示程序结构。需要注意的是,Jackson图和功能结构图的形式类似,都是体现包含关系。但功能结构图方框是模块,Jackson图中方框几条语句。6.3.2 Jackson方法下模块设计 2. 数据结构到程序结构的映射数
19、据结构到程序结构的映射Jackson结构程序设计方法通过把数据结构映射为程序结构,来获得程序的内部细节,基本过程如下:1)分析并确定输入数据、输出数据的逻辑结构,并用Jackson图描绘他们;2)找出输入数据结构输出数据结构之间有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(重复出现的数据单元要求有相同的重复的次数和次序);3)根据以下列出的各个规则从描绘数据结构的Jackson图映射出描述程序结构的Jackson图。6.3.2 Jackson方法下模块设计 为每对有对应关系的数据单元,按照他们在数据结构图中的层次,在程序结构图的相应层次画一个处理框;
20、如果这对数据单元所属层次不同,处理框层次取较低得那个层次; 根据输入数据结构中剩余每个数据单元所处层次,在程序结构图的相应层次分别为他们画上对应的处理框;根据输出数据结构中剩余每个数据单元所处层次,在程序结构图的相应层次分别为他们画上对应的处理框; 在导出程序结构图的过程中,由于改进的Jackson图规定在构成顺序结构中的元素,不能有重复出现或选择出身的元素,因此可能需要增加中间层次的处理框; 列出所有操作和条件(包括分支条件和循环结束条件),并且把他们分配到程序结构图中的适当位置; 把程序结构图转化为程序流程图(或N-S图,或PAD图),其中某些复杂的逻辑判别条件可以用判定表(或判定树)表示
21、; 用伪码表示程序。6.3.2 Jackson方法下模块设计6.3.3 面向对象方法下的类方法设计面向对象软件开发模式下,对象就是构成软件系统的基本单元,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的软件构成基本单元。对象是类的实例化,类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类实例中包含的数据进行操作。使用者无须知道这些操作的具体实现算法和类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持
22、了信息隐藏。对于类的使用者来说,属性的表达方法和操作的实现算法都应该是隐藏的。面向对象方法下,为保证信息隐藏,每个属性通过get/set类方法实现数据存取,对于只读属性,增加get方法;对只写属性,增加set方法;对可读可写属性,增加get和set方法;对于类中的其他一些方法,由于类所具有的封装特征,类方法往往只需关注类属性,很少对类外的数据进行操作,因此可以采用程序流程图来进行详细设计。6.4 程序实现 实现就是把软件设计的结果用某种程序设计语言表达出来。实现是设计的自然结果,程序的质量主要取决于软件设计的质量,但是选择的程序设计语言和编码风格,对于程序的可靠性、可读性,可测试性,可维护性有
23、极大的影响。6.4.1 程序设计语言选择6.4.2 编码风格6.4.1 程序设计语言选择总的来说,目标系统如果和底层硬件联系紧密、资源或时间限制严格,通常选择低级语言;否则通常选择高级语言。为了使程序容易测试和维护,选用的高级语言应该有理想的模块化机制、可读性好的控制结构和数据结构;为了便于调试和提高软件可靠性,语言特点应该是编译程序能够尽可能多的发现程序中的错误;为了降低软件开发和维护的成本,选用的语言应该有良好的独立编译机制,此外,还必须同时考虑使用方面的各种限制。用户要求和未来发展。运行环境。类库和软件工具(编码、编译)。工程规模与应用领域。可移植性要求。其他因素。6.4.2 编码风格良
24、好的程序书写习惯,可以提高程序的可读性、可维护性,同时还能提高团队开发的效率。在大型软件开发项目中,为了控制软件开发的质量,保证软件开发的一致性,需要遵循一定的编程风格。1. 源程序文档化源程序文档化源程序内部的文档,对提高程序的可读性,理解性都非常重要。程序的内部文档,包括恰当的标识符命名、有效地注释、良好的布局等等。 在模块的起始部分,对模块的详细信息进行说明,如模块的用途、参数描述、返回值描述、内部异常、模块实现人员和时间、模块修改人员和时间。 在模块的内部,对重要的代码进行解释,提高代码的可理解性。 标识符的命名应该望文生义,并遵循一定的命名规则。比如,缩写的使用、字母大小写的选择、常
25、量变量命名的区分等等。标识符不要过于相似,最好对其含义和用途有注释。 保证有良好的布局结构,体现程序的层次。恰当地使用空行、空格、缩进。6.4.2 编码风格2. 数据说明数据说明 进行数据说明时应遵循一定的次序,比如哪种数据类型的说明在前,哪种在后; 同一条语句中说明同一数据类型的多个变量时,一般按照字母顺序排列; 对复杂数据结构的数据,最好添加必要的注释。3. 语句构造语句构造 一行只写一条语句; 用缩进体现程序的层次结构; 独立功能的代码封装为独立的函数或公共过程; 避免使用go to语句; 复杂的算术或逻辑表达式,用括号来表达运算顺序; 避免使用多层嵌套语句; 避免使用复杂的判定条件。6
26、.4.2 编码风格4. 输入输出输入输出 所有的输入数据都要进行严格的检验; 为方便用户,输入数据的格式限制应尽量宽松,输入的操作应尽量简洁,步骤尽量少;允许默认的输入; 交互式的输入系统应该给予用户正确的提示; 设计良好的输出报表; 对输出数据添加必要的注释。5. 效率效率效率是对计算机资源利用率的度量,包括程序运行时间和存储器容量两个方面。良好的详细设计能够极大的提高源程序的效率。主要的方法有: 减少循环嵌套的层数; 将循环结构的语句用嵌套结构的语句来表示; 简化算术和逻辑表达式,尽量不使用混合数据类型的运算; 避免使用多维数组和复杂的表。6.5 调试 软件编写时不可避免会出现缺陷错误,调
27、试则是对缺陷错误进行确认、隔离和修复。调试工作很大程度上是一项技巧,因为有时错误的表现形式与其根本原因并没有明显联系,编程人员在调试的时候往往需要正确理解错误和修复错误,例如当前判断的原因是否正确;出现的错误是代码错误还是设计错误;是不是其他地方还有类似错误而未被发现等等。 软件调试费时费力,既有心理原因也有技术原因,例如: 错误可能是偶然出现,难以重现错误发生时的情景; 错误的外在表现和程序的内部结构和运行逻辑之间的关系往往并不明朗; 造成程序失效的根本原因可能不在于代码本身,也许是外部环境;6.5 调试 在调试过程中可以参照一些经验。 如一次只完成一个错误的调试,试图一次解决多个错误的做法往往会增加调试难度及时间; 充分利用编译器,不要写完大段代码后才进行编辑,这样难以进行错误定位,而且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务培训教材课件
- 腺病毒诊疗规范
- 法治教育的重要性与实施策略
- 水果运输司机劳务合同
- 2024温州市龙湾区职业技术学校工作人员招聘考试及答案
- 2024沈阳市辽中区职业教育中心工作人员招聘考试及答案
- 工程维护及保养合同2025
- 离婚合同签订时债权处理的五大要点
- 物业保安服务礼仪培训
- 共有产权房屋买卖合同
- 下肢动静脉溃疡的护理
- 照明维护方案
- 设备管理制度的风险评估与防范方案
- 办公楼装饰工程设计及施工招标文件室内装饰
- 半导体行业对国家国防战略的支撑与应用
- 2024年十堰市中小学教师职称晋升水平能力测试题附答案
- 智能点滴自动监控方法设计
- 特殊土地基处理措施课件
- 2023年中国海洋大学辅导员招聘考试真题
- 神经内科护理查房课件眩晕
- 框架结构房屋的流水施工
评论
0/150
提交评论