但凡做过实际商业项目的开发人员都知道,开发前期通过脑力劳动做好程序设计,会大大减少开发后期修bug、维护的体力劳动。
程序设计分概要设计和详细设计。作为技术负责人应重点关注概要设计,把握整体架构、识别出开发过程中的重难点和潜在风险。至于详细设计应给实际业务的开发人员足够的发挥空间。
因为详细设计涉及到功能的技术细节,会和实际业务强相关。但对于概要设计来讲,主要在于明确怎样做?肯定是可以形成一套通用的范式的。
结合个人的实际工作经验,要做到通过设计提升程序稳定性和质量的目的,一份合格的概要设计应包含如下内容:
一 需求分析
1 产品需求分析
用于描述对产品提出的需求的理解和分析:产品定位、新增功能、业务目标等,避免对需求的理解和产品不一致,导致做无用功
2 技术需求分析
用于描述对技术团队提出的技术需求的理解和分析:技术债务清理、市场反馈问题改善、性能体验优化、技术指标达成、技术方案更新等。此处应包含技术改善项目和大致的实现策略
3 关键技术指标
性能指标:为提升产品性能体验提出的性能指标,此处应包含性能指标项、性能指标、指标的大致实现策略等
技术指标:为提升产品竞争力提出的业务指标,此处应包含业务指标项、业务指标、指标的大致实现策略等
二 框架设计
1 整体框架图
展示应用整体的框架图,包括整体结构、应用分层、模块解耦、包括的关键技术点等
2 核心功能流程图
展示新增核心功能的流程图,帮助梳理整个功能的逻辑,减少编码过程中由于前期考虑不周导致的不稳定性和随机bug
三 资源需求
1 商务资源
列出和其它公司或组织的商务合作,此处应写明关联功能、合作方等
2 内容资源
列出产品对内容资源的需求,此处应写明关联功能、内容资源需求等
3 技术选型
列出对新增核心功能的技术选型,此处应包含关联功能、技术选型结论、技术选型依据(详细的测试数据对比)等
四 接口设计
1 数据结构定义
输出需要新增的数据结构设计或数据库设计
2 后台接口定义
列出后台网络请求的接口定义,此处可简单列出所有接口及对应的关联功能,详细接口参数可在开发中与后台人员做详细设计与评审
3 对外接口定义
列出需要向其它模块提供的功能接口,应包括关联功能、接口接口及参数和大致的实现策略等
4 依赖接口约定
列出需要依赖其它模块提供的接口,应包括关联功能、接口及参数和大致的实现策略等
五 风险及应对方案
列出开发相关的风险项:实现风险、资源风险、第三方合作风险、指标达成风险、进度风险等,以及针对各项风险的应对方案,有素质的开发人员都是问题的终结者,不能只抛出问题不想解决方案。
六 测试指导
列出项目的测试重点,以及对应的测试方案,以便为测试往正确的方向进行提供指导。对于有明确测试需求的地方,应重点提出来,比如针对指标的专项测试。详细应包含:测试分类、测试重点、测试指导、测试需求等
七 时间安排
列出各领域的关键事项及时间节点,以便各领域协同、项目透明、进度可预知。
八 其它
列出概要设计模板中没有覆盖到,但对项目又非常重要的事项
整个APP概要设计的“范式”包括如上八大部分,为了保证概要设计的质量,应在概要设计的末尾提供如下的CheckList,让设计人员签署每一项,确保都有考虑到。
工作越久,经历的项目越多,就越发重视程序设计,特别是概要设计,他为正确高效工作指明了方向。上述的概要设计“范式”只是本人当下的理解,它会随着工作经验的积累不断更新,但终极目标不会变:将编程变成一项脑力劳动,写出高质量的程序、让自己成为靠谱的开发人员。