《系统分析师教程(第2版)》笔记——第 18 章 移动应用系统分析与设计
第 18 章 移动应用系统分析与设计
【版权声明与学习说明】
本文系笔者学习《系统分析师教程(第2版)》第18章后,结合个人理解整理的原创学习笔记。文中所有表格、通俗化举例及箭头式总结,均为本人消化后重新归纳表述,不代表原书官方立场。
整理初衷仅为交流学习、备考记录,无意侵犯原作者版权。若您认为存在不当引用,请通过CSDN私信联系,我会第一时间处理。
推荐备考的朋友购买正版教材,尊重知识成果。
移动应用系统是企业信息化的重要载体,本章围绕移动应用的全生命周期展开,核心涵盖移动应用平台、开发环境、架构设计、开发方式及无代码开发五大板块。从主流开发 / 部署平台的特性对比,到开发环境的工具选型,再到架构从单体到微服务的演进,以及原生、混合、无代码等多种开发模式,全面覆盖移动应用开发的核心知识,旨在帮助系统分析师掌握移动应用从设计到落地的完整逻辑,适配不同业务场景的开发需求。
18.1 移动应用平台概述
移动应用平台分为开发平台和部署平台,前者提供全流程研发支持,后者负责应用的发布与运行,是移动应用落地的基础支撑。
18.1.1 移动端应用开发平台
主流开发平台各有侧重,有的 “大而全” 覆盖全流程,有的 “小而精” 聚焦核心能力,核心平台如下:
- EMAS(阿里巴巴):
- 定位:全端场景一站式研发平台(支持 App、H5、小程序、PC 应用);
- 核心优势:基于云原生技术,提供 B-Design 设计体系(高品质 UI 组件)、组件化框架(10 分钟搭建超级 App)、阿里 Mobile DevOps 最佳实践(周粒度迭代);
- 关联产品:mPaaS(源于支付宝,云到端一站式解决方案,降低技术门槛)。
- FinClip:
- 核心能力:App 集成其小程序 SDK 后,可快速运行小程序,实现解耦、模块化开发和动态热更新;
- 核心优势:跨端运行(支持 iOS、Android、Windows、电视等多设备)、自研开发工具 FIDE(小程序转独立 App)、支持灰度发布(按地域 / 人群 / 时段投放)。
- EMOP(京东):
- 定位:企业级移动研发平台,京东移动中台产品化;
- 核心优势:支持原生、跨端、H5、小程序四大开发框架;组件化方案高效解耦,沉淀丰富业务组件(网络、扫码、分享等);完善 DevOps 流程(静态代码扫描、热修复);全维度性能监控 + 智能运营分析。
- 其他平台:
- TMF(腾讯):大而全,覆盖研发全闭环;
- APICloud:专注移动研发技术,小而精,有独特优势。
18.1.2 移动端应用部署平台
部署平台决定应用的发布渠道和运行环境,主流分为小程序和 App 两大类:
小程序部署平台(微信 vs 支付宝):
对比维度 微信小程序 支付宝小程序 开发差异 开发逻辑简约直观,生态完善 功能复杂,商业属性强 面向人群 开放给个人 + 企业开发者 公测阶段,仅面向企业级开发者 核心优势 生态构建成熟,可接入分类丰富 依托蚂蚁金服 / 芝麻信用,支付、金融能力更强 App 部署平台(Android vs iOS):
对比维度 Android iOS 开源属性 开源系统,开放性高 闭源系统,审核严格 运行机制 虚拟机运行,程序可互访,内存占用易增长 沙盒运行,应用独立隔离,安全性高 后台机制 退出后仍后台运行,需手动清理 退出后仅保留界面,自动释放内存 屏幕响应优先级 第三层级(先激活应用 / 框架,再处理屏幕) 第一层级(优先处理屏幕交互,流畅度更高) App 审核 监管宽松,适配性参差不齐 严格审核,杜绝 “流氓软件”,漏洞少
18.2 移动应用开发环境
开发环境是移动应用开发的 “工具集”,按应用类型分为 App、小程序、网页应用三类,各自有专属工具和技术要求:
18.2.1 App 开发环境
- Android 开发环境:
- 核心工具:JDK(Java 开发核心,含编译 / 运行工具)、JRE(Java 运行环境,含 JVM)、JVM(Java 虚拟机,实现 “一次编译,多处运行”)、Android Studio(谷歌官方 IDE,集成开发 / 调试 / 打包功能);
- 辅助工具:Eclipse/IDEA(可选 IDE,Eclipse 适合初学者,IDEA 功能更强大)。
- iOS 开发环境:
- 核心工具:Xcode(苹果官方 IDE,开发 macOS/iOS/tvOS 应用,集成设计 / 编译 / 测试 / 调试)、iOS SDK(开发必需的文档、API、工具集合);
- 开发语言:Objective-C(传统语言)、Swift(苹果新推语言,专门适配 iOS/macOS);
- 第三方 SDK:极光推送、微信 / 支付宝支付登录等,需集成到项目中实现特定功能。
18.2.2 小程序开发环境
- 核心技术:WXML(模板语言,类似 HTML)、WXSS(样式语言,类似 CSS)、JS(逻辑语言)、JSON(配置文件,控制页面顺序、菜单栏);
- 核心工具:微信开发者工具(基于 nw.js,支持代码编写、编译、模拟器预览、调试);
- 关键组件:模拟器(模拟多机型效果,部分 API 需真机测试)、WXML 编译器(将 WXML 转为 JS 结构生成函数)、JS 预处理(ES6 转 ES5、代码压缩)。
18.2.3 网页应用开发环境
- 核心工具:HTML5 开发工具(如 DevExtreme);
- 关键技术:移动设备适配技术(浏览器兼容性、响应式设计)、开发模式(Native App、Hybrid App)。
18.3 移动应用架构
移动应用架构经历了从 “简单集成” 到 “模块化解耦” 再到 “分布式服务” 的演进,核心目标是提升可维护性、可扩展性和性能:
18.3.1 架构演进阶段
- 单体应用架构:
- 特点:所有功能打包成一个整体(如 war 包),开发、部署、运维简单,性能稳定;
- 劣势:业务复杂后,代码臃肿,开发效率低,维护成本高。
- MVC 架构(Model-View-Controller):
- 核心分层:
- Model(模型层):封装业务数据和处理逻辑(如聊天消息、用户信息);
- View(视图层):展示数据,与用户交互(如聊天界面、按钮);
- Controller(控制器层):协调 Model 和 View,处理用户请求(如消息发送 / 接收逻辑);
- 形象比喻:像卡带游戏机 ——Controller 是主机,View 是电视 + 手柄,Model 是游戏卡带;
- 案例(微信):Model 定义聊天消息、联系人数据;View 展示聊天界面、朋友圈;Controller 处理消息发送、联系人管理逻辑。
- 核心分层:
- MVP 架构(Model-View-Presenter):
- 核心改进:解决 MVC 中 View 与 Controller 耦合过紧的问题,将复杂逻辑移至 Presenter;
- 核心分层:
- Model:与 MVC 一致,封装数据和业务逻辑,不依赖 View/Presenter;
- View:负责 UI 初始化和交互,持有 Presenter 引用(如 Android 的 Activity/Fragment);
- Presenter:协调 Model 和 View,获取 Model 数据并回显到 View,响应用户行为;
- 案例(美食家应用):Model 含 SQLite 数据库(存储用户 / 菜谱信息)和 Retrofit 库(网络请求);View 是 UI 组件(展示美食 / 菜谱);Presenter 通过调用 Model 和 View API 实现业务逻辑。
- MVVM 架构(Model-View-ViewModel):
- 核心改进:进一步解耦,ViewModel 负责将 Model 数据转换为 View 可用格式,支持数据双向绑定;
- 特点:View 不直接依赖 Model,通过 ViewModel 通信,代码更简洁;
- 案例(Vue.js):基于 MVVM 思想,通过 Observer 监听数据变化,Compile 解析指令,Watcher 绑定更新函数,实现视图自动更新。
- 微服务架构:
- 特点:将应用拆分为多个独立服务(如用户管理、支付、推荐),每个服务独立部署、扩展,通过 API 通信;
- 核心优势:可伸缩性强、容错性高;
- 挑战:服务通信、数据一致性;
- 案例(Netflix):拆分用户管理服务、视频流服务、推荐系统服务、支付服务、配置管理服务,通过 RESTful API 交互,独立扩展。
18.4 移动应用开发
移动应用开发按技术路线分为多种方式,适配不同业务场景和跨端需求,核心包括开发语言、小程序、原生 App、网页 App、混合 App 五类:
18.4.1 开发语言
不同开发方式对应不同语言,核心分类如下:
| 开发类型 | 核心语言 / 技术 | 优势 | 劣势 |
|---|---|---|---|
| 原生 App | Android:Java/Kotlin;iOS:Objective-C/Swift | 性能最优,充分利用设备功能 | 成本高,需为不同平台单独开发 |
| Web App/H5 | HTML/CSS/JS | 跨平台,一套代码多端运行 | 性能不如原生,功能受浏览器限制 |
| Hybrid App | HTML/CSS/JS + Native API | 跨平台 + 原生功能调用,成本适中 | 性能略逊于原生,页面交互有限 |
| 桥接 App | 仅 JS(编译为 Java/OC) | 跨平台,执行效率高 | 多平台效果无法完全一致 |
| Flutter App | Dart | 跨平台,性能高,多端效果一致 | Dart 为新语言,生态迭代较慢 |
18.4.2 小程序开发方式(以微信为例)
- 基于微信小程序框架(MINA):
- 特点:新手友好,上手快,封装微信基础功能(文件系统、网络通信),提供 JS API,快速构建应用。
- 原生开发方式:
- 特点:使用 Java/OC 等原生语言 + 微信 SDK,可实现高级功能,性能更好。
- 网页开发方式:
- 特点:使用 HTML/CSS/JS + 微信 API,兼容多平台,开发效率高。
- 跨平台开发方式:
- 特点:使用 React Native/Weex 等跨平台语言,一套代码多端运行,节省时间。
- 云开发方式:
- 特点:无需搭建服务器,免鉴权调用微信 API,支持按量计费,快速开发小程序 / 公众号。
18.4.3 原生 App 开发方式
- Android 开发:
- 核心要求:掌握 Java/Kotlin 语言,熟悉 Android 环境和机制,掌握 UI 设计、第三方类库调用、网络 / 数据库知识;
- 案例(滴滴出行):技术栈为 Java/Kotlin(客户端)、Node.js(后端)、React(前端)、MySQL(数据库);架构采用微服务(功能模块拆分为独立服务)+ MVP(客户端)+ 敏捷开发(2 周迭代周期)。
- iOS 开发:
- 核心要求:掌握 Objective-C/Swift 语言,熟悉 Xcode、Cocoa Touch 框架、硬件 API(相机、GPS)、CoreData(数据库);
- 案例(知乎 iOS 客户端):技术栈为 Swift/Objective-C、RxSwift(响应式编程)、Alamofire(网络请求)、Kingfisher(图片加载);架构采用 MVVM,功能模块包括首页、问题、话题、个人中心、消息中心。
18.4.4 网页 App 开发方式
- 核心技术:HTML5/CSS3/JS(前端)+ Java/PHP/ASP(后端);
- 特点:无需下载安装,通过浏览器访问,跨平台优势明显,但功能受浏览器限制;
- 案例(去哪儿网网页 App):技术栈为 React Native(跨平台框架)、Redux(状态管理)、Ant Design Mobile(UI)、Node.js+Express(后端)、MongoDB(数据库);功能包括景点查询、酒店预订、路线规划。
18.4.5 混合 App 开发方式
- 核心逻辑:结合原生代码(提供容器,如 WebView)和 Web 技术(HTML5/CSS/JS,实现业务和界面),实现 “一次开发,多处运行”;
- 核心优势:跨平台覆盖广、开发 / 维护成本低、兼具原生功能和 Web 灵活性;
- 主流框架:Ionic、React Native、Flutter;
- 案例(Uber):技术栈为 Ionic(混合开发框架)、AngularJS(Web 框架)、Cordova(打包工具)、Node.js(后端)、MongoDB(数据库);原生代码用 WebView 为 HTML5 提供容器,业务逻辑和界面通过 Web 技术实现。
18.5 无代码开发
无代码开发是 “无需编写代码,通过可视化操作构建应用” 的模式,降低开发门槛,适配快速迭代需求:
18.5.1 发展阶段
- 第一阶段:单一功能代码生成工具(如报表 / 表单生成);
- 第二阶段:面向业务的应用开发平台(如 PowerBuilder、Visual Basic);
- 第三阶段:基于模型驱动的开发平台(如 Mendix、OutSystems);
- 第四阶段:基于低代码 + 云计算的无代码平台(如 Salesforce、Airtable)。
18.5.2 核心优劣
- 优势:降低技术门槛(非专业开发者可参与)、提高开发效率、缩短周期、降低成本、模块化组件易维护;
- 劣势:灵活性和可扩展性有限(难满足特殊需求)、可能存在性能 / 安全性问题、平台依赖度高、长期成本可能高于传统开发。
18.5.3 主流平台
- 无代码平台:Airtable(云表格 + 数据库)、Bubble(可视化 Web 应用开发)、OutSystems、Mendix、AppSheet、Salesforce Lightning Platform;
- 核心能力:提供可视化界面、组件库、自定义规则,支持拖放操作构建应用。
18.5.4 开发流程
- 需求分析:明确应用目标、功能和性能需求;
- 界面设计:用可视化编辑器创建布局和样式;
- 逻辑实现:拖放组件、配置属性和规则;
- 数据管理:设置数据库结构、API 调用;
- 测试与调优:功能测试、性能优化;
- 发布与维护:发布到目标平台,后续更新维护。
18.5.5 案例(Zapier)
- 核心定位:连接各类应用程序,实现自动化协作;
- 开发流程:选择触发器(如 “收到新邮件”)→ 选择动作(如 “创建 Trello 卡片”)→ 设置参数映射(如邮件标题→卡片标题)→ 命名并激活 Zap → 后续可停用 / 修改 / 查看运行日志。
