简介:这是一份西门子Desigo CC楼宇自动化系统用户界面的中文培训手册(UserInterface_BA),面向楼宇自动化工程师、系统集成商及运维操作人员,用于系统学习GUI操作和事件响应流程。手册对应西门子官方内部培训章节,内容聚焦用户界面布局、主要应用程序、工作流驱动的窗格概念、摘要栏、系统浏览器及事件处理机制,能帮助读者从整体到细节建立清晰的操作认知。包体为单个PDF文档,共1个文件,压缩包大小仅2.41MB,便于下载后离线查阅。目前已有1577人学习下载,在同类楼宇自控资料中具有较高参考价值。资源内详细讲解摘要栏菜单、过滤与警报可视化、快速/调查/辅助事件处理程序,以及系统浏览器默认视图和自定义视图的用法,并配有工程场景说明,适合需要提升Desigo CC日常操作效率的工程技术人员。
1. 为什么界面需求越改越乱:BA手册就是用来收口的
一份标着「Desi GO CC手册-02-UserInterface-BA-CN(用户界面)」的文档躺在项目共享目录里,业务方催着确认界面改动,开发说没看到需求边界,测试说不知道按什么验收。这种场面几乎每个做过界面类需求的人都遇过。所谓用「BA-CN(用户界面)」命名的中文业务分析手册,本质不是设计稿也不是开发文档,而是把「界面长什么样、什么时候出现、给谁看、不能干什么」写成一组可核对、可引用、可验收的条目。它解决的是三拨人的对不齐:业务方以为说清了,研发以为理解了,测试以为没有漏——结果一上线全是差异。这篇文章就围绕这种手册怎么读、怎么拆、怎么落地讲透,帮你在下一份界面需求里少开三次会、少改两轮稿。
2. 读懂用户界面BA手册的结构:编号、三层骨架与状态定义
拿到这种手册,第一反应别去翻页面截图,先看它的结构。界面类BA手册普遍采用「模块编号 + 视角标识 + 语言版本」的命名方式。标题里的02是文档族内的模块序号,UserInterface标明本条基线管的是界面,BA指业务分析视角,CN是中文版本。理解这套编号的意义在于:跨文档引用时你会知道该引用谁,评审会上讨论「第3页那个问题」时你可以精确到条目编号而不是让所有人翻页找。
2.1 先花十分钟读编号:02、UserInterface、BA、CN各代表什么
编号不是随便排的。02说明这是该产品文档族里的第二篇,通常意味着前一篇是总体说明或数据模型,后一篇可能是交互逻辑或接口定义。你在引用时会写「见CC手册-02-UserInterface-BA-CN-3.2.1」,其中3.2.1是条目号。没有这个习惯的团队,沟通成本会显著上升。
BA(Business Analysis)这个视角决定了手册的写法。它不回答「按钮用什么颜色、圆角几个像素」,而是回答「这个按钮在什么业务条件下出现、点击后系统该做什么、没有权限的人看到什么」。这是业务分析与UI设计的关键差异:UI稿管视觉,BA手册管行为和条件。很多团队把这两者混在一起,结果后期视觉改了、行为没改,或者行为改了、文案没同步。
CN语言版本旗标在多语言产品里作用更大。同一套界面,CN版和EN版可能字段长度不同、日期格式不同、文案变量位置不同。手册名里带上CN,意味着它所描述的中文界面才是这条基线的唯一事实来源。
我一般的做法是:拿到手册先花十分钟建一个「阅读索引」,把文档里的一级章节号、对应页面名称和涉及角色写在一张纸上,后面拆任务时直接按这个索引走。
2.2 组件、页面、流程:BA手册的三层骨架
不管手册章节怎么排,内容上都逃不开三层:组件层、页面层、流程层。先把这三层分清,后面所有拆解都顺手。
组件层描述最小界面单元,比如表格、下拉框、日期选择器。BA手册里对组件的定义往往不写长相,而写行为契约:这个下拉框的数据源是什么、是否支持搜索、选完是否触发刷新。页面层是组件的集合,描述一个页面内有哪些组件、它们之间的联动关系。流程层则横跨多个页面,描述一个业务操作从入口到结束经过哪些界面、每步的判定条件是什么。
三层模型的价值在于定位问题:测试报一个「搜索后表格数据不对」的缺陷,如果手册里组件层写了搜索触发逻辑、页面层写了表格刷新规则,那么这个缺陷应该定位到页面层还是组件层就有了依据。实际项目中,很多团队只有页面截图和原型,缺的就是这一层结构化描述。我给需求时习惯先画一张「页面-组件-流程」对照表,把手册条目归位。
表格是最适合做这种归位的工具。列名可以是:条目编号、层级(组件/页面/流程)、所属页面、行为描述、涉及角色。每次评审会带着这张表去,讨论就不会发散。
2.3 每种界面状态都该有书面定义:从空态到异常态
界面BA手册最容易被跳读的部分是状态定义。大多数人只关心「正常长什么样」,但真正决定开发量和测试量的,是那些不常出现的状态。
至少六种状态需要手册覆盖:正常态、空态、加载态、禁用态、错误态、无权限态。空态指的是列表没有任何数据时显示什么;加载态指请求进行中用户看到了什么;错误态指接口返回失败时页面怎么表达。无权限态更关键,它决定了一个角色点进去是被引导、被提示还是看到置灰。
这些状态如果不写,开发就会按自己习惯实现,测试就会按自己理解验收。等到用户真正遇到空数据或接口超时,界面表现五花八门。所以每次评审我必问的一句话是:「这个页面的空态和错误态,手册里有没有条目?」没有,就当场补。
状态定义的输出不一定要长,关键是成文。每条状态定义建议写成「条件 + 表现 + 操作」三要素:什么条件下触发、界面上显示什么、用户此时能做什么。这样一个条目,开发可以直接翻译成代码分支,测试可以直接翻译成用例。
3. 从手册条目到可执行任务:拆页面清单、字段表与验收断言
读懂了结构,接下来就是把手册变成能排期、能分工、能验收的东西。这一步我见过太多团队跳过——业务分析师写完手册,开发直接看原型写代码,手册成了摆设。问题在于手册的语序是「业务视角」,开发的执行是「实现视角」,中间缺了一层翻译。
3.1 把「业务描述」翻译成页面清单
第一步做页面清单。梳理手册里所有页面条目,给每个页面生成一行记录。清单至少包含:页面编号、页面名称、入口来源、包含组件清单、涉及角色、操作按钮。别小看这张表,它能照出手册里的重复页面和缺失页面。
实际操作时我见过某项目,手册里写了「用户查询页」和「用户管理页」,研发一看,两个页面列表部分完全一样,只是操作列不同。按页面清单归并后,原来排两周的活缩成一周半。这就是页面清单的价值:砍掉重复,合并同构。
| 页面编号 | 页面名称 | 入口来源 | 涉及角色 | 关键组件 | 操作按钮 |
|---|---|---|---|---|---|
| UI-01-01 | 用户列表 | 首页导航-用户中心 | 管理员 | 搜索框、数据表格、分页器 | 新建、编辑、停用 |
| UI-01-02 | 用户详情 | 用户列表-点击行 | 管理员、审计员 | 信息展示区、操作按钮区 | 编辑、重置密码、查看日志 |
3.2 字段定义表:控件类型、校验规则与默认值
页面清单定下后,开始拆字段。每一块表单、每一列表格数据,都要落到字段定义表。这张表是开发写代码的底稿,也是测试写用例的底稿。
字段定义表的列建议固定:字段名(中文字段名对应英文key)、控件类型(输入框、下拉、日期、单选)、是否必填、长度限制、校验规则、默认值、来源(用户输入/接口返回/字典项)。校验规则一栏最容易漏,比如手机号格式、金额精度、日期范围。
这里必须强调一个经常翻车的点:控件类型决定交互成本,同一个字段用下拉还是输入框,背后是多一套字典维护还是一套格式校验的问题。手册里如果只写了「状态」两个字,开发大概率用一个自由输入框,结果数据脏得没法看。字段定义表出现后,这类问题会在评审阶段暴露,而不是上线后。
字段表的产出不需要代码,但可以顺手标注哪些字段参与了联动。比如「所在部门」变更后,「负责人」下拉的数据源要跟着换。这种联动关系单独列一列,开发排期时能提前评估工作量。
3.3 把BA描述改写成可验收断言
BA手册的条目大多是自然语言:「用户提交后系统提示成功,并返回列表页。」这种描述看起来清楚,实际验收时扯皮概率很高——什么叫「提示成功」?文案是什么?停留多久?返回后列表刷新吗?
我的习惯是把每一条核心行为改写成可验收断言,格式统一为:给定条件,执行操作,预期结果。技术团队可以直接把它写成自动化用例。
// 示例:将BA条目翻译为代码级别的验收断言 // BA条目:UI-03-02 用户点击"提交申请"后,系统校验必填项, // 校验通过则弹出成功提示并跳转列表页,且列表刷新。 describe('提交申请流程', () => { it('必填项未填时阻塞提交', async () => { await page.click('提交申请'); const errorMsg = await page.getText('error-tip'); expect(errorMsg).toContain('请填写完整'); // 断言提示文案 expect(await page.isVisible('success-modal')).toBe(false); // 断言未跳转 }); it('校验通过后提示成功并刷新列表', async () => { await page.fill('apply-name', '测试项目'); await page.click('提交申请'); expect(await page.getText('success-tip')).toContain('提交成功'); expect(await page.url()).toContain('/list'); // 断言跳转地址 expect(await page.isRefreshCalled()).toBe(true); // 断言列表刷新 }); });3.4 反向检查:描述里缺了「不显示」的场景
把描述改写成断言的过程中,自然而然会暴露手册缺口。最常见的一类是「只写了显示条件,没写隐藏条件」。比如「管理员能看到导出按钮」,反向问题是什么角色看不到?看不到时是隐藏还是置灰?点击后有没有二次确认?导出期间用户重复点击怎么办?
这类问题我建议专门过一遍「反向检查清单」:每个可见元素问一次——谁不能看、什么时候不显示、点击后有没有防重复、数据为空时显示什么。把这些问题补成新条目加进手册,开发阶段就不会来反复问「这个要不要做」。
4. CN环境下最容易漏的三块:权限矩阵、多语言与异常态
如果说前三章解决「怎么读、怎么拆」,这一章解决「为什么拆的时候总漏东西」。中文环境下的界面BA手册,我做了几轮之后发现有三块内容是重灾区:权限描述散落、中文字符串没定规则、异常路径一片空白。而且这三个问题不是开发能自己兜底的,必须在BA层面定清楚。
4.1 权限矩阵是界面手册的隐藏主线
界面手册里几乎每个按钮、每个页面都牵涉权限,但很多手册把权限写在条目描述里,分散且难查。正确做法是单独建一张权限矩阵,手册主条目只引用矩阵中的角色编码。
幂等、并发、超时这三类异常,BA手册必须覆盖。幂等指用户连点两次提交会不会生成两条数据;并发指两个用户同时改同一条数据谁覆盖谁;超时指请求超过N秒无响应时界面表现。加N秒这个参数时,不是拍脑袋定的。通常以接口的P95响应时间为基准:如果接口平均值300ms,那超时阈值设在5秒左右比较合理。设太短用户正常操作就被打断,设太长用户会以为系统卡死。
异常状态的定义方式和正常态一样,也要写「条件 + 表现 + 操作」。比如「提交超时」:条件是请求发出后5秒无响应,表现为弹出「请求超时,请重试」提示,操作是用户可点击重试按钮。
4.2 中文字段与多语言变量:占位符、长度与时区
CN版本的手册,多语言问题是隐藏工作量。同一个字段,中文显示「所属部门」,切换到英文界面变成「Department」,如果字段定义表没有对应的key,开发就会写死中文,后来做国际化时全要返工。字段定义表里每一行都应该预留「多语言key」这一列。
比key更隐蔽的是文案变量。界面上常出现「共{0}条记录」这种动态文案,{0}是后端返回的数字。手册里写了文案,但没标哪个词是变量、变量是什么格式,接口返回的数据就直接拼接,格式一乱就出错。常见做法是统一规定「{0}、{1}」为变量占位符,并在文案定义旁标注占位符含义。
日期格式在中文环境下也有讲究。中国用户习惯看「2024-12-11」,但系统接口可能返回「2024-12-11T10:30:00Z」这个UTC格式。界面上直接显示原始值会非常突兀。BA手册应该对时间显示格式做出约定:列表页显示「YYYY-MM-DD HH:mm」,详情页可以带时区标识。这个约定不写,前端就会自己处理,各页面格式不一致,测试提一堆低优缺陷。
4.3 异常态写在手册里才算数:超时、幂等与并发
排期时这些异常逻辑往往被认为「顺手做了」,其实每一条都是实打实的开发量和测试量。以「提交申请」这个动作为例,至少涉及三个异常分支:
超时:用户点击后接口5秒未返回,界面出现「提交中」状态还是直接报错?错误后用户重试,会不会造成重复提交?幂等:用户连点两次「提交」,系统能否识别并阻止第二条?并发:两个用户同时编辑同一条记录,后保存的一方应该收到提示还是直接覆盖?这三个问题不在手册里定掉,开发就会各写各的。
我建议把这些异常分支单独列成「异常场景清单」,每条标注触发条件、预期界面表现、用户操作范围。测试直接拿这个清单写用例,比从正常流程反推异常要全面得多。
5. 用户界面手册落地避坑:五类典型问题与排查路径
做了几个带界面BA手册的项目后,我把翻过车的问题收敛成五类。每一类都是「现象 → 原因 → 解决」的结构,你在自己项目里遇到,可以直接照方抓药。
5.1 条目粒度不一致:业务写一页,研发拆十页
现象:开发评估工作量时说手册里一条需求实际是五个任务,评审会上来回掰扯半天。原因:BA按业务操作写条目,开发按代码改动点拆任务,两者颗粒度根本不同。解决:在拆解阶段就输出「需求条目 × 开发任务」映射表。一个BA条目可以对应多个开发任务,但要明确哪个是主体、哪些是附带改动,评审会焦点放在主体任务,附带改动合并评估。
5.2 布局用文字描述:评审会上各人脑补出不同界面
现象:手册里写「按钮放在页面右上角」「列表左侧显示用户信息」,结果开发做出来的界面,布局跟业务方脑子里想象的完全两样。原因:文字描述布局的空间信息太弱,每个人在自己心里渲染的版本不同。解决:复杂布局不能只写字,配合线框草图或原型图。线框不需要高保真,只标注区域、顺序和间距关系。评审时让业务方对着线框确认「是不是这个意思」,再让开发按线框实现,差异会缩小很多。
5.3 权限散落在备注里:查不到、对不上、验收才发现
现象:验收阶段发现普通用户能看到「删除」按钮,但手册里只写了管理员权限,没定义普通用户看到什么。原因:权限被写进条目描述而没有单独成表,测试用例也从没覆盖无权限场景。解决:项目启动时就建权限矩阵,每个按钮、每个字段都标注可见与可操作角色。矩阵表建议固定格式:功能点、管理员、审计员、普通用户(可见/可操作)、访客。评审会逐行过一遍,权限相关的问题一次聊清。
5.4 多语言变量裸奔为「{0}」:文案接手时根本不知道替换谁
现象:测试提缺陷——列表页显示「共{0}条」,花了两天才定位到是接口字段没映射成功。原因:BA手册里写了完整文案但没标注哪部分是动态变量,前端拿到字符串直接渲染,后端字段对不上就原样显示。解决:手册每条文案都用「静态部分 + 变量标记」的格式定义,例如「共{0}条记录,{1}条未读」,并注明{0}为总数、{1}为未读数,均来自列表接口的total和unreadCount字段。后端按约定返回,前端按key替换,这个坑就不会出现。
5.5 只有正常路径没有异常路径:上线后第一次异常就翻车
现象:新功能上线第二天,用户反馈导出Excel时点了没反应,没有人预先定义过「导出期间重复点击」的交互。原因:BA手册从头到尾在写正常的操作流,异常情况一概没提。解决:每个核心操作补「防重复」约定,简单场景是提交按钮点击后立即置灰,长耗时场景是展示加载状态并禁用按钮。这条约定成本很低,但能挡住大量线上低级反馈。我在评审时会把「连点两次」当必问题,养成习惯后团队整体质量会明显改善。
6. 让手册活起来:用界面走查单反向补齐BA条目
BA手册最大的风险不是没人看,而是评审通过后被锁进共享盘,开发做开发的、测试测测试的,手册和实现慢慢分家。我在项目后期有个固定动作:用手写走查单的方式,在界面开发完成后逐屏比对,把手册缺漏补回来,也把实现偏差记录在案。
走查单不需要复杂,一张A4纸分六列就够。每一行是一条走查项,按页面顺序排列。我常用的走查单模板如下:
| 走查项 | 检查方式 | 通过标准 | 状态 | 对应BA条目 | 备注 |
|---|---|---|---|---|---|
| 空数据展示 | 新账号登录,打开列表页 | 显示空态引导文案与操作按钮 | 待查 | UI-01-01-04 | 手册未定义空态,需补 |
| 加载状态 | 弱网模拟,打开详情页 | 显示加载动效,禁止出现白屏 | 通过 | UI-01-02-02 | |
| 权限置灰 | 普通角色登录,查看删除按钮 | 按钮置灰并带提示,不可点击 | 待查 | 权限矩阵-行12 | |
| 文案变量 | 构造含未读数数据,查看提示 | 数字正确替换,无{0}裸奔 | 通过 | UI-03-05-01 | |
| 连续点击 | 点击导出,快速再点两次 | 第二次点击无效或按钮置灰 | 待查 | 无 | 手册缺失,需要补防重复约定 |
走查单用起来之后,会有两个明显收益。一是手册不再是静态文档,每次走查都是一个逆向补齐的过程,缺条目就补条目,缺约定就补约定;二是测试用例的来源变多了,不再只靠分析师写好的验收标准,走查单里每条「待查」都可以转成一条正式用例。
配合走查单,我习惯把「无对应BA条目」的界面元素单独记在一个清单里,每周清一次。要么补手册,要么确认是临时实现,到版本发布时,所有的界面元素都能追溯到一个条目。这套机制跑过两个项目后,我发现最大的变化不是缺陷变少了,而是评审会从「吵架会」变成了「核对会」。
做了三个带界面BA手册的项目之后,我的习惯是:任何界面改动,无论多小,先更新手册再加代码。手册更新在前,代码实现紧跟,走查单兜底——这个顺序能保证需求和实现永远不脱节。如果你手上也有一份静静躺在共享盘里的界面手册,从今天起给它配一张走查单,让旧文档重新产生价值。希望帮到你。
本文还有配套的精品资源,点击获取