第三部分-软件设计与建模软件实现PPT课件_第1页
第三部分-软件设计与建模软件实现PPT课件_第2页
第三部分-软件设计与建模软件实现PPT课件_第3页
第三部分-软件设计与建模软件实现PPT课件_第4页
第三部分-软件设计与建模软件实现PPT课件_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程方法与实践 机械工业出版社 高等院校计算机课程案例教程系列 窦万峰编著 主讲 李淑sz013 主讲 曾joancn77 1 现代软件工程 国家示范性软件学院系列教材 张家浩 东南大学机械工业出版社2009 12 软件工程 理论与实践许家珆曾翎彭德中编著高等教育出版社2004 73 软件工程 实践者的研究方法 美 RogerS Pressman著郑人杰等译机械工业出版社2008 64 SoftwareEngineering 6thEditionSommerville I 影印版 机械工业出版社2003 4 主要参考书 总目录 第1章软件工程学概述 2学时 第2章软件过程 2学时 第3章软件过程模型 4学时 第4章案例研究 2学时 第5章软件需求分析过程 4学时 第6章结构化分析建模 4学时 第7章面向对象分析 6学时 第8章软件设计 4学时 第9章结构化设计方法 4学时 总目录 第10章面向对象设计 4学时 第11章软件实现 2学时 第12章软件测试 4学时 第13章软件维护 2学时 第14章软件项目管理 2学时 第15章软件项目估算 1学时 第16章软件项目计划与管理 1学时 第11章软件实现 11 1编码语言11 2编码风格11 3人机界面设计11 4案例分析11 5实验要求及习题 面向对象实现主要包括两项工作 1 把面向对象设计结果翻译成用某种程序语言书写的面向对象程序 2 测试并调试面向对象的程序 面向对象程序的质量基本上由面向对象设计的质量决定 所采用的程序语言的特点和程序设计风格也将对程序的可靠性 可重用性及可维护性产生深远影响 编码的目的 实现人和计算机的通信 指挥计算机按人的意志正确工作 编码的任务 把软件设计转换成计算机可以接受的程序代码 即写成以某一种程序设计语言表示的 源程序清单 写出的程序应当是结构良好 清晰易读 并且与设计相一致 具有良好的程序设计的风格 程序设计风格 人们在长期的编程实践中形成的一套独特的习惯做法和编程方式 11 1编码语言 编码的目的是实现人和计算机的通信 指挥计算机按人的操作意图正确工作 程序设计语言是人和计算机之间进行通信的最基本的工具 其特性会影响人的思维和解决问题的方式 分为两大类 低级语言 这两种语言都依赖于相应的计算机硬件 机器语言属于第一代语言汇编语言属于第二代语言高级语言 第三代程序设计语言利用类英语的语句和命令 尽量不再指导计算机如何去完成一项操作 如BASIC COBOL和FORTRAN等 第四代程序设计语言比第三代程序设计语言更像英语但过程更弱 与自然语言非常接近 它兼有过程性和非过程性的两重特性 如数据库查询语言 程序生成器等 面向机器语言面向机器语言包括机器语言 MachineLanguage 和汇编语言 AssembleLanguage 两种 机器语言是计算机系统可以直接识别的程序设计语言 机器语言程序中的每一条语句实际上就是一条二进制形式的指令代码 由操作码和操作数两部分组成 由于机器语言难以记忆和使用 通常不用机器语言编写程序 汇编语言是一种符号语言 它采用了一定的助记符来替代机器语言中的指令和数据 汇编语言程序必须通过汇编系统翻译成机器语言程序 才能在计算机上运行 汇编语言与计算机硬件密切相关 其指令系统因机器型号的不同而不同 由于汇编语言生产效率低且可维护性差 所以目前软件开发中很少使用汇编语言 高级语言高级语言中的语句标识符与人类的自然语言 英文 较为接近 并且采用了人们十分熟悉的十进制数据表示形式 利于学习和掌握 高级语言的抽象级别较高 不依赖于实现它的计算机硬件 且编码效率较高 往往一条高级语言的语句对应着若干条机器语言或汇编语言的指令 高级语言程序需要经过编译或解释之后 才能生成可在计算机上执行的机器语言程序 高级语言按其应用特点的不同 可分为通用语言和专用语言两大类 1 通用语言通用语言是指可用于解决各类问题 可广泛应用于各个领域的程序设计语言 从较早出现的基础语言Basic FORTRAN等 到后来出现的结构化语言P C等 再到现在被广泛使用的面向对象语言VisualC Java等都属于通用语言的范畴 2 专用语言专用语言是为了解决某类特殊领域的问题而专门设计的具有独特语法形式的程序设计语言 如专用于处理人工智能领域问题的LISP语言和PROLOG语言等 这些语言的共同特点是可高效地解决本领域的各种问题 但难以应用于其他领域 程序设计语言具有心理 工程和技术三大特性 1 心理特性程序体现的是编程者解决问题的思路 不同的人有不同的解题思路 同一个人在不同心理状态下的解题思路往往也会有所不同 所谓程序设计语言的心理特性 就是指能够影响编程者心理的语言性能 这种影响主要表现在以下三个方面 歧义性 简洁性 局部性和顺序性 程序设计语言的特性 1 歧义性歧义性指程序设计语言中的某些语法形式使不同的人产生不同的理解 如c语言中的表达式a c b有人理解为 a c b 有人却理解为a c b 当然 这只是由于某些人对语言中某些语法规则的不了解所导致的 对于语言编译系统来说只有确定的一种解释 2 简洁性简洁性指编程者要使用该语言所必须记住的各种语法规则 包括语句格式 数据类型 运算符 函数定义形式等 的信息量 需记忆的信息量越大 简洁性越差 人们掌握起来也就越难 但若程序设计语言的语法成分太少 过于简洁 又会给阅读程序带来麻烦 不利于人的理解 因此对于一个好的程序设计语言来说 既应具有一定的简洁性 又要具有较高的可理解性 3 局部性和顺序性局部性是指语言的联想性 即相关内容的相对集中性 在编程过程中 我们将实现某一功能的语句集中书写在一个模块中 由模块组装成完整的程序 并要求模块具有高内聚 低耦合的特点 其目的就是希望加强程序的局部性 顺序性指语言的线性特征 例如 对于顺序结构的程序人们很容易理解 而如果程序中存在大量的分支结构和循环结构 人们理解起来就比较困难了 语言的局部性和顺序性是由人类习惯于用联想的方式及按逻辑上的线性序列记忆事物的特性所决定的 局部性和顺序性的加强可提高程序的可理解性 2 工程特性程序设计语言所应具备的工程特性 语言的工程特性主要体现在以下几个方面 可移植性 语言编译器的实现效率 开发工具的支持 可维护性 1 可移植性可移植性反映了程序在不同机器环境下的通用性和适应性 不同机器环境包括不同的机型 不同的操作系统版本及不同的应用软件包 若一个程序可不加修改或稍加修改就可以应用于不同的机型 运行于高版本的操作系统或集成到不同的应用软件包中 则称这个程序具有较高的可移植性 2 语言编译器的实现效率不同语言的编译器在将源程序代码翻译成目标代码的过程中 由于编译程序设计质量的不同导致生成的目标代码的大小和执行效率不尽相同 为了获得高效率的目标代码 选择语言时应充分考虑到语言编译器的实现效率 3 开发工具的支持为了缩短编码阶段所花费的时间以及提高编码的质量 应选择具有良好开发工具支持的程序设计语言 这些开发工具主要包括 编译程序 连接程序 交互式调试器 交叉编译器 图形界面及菜单系统生成程序 宏处理程序等 4 可维护性程序的维护是软件工程活动中的一项重要内容 为了提高程序的可维护性 即方便对源程序的修改 程序中采用的语言必须具有良好的可读性和易于使用的特点 3 技术特性在确定了软件开发项目的需求后 根据项目的特性选择具有相应技术特性的程序设计语言对保证软件的质量具有非常重要的作用 不同的语言具有不同的技术特性 例如 有的语言提供了丰富的数据类型或复杂的数据结构 有的语言具有很强的实时处理能力 有的语言可方便的实现大量数据的查询及增 删 改的功能 根据语言的技术特性为项目选择合适的程序设计语言 不但可以使编写的程序很好地满足项目的要求 而且对后期的测试和维护工作也是非常有益的 编码语言特性 心理特性语言的心理特性是指影响程序员心理的语言性能 包括歧义性 简洁性 局限性和顺序性 传统性 工程特性从软件工程的观点 编码语言的特性着重考虑软件开发项目的需要 因此对编码有如下要求 可移植性 开发工具的可利用性 软件的可复用性 可维护性 技术特性语言的技术特性对软件工程各阶段都有影响 特别是当确定了软件需求之后 编码语言的技术特性就显得非常重要了 要根据项目的特性选择相应特性的语言 面向对象语言的特点 分类 一类是纯面向对象语言 如Eiffel 其注重OO方法及快速原型的实现 另一类是混合型面向对象语言 也就是在过程语言的基础上增加面向对象机制 如C 其目标是提高运行速度及使传统程序员容易接受OO思想 成熟的面向对象语言都提供丰富的类库和强有力的开发环境 超链接 2010年8月编程语言排行榜 面向对象语言的特点 支持类与对象 垃圾 回收机制 Java C 一般 特殊结构的名字冲突 重名问题 实现属性和服务 动态联编 动态联编 指应用系统在运行过程中 当需要执行一个特定服务时 选择实现该服务的适当算法的能力 类型检查 强类型与弱类型 类库 包容类 接口类 GUI类 选择语言时不能只考虑理论上的标准 而是要同时兼顾理论标准和实用标准 下面分别简要地对选择语言的主要理论标准和实用标准进行介绍 编码语言的选择 1 理论标准1 理想的模块化机制 易于阅读和使用的控制结构及数据结构2 完善 独立的编译机制 完善的编译系统可尽可能多地发现程序中的错误 便于程序的调试和提高软件的可靠性 并且可以使生成的目标代码紧凑 高效 独立的编译机制便于程序的开发 调试和维护 可以降低软件开发和维护的成本 2 实用标准从以下方面来说明 系统用户的要求 工程的规模 软件的运行环境 可以得到的软件开发工具 软件开发人员的知识 软件的可移植性要求 软件的应用领域 1 系统用户的要求由于用户是软件的使用者 因此软件开发者应充分考虑用户对开发工具的要求 特别是当用户要负责软件的维护工作时 用户理所应当地会要求采用他们熟悉的语言进行编程 2 工程的规模语言系统的选择与工程的规模有直接的关系 例如 Foxpro与Oracal及Sybase都是数据库处理系统 但Foxpro仅适用于解决小型数据库问题 而Oracal和Sybase则可用于解决大型数据库问题 特别是在如果工程的规模非常庞大 并且现有的语言都不能完全适用时 为了提高开发的效率和质量 就可以考虑为这个工程设计一种专用的程序设计语言 3 软件的运行环境软件在提交给用户后 将在用户的机器上运行 在选择语言时应充分考虑到用户运行软件的环境对语言的约束 此外 运行目标系统的环境中可以提供的编译程序往往也限制了可以选用的语言的范围 4 可以得到的软件开发工具由于开发经费的制约 往往使开发人员无法任意选择 购买合适的正版开发系统软件 此外 若能选用具有支持该语言程序开发的软件工具的程序设计语言 则将有利于目标系统的实现和验证 5 软件开发人员的知识软件开发人员采用自己熟悉的语言进行开发 可以充分运用积累的经验使开发的目标程序具有更高的质量和运行效率 并可以大大缩短编码阶段的时间 为了能够根据具体问题选择更合适的语言 软件开发人员应拓宽自己的知识面 多掌握几种程序设计语言 6 软件的可移植性要求要使开发出的软件能适应于不同的软 硬件环境 应选择具有较好通用性的 标准化程度高的语言 7 软件的应用领域任何语言编译系统设计的出发点都有所不同 其对某一领域问题的处理能力也就存在较大差异 因此不存在真正适用于任何应用领域的语言 通用语言也不例外 如FORTRAN语言最适用于工程科学计算 java语言最适用于处理网络编程中的问题 所以 选择语言时一定要充分考虑到软件的应用领域 编码语言的选择 为使程序容易测试和维护以减少软件的总成本 所选用的高级语言应该有理想的模块化机制 以及可读性好的控制结构和数据结构 为便于调试和提高软件可靠性 应该使编译程序能够尽可能多地发现程序中的错误 为降低软件开发和维护的成本 选用的高级语言应该有良好的独立编译机制 实用标准语言自身的特性软件的应用领域软件开发的环境软件开发的方法算法和数据结构的复杂性软件可移植性要求软件开发人员的知识 面向对象设计的结果既可以用面向对象语言 也可以用非面向对象语言实现 使用面向对象语言时 由于语言本身充分支持面向对象概念的实现 因此 编译程序可以自动把面向对象概念映射到目标程序中 使用非面向对象语言编写面向对象程序 则必须由程序员自己把面向对象概念映射到目标程序中 从原理上说 使用任何一种通用语言都可以实现面向对象概念 选择编程语言的关键因素 是语言的一致的表达能力 可重用性及可维护性 一致的表示方法面向对象开发基于不随时间变化的 一致的表示方法 这种表示方法应该从问题域到OOA 从OOA到OOD 最后从OOD到面向对象编程 OOP 始终稳定不变 一致的表示方法既有利于在软件开发过程中始终使用统一的概念 也有利于维护人员理解软件的各种配置成分 面向对象语言的优点 可重用性为了能带来可观的商业利益 必须在更广泛的范围中运用重用机制 而不是仅仅在程序设计这个层次上进行重用 随着时间的推移 软件开发组织既可能重用它在某个问题域内的OOA结果 也可能重用相应的OOD和OOP结果 面向对象语言的优点 可维护性尽管人们反复强调保持文档与源程序一致的必要性 但是 在实际工作中很难做到交付两类不同的文档 并使它们保持彼此完全一致 特别是考虑到进度 预算 能力和人员等限制因素时 做到两类文档完全一致几乎是不可能的 维护人员最终面对的往往只有源程序本身 在选择编程语言时 应该考虑的首要因素 是在供选择的语言中哪个语言能最好地表达问题域语义 一般说来 应该尽量选用面向对象语言来实现面向对象分析 设计的结果 面向对象语言的优点 11 2编码风格 良好的程序设计风格对保证程序质量的重要性 良好的程序设计风格对面向对象实现来说尤其重要 不仅能明显减少维护或扩充的开销 而且有助于在新项目中重用已有的程序代码 良好的面向对象程序设计风格 既包括传统的程序设计风格准则 也包括为适应面向对象方法所特有的概念而必须遵循的一些新准则 编码风格指一个人编制程序时所表现出来的特点 习惯 逻辑思路等 良好的编码风格可以减少编码的错误 减少读程序的时间 从而提高软件的开发效率 良好的编码风格体现在源程序文档化 数据说明 语句构造 输入和输出及对效率的追求等几个方面 编码风格编码风格是指在不影响程序正确性和效率的前提下 有效编排和合理组织程序的基本原则 良好编码风格主要表现 可读性好 易测试 易维护 编码风格的好坏直接影响着整个软件开发中成本耗费的多少 特别是在需要团队合作开发大型软件的时候 编码风格显得尤为重要 我们将从以下几个方面来说明编码风格 内部文档 标识符的命名及说明 语句的构造及书写 输入 输出 1 内部文档所谓内部文档 是指程序中的说明性注释信息 在程序中加入注释信息的目的是为了提高程序的可读性 为程序的测试和维护带来方便 几乎所有的程序设计语言中都提供了专用于书写注释信息的注释语句 为了使程序易于阅读和修改 应在必要的地方加上相应的注释 在修改程序时 不要忘记对相应的注释也要进行修改 程序中的注释一般可按其用途分为两类 序言性注释和描述性注释 编码风格 1 序言性注释序言性注释一般位于模块的首部 用于说明模块的相关信息 主要包括 对模块的功能 用途进行简要说明 对模块的界面进行描述 如调用语句的格式 各个参数的作用及需调用的下级模块的清单等 对模块的开发历史进行介绍 如模块编写者的资料 模块审核者的资料及建立 修改的时间等 对模块的输入数据或输出数据进行说明 如数据的格式 类型及含义等 编码风格 2 描述性注释描述性注释位于源程序模块内部 用于对某些难以理解的语句段的功能或某些重要的标识符的用途等进行说明 通过在程序中加入恰当的描述性注释可以大大提高程序的可读性和可理解性 对语句的注释应紧跟在被说明语句之后书写 注意 并不是对所有程序中的语句都要进行注释 太多不必要的注释反而会影响人们对程序的阅读 6 2 1编码风格 2 标识符的命名及说明编程者随心所欲地进行标识符的命名和说明 可能就会给阅读程序带来麻烦 1 标识符的命名为了便于阅读程序时对标识符作用进行正确的理解 标识符的命名应注意以下几个问题 编码风格 1 选用具有实际含义的标识符 如用于存放年龄的变量名最好取age 用于存放学生信息的数组名最好取student 若标识符由多个单词构成 则每个单词的第一个字母最好采用大写或单词间用下划线分隔 以利于对标识符含义的理解 2 为了便于程序的输入 标识符的名字不宜过长 通常不要超过八个字符 特别是对于那些对标识符长度有限制的语言编译系统来说 取过长的标识符名没有任何的意义 如在FORTRAN77中 通常编译系统可以区分的标识符长度不超过六个字符 3 为了便于区分 不同的标识符不要取过于相似的名字 如student和students 很容易在使用或阅读时产生混淆 2 标识符的说明由于程序中通常需要使用大量不同类型的标识符 为了使说明部分阅读起来更加清晰 在对其进行类型说明时应注意以下几点 1 应按照某种顺序分别对各种类型的变量进行集中说明 如 先说明简单类型 再说明指针类型 再说明记录类型 对简单类型的变量进行说明时 可先说明整型 再说明实型 再说明字符型等等 2 在使用一个说明语句对同一类型的多个变量进行说明时 应按照变量名中的字母顺序 a z 对其进行排列 3 语句的构造及书写语句是构成程序的基本单位 语句的构造方式和书写格式对程序的可读性具有非常重要的决定作用 1 语句构造 1 语句应简单直接 避免使用华而不实的程序设计技巧 如为了求出x y两个数中的较大数 以下两个C语句均可实现 方法一 max x y abs x y 2 方法二 max x y x y 显然 方法二的可读性要比方法一好得多 2 对复杂的表达式应加上必要的括号使表达更加清晰 如C语言中判断闰年的表达式若写为 year 400 0 year 4 0 year 100 0 则比不加括号时看起来清晰得多 3 由于人的一般思维方式对逻辑非运算不太适应 因此在条件表达式中应尽量不使用否定的逻辑表示 如Pascal中的条件表达式not x 5 and x10 则更加直观和清晰 4 为了不破坏结构化程序设计中结构的清晰性 在程序中应尽量不使用强制转移语句GOTO 5 为了便于程序的理解 不要书写太复杂的条件 嵌套的重数也不宜过多 6 为了缩短程序的代码 在程序中应尽可能地使用编译系统提供的标准函数 对于程序中需要重复出现的代码段 应将其用独立模块 函数或过程 实现 例如 重构 2 书写格式为了便于人们对程序 特别是大型程序 的阅读 清晰整齐的书写格式是必不可少的 以下列出了书写程序时需注意的几个主要问题 1 虽然许多语言都允许在一行上书写多个语句 但为了程序看起来更加清楚 最好在一行上只书写一条语句 2 在书写语句时 应通过采用递缩式格式使程序的层次更加清晰 3 在模块之间通过加入空行进行分隔 4 为了便于区分程序中的注释 最好在注释段的周围加上边框 4 输入 输出输入 输出的方式往往是用户衡量程序好坏的重要指标 为了使程序的输入 输出能便于用户的使用 在编写程序时应对输入和输出的设计格外注意 1 输入在运行程序时 原始数据的输入工作通常要由用户自己完成 为了使用户能方便地进行数据的输入 应注意以下六点 6 2 1编码风格 1 输入方式应力求简单 尽量避免给用户带来不必要的麻烦 如 尽可能采用简单的输入格式 尽可能减少用户的输入量 2 交互式输入数据时应有必要的提示信息 3 程序应对输入数据的合法性进行检查 4 若用户输入某些数据后可能会产生严重后果 应给用户输出必要的提示并在必要的时候要求用户确认 5 当需要输入一批数据时 不要以记数方式控制数据的输入个数 而应以特殊标记作为数据输入结束的标志 6 应根据系统的特点和用户的习惯设计出令用户满意的输入方式 2 输出用户需要通过程序的输出来获取加工的结果 为了使用户能够清楚地看到需要的结果 设计数据输出方式时应注意以下几点 1 输出数据的格式应清晰 美观 如对大量数据采用表格的形式输出 可以使用户一目了然 2 输出数据时要加上必要的提示信息 例如 表格的输出一定要带有表头 用以说明表格中各项数据的含义 6 2 1编码风格 软件的 高效率 即用尽可能短的时间及尽可能少的存储空间实现程序要求的所有功能 是程序设计追求的主要目标之一 一个程序效率的高低取决于多个方面 主要包括需求分析阶段模型的生成 设计阶段算法的选择和编码阶段语句的实现 正由于编码阶段在很大程度上影响着软件的效率 因此在进行编码时必须充分考虑程序生成后的效率 软件效率的高低是一个相对的概念 它与程序的简单性直接相关 不应因过分追求高效率而忽视了程序设计中的其他要求 一定要遵循 先使程序正确 再使程序有效率 先使程序清晰 再使程序有效率 的准则 软件效率的高低应以能满足用户的需要为主要依据 在满足以上原则的基础上 可依照下述方法来提高程序的效率 软件效率 1 用于提高运行速度的指导原则为了提高程序的运行速度 应尽量避免和简化复杂的运算 为此应遵循以下原则 1 编写程序之前 先对需要使用的算术表达式和逻辑表达式进行化简 2 尽可能多地采用执行时间短的算术运算 3 尽量避免使用多维数组 指针和其他复杂的数据类型 4 尽量采用整型算术表达式和布尔表达式 软件效率 5 尽可能减少循环体 特别是内循环中语句的个数 6 尽量使同一表达式中的数据类型保持统一 需要特别强调的是 应尽量避免不同类型数据的比较运算 因为这样有可能导致程序运行出错 7 应当对所有的输入和输出安排适当的缓冲区 以减少频繁通信所带来的额外开销 软件效率 2 用于优化存储空间使用的指导原则 1 对于变动频繁的数据最好采用动态存储 2 可根据需要采用存储单元共享等节约空间的技术 3 选用具有紧缩存储器特性的编译程序 在必要时甚至可采用汇编语言 4 采用结构化程序设计 将程序划分为大小合适的模块 一个模块或若干个关系密切的模块的大小最好与操作系统页面的容量相匹配 以减少页面调度的次数 提高存储效率 软件效率 编码的基本原则 源程序文档化数据说明语句构造满足工程学输入 输出风格效率理解 提高程序效率的根本途径在于选择良好的数据结构与算法 而不是靠编程时对语句做调整 面向对象编码原则 提高可复用性软件复用 SoftWareReuse 是将已有软件的各种有关知识用于建立新的软件 以缩减软件开发和维护的花费 软件复用的级别 1 代码的复用 2 设计结果的复用 3 分析结果的复用 4 测试信息的复用 面向对象编码原则 提高可复用性减小方法的规模 提高方法的内聚方法的一致性策略与实现分开 一类是做出决策方法 提供变量 并且管理全局资源 称为策略方法 另一类是完成具体的操作方法 但却并不作出是否执行这个操作的决定 也不知道执行这个操作的愿意 称为实现方法 覆盖全面少用全局信息利用继承机制 面向对象编码原则 提高可扩充性封装实现策略减小方法的规模少使用多分支语句 合理利用多态精心设计公有方法提高健壮性健壮性是指软件对于规范要求以外的输入情况的处理能力 健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求 并能有合理的处理方式 预防用户错误操作不要预先确定限制条件先测试后优化 11 3人机界面设计 人机界面设计的任务 就是根据对用户在使用交互式系统时的所作所为 或者是用户想象中的所作所为 或者是他人想象中用户的所作所为的抽象 创建或导出一致的表示界面 设计人机界面要充分考虑到人的因素 如用户的特点 用户怎样学会与系统交互工作 用户怎样理解系统产生的输出信息以及用户对系统有什么期望等 考虑界面的风格 可用的软 硬件技术及应用本身产生的影响 人的因素 人的因素主要包括 人对感知过程的认识用户的技能和行为方式用户所要求完成的整个任务以及用户对人机界面部分的特殊要求 人对感知过程的认识 设计用户界面时要充分考虑人的视觉 触觉 听觉的作用 人机界面中的字体 大小 位置 颜色 形状等都会直接影响信息提取的难易程度 很好地表示可视信息是设计友好界面的关键 在设计人机界面时不要用户记住复杂的操作顺序 设计人机界面时应便于用户积累有关交互工作的经验 注意启发式策略的一致性 不宜受特殊交互的影响 如undo exit等有统一的含义 位置和表示 用户的技能和行为方式 用户本身的技能 个性上的差异 行为方式的不同 都可能对人机界面造成影响 不同类型的人对同一界面的评价也不同 终端用户的技能直接影响他们从人机界面上获取信息的能力 影响交互过程中对系统作出反应的能力 以及使用启发式策略与系统和谐地交互的能力应根据用户的特点设计人机界面 用户类型 外行型 初学型 熟练型 专家型 人机界面风格 第一代 命令和询问方式的界面正文形式的通信 通过用户命令和用户对系统询问的响应来完成 由于使用正文通信 因此用户容易出错 界面不友善 难以学习 第二代 简单的菜单式界面与第一代界面相比不易出错 但使用起来乏味 逐层进行不能一步到位 第三代 窗口 图标 菜单 指示器四位一体的界面能同时显示不同种类的信息 可在多个窗口中切换 通过下拉式菜单可方便地执行控制型和对话型任务 引入图标 下拉式菜单 按钮和滚动杆技术 可减少键盘输入 提高交互效率 第四代 第三界面与超文本 多任务概念相结合的界面 用户可同时执行多个任务 语言界面 根据语言的特点命令语言界面可分为 形式语言 这是一种人工语言 特点是简洁 严密 高效 不仅是操纵计算机的语言 而且是处理语言的语言 自然语言 特点是具有多义性 微妙 丰富 类自然语言 这是计算机语言的一种特例 命令语言要求惊人的记忆和大量的训练 并且容易出错 使入门者望而生畏 但比较灵活和高效 适合于专业人员使用 图形用户界面 图形用户界面 GUI GraphicsUserInterface 是当前用户界面的主流 当前各类图形用户界面的共同特点是以窗口管理系统为核心 使用键盘和鼠标器作为输入设备 窗口管理系统除基于可重叠多窗口管理技术外 广泛采用的另一核心技术是事件驱动技术 图形用户界面和人机交互过程极大地依赖视觉和手动控制的参与 因此具有强烈的直接操作特点 图形用户界面 图形用户界面中菜单的表现形式比字符用户界面更为丰富 在菜单项中可以显示不同的字体 图标甚至产生三维效果 使用菜单界面 用户只需确认而不需回忆系统命令 从而大大降低记忆负荷 但菜单的缺点是灵活性和效率较差 可能不十分适合于专家用户 基于图形用户界面的优点是具有一定的文化和语言独立性 并可提高视觉目标搜索的效率 其主要缺点是需要占用较多的屏幕空间 并且难以表达和支持非空间性的抽象信息的交互 直接操纵 Directmanipulation 用户界面 直接操纵用户界面更多地借助物理的 空间的或形象的表示 不是单纯的文字或数字的表示 从用户界面设计者角度看 设计图形比较因难 需大量的测试和实验 复杂语义 抽象语义表示比较困难 不容易使用户界面与应用程序分开独立设计 总之 直接操纵用户界面不具备命令语言界面的某些优点 多媒体用户界面 多媒体用户界面被认为是在智能用户界面和自然交互技术取得突破之前的一种过渡技术 多媒体技术引入了动画 音频 视频等动态媒体 特别是引入了音频媒体 从而大大丰富了计算机表现信息的形式 拓宽了计算机输出的带宽 提高了用户接受信息的效率 多媒体用户界面丰富了信息的表现形式 但基本上限于信息的存储和传输方面 并没有理解媒体信息的含义 从而也限制了它的应用场合 多通道用户界面 80年代后期以来 多通道用户界面 MultimodalUserInterface 成为人机交互技术研究的崭新领域 在国际上受到高度重视 多通道用户界面综合采用视线 语音 手势等新的交互通道 设备和交互技术 使用户利用多个通道以自然 并行 协作的方式进行人机对话 通过整合来自多个通道的精确的和不精确的输入来捕捉用户的交互意图 提高人机交互的自然性和高效性 人机界面 Human ComputerInterface 设计是接口设计的一个重要的组成部分 对于交互式系统来说 人机界面设计和数据设计 体系结构设计及过程设计一样重要 人机界面的设计质量 直接影响用户对软件产品的评价 从而影响软件产品的竞争力和寿命 在有关界面设计的著作中 TheoMandel创造了三条黄金原则 1 置用户于控制之下 2 减少用户的记忆负担 3 保持界面一致 黄金规则1 置用户于控制之下 Mandel定义的一组允许用户操作控制的原则 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式提供灵活的交互允许用户交互可以被中断和撤消当技能级别增加时可以使交互流水化并允许定制交互使用户隔离内部技术细节设计应允许用户和出现在屏幕上的对象直接交互 黄金规则2 减少用户的记忆负担 Mandel定义了一组设计原则 使界面能够减少用户记忆负担 减少对短期记忆的要求建立有意义的缺省定义直觉性的捷径界面的视觉布局应该基于真实世界的隐喻以不断进展的方式揭示信息 黄金规则3 保持界面一致 用户应以一致的方式展示和获取信息所有可视信息的组织均按照均按照贯穿所有屏幕显示所保持的设计标准输入机制被约束到有限的集合 在整个应用中被一致地使用从任务到任务的导航机制被一致地定义和实现Mandel定义了一组帮助保持界面一致性的设计原则允许用户将当前任务放入有意义的语境在应用系列内保持一致性如过去的交互模型已建立起了用户期望 除非有迫不得已的理由 不要改变它 在设计人机界面的过程中 几乎总会遇到下述4个问题 1 系统响应时间 2 用户帮助设施 3 出错信息处理 4 命令交互最好在设计初期就把这些问题作为重要的设计问题来考虑 这时修改比较容易 代价也低 用户界面设计是一个迭代的过程 为了支持迭代过程 各种用于界面设计和原型开发的软件工具应运而生 这些工具被称为用户界面工具箱或用户界面开发系统 它们为简化窗口 菜单 设备交互 出错信息 命令及交互环境的许多其他元素的创建 提供了各种例程或对象 1 可使用性 使用简单 用户界面中所用术语的标准化和一致性 具有HELP功能 快速的系统响应和低的系统成本 具有容错能力2 灵活性 考虑用户的特点 能力 知识水平 提供不同的系统响应信息 提供根据用户需求制定和修改界面 3 界面的复杂性与可靠性复杂性 界面规模及组织的复杂程度 应该愈简单愈好 可靠性 指无故障使用的时间间隔 用户界面应该能够保证用户正确 可靠地使用系统及程序 数据的安全 用户界面应具有的特性 用户界面设计的任务 这部分工作应该与软件需求分析同步进行 包括以下内容 1 用户特性分析 用户模型了解所有用户的技能和经验 针对用户能力设计或更改界面 从以下方面分析 用户类型 外行型 初学型 熟练型 专家型 用户特性度量 与用户使用模式和用户群体能力有关 包括 用户使用频度 用户用机能力 用户的知识 思维能力等 2 用户界面的任务分析 任务模型 DFD图 是对系统内部活动的分解 不仅要进行功能分解 用DFD图描述 还要包括与人相关的活动 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论