易君召
发布于 2026-08-11 / 作者:易君召 / 1 阅读
0

《系统分析师教程(第 2 版)》第 16 章 Web 应用系统分析与设计 全解析

本章属于教材第三篇「案例实践」的核心开篇章节,承接软件工程、系统设计的基础理论,聚焦 B/S 架构下信息系统的全生命周期分析与设计方法,是软考系统分析师选择题、案例分析题、论文题的高频考查模块,整体分值占比约 15%-20%。

一、本章主要内容详解

教材本章共分为 5 大节,覆盖 Web 应用从基础概念、架构设计、技术框架、开发实现到测试验证的完整链路。

16.1 Web 应用系统简介

核心定义与特征

Web 应用程序是运行在 Web 浏览器中的软件,核心优势包括易于访问、开发高效、使用简单、扩展性强,天然具备跨平台、免客户端安装的特性。

两类构建模式

  1. 传统 Web 应用:大部分业务逻辑在服务端执行,页面由服务端渲染后返回浏览器,典型代表为 JSP、PHP 开发的多页应用。

  2. 单页应用(SPA):大部分用户界面逻辑在浏览器中执行,通过 Web API 与服务端交互数据,页面无刷新切换,典型代表为 Vue、React 开发的前端应用。

16.2 Web 应用架构设计

16.2.1 架构设计 8 大原则

是 Web 系统设计的底层指导思想,也是概念题的高频考点:

  1. 分离关注点:按软件职能拆分模块,如表现层、业务层、数据层分离

  2. 封装:隐藏内部实现细节,仅暴露必要接口,控制可变状态扩散

  3. 依赖关系反转:高层模块不依赖低层模块,二者都依赖抽象

  4. 显式依赖关系:类 / 方法明确声明运行所需的依赖对象,避免隐式依赖

  5. 单一职责:每个模块仅负责一项核心功能

  6. 避免自我重复:同类业务逻辑仅在一处实现,减少冗余维护成本

  7. 持久性无知:业务逻辑层不感知底层数据存储的具体实现

  8. 有界上下文:将大型系统拆分为独立概念模块,各自独立演进

16.2.2 应用架构分类

从代码组织与部署形态维度,分为三类主流架构:

架构类型

核心特点

优势

劣势

适用场景

整体式(单体)架构

所有代码作为单个程序部署,组件高度耦合

开发简单、部署便捷、调试成本低

扩展困难、迭代效率低、技术栈固定

小型项目、业务稳定的内部系统

微服务架构

拆分为多个松散耦合的独立服务,通过 API 通信

技术异构、独立部署、弹性扩展

运维复杂、分布式事务难度高

中大型互联网系统、业务快速迭代场景

无服务器(Serverless)架构

无需管理服务器基础设施,按调用量计费,自动扩缩容

免运维、成本弹性、聚焦业务逻辑

厂商绑定、冷启动延迟、调试困难

流量波动大的轻量业务、事件驱动场景

16.2.3 Web 应用架构模式

  1. B/S 架构:浏览器 / 服务器模式,基于请求 - 响应模型,经典三层结构为表现层(客户端浏览器)、逻辑层(Web 服务器)、数据层(数据库服务器),是 Web 应用最基础的架构模式。

  2. P2P 架构:对等网络架构,客户端之间不经过中央服务器直接通信,适用于文件共享、实时通信等场景。

  3. MVC/MVP 架构

    • MVC:模型(数据存储与业务逻辑)、视图(用户界面)、控制器(输入处理与流程调度),实现表现层与业务层解耦

    • MVP:MVC 的演进,通过表示器(Presenter)完全隔离视图与模型,更便于单元测试

  4. 微服务架构:由多个独立小型服务组成,服务通过 HTTP API 通信,支持独立部署、多语言开发;配套技术包括服务注册发现、服务监控、服务容错等。

16.3 Web 应用开发框架

Java EE 开发框架

  • SSH 框架组合:经典 Java Web 企业级开发架构

    • Struts:基于 MVC 的 Web 层框架,通过 ActionServlet、Action、ActionForm 实现分层

    • Spring:业务层框架,核心为依赖注入与 AOP,负责组件管理与事务控制

    • Hibernate:ORM 持久层框架,封装 JDBC,实现以对象方式操作数据库

  • JSF:Java EE 官方组件式 Web 框架,基于组件化思想构建企业级 Web 界面。

.NET 开发框架

微软推出的企业级开发平台,支持快速 Web 应用开发,提供统一的类库与运行时环境。

Web 层前端框架

  • AJAX 相关类库:Prototype、jQuery、DOJO、Ext JS 等,实现页面异步交互

  • WebPage 3.0 等前端页面技术体系

16.4 Web 应用系统开发

16.4.1 核心通信协议

  1. HTTP/HTTPS:Web 核心应用层协议,无连接、无状态、基于文本,是浏览器与服务器通信的基础。

  2. RTP/RTSP:实时传输 / 流媒体控制协议,用于视频会议、直播点播等流媒体 Web 系统。

  3. SMTP/POP3/IMAP:邮件相关协议,SMTP 负责邮件发送,POP3/IMAP 负责邮件接收;POP3 将邮件下载到本地,IMAP 保留在服务器端支持多端同步。

16.4.2 数据存储与基础设施

  1. 缓存系统:提升访问速度的核心组件,分为 4 种模型:应用服务器本地缓存、全局缓存、分布式缓存、CDN 缓存。

  2. 云存储:云端弹性存储资源,如对象存储服务,用于存放非结构化文件。

  3. CDN(内容分发网络):分布式节点缓存静态资源,用户就近访问,降低源站压力、提升加载速度。

  4. 负载均衡器:将流量分发到多台服务器,提升系统并发能力;分为四层负载(LVS、HAProxy)和七层负载(Nginx、HAProxy),也可分为硬件负载(F5)和软件负载。

  5. 消息队列:异步解耦核心组件,缓冲峰值流量,实现业务异步处理。

16.4.3 客户端技术

包括 HTML/HTML5、XML、CSS、JavaScript、AJAX、DOM、Flash/Flex 等,负责页面展示与用户交互。其中 AJAX 实现页面局部刷新,是现代 Web 交互的基础技术。

16.4.4 服务端技术

  1. 基础技术:CGI(早期动态网页标准,支持多语言开发)、ISAPI/NSAPI

  2. 主流动态脚本:PHP、ASP/ASP.NET、JSP/Servlet

  3. 通用脚本语言:Perl、Ruby、Python

16.4.5 Web 应用系统部署

  • 部署粒度:细粒度频繁更新会影响用户体验,通常采用灰度发布策略逐步放量

  • 部署原则:管理用户预期、多环境全量测试、提前建立支持体系、先修复缺陷再交付

  • 部署环境:包含操作系统与应用服务器,应用服务器需支持负载均衡、数据库连接池、缓存、版本控制等能力

  • 版本控制与 CMS:变更管理工具,保障内容与版本对应,支持故障时快速回滚

16.5 Web 应用系统测试

16.5.1 测试概述

Web 应用测试的核心挑战:用户量大且跨平台、内容类错误需人工校验、多层架构缺陷定位难、第三方集成测试复杂、技术迭代快导致测试模型难统一。

16.5.2 测试过程

  1. 需求分析:明确测试目标与范围

  2. 定义测试策略:确定测试类型、准入准出标准、异常处理规则

  3. 确定测试环境:选型工具、人员、用例粒度

  4. 执行测试:从用户可见的界面、导航,逐步深入到功能、数据,最后验证基础设施与部署配置

16.5.3 功能测试

  • 链接测试:验证所有链接可达、无孤立页面

  • 表单测试:验证输入校验、异常处理、默认值、浏览器兼容性

  • 数据校验:验证业务规则下的输入合法性校验

  • Cookies 测试:验证 Cookie 的存储、时效、刷新影响

  • 数据库测试:验证数据完整性、一致性

16.5.4 性能测试

共包含 8 类核心测试:

  1. 速度测试:网络与业务处理的响应速度

  2. 负载测试:可接受响应时间内的最大并发用户数

  3. 压力测试:持续加压找到系统性能瓶颈与崩溃临界点

  4. 强度测试:极限状态下系统的性能下降幅度

  5. 并发测试:多用户同时访问时的线程安全、死锁问题

  6. 大数据量测试:海量历史数据下的系统性能

  7. 配置测试:寻找软硬件资源的最优分配方案

  8. 可靠性测试:规定时间内无故障运行的概率

测试方法主要为虚拟用户法、WUS(虚拟用户相似度)评估法。

16.5.5 安全性测试

核心测试项包括:数据加密、身份认证、日志审计、Session 超时管理、备份与恢复、访问控制、安全漏洞扫描、端口检测、服务端脚本漏洞、防火墙有效性。

16.5.6 Web 服务测试

分为三个层级:

  1. 基础设施验证:中间件的稳定性与可靠性

  2. 服务独立测试:单服务的功能、性能与描述一致性,支持多版本回归

  3. 服务集成测试:多服务协同调用的正确性与稳定性

二、主要考点与考情分析

1. 分值与题型分布

根据近 5 年考试数据,本章考查占比稳定:

  • 上午综合知识:5-8 分,以概念辨析、技术分类、原理识记为主

  • 下午案例分析:10-15 分,每年必考 1 道 Web 相关大题,常作为案例二或案例三

  • 论文写作:高频选题方向,如「Web 系统架构设计」「Web 应用性能优化」「Web 安全体系建设」等

2. 核心高频考点

选择题高频考点

  • Web 架构模式的分类与特点(单体 / 微服务 / Serverless、MVC/MVP)

  • 前后端技术栈分类(哪些属于客户端技术、哪些属于服务端技术)

  • 性能测试类型辨析(负载测试 vs 压力测试 vs 强度测试)

  • 负载均衡分层(四层 vs 七层)、缓存层级分类

  • 基础协议功能(HTTP、SMTP/POP3、RTP 的适用场景)

  • Web 安全基础概念(常见漏洞、Cookie 安全属性)

案例分析高频考点

  1. 架构设计题:给出业务场景,要求选择合适的 Web 架构(如单体转微服务的改造),说明选型理由与优缺点

  2. RESTful API 设计:考查 REST 的 6 大约束,或要求指出接口设计的问题并修正

  3. 性能优化题:给出系统响应慢的场景,要求从前端、接入层、应用层、缓存、数据库分层给出优化方案

  4. 安全防护题:给出系统漏洞现象,要求识别攻击类型(XSS、SQL 注入、CSRF 等)并给出防御措施

  5. 高并发改造题:结合电商秒杀、大促场景,设计从负载均衡到数据库的全链路高并发方案

论文高频方向

  • 论 Web 应用系统的架构设计与演进

  • 微服务架构在 Web 系统中的实践与权衡

  • Web 应用系统的性能优化策略

  • Web 信息系统的安全设计与防护

3. 历年考查规律

  • 案例题通常以电商平台、企业 OA、政务系统等典型 Web 场景为载体,一道题融合「架构选型 + 性能优化 + 安全防护」多个考点

  • 命题趋势逐步向云原生、前后端分离、微服务等现代 Web 技术倾斜,传统 CGI、Struts 等老旧技术仅做概念考查

  • 选择题侧重细节区分,如不同缓存模型的差异、不同负载均衡技术的适用层级

三、重难点深度解析

1. 重点内容拆解

(1)RESTful API 设计原则

是案例题的超高频考点,必须掌握 6 大约束:

  • 资源导向:用 URI 唯一标识资源,如/users/123而非/getUser?id=123

  • 统一接口:HTTP 方法语义化:GET 查询、POST 新增、PUT 全量更新、DELETE 删除

  • 无状态通信:服务端不保存客户端会话状态,每次请求携带完整身份信息

  • 可缓存性:响应明确标注缓存规则,减少重复请求

  • 分层系统:客户端无法感知中间层(代理、网关、负载均衡)的存在

  • 按需代码(可选):服务端可返回可执行代码(如 JS)扩展客户端能力

(2)Web 性能优化分层体系

案例题答题的核心框架,按请求链路分层记忆:

  • 前端层:资源压缩合并、图片优化、懒加载、浏览器缓存、HTTP/2

  • 接入层:CDN 加速、负载均衡、动静分离

  • 应用层:业务逻辑优化、异步化(消息队列)、连接池复用、无状态化水平扩展

  • 缓存层:本地缓存 + 分布式缓存多级架构、热点数据预热、缓存失效策略

  • 数据层:数据库索引优化、读写分离、分库分表、SQL 优化

(3)核心 Web 安全漏洞与防御

漏洞类型

攻击原理

核心防御手段

SQL 注入

输入恶意 SQL 片段,篡改数据库操作

预编译语句、输入校验、ORM 框架、最小权限原则

XSS 跨站脚本

注入恶意 JS 代码,窃取用户信息

输入过滤、输出转义、CSP 内容安全策略、HttpOnly Cookie

CSRF 跨站请求伪造

诱导用户在已登录站点执行非预期操作

CSRF Token、SameSite Cookie、验证码校验

身份认证失效

弱密码、会话泄露、无超时机制

强密码策略、JWT/Session 安全配置、超时自动退出

2. 难点内容辨析

(1)架构选型的权衡思维

难点在于不存在「最优架构」,需结合场景分析:

  • 小型团队、业务稳定:优先单体架构,降低运维与开发成本

  • 业务复杂、团队规模大、迭代速度要求高:微服务架构更合适

  • 流量波峰波谷差异大、计算逻辑简单:可引入 Serverless 降低成本

    答题时需同时说明选型理由和潜在问题,体现系统分析师的权衡能力。

(2)分布式 Web 系统的 Session 管理

分布式部署后,用户请求可能落到不同服务器,Session 共享是核心难点,三种方案的对比是易混点:

  • 粘性 Session:负载均衡将同一用户请求固定到一台服务器,简单但失去容灾能力

  • Session 复制:服务器间同步 Session 数据,一致性好但同步开销大,不适合大规模集群

  • 集中式 Session 存储:将 Session 存入 Redis 等分布式缓存,扩展性强、容灾好,是主流方案

(3)性能测试概念边界区分

选择题易混淆的概念:

  • 负载测试:测「正常可接受范围内的最大承载」,目标是找到容量上限

  • 压力测试:测「超出负载后的系统表现」,目标是找到崩溃临界点与瓶颈

  • 强度测试:测「极限资源下的系统稳定性」,如 CPU / 内存不足时的性能下降幅度

四、备考建议

  1. 基础阶段:梳理本章知识框架,重点掌握架构分类、技术栈分层、测试类型等基础概念,应对选择题

  2. 强化阶段:针对案例题,重点练习「分层答题法」,如性能优化、安全防护按层级输出答案,保证逻辑完整

  3. 论文准备:积累 1-2 个 Web 项目实践素材,覆盖架构设计、性能优化、安全建设三个方向,结合本章理论框架组织内容


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/system-analyst-tutorial-2nd-edition-chapter-16-web-application-analysis-design-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/