系分是“系统分析与设计”,是软件工程领域一个重要的概念。
系统分析
系统分析是定义和理解问题,明确系统的需求和目标。通过调研,文档等方式分析业务流程,数据流和需要解决的实际问题,形成需求规格说明书。比如之前阿里一般偏技术性,一般内部称需求文档为PRD。B站的话业务导向更重一些,一般会称需求文档为MRD。
但其实需求规格说明书和PRD,MRD是有区别的。
PRD(产品需求文档):PRD 是从产品经理的角度出发,描述产品的功能需求和用户体验的文档,主要面向业务、用户和设计层面。
MRD(市场需求文档): MRD 是从市场和商业价值的角度出发,分析产品的市场定位、用户群体以及竞争环境的文档。
SRS(需求规格说明书):SRS 是从技术实现的角度出发,将 PRD 中的功能需求转化为详细的技术需求文档,描述系统的行为和实现细节。
系统设计
在系统分析的基础上,系统的结构设计和技术架构设计。包括系统的模块划分、架构设计。模块之间的交互方式、数据库设计、接口设计等。
核心目标
将用户的需求转化为技术实现的可行方案。
确保系统的功能性、可靠性、可扩展性和安全性。
减少开发过程中的返工和资源浪费。
为什么要系分
在阿里每个程序员都要学会写系分,虽然可能有些时候,甚至大部分时间都觉得写系分时浪费时间。就像是排期,技术评审一样,觉得这些流程步骤很繁琐。但其实恰恰走这个流程是最保险,最省时的。
如果没有排期,就没有一个具体交付节点,那根本不知道什么时候能交付,做事也没有了时间观念,像是没有一个清晰的目标,是很难将事情做下去的。
系分也是一样的,看似前期做了一些和程序无关的事情,直接写不就好了,但现实是直接写大概率会遇到之前没有没有考虑到的问题。只有前期把所有情况和边界case都搞清楚,这样写代码才是最高效,最健壮的。
写完系分文档,了解了风险点和实现细节,边界case和需求真实目的,包括后期可能存在的拓展功能,事情变得清晰且可控的话,那一切就变得简单了。