需求分析属于软件开发生命周期过程中的第二步,架构设计属于软件开发过程中的第三步
需求分析——搞清楚"要做什么"
作用:就像点菜前问清客人忌口和口味,把用户模糊的想法变成具体可执行的清单。
核心产出:
- 需求调研纪要:记录用户原始需求(比如用户说"想要一个能记账的APP")。
- 需求分析报告:把用户需求翻译成技术语言(比如拆解成:记账+图表统计+多端同步)。
- 需求确认:让用户签字画押,避免后期扯皮。
简单理解:把"我想要个好看的网站"变成"需要首页、产品页、蓝色主题、支持手机浏览"的详细清单。
软件架构设计——决定"怎么做"
作用:像画房屋设计图,确定系统的骨架(用什么技术?怎么分工?)。
核心产出:
- 概要设计:大方向选择(比如用微信小程序还是APP?数据存阿里云还是自建服务器?)。
- 详细设计:每个功能的具体实现(比如记账功能用MySQL数据库,统计图表用ECharts库)。
- 设计评审单:团队确认设计方案是否靠谱。
简单理解:把"造房子"分解成"钢筋水泥结构+三室两厅+WiFi全屋覆盖"的技术方案。
举个例子
假设要开发一个 外卖APP:
- 需求分析:用户要能点餐、支付、查看订单——变成功能列表和界面草图。
- 架构设计:决定前端用React Native(跨平台)、后端用Java、支付接支付宝API——确保这些技术能支撑需求。
关键区别:需求分析是"做什么",架构设计是"怎么做"。两者搞定了,后续写代码才不会跑偏!
架构设计概述
CS 架构 VS BS 架构
1. CS架构(Client/Server,客户端-服务器)
特点:需要安装专门的客户端软件才能用。
例子:微信(PC版)、QQ、王者荣耀、Photoshop。
通俗理解:
- 就像去麦当劳点餐,必须到店里(客户端)才能下单(服务器处理)。
- 优点:性能高、功能强大(比如游戏、专业软件)。
- 缺点:每次更新都要重新下载安装,跨平台麻烦(比如Mac可能用不了Windows版)。
2. BS架构(Browser/Server,浏览器-服务器)
特点:直接用浏览器访问,不用安装软件。
例子:网页版微信、淘宝、百度、在线Office。
通俗理解:
- 就像点外卖,用手机浏览器打开美团(浏览器)就能下单(服务器处理),不用专门装APP。
- 优点:不用安装,随时随地能用(手机/电脑/平板都能访问)。
- 缺点:功能可能不如客户端强大(比如网页版PS不如桌面版流畅)。
对比总结
特性 |
CS架构(客户端-服务器) |
BS架构(浏览器-服务器) |
安装要求 |
需要安装客户端软件 |
直接浏览器打开就行 |
更新方式 |
手动更新客户端 |
服务器自动更新,用户无感 |
跨平台性 |
差(不同系统要不同版本) |
强(只要有个浏览器就能用) |
典型例子 |
微信PC版、LOL、Photoshop |
网页版邮箱、在线文档、淘宝 |
一句话记住:
- CS架构:装软件才能用,功能强但麻烦。
- BS架构:开网页就能用,方便但功能有限。
其他的典型架构
1. 多层架构(以数据仓库为例)
通俗理解:像工厂流水线,数据从“原料”一步步加工成“成品”。
- 原始数据层:刚挖出来的矿石(乱七八糟的原始数据)。
- 清洗转换层:把矿石洗洗、磨成标准形状(去重、格式化)。
- 集成层:把不同矿石熔合成合金(合并多个数据源)。
- 应用层:做成手机壳卖给用户(生成报表、分析结果)。
优点:每层分工明确,好维护;缺点:流程长,改一层可能影响其他层。
2. 微服务架构
通俗理解:把大餐厅拆成多个小吃摊(每个摊独立卖一种食物)。
- 服务拆分:煎饼摊、奶茶摊、炸鸡摊各自经营(用户服务、支付服务、订单服务)。
- 去中心化:奶茶摊着火不影响煎饼摊(一个服务挂了,其他照常运行)。
- 通信方式:摊主之间用对讲机喊话(HTTP API或消息队列)。
优点:灵活(炸鸡摊想换配方随时换);缺点:管理麻烦(要协调一堆摊子)。
3. 服务网格架构
通俗理解:给小吃摊配了个“跑腿小哥团”,专门负责送餐和协调。
- 核心功能:
- 自动分配订单给空闲摊位(服务发现+负载均衡)。
- 检查外卖员是否靠谱(安全认证)。
- 高峰期限流(流量控制)。
- 例子:Istio、Linkerd就是这种“跑腿团队”。
优点:服务不用自己处理通信杂事;缺点:多了个“中间商”可能拖慢速度。
4. C/S vs B/S 架构(复习版)
- CS架构:必须下载APP(比如王者荣耀)。
- BS架构:直接浏览器打开(比如网页版网易云)。
总结:哪种架构最好?
架构类型 |
适用场景 |
举个栗子🌰 |
多层架构 |
数据需要一步步加工的场景 |
银行数据分析系统 |
微服务 |
业务复杂、团队多、要快速迭代 |
淘宝(订单、支付拆分开) |
服务网格 |
微服务太多,通信太乱需要管理 |
大型电商的促销活动调度 |
CS架构 |
需要高性能或离线使用 |
微信PC版、Photoshop |
BS架构 |
追求方便、跨平台 |
OA系统、网页邮箱、在线文档 |
终极口诀:
- 数据流水线 → 多层架构
- 拆小吃摊 → 微服务
- 配跑腿小哥 → 服务网格
- 装不装软件 → CS/BS