用户界面的UML建模01

news2024/12/24 13:54:13

Paulo Pinheiro da silva, Norman W. Paton 著, 李巍 译

摘要

统一建模语言(UML)是对应用程序进行面向对象建模的标准标记语言(notation),因此我们会很自然地将其作为用户界面(UI)建模的选择。但是,我们并不清楚如何使用UML 来进行UI 的建模。本文给出了一个使用UML 进行用户界面建模的案例。该案例指出了那些无法使用UML 标记来进行建模的UI 侧重面,以及一组可用于UI 建模的UML 构建法(constructor)。其中的建模问题说明了使用UML 进行UI 建模的一些缺陷,而采用的这组构建法也同时表明了一些该方面的能力。这些被证实的能力和缺陷可作为公式来表达成一种对UML 进行扩展(extend)的策略,从而对用户界面的设计提供更好的支持。

1 介绍

UML[10,2]是软件应用程序进行面向对象建模的标准语言。用户界面,作为大多数应用程序的一个重要部分[17],也应该采用UML 来进行建模。事实上,UML 会很自然地被用作UI 建模的标记语言。然而,我们一直就不清楚如何使用UML 来进行用户界面的建模。而对于像用户任务(user task)和表现层(presentation)这样的用户界面元素,是如何在UML 应用模型中得到支持的,这一点并不能很容易进行标识。而且很少有报告能够很明确地描述一个应用UML 来建模UI 的项目。此外,许多UI 设计过程中出现的建模问题,例如本节所描述的案例,并没有全部在基于UML(UML-based)的设计方法或UML 规约(specification)中予以提及(address)。

许多已出台的提议(proposal)使用了一些不同的标记,用来支持UI 元素的设计模型。例如,关于用户任务(user task)设计方面的研究,可参见Kirwan 和Ainsworth 的书[14]以及Johnson 的书[13]。另外,还有一些提议使用其所公布的模型来进行UI 设计,具体描述可参见Griffiths 等人的书[9]和Szekely 的书[19]。因此,最好的情形是,如果目前已有的建模方式能够有效地用来构建UI,那么就不必再发明一种新的方法。进一步说,一种好的方法就是无论对于UI,还是应用程序的其它部分,我们都能使用相同的方式来进行构建。的确,使用单一的标记,对于整合一个面向对象的用户界面的全部设计是非常有用的。这个领域同样也有许多的研究成果,例如Kovacevic[15],但是仍然未能很清楚地标识出哪些UI 侧重面可以使用UML 来进行描述,而哪些则不能。

本文旨在概括性地描述一个较为全面的用户界面建模的UML 案例。该案例需要说明以下两个意图:(1)使用UML 时的一般UI 建模问题;(2)应用程序开发者在进行UI 设计时,可以使用的一组UML 构造法和UML 图。

从这些建模问题中,我们可以看出哪些UI 侧重面(aspect)是在UML 中所没有涉及到的。从这组构造法中,我们也能看出哪些UI 侧重面已经包含在UML 中。因此,该案例提出了一种简易的方式来使用UML 进行UI 建模。

另外,为了对用户界面的设计提供更好的支持,本文还描述了哪些元素可用于开发一个对UML 进行扩展的策略。

该案例有意地没有描述任何一个在UI 设计过程中使用的方法。的确,为了克服已知的难点,许多方法可以作为一种方式来考虑,并以此找出可供选择的建模方法。这里指的是仅使用UML 来解决那些已确认的UI 建模问题。

该案例只考虑基于窗体(form-based)的用户界面。事实上,一些比较重要的用户界面种类,例如数据库系统的UI 和web 应用的UI,都主要是基于窗体的。基于窗体的用户界面的局限性则是指,像游戏,文字处理软件以及仿真器等应用程序的用户界面并不包含在该案例中。尽管如此,本案例介绍的这个UI 模型可作为一个UI 模型基线(model baseline),来开发基于UML 的更全面的UI 模型。诚如该案例所考虑的那样,对于大多数UI 设计者而言,对可视化组件(窗口组件)的使用进行建模,要比对窗口组件本身进行建模显得更为重要。因此,该案例论述的是窗口组件如何被应用程序使用,而不是如何对窗口组件进行建模。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot应用开发:配置类整理

目录 编写目的 一、线程池 1.1 setCorePoolSize 1.2 setMaxPoolSize 1.3 setQueueCapacity 1.4 setKeepAliveSeconds 1.5 setThreadNamePrefix 1.6 setRejectedExecutionHandler 1.7 示例代码 二、Durid数据库连接池 2.1 ServletRegistrationBean 2.2 FilterRegist…

AI新书推荐:深度学习和大模型原理与实践(清华社)

本书简介 在这个信息爆炸、技术革新日新月异的时代,深度学习作为人工智能领域的重要分支,正引领着新一轮的技术革命。《深度学习和大模型原理与实践》一书,旨在为读者提供深度学习及其大模型技术的全面知识和实践应用的指南。 本书特色在于…

java如何使用poi-tl在word模板里渲染多张图片

1、poi-tl官网地址 http://deepoove.com/poi-tl/ 2、引入poi-tl的依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>3、定义word模板 释义&#xf…

电力通信规约-104实战

电力通信规约-104实战 概述 104规约在广泛应用于电力系统远动过程中&#xff0c;主要用来进行数据传输和转发&#xff0c;本文将结合实际开发实例来讲解104规约的真实使用情况。 实例讲解 因为个人技术栈是Java&#xff0c;所以本篇将采用Java实例来进行讲解。首先我们搭建一…

linux socket编程之udp_dict_serve服务端--引入配置文件

注意&#xff1a;本篇博客只是对上一篇博客功能的增加 1.创建配置文件(翻译) Dict.txt apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 pen: 笔 happy: 快乐的 sad: 悲伤的 run: 跑 jump: 跳 teacher: 老师 student: 学生 car: 汽车 bus: 公交车 love: 爱 hate: 恨 hell…

stm32定时器输出比较----驱动步进电机

定时器输出比较理论 OC(Output Compare)输出比较输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出…

ArrayList 类 (顺序表)

目录 一. ArrayList 基本介绍 二. ArrayList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() 2. 删除元素 (1) remove() (2) removeAll() 3. 遍历元素 (1) for 循环遍历 (2) for - each 遍历 (3) 迭代器遍历 (4) 列表迭代器遍历 4. 判断 (1) cotains() (2…

ubuntu22.04安装PaddleX3

PaddleOCR 安装过程可以参考PaddleX本地安装教程 我的电脑环境配置&#xff1a; ubuntu22.04 cuda11.8&#xff08;之前安装的是12.4没有匹配的paddle-gpu;这里改成11.8&#xff09; 一、安装基础环境 1、 conda create -n ppx1 python3.10 2、 conda activate ppx1 3、…

圣诞快乐(h5 css js(圣诞树))

一&#xff0c;整体设计思路 圣诞树h5&#xff08;简易&#xff09; 1.页面布局与样式&#xff1a; 页面使用了全屏的黑色背景&#xff0c;中央显示圣诞树&#xff0c;树形由三层绿色的三角形组成&#xff0c;每一层的大小逐渐变小。树干是一个棕色的矩形&#xff0c;位于三角…

行业观察|西门子收购Altair:从多学科仿真到工业元宇宙

在当今数字化时代&#xff0c;工业领域正经历着深刻的变革。而CAE软件作为工业领域关键工具&#xff0c;在产品设计、验证和优化等环节发挥着越来越重要的作用。 11月&#xff0c;西门子宣布收购Altair的新闻屠版了整个朋友圈&#xff0c;无疑验证了CAE在制造业的核心地位。对A…

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍&#xff0c;一些协议大概了解&#xff0c;但总是模模糊糊的印象&#xff0c;现在把自己的整体认识总结一下&#xff0c;&#xff08;本来想去起名叫《看这一篇就够了》&#xff0c;但是发现网上好的文章太多了&#xff0c;还是看这篇吧&a…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试&#xff0c;对输出的结果检查判断是否符合预期结果 但是在多年的工作中&#xff0c;从来没有哪个项目中真正系统的用到了单元测试&#xff0c;因此对它还是很陌生的&#xff0c;也就造成更加不会在项目中区使用它。 如何…

bridge between Lua world and the .NET

一、新建项目&#xff1a;luademo 安装包&#xff1a;<PackageReference Include"NLua" Version"1.7.3" /> using NLua; using System;namespace luademo {internal class Program{static void Main(string[] args){Lua state new Lua();for (int …

路径规划之启发式算法之二十三:免疫算法(Immune Algorithm,IA)

免疫算法(Immune Algorithm,IA)是基于人工免疫系统的理论,受生物免疫系统的启发而推出的一种新型的智能搜索算法。通过模拟生物免疫系统的工作原理来解决优化问题。 一、定义与原理 免疫算法是以人工免疫系统的理论为基础,实现了类似于生物免疫系统的抗原识别、细胞分化、…

2.5.1 文件管理基本概念

文章目录 文件文件系统文件分类 文件 文件&#xff1a;具有符号名&#xff0c;逻辑上有完整意义的一组相关信息的集合。 文件包含文件体、文件说明两部分。文件体存储文件的真实内容&#xff0c;文件说明存放操作系统管理文件所用的信息。 文件说明包含文件名、内部标识、类型、…

C#调用WebService的方法

一、前言 在日常工作中&#xff0c;如果涉及到与第三方进行接口对接&#xff0c;有的会使用WebService的方式&#xff0c;这篇文章主要讲解在.NET Framework中如何调用WebService。 1.创建WebService &#xff08;1&#xff09;新建项目——模板选择ASP.NET Web 应用程序 &a…

(免费源码)基于springboot的电影院订票系统设计与实现 计算机毕业设计 P10089

项目说明 本号所发布的项目均由我部署运行验证&#xff0c;可保证项目系统正常运行&#xff0c;以及提供完整源码。 如需要远程部署/定制/讲解系统&#xff0c;可以联系我。定制项目未经同意不会上传&#xff01; 项目源码获取方式放在文章末尾处 注&#xff1a;项目仅供学…

python 定时任务管理封装

主逻辑代码 # -*- coding: utf-8 -*- # import apscheduler import pandas as pd from datetime import datetime # 导入调度器&#xff0c;此处使用BackgroundScheduler阻塞调度器 from apscheduler.schedulers.background import BackgroundScheduler # 导入触发器&#xf…

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…