这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
前言:
您是否想过一些世界上最有才华的开发人员学习如何在Uber,YouTube,Facebook或Github等公司中构建系统?
我认为Facebook曾经是某人计算机上的一个空文本文件这一事实令我感到疯狂,现在正是这家庞大的公司将其脚趾浸入了几乎所有事物,并亲自影响了全球15.9亿人。
作为初级,自学成才的开发人员,甚至是中级开发人员,朝着实际学习如何设计干净且可扩展的系统的方向继续增长的路线图似乎令人生畏。
对于我们很多人来说,我们的项目在经过一两次迭代后就会死掉,因为代码变成了无法维护的混乱。
part 1: 系统设计是什么
为了达成某种目的,通过个体组成整体的过程
系统设计是一个复杂的过程,从宏观上实现系统的自动化,提高系统的效率和效能。系统设计的步骤主要包括以下几个方面
part 2: 系统设计有哪些部分
系统设计是一个复杂的过程,从宏观上实现系统的自动化,提高系统的效率和效能。系统设计的步骤主要包括以下几个方面:
一、组织机构设计
1.分析系统的用户,了解用户的业务特点,确定系统的使用者;
2.确定系统的组织结构,包括组织机构、职能部门及职责分工等;
3.确定系统的职责划分,明确系统中每个职责的边界;
4.确定系统的目标和任务,确定系统的使用目的和需求;
5.确定系统的资源需求,包括人员、设备、材料等。
二、过程设计
1.分析系统的功能,确定系统的基本功能;
2.确定系统的工作流程,分析系统的功能模块,明确各个模块之间的关系;
3.确定系统的信息流程,即系统中各个部分如何结合、协作完成系统的目标;
4.确定系统的管理流程,即系统中各个部分的职责及分工;
5.确定系统的质量保证流程,即系统的质量控制方法及质量检查流程。
三、架构设计
1.确定软件的技术架构,确定软件所需的技术构件;
2.构建软件的逻辑架构,确定软件的模块划分、软件的数据结构及模块之间的接口;
3.确定数据库的架构,即确定系统数据的存储结构;
4.确定网络架构,即确定系统与外部系统之间的接口;
5.确定系统的安全架构,即确定系统的安全策略和安全措施。
四、数据设计
1.确定系统的数据字典,即确定系统的数据结构;
2.确定系统的数据流程,即确定系统内部数据传输流程;
3.确定系统的数据接口,即确定系统与外部系统之间的数据交换;
4.确定系统的数据安全措施,即确定系统的数据安全策略和安全措施;
5.确定系统的数据挖掘技术,即确定系统的数据分析方法和技术。
五、运维设计
1.确定系统的运行流程,即确定系统的运行规则和规范;
2.确定系统的维护流程,即确定系统的维护范围和措施;
3.确定系统的内容更新,即确定系统的更新范围和措施;
4.确定系统的质量保证,即确定系统的质量控制方法及质量检查流程;
5.确定系统的故障处理,即确定系统的故障处理措施及应急预案。
六、系统集成
1.确定系统的接口规范,即确定系统的接口标准;
2.确定系统的集成技术,即确定系统的集成策略和技术;
3.确定系统的集成过程,即确定系统的数据、文档、软件等的集成;
4.确定系统的集成管理,即确定系统的集成管理制度和管理流程;
5.确定系统的集成测试,即确定系统的集成测试的范围和措施。
part 3: 如何实现系统设计
4S原则:
Scenario 场景设计: 什么系统,需要哪些功能,多大的并发量
Storage 存储设计: 数据如何组织,sql存储,nosql存储
Service 服务设计: 业务功能实现和逻辑整合
Scale 可扩展性: 解决设计缺陷,提高鲁棒性和扩展性
q: 系统设计和架构设计的关系
系统设计是一个大的抽象 系统设计是设计出来一整个软件 而架构设计只是其中的一部分 用于确定技术架构逻辑架构数据库架构网络架构等 除此之外系统设计中还有数据设计运维设计等等
1.范围不同:系统设计更加全面,包括组织机构设计、过程设计、架构设计等;而架构设计仅仅是系统设计的一小部分,主要涉及技术架构和逻辑架构的设计。
2.目的不同:系统设计的目的是为了提高系统的效率和效能,实现系统的自动化;而架构设计的目的是为了提高软件的可靠性和可维护性,确保软件正确运行。
3.技术不同:系统设计需要使用到组织机构设计、过程设计、运维设计等技术,而架构设计则主要涉及软件的技术架构和逻辑架构的设计。
参考资料
码风略丑 读者见谅 --2023/2/9