跳转至

17 WebApp 设计

说明

本文档由 AI 生成

非常抱歉之前的误会,看来是我过度解读了你的需求。以后我会专注于提供高质量的对话式笔记。

这就为你整理 Chapter 17: WebApp Design 的详细笔记。这一章主要关注**Web应用设计 (WebApp Design)**,重点讨论了如何在内容和功能复杂的情况下,通过设计原则、架构模式(特别是MVC)以及导航设计来构建高质量的Web应用。

以下是为你整理的Markdown格式笔记:


🌐 软件工程 Chapter 17: WebApp 设计 (WebApp Design)

1. 设计的两种理念与强调设计的时机

  • 两种基本方法 (Two Basic Approaches):
    • 艺术理想 (Artistic Ideal): 表达自我。
    • 工程理想 (Engineering Ideal): 为客户解决问题。
  • 何时应强调 WebApp 设计 (When to emphasize design):
    • 当内容和功能**复杂 (Complex)** 时。
    • 当 WebApp 规模庞大(涵盖数百个内容对象、功能和分析类)时。
    • 当 WebApp 的成功对业务成功有直接影响时。

2. WebApp 质量属性 (Quality Attributes)

  • 安全性 (Security): 抵御外部攻击,排除未授权访问,确保用户隐私。
  • 可用性 (Availability): 衡量 WebApp 可用时间的百分比。
  • 可扩展性 (Scalability): 系统处理用户或事务量显著变化的能力。
  • 上市时间 (Time to Market): 快速交付以抢占市场。

3. 终端用户的质量维度 (Quality Dimensions for End-Users)

  • 时间 (Time): 网站自上次升级后变化了多少?如何突出显示变化部分?
  • 结构 (Structural): 网站各部分是否紧密结合?所有链接(内外部)和图像是否正常工作?是否存在孤立的部分?
  • 内容 (Content): 关键页面的内容是否准确?关键短语在易变页面中是否持续存在?
  • 准确性与一致性 (Accuracy & Consistency): 今天下载的页面与昨天是否一致?数据呈现是否足够准确?
  • 响应时间与延迟 (Response Time & Latency): 服务器响应浏览器请求的时间?提交后的端到端响应时间?
  • 性能 (Performance): 浏览器-Web-网站-Web-浏览器连接的速度?性能是否随时间段、负载和使用情况变化?对于电子商务应用是否足够?

4. WebApp 设计目标 (Design Goals)

  • 一致性 (Consistency): 内容构建、图形设计(美学)、架构设计(模板)、界面设计(交互模式)以及导航机制都应保持一致。
  • 身份认同 (Identity): 建立与业务目的相匹配的“身份”。
  • 健壮性 (Robustness): 提供与用户需求相关的强大内容和功能。
  • 可导航性 (Navigability): 设计应直观且可预测。
  • 视觉吸引力 (Visual appeal): 内容的外观和感觉、界面布局、色彩协调、文本与图形的平衡必须吸引用户。
  • 兼容性 (Compatibility): 与所有适当的环境和配置兼容。

5. WebApp 设计金字塔 (WebApp Design Pyramid)

这是一个分层模型,从底层技术到顶层的界面设计:

  1. 技术 (Technology)
  2. 构件设计 (Component design)
  3. 架构设计 (Architecture design)
  4. 导航设计 (Navigation design)
  5. 内容设计 (Content design)
  6. 美学设计 (Aesthetic design)
  7. 界面设计 (Interface design)

6. 界面设计原则 (Interface Design Principles)

  • 核心问题 (Key Questions):
    • 我在哪?(Where am I?): 提供位置指示。
    • 我现在能做什么?(What can I do now?): 明确当前选项(功能、链接、内容)。
    • 我去过哪,要去哪?(Where have I been, where am I going?): 提供“地图”以辅助导航。
  • 布鲁斯·托诺齐 (Bruce Tognazzini) 的建议:
    • 有效的界面是**视觉清晰 (Visually apparent)** 且**宽容 (Forgiving)** 的,让用户感到受控。
    • 不要让用户关心系统的内部工作原理,工作应自动保存,支持随时撤销 (Undo)。
    • 最大化工作完成量,最小化用户输入信息量。
  • 具体原则:
    • 预期性 (Anticipation): 预测用户的下一步动作。
    • 沟通 (Communication): 传达用户操作的状态。
    • 一致性 (Consistency): 导航控件、菜单、图标、美学(颜色、形状、布局)的一致性。
    • 受控自主 (Controlled autonomy): 在强制执行导航约定的同时促进用户移动。
    • 效率 (Efficiency): 优化用户的工作效率,而非工程师或系统的效率。
    • 聚焦 (Focus): 界面和内容应专注于当前用户任务。
    • 菲茨定律 (Fitt's Law): 获取目标的时间是距离和目标大小的函数(目标越大越近,点击越快)。
    • 延迟降低 (Latency reduction): 使用多任务处理,让用户感觉操作已立即完成。
    • 易学性 (Learnability): 最小化学习时间。
    • 维护工作产品完整性 (Maintain work product integrity): 自动保存用户工作以防丢失。
    • 可读性 (Readability): 确保信息对老少皆宜的可读性。
    • 跟踪状态 (Track state): 存储交互状态,允许用户中断后继续。
    • 可见导航 (Visible navigation): 提供“用户停留在原地,工作被带到面前”的错觉。

7. 美学设计 (Aesthetic Design)

  • 不要害怕留白 (White space)。
  • 强调内容 (Emphasize content)。
  • 布局组织 (Organize layout): 从左上到右下。
  • 地理分组 (Group geographically): 将导航、内容和功能在页面上分组。
  • 不要为了延伸而增加滚动条。
  • 考虑分辨率 (Consider resolution) 和浏览器窗口大小。

8. 内容设计 (Content Design)

  • 内容对象 (Content Object): 类似于传统软件的数据对象。
  • 属性 (Attributes): 包含特定于内容的信息以及特定于实现的属性。
  • 机制 (Mechanisms): 需要表示实例化对象之间关系的机制。

9. 架构设计 (Architecture Design)

  • 内容架构 (Content Architecture): 关注内容对象(或网页等复合对象)的结构化呈现和导航。也称为**信息架构 (Information Architecture)**。
  • WebApp 架构 (WebApp Architecture): 关注系统如何管理用户交互、处理内部任务、实现导航和呈现内容。
  • 并行设计 (Parallel Design): 架构设计与界面设计、美学设计和内容设计并行进行。

10. 架构模式:MVC (Model-View-Controller)

这是本章最重要的架构模式,用于分离关注点:

  • 模型 (Model): 包含所有特定于应用程序的内容和处理逻辑(数据对象、外部数据源访问、特定于应用程序的功能)。
  • 视图 (View): 包含所有特定于界面的功能,负责内容的呈现和用户访问。
  • 控制器 (Controller): 管理对模型和视图的访问,协调两者之间的数据流。

11. 导航设计 (Navigation Design)

  • 用户层次与用例 (User hierarchy & Use-cases): 不同角色的用户有不同的导航需求。
  • 导航语义单元 (NSU - Navigation Semantic Unit): 一组信息和相关的导航结构,共同满足一组相关的用户需求。
    • 组成: 导航节点 (Navigation Nodes, NN) + 导航链接 (Navigation Links)。
  • 导航语法 (Navigation Syntax):
    • 单个链接 (Individual link): 文本、图标、按钮。
    • 水平导航栏 (Horizontal bar): 列出主要类别(通常4-7个)。
    • 垂直导航栏 (Vertical column): 列出所有主要内容对象。
    • 选项卡 (Tabs): 导航栏的变体。
    • 站点地图 (Site maps): 包含所有内容和功能的完整目录。

12. 构件级设计 (Component-Level Design)

WebApp 构件实现以下功能:

  • 执行**局部处理 (Localized processing)** 以动态生成内容和导航能力。
  • 提供适用于 WebApp 业务领域的**计算或数据处理能力**。
  • 提供复杂的**数据库查询和访问**。
  • 建立与外部企业系统的**数据接口**。

13. 超媒体设计方法:OOHDM

  • 面向对象超媒体设计方法 (OOHDM - Object-Oriented Hypermedia Design Method):
    • 概念设计 (Conceptual design): 类、子系统、关系、属性。
    • 导航设计 (Navigational design): 节点、链接、访问结构、导航上下文。
    • 抽象界面设计 (Abstract interface design): 抽象界面对象、对外部事件的响应。
    • 实现 (Implementation): 可执行的 WebApp。

💡 复习重点总结 (Key Takeaways for Exam)

  1. MVC 架构 (MVC Architecture): 必须熟练掌握 Model (数据/逻辑), View (展示), Controller (协调) 的职责划分。这是Web开发的核心模式。
  2. 设计金字塔 (Design Pyramid): 记住层级关系,特别是底层是**技术**,顶层是**界面设计**。
  3. 界面设计原则 (Interface Principles): 重点复习 Fitt's Law (菲茨定律), Latency reduction (延迟降低), Consistency (一致性) 和 Visibility (可见性)。
  4. 导航设计 (Navigation): 理解 NSU (Navigation Semantic Unit) 的概念,以及不同导航语法(如水平栏、垂直栏、站点地图)的适用场景。
  5. 质量属性 (Quality Attributes): 区分 Availability (可用性) 和 Scalability (可扩展性),以及 Latency (延迟) 和 Performance (性能) 的区别。
  6. OOHDM: 了解这是一个专门用于超媒体/WebApp的设计方法论。

这一章非常贴近实际的Web开发工作,理解了MVC和界面设计原则,对你以后的工作也非常有帮助。祝你复习顺利!

评论区

欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问