做好设计

设计是精炼的表达。


2024 新年快乐! 祝大家新年有成,拥有新的美好的旅程!

在“如何突破技术瓶颈”一文中谈到,突破技术瓶颈的第一步,就是提升设计能力,积累设计解决方案。提升设计能力,还有一个好处:做好设计,然后把编程的活交给 AI 来完成。

设计的作用

设计,是“需求上升到机制”的过程和结果。不是针对一个需求,而是设计一种机制,容纳和实现一类相似需求。基于需求,超越需求。

设计需要在安静的环境里,反复剖析事物的内在结构和规律,洞悉事物之间的关联,然后用精炼的方式表达出来。设计是一门严谨的科学。

  • 设计的基本思想是: 结构化抽象、关注点分离、语义为导向、集中管理与一致性。
  • 设计的基本方法是: 抽象、分解、组合;模块化、封装、解耦。
  • 设计的基本要素是: 领域模型、系统划分、应用模型、架构模式、技术选型、存储设计、流程设计、设计模式、业务模式、API 设计。
  • 设计的考量依据是:清晰性、稳定性、可扩展、可复用、可定制、可伸缩、高可用、安全、可靠。

可阅: 软件开发:组织大规模逻辑的技艺软件设计要素初探


做好设计

做系统,要好的构思和设计。

好的构思,可以囊括和容纳细节;不好的构思,三番五次修改也不得其果。


如何做到好的构思和设计?

明确需求

  • 如何识别真实需求和痛点?
  • 如何将真实需求和痛点转化为切实有意义的目标?
  • 实现目标的总体思路和方案有哪些?各有什么优劣?
  • 如何执行方案?

需求包括功能需求和质量需求。功能需求和质量需求都体现了对问题的认知程度。
要把功能需求和质量需求明确写下来。不写清楚需求,不要着手做构思和设计。

把背景和需求说得很清楚:需求是什么,场景有哪些,有哪些细节要考虑?有哪些设计考量?这些都能有助于理解设计方案(为什么是这样)。

我们很多人不喜在问题上用功。往往问题都没弄清楚、说清楚,就急匆匆奔方案而去。这点我也要改善。

好的构思和设计

能解决问题

要有清晰的论证(像数学证明那样),先从理论上说明方案如何能实现所述功能需求和质量需求。如果不能从理论上说明,也要注明待实验证实。

语义清晰

做设计写程序,犹如写文章,要说的清楚明白,语义清晰,而不要技术化、拐弯抹角。比如,是否主机或容器业务,就用一个字段 platformType 直接表示,而不是看容器 ID 是否存在来推断。比如一个概念或一段逻辑,可以通过类和方法命名来表达语义。

维度清晰

不同的维度切忌混在一起。文件上传就只跟文件上传相关的信息相关,与告警或镜像等无关;cdc 检测就只跟 cdc 需要的文件信息和引擎版本相关,与其他无关。关联信息可以单独建表。

关注点分离解耦

要把涉及的关注点提炼出来,写下来说清楚。说清楚方案是如何将关注点分离、解耦和组合,关注点如何进行交互。

基本思路和详细细节

求解问题的基本思路和详细细节说清楚。

抽象-模式-实现

做设计容易走两个极端:过于具体和过于抽象。过于具体,局限于一个业务场景;过于抽象,无法与具体业务衔接上。模式提供了一个中间衔接层。抽象定义概念,而模式则针对具体业务定义场景,针对场景来求解。

突出重点

结论先行,重点突出。思考过程及其它可放到附录里。

容错处理

考虑各种异常及错误处理。

性能/稳定性
评估数据量,可接受的性能及大数据量带来的潜在稳定性问题。

可伸缩能力

评估系统的可伸缩能力,能否做到水平扩展。

可扩展/可复用

评估系统将来能做怎样的扩展,来应对类似需求;评估设计方案存在哪些可复用的地方。

方案决策表

需要给出多种方案,并说清楚每种方案的利弊。做选型的主要考量,及选定的方案。

posted @ 2024-01-01 12:29  琴水玉  阅读(46)  评论(0编辑  收藏  举报