西安交通大学 刘海岩 1
第 4章 软件设计
软件设计概述
软件体系结构
优秀设计的概念
传统的结构化设计
用户界面设计
构件级设计西安交通大学 刘海岩 2
4.1 软件设计概述
1、软件设计中的主要活动软件设计是将软件需求转换为软件表示的过程,是构造和验证软件所需的三项技术活动(设计、编码、测试)
之一。设计过程主要有以下活动:
( 1) 数据设计,将分析时创建的信息域模型( ERD、
DD)转换成软件构件级的数据结构和应用级的数据库体系结构。
为满足当今企业对大中型规模的业务信息的需求,遍历现存的数据库以试图抽取合适的业务级信息而产生了 数据挖掘技术 。由于多个数据库结构不同、库中信息命名格式及详细程度不同以及许多其他因素造成了数据挖掘的困难,需建立不同于一般数据库的大的 数据仓库,存放 以主要业务主题进行组织 的,展示统一定义标准 的并在 较长时间内保持稳定 的数据。
西安交通大学 刘海岩 3
( 2)体系结构设计,定义软件系统的整体组织结构,
有时称为软件系统设计。指系统中有哪些主要结构性元素,以什么样的模式连接,互相之间如何交互以及它们的接口。设计体系结构的作用:
便于理解和沟通
便于组织开发
便于扩展
便于重用
( 3)接口设计,描述软件内部、软件与协作系统之间以及软件与人之间如何通信。一个接口意味着信息流
(如数据、事件)和特定的行为类型。
( 4)构件级设计,对体系结构中的结构性元素进行过程性描述(包括算法)并设计构件的接口。
西安交通大学 刘海岩 4
2、软件设计文档设计阶段的一个重要产品就是描述所构建的系统的文档。
主要内容,
前言:系统目标;主要需求
数据设计 用一系列图形和符
体系结构设计 号描述系统、界面
接口设计(人机交互、外部接口) 和构件的结构,包
每个模块(或构件)的过程性设计 括各级抽象。
集成测试策略
设计约束
需求交叉引用表
参考文献
附录文档中还可以包含描述系统如何运行的操作手册,以及出错后系统的重新配置或特定的安全措施。
西安交通大学 刘海岩 5
4.2 软件体系结构
1、什么是软件体系结构随着软件系统越来越大、越来越复杂,软件设计的核心已经转移到新的计算模式,非传统的“程序=算法+数据结构”,新的模式就是系统总体结的设计和规范。
软件体系结构 (Architecture)为软件系统提供了一个结构、行为和属性的高级抽象。由构成系统的元素(构件)
的描述、这些元素的相互作用、指导元素集成的模式以及模式的约束组成。
软件体系结构不仅指出了系统的组织结构和拓扑结构,
并显示了系统需求和构成系统元素之间的对应关系,提供了一些设计决策的基本原理。
西安交通大学 刘海岩 6
软件体系结构的模型有下列几种:
结构模型,是构件、连接件(定义构件之间交互规则、消息协议的构造模块)有组织的集合。反映系统的重要语义内容,包括系统的配置、约束等。
框架模型,与结构模型类似,不侧重细节,侧重于系 统的整体结构(模式)。
动态模型,补充模型,强调系统的行为性质。
过程模型,注重系统系统必须适应业务和技术的过程。
功能模型,一组功能构件按层次组成,下层向上层提供服务,是一种特殊的框架模型。
西安交通大学 刘海岩 7
这些模型可用语言( ADL)描述,也可用图形( UML)
描述。
Bass等人对软件体系结构的定义强调了软件构件 的角色。 构件 (component),具有明确功能并可以分离出来的软件或硬件。在体系结构设计的语境内,一个 软件构件 可以是简单的程序模块,如:源程序文件、可执行文件,也可以扩展到包括数据库以及网络配置中的“中间件”。构件间的关系可以简单地从一个模块到另一个模块的过程调用,
也可以是复杂的数据库访问协议。
西安交通大学 刘海岩 8
2、体系结构的风格体系结构风格也是构造的一种模式 (Pattern),类似于建筑行业中的建筑风格,是描述某一特定应用域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性。
研究 体系结构风格的意义,
有利于发现不同系统在较高级别上的共同特性。
对体系结构的了解,使得在设计软件结构时选择合适的模式,进行正确地设计。
使用常用的、规范的模式来组织结构,使别的设计者易于理解、便于交流。
有利于较高级别上的软件复用。判断能否在不同的软件系统中使用同一体系结构。
Garlan和 Shaw(1996)对体系结构的分类如下:
西安交通大学 刘海岩 9
数据流风格,批处理序列;管道 /过滤器
调用 /返回风格,主程序 /子程序;面向对象风格;层次结构
仓库风格,数据库系统;超文本系统;黑板系统
虚拟机风格,解释器
独立构件风格,进程通信;基于事件系统介绍几种主要的体系结构风格:
( 1)仓库风格基于一个共享数据库的系统模型。(见下图)
西安交通大学 刘海岩 10
数据为中心的体系结构仓库系统中有两类构件:中心数据存储构件及对中心数据进行各种操作的一组构件集。中心数据存储与外部构件集之间的信息交互是该模式的至关重要的问题,
系统承担的功能不同,信息交互的方式也不同。
西安交通大学 刘海岩 11
传统数据库系统中,中心数据存储是被动的数据库,
系统由输入流的事务指令触发相应进程执行。在黑板系统中,中心数据存储的状态控制了进程的触发,即控制完全由黑板的状态驱动,当有特别的数据可用时,会主动通报外部构件(人工智能技术)。黑板系统的典型应用是信号处理和模式识别系统。许多其他系统也组织成仓库模式,如 CASE工具集、可复用构件库、大型数据库和搜索引擎等。
( 2) 管道-过滤器风格把系统看作是对相继输入数据的一系列变换。一批数据进入系统,流经一个个构件最后到达终点(输出或数据仓库)。构件称为过滤器,能够对数据进行渐进式的转换(一种流变换为另一种流)。数据流的通路称为管道。(见下图 )
西安交通大学 刘海岩 12
西安交通大学 刘海岩 13
该风格中的过滤器是独立的,不与其他过滤器共享数据,
不知道其他过滤器的存在或功能。系统输出的正确性不取决于所用过滤器的顺序。
该风格的典型应用是 UNIX的 shell、传统的数据处理、传统的编译器、数字通信(传递文字、语音、图片、图像等)
系统。
优点,
没有复杂的构件交互。
支持软件重用:由管道连接起来的过滤器的组合又可看成一个过滤器,可应用到其他系统中。
易于维护:过滤器替换方便。
支持并行执行过滤器,但要考虑并行执行时数据流之间的同步问题。
缺陷,
批处理方式,不适合构建交互式应用的系统。
西安交通大学 刘海岩 14
( 3)调用-返回风格是一种集中式控制模型。自上而下的调用,控制始于结构层次的顶层,往往只有一个控制线程。优点是容易分析与理解系统的控制流,但不适合并发执行的系统。
西安交通大学 刘海岩 15
( 4)面向对象风格面向对象模式集数据抽象、抽象数据类型、类继承为一体,根本出发点是追求问题空间和软件系统空间结构的一致性。它将自己的数据结构定义和功能实现封装起来,
实现了信息隐藏和数据抽象,可作为基本构件单元被不同软件系统重用。
优点,
高度模块性。对象是一个功能和数据独立的单元,相互之间只有通过消息传递进行通讯,可以较为方便的为各个不同的软件系统所用。
封装功能。为信息隐藏提供具体的实现手段,外部不必知道对象的内部状态,只需了解其功能描述就可使用。
代码共享。继承性提供了一种代码共享的手段,可以避免重复的代码设计,提高软件的可重用性。
西安交通大学 刘海岩 16
灵活性。对象的功能执行是在消息传递时确定的,支持对象的主体特征,使得对象可以根据自身的特点进行功能实现。
易维护性。对象实现了抽象和封装功能,使其中可能出现的错误限制在自身,不会向外传播,易于检错和修改。
可扩充性。面向对象系统可通过继承机制不断扩充功能。
不足:
如果一个对象需要调用另一个对象,它就必须知道那个对象的标识(对象名或其他标识符),增强了对象之间的依赖关系。如果一个对象改变了自己的标识,就必须通知系统中所有和它有调用关系的对象。
这种显式调用方式可能有副作用。例如,如果 A使用了对象 B,C也使用了对象 B,那么,C对 B的使用(引起状态改变)可能造成的对 A的影响。
西安交通大学 刘海岩 17
( 5)层次式风格系统采用层次化的组织方式构建,系统中的每一层都要承担两个角色:
为结构中的上层提供服务;
作为结构中下层的客户,调用下层提供的功能函数。
最内层完成最基本的公用操作,向外各层逐渐进行功能扩展。在大多数分层系统中,各层仅和自己相邻层次交互信息。在一些特定情况下,内部层次也可能会开放一些服务供其他层次调用。这样,分层系统中的各个组件在不同层次上形成了不同功能级别的虚拟机( Virtual Machine),各虚拟机之间通过系统设计时约定的协议进行通讯。一个概念上的分层模型如下图所示。
西安交通大学 刘海岩 18
该模型最典型的应用如网络通讯系统的设计,在这一应用领域中,
每一层提供一个抽象的功能,作为上层通讯的基础,较低的层次定义低层的交互,最低层次通常只定义硬件物理连接。
西安交通大学 刘海岩 19
优点:
支持基于抽象程度递增的系统设计,可将一个复杂的系统按功能递增的步骤进行分解。
具有较好的可扩展性。每一层功能的改变最多影响相邻上下层。
支持软件复用。只要提供的服务接口不变,同一层的不同实现可以交换使用。因此可定义一组标准接口,
允许有多种不同的实现方法。
不足,
并不是所有系统都会适用分层模式来描述。即使可从逻辑上对系统功能进行分层,出于性能考虑,设计者不得不将逻辑上高层次的功能和低层次上的具体实现紧密结合,加大了不同层次间的耦合度。
西安交通大学 刘海岩 20
( 6)基于事件的隐式调用风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播 (broadcast)一个或多个事件
(在“源对象”和“监听者对象”之间,某种状态发生变化的传递机制)。其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
从体系结构上说,这种风格的构件是一些模块,
这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。
西安交通大学 刘海岩 21
基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样就不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。
支持基于事件驱动的应用系统如 JavaBean,将一些构件作为事件源,发出被描述环境或其他构件接受的事件,不同的构件在构造工具内组合在一起,构件之间通过事件传递进行通信,构成一个应用)。类似的还有:在编程环境中用于集成各种工具,在数据库管理系统中确保数据的一致性约束,
在用户界面系统中管理数据,以及在编译器中支持语法检查。
优点:
为软件重用提供了强大的支持。当需要将一个构件加入现存系统中,只需要将他注册到系统的事件中。
为改进系统带来了方便。当用一个构件代替另一个构件时,只需将它注册到系统的事件中。
西安交通大学 刘海岩 22
缺点:
构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其它构件是否会影响它。而且即使它知道事件注册了哪些构件的构成,它也不能保证这些过程被调用的顺序。
数据共享的问题。有时数据被一个事件传递,基于事件的系统必须依靠一个共享的数据库来解决各个对象进行数据交换,如何保证共享数据能够得到合理的访问是一个关键问题。
系统中各个对象之间的逻辑关系更加复杂。对象间相互调用的不确定性,使得在不同的情况下,同一对象被激活会产生不同的结果,即对象实现的功能受激活时系统当前状态的影响。
西安交通大学 刘海岩 23
( 7)客户机-服务器体系结构客户机-服务器系统( client-server system) 是至少包含一个服务器和一个客户机的分布式系统。在分布式系统中( distributed system),计算由不同的程序执行,这些程序一般运行在不同的硬盘上,合作完成系统的任务。 服务器 就是为其他程序提供某些服务的程序,其他程序使用通讯通道与服务器相连接。 客户机就是访问服务器的程序。客户机可以访问许多服务器来执行不同的功能,而服务器可以同时被许多客户机所访问。除了同步请求或接收结果的时候,客户和服务器中的控制流都是相互独立的。
西安交通大学 刘海岩 24
客户机-服务器体系结构的一个重要变体就是三层模型( three-tier-model)。 在该模型中应用服务器需要同客户机(通常经由 Internet)和数据库服务器(出于安全原因通常在企业网络内部)通信。当访问数据库服务器时,应用服务器相当于一个客户机。(见图)
下图中互联网银行系统是使用 C/S体系结构的例子。
银行的客户数据库提供数据管理服务,一个 Web服务器提供应用服务如用于现金转帐、生成银行结算单和工资单等。
在某些情况下,可以在系统中添加服务器,把三层的 C/S结构扩展成多层结构。多层系统适合于当应用程序需要到不同的数据库中存取数据的情况。
西安交通大学 刘海岩 25
西安交通大学 刘海岩 26
客户机-服务器体系结构的进一步扩展是对等模式
( peer-to-peer ) 。对等系统是一个特殊的客户机-服务器系统,每个构件(或子系统)既可以是客户机,又可以是服务器,其中的控制流除了在同步请求的时候,都是互相独立的。
1999年以来,P2P有了很大的改进,用户之间直接传递音乐、电影、游戏和文件等,大大的改变了人们的工作方式和生活方式。
( 8)正交软件体系结构正交软件体系结构由组织层(横向)和线索(纵向)
的构件构成。层是由一组具有相同抽象级别的构件构成。
线索是子系统的特例。它的每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,同一层中的构件之间不存在相互调用
(正交)。该体系结构的框架如下图所示。
西安交通大学 刘海岩 27
西安交通大学 刘海岩 28
优点:
( 1)结构清晰,易于理解。
( 2)易修改,可维护性强。
( 3)可移植性强,重用颗粒大。
( 9)异质构架风格软件系统很少纯粹是一个风格,不同的体系结构在处理能力上有各自的优点和缺陷,异构软件体系结构由几种体系结构组合而成。几种组合类型:
局部异质:多个不同风格
层次异质:每个构件有自己的风格
并行异质:同时复合好几种风格例如调用-返回体系结构可存在于更复杂的体系结构(如 C/S结构)中。
西安交通大学 刘海岩 29
3、应用实例题目:某省的社会保险管理信息系统( SIMIS)。 该系统的功能是完成劳动和社会保险的所有业务管理,即
“五保合一”管理,包括养老保险、医疗保险、劳动就业和失业保险、工伤保险、女工生育保险等。
整个系统采用层次式软件体系结构,在层次式结构的业务管理层中又采用了正交软件体系结构。
基本出发点是,这种软件结构不但能够满足不同规模的用户(县、地、市和省级)的需求,可以方便地在最小的完成基本功能的基本系统和最大的完成所有复杂功能的扩充系统之间进行选择安装,通过逐层功能扩展的方法来进行软件实现,有利于程序设计和构件开发。
SIMIS 系统体系结构具有四个层次的层次式软件体系结构,如下图所示:
西安交通大学 刘海岩 30
SIMIS系统软件的层次式结构
( 1)通用核心层通用核心层完成的是软件的一些通用的公共操作,核心层操作不但可以应用于 SIMIS,还可以方便地移植到其他的应用软件上。通用核心层中主要含有以下一些基类,如:
西安交通大学 刘海岩 31
通用打印基类、通用查询基类、权限验证基类和数据转换基类等。
( 2)基层单位管理平台基层单位管理平台是 SIMIS系统数据采集的重要来源,
是参保单位的管理平台,包括劳资人事管理、工资管理、
岗位管理和社会保险管理系统。
( 3)业务管理系统业务管理系统是对基本应用系统的进一步扩展。业务管理的管理内容涉及劳动者个人、企业和其它劳动组织的信息。劳动与社会保险业务管理的内容有:失业保险、养老保险、医疗保险工伤保险、女工生育保险等。
( 4)扩展应用层扩展应用层包括统计信息管理系统、基金检测系统、
决策支持系统和政策法规系统。
西安交通大学 刘海岩 32
业务管理系统设计与实现业务管理系统即“五保合一”管理,整个系统要与银行、企业、事业机关、医院、财政部门、邮局等多种单位建立连接关系。
整个子系统为三级正交线索,五个层次,其中的一条完整的线索结构如下图所示。
设计方案确定之后,分成若干个小组并行开发,每个小组负责一条或数条线索,由一个小组来设计通用共享的数据存取构件,这样各小组不会相互牵制,大大提高了编程的效率,缩短了开发周期,降低了工作量。
实践证明,这种组合融合了层次式软件体系结构和正交软件体系结构的优点,使整个系统结构清晰,易于理解,具有可扩展性,提高了软件重用粒度,从而提高了开发效率。
西安交通大学 刘海岩 33
西安交通大学 刘海岩 34
4.3 优秀软件设计概念软件设计中最重要的一个问题就是软件质量问题,如何衡量软件设计的技术质量呢?本节介绍软件设计的一些基本概念。
1、分解与模块化
Wasserman( 1995) 提出了 5种创建设计的方法:
( 1)模块化分解:功能分配给模块或构件
( 2)面向数据的分解:基于全局数据结构
( 3)面向事件的分解:基于系统必须处理的事件及如何改变系统状态的信息,高层描述状态目录,低层描述转换。
( 4)由外往内的设计:基于系统的用户输入,高层列出所有输入,低层描述如何处理每个输入。
( 5)面向对象的设计:系统分解为子系统,子系统分解成包,包分解为类,低层描述所属类的对象的数据和方法以及对象间相互的交互。
西安交通大学 刘海岩 35
通过系统数据描述、事件、用户输入、高层功能描述或组合,用逐渐增加的细节创建信息层次来得到设计。
西安交通大学 刘海岩 36
模块化是软件解决复杂问题所具备的手段,
E( P1+ P2) > E( P1)+ E( P2)
西安交通大学 刘海岩 37
2、抽象与求精抽象,即抽出事物本质的共同特性而暂不考虑它的细节。建立软件体系结构,要给出抽象级别,软件过程中的每一步骤都是解决方案抽象级别上的求精。
求精,是详细描述的过程,用于揭示低层细节。
3、信息隐蔽定义模块内部信息的访问约束。
4、模块独立性如何衡量软件的独立性?提出了两个定性的度量标准 —— 耦合性和内聚性西安交通大学 刘海岩 38
( 1)耦合性( Coupling)
软件结构中各构件间相互联系紧密程度的一种度量。
无直接耦合
数据耦合
标记耦合
控制耦合
公共耦合
内容耦合西安交通大学 刘海岩 39
( 2)内聚性( Cohesion)
一个构件内部各个元素彼此结合的紧密程度的度量。
偶然内聚
逻辑内聚
时间内聚
过程内聚:依次调用的过程放在一起
通信内聚
顺序内聚
功能内聚西安交通大学 刘海岩 40
有效模块化设计的启发式原则:
( 1)评估软件结构的初始模型以降低耦合并提高内聚。
( 2)高层高扇出使结构最小化;当深度增加时(特别是底层)争取提高扇入。(图)
( 3)将模块的作用范围限制在模块的控制范围内。
作用范围:受模块内一个判定影响的所有模块的集合。
控制范围:模块本身及其所有下属模块的集合。 (图)
( 4)评估模块接口以降低复杂度和冗余并提高一致性。
( 5)定义功能可以预测的模块,(如对于相同的输入,
输出是恒定的),但要避免过分限制模块(如数据结构的大小、控制流的选择、外部接口的模式等限制)。
西安交通大学 刘海岩 41
西安交通大学 刘海岩 42
TOP
C D
E F
A B
TOP
C D
E F
A B
TOP
C D
E F
A B
模块 D的作用域超出控制域 模块 TOP的作用域在控制域内但距离太远,使模块 B、
D的接口有冗余的信息
D的作用域在控制域内西安交通大学 刘海岩 43
4.4 传统的结构化设计结构化设计 (Structured Design,SD)是七十年代后期由
Constantine和 Yourdon提出并精化,该方法最主要的为面向数据流的设计方法。提供了数据流图到软件结构图
(一般为调用-返回风格的体系结构)的变换。该方法的设计步骤为(设计流程见下图):
( 1)精化 DFD,要有足够的细节信息,便于设计;
( 2) 确定 DFD类型,并划分输入流和输出流的边界;
( 3)将 DFD逐级映射到软件结构;
( 4)用设计概念和启发规则对结构进行求精;
( 5)描述模块功能、接口及全局数据结构;
该步骤支持迭代。
西安交通大学 刘海岩 44
西安交通大学 刘海岩 45
1、确定数据流的类型变换流事务流在一个大系统 DFD中,变换流和事务流可能会同时出现,
如在一个事务流中,活动路径上的信息可能会体现变换流的特征。
西安交通大学 刘海岩 46
2、变换流设计
( 1)一级映射西安交通大学 刘海岩 47
( 2)逐级映射
I,由变换中心边界沿输入端路径回溯,将每个遇到的“处理”映射成相应层次的模块。
P,每个处理直接对应一个下层模块。
O,由边界沿输出端路径外推,方法与 I类似。
( 3)精化:
根据设计概念和原则西安交通大学 刘海岩 48
3、事务流设计西安交通大学 刘海岩 49
4、每个模块的说明每个模块应有简要说明:
① 进出该模块的信息(接口描述);
② 模块内部的信息(功能、数据) ;
③ 过程陈述,包括主要判定点及任务等;
④ 对约束、限制的说明。
5、例,SafeHome系统的设计将 SafeHome系统的第一层 DFD分解为两个子系统:传感器监测子系统和用户交互子系统。
西安交通大学 刘海岩 50
( 1)传感器监测子系统该子系统的 DFD
经过细化具有变换流特征,经过两次转换得到右图的软件结构:
(DFD 和 SC分别见参考教材 1
P280和 P283)
西安交通大学 刘海岩 51
直接转换后的图是初始结构图,以设计原理、启发式设计策略,精化雏形,对模块合并或分解或移动,追求高内聚、低耦合、易实现、易测试和维护。对该子系统结构做以下修改:
① 只有一条输入路径,故输入控制模块可删除 。
② 由变换中心产生的整个子结构可归并为“建立报警条件”一个模块(虽降低了内聚性,但减少了耦合性),
删去变换控制摸块 。
③,格式化显示”和“产生显示”合并成一个模块
“产生显示”(,格式化”功能简单)。
一旦体系结构被定义,并经过评估与求精,虽然以后的修改仍然需要一些工作,但体系结构设计阶段的工作对软件的质量和可维护性具有深远的影响。优化后的结构图如下图:
西安交通大学 刘海岩 52
西安交通大学 刘海岩 53
( 2) 用户交互子系统该子系统细化的 DFD如图(见参考教材 1p285)所示,具有事务流的特征,两个较复杂的活动路径又有自己的特征。
西安交通大学 刘海岩 54
精化后的软件结构图见下图。( P287)
西安交通大学 刘海岩 55
4.5 用户界面设计好的用户界面( UI)设计对一个系统的成功是至关重要的。
1,用户界面设计过程西安交通大学 刘海岩 56
2、用户界面设计原则
UI设计必须考虑软件使用者的体力和脑力,人的能力是界面设计原则的基础。以下设计原则适用于所有的用户设计:
用户熟悉,界面所使用的术语和概念是来自于用户的经验,这些用户是将要使用系统最多的人。
一致性,界面应该是一致的,命令、菜单格式相同,
参数以相同方式传递,减少用户学习时间。
意外最小化,永远不要让用户对系统的行为感到吃惊,
类似的操作应该有类似的效果。
西安交通大学 刘海岩 57
可恢复性,界面应该有一种机制来允许用户从错误中恢复。
用户指南,在错误发生时界面应该提供有意义的反馈,
并具有用户帮助功能。
用户差异性,界面应该为不同类型用户提供合适的交互功能。
3、用户与系统的交互
Shneiderman把不同形式的交互分为 5种类型:
( 1)直接操纵,用户在屏幕上直接与对象进行交互。
(2)菜单选择:一般情况是另一个屏幕对象同时被选中,
命令作用于这个对象。
西安交通大学 刘海岩 58
( 3)表格填写:表格中的空白栏可能有相关菜单,表格上有按钮,按下将启动相关操作。
( 4)命令语言:用户发出特定指令和相关参数,指示系统做什么。
( 5)自然语言:用户用自然语言发出命令。
例如:删除一个文件
直接操纵:直接拖到回收站。
菜单选择:先选定这个文件,然后选定删除命令。
表格填写:先填入文件名,然后“按”删除命令。
命令语言:用户发出删除指令,将文件名作为参数。
自然语言:用户键入“删除名为 xxx文件”。
下表给出了这些交互类型的主要优缺点及可能的适用范围。
西安交通大学 刘海岩 59
交互类型 主要优点 主要缺点 应用实例直接操纵 快速和直观的交互容易学习 较难实现 视频游戏CAD系统菜单选择避免用户错误只需要很少的键盘输入对有经验用户操作较慢当菜单选择很多时会变得很复杂绝大多数一般用途的系统各种交互风格的优点和缺点表格填写 简单的数据入口容易学习 占据很多屏幕空间 库存控制个人贷款处理命令语言 强大灵活 较难学习差的错误管理 操作系统图书馆信息检索系统自然语言 适合偶然用户容易扩展 需要键入的太多,理解可能有二义,系统不可靠时刻表系统
WWW信息检索系统西安交通大学 刘海岩 60
这些交互类型可以混合使用,几种不同的交互类型可以用于相同的应用。如 windows支持对图标显示的文件和目录进行直接操作与菜单选择。互联网上的用户界面一般基于 HTML和 Java等语言能够把程序和页面中的构件联系起来,在 Web界面中直接操作可视化的实体是一种非常有效的方法。
4,提供给用户的信息表示所有交互系统都要提供给用户某种方式的信息表示。信息表示可以是输入信息(
如文本)的直接表达也可以以图形形式表示信息。从系统中分离出信息表示的软件,使用户屏幕上信息表示的改变不会影响到系统的主要计算。
西安交通大学 刘海岩 61
寻找最佳的信息方式需要有关该信息的使用者的背景和他们使用系统的方式的知识。如果需要精确的数字信息并且信息变更相对较慢,信息应该以文本形式表示(文本表示占据的屏幕空间较少)。如果数据变更的快或者数据之间关系很重要,使用图形形式表示。
模型 -视图 -控制器( MVC) 模型把用户界面中的表示、交互和实体相分离是该模型的基础。 MVC是一种用来使用户界面层和系统的其他部分分离的体系结构模式。 MVC不仅有助于增强用户界面层的层内聚,而且有助于降低用户界面层与系统其余部分以及 UI
本身各部分之间的耦合。
西安交通大学 刘海岩 62
MVC模式使系统的功能层(模型)同用户界面的两个方面分离:视图( view) 和控制器( controller)。
用户能够用适当的交互方式与每种表示形式进行交互。
要显示的数据被封装到一个模型对象中。每个视图都是模型的一种显示表示方式。每个模型对象可能有许多独立的视图对象与之关联,例如 表示数字数据的模型可能有一个直方图的或一个表格的视图。每个视图都有一个的处理用户输入和设备交互的控制器对象。
西安交通大学 刘海岩 63
使用 MVC模式的好处:
三个构件可独立设计
提高内聚,降低耦合:构件之间通信信道最小且易查找。
增加重用:视图和控制器通常会使用大量的可重用构件作为各种 UI控件。
灵活设计:很易通过改变视图或控制器来改变 UI。
可测试性设计:可脱离 UI层测试应用程序。
5、对用户的支持
UI中应该总是能提供某种形式使得在线帮助。帮助系统包括一下三个方面:
西安交通大学 刘海岩 64
( 1)系统产生消息来响应用户动作。
应有礼貌、简洁、一致和建设性。
( 2)在线帮助。
帮助系统一般是网状结构,既是分层的,同时又是交叉连接的。一般的信息在结构的顶端,详细信息位于底部。
帮助画面中的文字应简单易读,并设置按钮,可从本画面移动到其他画面或历史窗口。
( 3)随系统一起提供文档。
为满足不同类型的用户,提供:
功能描述文档、安装文档、介绍性手册、参考手册、
管理员手册等。
西安交通大学 刘海岩 65
6、界面评价评价一个界面的可使用性并检查是否符合用户需求,是软件系统正规检验过程的一部分。
可使用性属性:
可学习性
操作速度
容错性
可恢复性
适应性西安交通大学 刘海岩 66
4.6 构件级设计构件级设计也称为详细设计,在体系结构设计完成之后,对构件进行接近代码的抽象级别上的设计。在构件级,
开发人员以足够的细节来表示数据结构、接口和算法,以指导程序设计语言源代码的生成。
设计符号体系:图形、表格、伪码图形:结构化流程图,
问题分析图( Problem Analysis Diagram,PAD),
盒图,
表示对象类中方法的的活动图( UML),
……
表格,IPO表,决策表(判定表)等,
伪码:过程描述语言( Process Design Language,PDL)
西安交通大学 刘海岩 67
优点:直观清晰、
易于使用。
缺陷:
1、易造成非结构化,
2、不易表达数据结构。
流程图西安交通大学 刘海岩 68
优点,1、清晰的反映程序的层次结构。
2、支持逐步求精的设计方法。
3、易读易写,使用方便。
4、支持结构化的设计原理。
5、可自动生成程序。
西安交通大学 刘海岩 69
用电收费系统中的某一个处理:
如果按固定比率收费,月耗电少于 100KWH的用户负担的费用为某个固定值(最低月收费),其他用户按表 A的规则收费。如果按变动比率收费,月耗电少于 100KWH的用户按表 A的规则收费,其他用户按表 B的规则收费。
决策表(判定表),组合 规则固定比率用户 决策表能够清变动比率用户 晰的表达复杂耗电量 <100度用户 的条件组合与耗电量 ≥100度用户 对应的动作之最低月收费 间的对应关系。
按表 A收费按表 B收费
T T
1 2 3 4
F F
F F T T
T F T F
F T F T

√ √

条件动作西安交通大学 刘海岩 70
PDL是一种介于自然语言和形式化语言之间的一种半形式化语言。在有语法含义的结构中嵌入叙述性文字,
不能被编译。易写易读,可作为注释嵌入到程序中。存在有 PDL工具可将它转换成图形表示,并生成设计操作索引、交叉引用表以及其他信息。
基本 PDL语法应支持:模块定义、接口描述、数据说明,3种基本控制结构以及输入输出等构造元素。
优点,1、易编写、易理解。
2、提供的机制较全面。
3、可作为注释嵌入在源程序中。
4、可自动生成程序代码。(如 PDL/pascal,
PDL/C等)
西安交通大学 刘海岩 71
习题
1、什么是软件设计?该阶段的基本任务有哪些?
2、什么是软件体系结构?研究软件体系结构的风格有什么意义?
3、试对几种较为熟悉的风格进行比较。
4、软件设计的基本概念有哪些?模块化设计的基本原则是什么?
5、试用传统的设计方法对“机票预定系统”进行设计。
6、用户界面设计的原则是什么?界面设计中应该考虑哪些问题? MVC模型的思想是什么?
7、构件级设计主要进行哪些设计?你喜欢用什么工具来描述?