》笔记——第 16 章 Web 应用系统分析与设计)
第 16 章 Web 应用系统分析与设计【版权声明与学习说明】本文系笔者学习《系统分析师教程第2版》第16章后结合个人理解整理的原创学习笔记。文中所有表格、通俗化举例及箭头式总结均为本人消化后重新归纳表述不代表原书官方立场。整理初衷仅为交流学习、备考记录无意侵犯原作者版权。若您认为存在不当引用请通过CSDN私信联系我会第一时间处理。推荐备考的朋友购买正版教材尊重知识成果。Web 应用系统是指用户界面驻留在 Web 浏览器中的应用程序基于 W3C 标准通过浏览器访问 Web 资源内容、服务等规模从简单小应用到分布式大型系统不等。其核心优势是易访问、开发高效、使用简单、扩展性强主要分为传统 Web 应用服务器执行大部分逻辑和单页应用SPA浏览器执行大部分 UI 逻辑两类。本章围绕 Web 应用的架构设计、开发框架、开发技术客户端 / 服务器端、部署及测试展开全面覆盖从设计到上线的全流程是系统分析师开展 Web 应用相关工作的核心指南。16.1 Web 应用系统简介16.1.1 Web 应用程序Web 应用程序是运行在 Web 浏览器中的软件无需用户安装可实现复杂功能如购物车、产品搜索、即时消息是企业与客户远程交互的重要工具。核心优势易于访问支持所有浏览器和设备异地团队可共享文档和服务开发高效开发周期短、成本低同一版本适配多平台无需为不同设备单独开发使用简单无需下载安装自动更新无硬盘容量压力安全漏洞风险低扩展性强按需添加用户数据存储在云端无需额外投入硬件和存储。构建方式传统 Web 应用服务器执行大部分应用逻辑用户操作对应新的 URL 和页面加载单页应用SPA浏览器加载一个静态 HTML 文件通过 JavaScript 和 Web API 与服务器通信无需刷新页面用户体验更流畅混合方式在传统 Web 应用中嵌入 SPA 子应用。16.1.2 Web 应用特征现代 Web 应用需满足高可用性、跨设备、高安全性等要求核心特征如下云托管和可扩展性优化适配公有云 / 私有云占用空间小、吞吐量高相同硬件可服务更多用户降低托管成本跨平台支持 Linux、macOS、Windows 等主流操作系统兼容性强自动化测试通过工具自动执行测试用例验证正确性、稳定性和性能提高测试效率、降低成本支持传统应用和 SPA传统应用依赖服务器生成页面如 MVC 框架SPA 依赖客户端脚本和 Web API部分框架如ASP.NET Core MVC、Blazor WebAssembly同时支持两种模式简单的开发和部署可通过文本编辑器、命令行或 IDE 开发部署可自动化集成到 CI/CD 管道如 Azure DevOps、GitHub Actions支持 git 仓库自动部署。16.1.3 补充说明Web 应用的核心价值在于打破设备和地域限制让用户通过浏览器即可使用复杂功能同时降低企业开发和维护成本是当前互联网服务的主流形态。16.2 Web 应用架构设计Web 应用架构设计决定系统的可维护性、扩展性和性能核心是遵循科学原则选择适配场景的架构类型和模式。16.2.1 Web 应用架构设计原则设计原则是架构决策的核心依据确保系统简洁、模块化、可维护分离关注点按功能类型拆分软件如核心业务逻辑与 UI 逻辑、基础结构分离业务规则单独存放便于测试和迭代封装组件和分层通过明确接口交互内部实现可独立调整不影响外部协作避免直接访问私有状态依赖关系反转依赖方向指向抽象而非具体实现如类依赖接口而非直接依赖其他类提高可测试性和模块化显式依赖关系类和方法通过构造函数或参数明确声明所需协作对象避免依赖全局组件让代码更易理解单一责任对象仅负责一项职责仅因一种原因修改如 UI 逻辑和数据访问分属不同类微服务也遵循此原则避免自我重复相同逻辑封装为单一组件避免多处重复编写确保修改时全局一致持久性无知业务模型代码不依赖具体持久化技术如数据库便于后续切换存储方案如从关系库切换到 Redis有界上下文将大型应用拆分为独立概念模块每个模块有独立命名和存储模块间通过接口通信不共享数据库适配微服务架构。16.2.2 Web 应用架构分类按开发和部署模式架构分为三类各有适配场景整体式架构单体架构特点整个软件作为单一代码块开发部署组件相互依赖修改需重新编译整个代码优势开发测试简单部署容易成本低劣势代码量增大后难以维护扩展困难单点故障可能导致系统瘫痪适用场景轻量级应用、预算紧张、用户量和流量稳定的内部工具如企业内部税计算工具。微服务架构特点系统拆分为独立小服务每个服务有自己的进程和部署流程通过 HTTP API 通信松散耦合优势可独立更新 / 扩展支持持续交付适配高流量和复杂功能劣势部署和管理复杂需解决多数据库一致性问题适用场景复杂应用、流量呈指数增长的系统如社交网络、电商平台。无服务器架构特点服务器基础设施由云提供商管理用户按需付费无需关注服务器维护优势成本低后端代码简化自动扩缩容适用场景流量波动大、无需持续运行的应用如定时任务、低频访问功能。16.2.3 Web 应用架构模式架构模式是架构的具体实现模板常用如下三种B/S 架构Browser/Server结构浏览器表现层→ Web 服务器逻辑层→ 数据库服务器数据层核心极少事务逻辑在前端主要逻辑在服务器端无需安装客户端仅需浏览器基于请求 - 响应模型。P2P 架构Peer-to-Peer特点客户端之间直接通信无需服务器中转仅初始阶段可能用服务器匹配节点类型完整连接拓扑每个客户端与其他客户端都连接、非完整连接拓扑适用场景文件共享、即时通信如 BT 下载、部分聊天工具。MVC/MVP 架构MVCModel-View-ControllerModel模型数据存储方式如数据库表映射View视图用户可见界面如页面、按钮Controller控制器模型和视图的中间接口处理用户输入并调用模型MVPModel-View-PresenterMVC 的变体Presenter 完全隔离 View 和 ModelView 不直接与 Model 交互更适合复杂业务逻辑。16.3 Web 应用开发框架开发框架是预实现的组件集合提供基础结构让开发者聚焦业务逻辑提高开发效率和系统质量。16.3.1 开发框架简介框架是一组相互协作的组件为同类应用提供可重用结构支持细节设计和代码重用如 Spring、Struts、Hibernate。其核心价值是简化开发减少重复工作提高系统的可扩展性、可维护性。16.3.2 Java EE 开发框架基于 Java EE 的框架是企业级 Web 应用的主流选择常用如下两种SSH 框架组成Spring Struts Hibernate各组件作用Spring分层架构提供依赖注入降低组件耦合整合各类框架Struts基于 MVC 模式处理 HTTP 请求封装 Servlet、JSP减少编码量Hibernate对象关系映射ORM框架封装 JDBC让开发者用对象编程思维操作数据库优势轻量级、灵活可扩展、测试简单、开发成本低。JSF 框架Java Server Faces核心构建 Web 应用的标准 Java 框架提供 UI 组件、页面导航、数据验证、事件处理等功能结构Model业务逻辑层用 JavaBean 或 EJB 实现ViewJSF 标签构成的 JSP 页面ControllerFacesServlet 配置文件 action 处理器负责请求处理和响应派发优势支持国际化、错误处理组件可复用。16.3.3 .NET 开发框架由微软开发支持敏捷开发、跨语言集成核心包括公共语言运行时CLR提供托管执行环境.NET 框架类库包含 Windows Presentation FoundationWPF等组件优势开发部署简化支持多种编程语言C#、Visual Basic 等与 Windows 系统兼容性好。16.3.4 Web 层开发框架Web 层框架聚焦前端页面和交互常用如下两类WebPage 3.0特点基于 MVC 模式轻量级、可视化支持组件重用使用 Java、JSP、Servlet 等技术开放组件接口开发速度快。AJAX 框架核心简化异步 JavaScript 和 XML 开发解决浏览器兼容性问题提升用户交互体验主流框架Prototype功能实用、体积小封装 DOM 操作和事件jQuery轻量级、文档详细插件丰富简化 DOM 操作和 AJAX 请求Mootools模块化、面向对象支持优雅动画和完整 APIDOJO支持跨浏览器包加载机制灵活扩展性强Ext JS重量级提供丰富 UI 组件屏蔽跨浏览器差异AFLAX结合 JavaScript 和 Flash创建富交互应用。16.4 Web 应用系统开发Web 应用开发涵盖通信协议、数据存储、客户端 / 服务器端技术、部署等环节需协同多种技术确保系统稳定高效。16.4.1 Web 应用系统通信协议通信协议是计算机间数据交换的规则Web 应用常用如下协议HTTP超文本传输协议核心应用层无状态协议基于 TCP/IP用于浏览器与 Web 服务器的交互传输超文本和动态数据状态管理通过 Session会话跟踪用户状态常用 URL 重写和 Cookies 实现。RTP/RTSPRTP实时传送协议定义音频 / 视频的网络传输数据包格式常用于流媒体、视频会议RTSP实时流传输协议控制实时媒体的发送位于 RTP 之上支持多流控制。SMTP/POP3SMTP简单邮件传输协议用于发送电子邮件基于 TCP支持邮件中继POP3邮局协议版本 3用于接收电子邮件允许用户将服务器邮件存储到本地管理服务器邮件。16.4.2 Web 应用系统数据存储数据存储决定系统的性能和可扩展性常用方案如下缓存系统本地数据存储减少数据库访问分为应用程序服务器缓存、全局缓存、分布式缓存、CDN内容交付网络适配静态数据。云存储特点通过集群技术整合存储设备提供安全、可扩展的存储服务用户可随时随地访问主流产品Amazon S3灵活、高可用、Azure Cloud Storage高安全性、性价比高、谷歌云存储高耐用性易集成谷歌服务。CDN内容交付网络特点全球分布式服务器网络用户请求路由到最近节点降低延迟减少数据包丢失提升站点速度。负载均衡器功能将流量分布到多个服务器平衡负载避免单点过载类型软件负载均衡配置简单、成本低分四层LVS、Haproxy和七层Nginx、Haproxy硬件负载均衡性能强、功能全但成本高如 NetScaler、F5。消息队列作用异步存储消息协调服务间通信解耦系统组件提高可靠性和可扩展性模式点对点模式消息仅被一个消费者消费。16.4.3 Web 应用系统客户端技术客户端技术负责页面展示和用户交互核心技术如下HTML/HTML5HTML超文本标记语言定义页面结构简单易懂但语义性弱、扩展性差HTML5支持新元素、视频 / 音频、动画标准化 Web 应用功能无需插件即可实现富交互。XML可扩展标记语言特点跨平台、可扩展用于数据交换和结构化文档处理是 Web 服务数据传输的核心格式。DHTML动态 HTML特点结合 JavaScript、CSS、DOM 等技术无需服务器交互即可动态更新页面内容如鼠标悬停变色、下拉菜单。CSS层叠样式表作用定义页面样式字体、颜色、排版分离内容结构和表现形式支持多设备适配。Flash/FlexFlash生成矢量图动画.swf 文件体积小、边下载边播放支持 ActionScript 编程Flex基于 Flash用 MXML 和 ActionScript 开发提供丰富 UI 组件适配 RIA富互联网应用。DOM文档对象模型作用W3C 标准编程接口将 HTML/XML 文档解析为树形结构通过脚本操作节点增删改查。JavaScript/AJAXJavaScript客户端脚本语言动态操作页面元素如表单验证、动画但安全性较差、执行速度较慢AJAX异步 JavaScript 和 XML无需刷新页面即可与服务器通信提升交互体验如搜索建议、表单异步提交。16.4.4 Web 应用系统服务器端技术服务器端技术负责处理业务逻辑和数据访问常用技术如下CGI公共网关接口特点早期服务器端标准独立可执行程序每次请求创建新进程开发和运行效率低。PHP特点HTML 内嵌式脚本语言跨平台、执行效率高支持所有主流数据库学习成本低适合中小型 Web 应用。ASP/ASP.NETASP服务器端脚本技术嵌入 HTML支持 ActiveX 组件开发简单但仅支持 WindowsASP.NET.NET 框架的一部分支持多种编程语言C#、Visual Basic编译执行性能强、安全性高。Servlet特点Java 编写的服务器端程序运行于 Servlet 容器处理 HTTP 请求充当 MVC 中的控制器与 JSP 协同工作。JSPJava Server Pages特点HTML 中嵌入 Java 代码服务器端解析为 Servlet 执行分离内容和逻辑支持 JavaBean 组件复用。Perl/Ruby/PythonPerl功能强大擅长文本处理和系统管理集成正则表达式跨平台Ruby面向对象、语法简单Ruby on Rails 框架推动其在 Web 开发中的应用Python简洁易读、跨平台支持多种编程范式执行速度快可结合 C 扩展适用于大型应用如 Google 搜索、Bit Torrent。16.4.5 Web 应用系统部署部署是将构建完成的应用发布到服务器供用户访问核心要点如下部署粒度细粒度测试完单个组件后立即发布适用于修复紧急故障粗粒度打包一组变化后发布避免用户困惑和集成错误。部署原则管理客户期望避免过度承诺部署前在多环境测试硬件、浏览器、带宽建立支持制度及时响应用户问题优先修复缺陷再交付增量功能可采用灰度发布降低风险便于回退。部署环境操作系统Windows Server、Linux、UNIXWeb 服务器Apache跨平台、IIS仅 Windows、WebSphere、WebLogic核心要求支持负载均衡、数据库连接池、高速缓存机制。版本控制和 CMS作用管理代码变更确保发布内容正确跟踪变更记录支持版本回退应对系统崩溃。16.5 Web 应用系统测试Web 应用测试是保障系统质量的关键需覆盖功能、性能、安全性等多个维度应对跨平台、高并发等挑战。16.5.1 Web 应用测试概述测试目标发现系统错误和缺陷确保功能正确、性能稳定、兼容性强、安全性高。Web 应用测试的挑战用户量大、并发高需测试多用户访问性能内容错误需人工检测超链接和 UI 美观度测试难度大多层架构导致缺陷定位复杂集成第三方软件和框架需测试组件兼容性浏览器导航功能后退、刷新可能引发错误。测试阶段侧重点设计阶段测试服务器容量、安全设计、数据库设计、网络拓扑开发阶段代码测试、组件测试运行阶段功能、性能、安全性、兼容性、易用性测试维护阶段回归测试、新增功能测试。16.5.2 Web 应用测试过程Web 应用测试多采用敏捷方法迭代进行核心步骤如下需求分析明确测试目标、范围、文档和风险制定测试计划确定测试环境、用例、工具、人员和进度设计测试用例覆盖功能、性能、安全性等维度执行测试按用例执行记录结果缺陷管理跟踪和修复缺陷生成测试报告总结测试结果和系统质量。16.5.3 Web 应用功能测试功能测试验证系统是否满足业务需求核心内容如下链接测试检查所有链接是否有效指向正确资源、无失效链接无孤立页面无链接指向的页面可通过自动化工具如 Xenu Link Sleuth执行。表单测试测试表单提交逻辑包括输入验证合法性、格式、强制字段标记、错误提示、默认值设置确保服务器正确解析表单数据。数据校验测试验证业务规则校验如省份列表、手机号格式确保校验逻辑正确。Cookie 测试检查 Cookie 的存储、过期时间、加密情况验证登录状态、统计次数等功能是否正常。数据库测试测试数据完整性无损坏、模式正确和输出正确性避免数据丢失或更新错误可借助工具如 DBunit、QTP执行。16.5.4 Web 应用性能测试性能测试验证系统在不同负载下的响应能力核心内容如下速度测试测试网络连接速度和业务处理速度如页面响应时间≤3 秒。负载测试确定系统可承受的最大并发用户数模拟多用户访问关键业务如购物、提交数据。压力测试持续增加负载直到系统性能达瓶颈如 CPU 占 100%测试系统极限承载能力。强度测试测试系统在超负荷或最差环境下的抵抗能力验证性能下降幅度是否在允许范围。并发测试测试多用户同时访问同一资源时的线程同步问题避免死锁可借助工具如 LoadRunner模拟。大数据量测试测试海量数据存储、传输和查询的性能包括实时大数据量和历史累积数据量。配置测试测试不同硬件、操作系统、浏览器配置下的系统表现确保体验一致。可靠性测试测试系统长时间运行的稳定性采集数据评估可靠性。16.5.5 Web 应用安全性测试安全性测试验证系统的防护能力核心内容如下数据加密测试检查关键数据密码、支付信息是否加密传输和存储。用户身份验证测试测试无效账号密码登录、密码大小写敏感、登录次数限制、未登录访问权限等场景。日志文件测试检查访问记录、错误日志是否完整是否记录 IP、用户名、事务处理等信息便于追溯攻击或故障。Session 测试测试 Session 超时机制长时间无操作需重新登录、浏览器回退是否绕过登录。备份与恢复测试验证备份方式完全备份、差量备份和恢复效果确保数据可恢复。访问控制策略测试检查管理接口仅授权人员可访问避免越权操作。端口测试扫描服务器端口确保仅开放必要端口关闭无用端口避免安全隐患。服务器端脚本漏洞检查测试服务器端脚本是否存在漏洞防止恶意修改或上传脚本。防火墙测试验证防火墙功能和设置确保有效阻挡非法访问。16.5.6 Web 服务测试Web 服务测试聚焦服务交互和集成核心要点如下测试特性需服务提供者、代理和请求者共同参与测试分布远程多为黑盒测试难以预测运行情况。测试层次基础设施验证验证 Web 服务中间件和协议如 SOAP的兼容性和稳定性独立测试验证单个服务的功能、性能与描述一致支持多版本回归测试集成测试验证服务流描述的正确性确保服务动态集成后能正确执行业务流程。