[TOC]
敏捷开发:小步快跑
瀑布流开发:需求分析 —> 设计 —> 开发 —> 测试(每一个步骤以前一个步骤为前提)
-
康威定律
设计系统的架构受制于产生这些设计的组织的沟通结构。
比如公司内有两个独立的小组,那整个系统设计肯定会划分出两个独立的模块,相互之间有明确的界限。
-
计科:abstraction
数学:formalization
设计:design is how it works
软工:indirection - "All problems in computer science can be solved by another level of indirection"
《人月神话》
所有软件活动包括: 根本任务 -- 打造构成抽象软件实体的复杂概念结构。 次要任务 -- 使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。
举个例子,比如要实现一款发工资的软件,里面涉及到如何计算所得税,那就得实现个人所得税的计算方法,用什么语言实现这个算法属于「次要任务」,而这个算法本身属于「根本任务」,无论用什么方式实现,你都不可能降低这个算法复杂度,比如个人所得税有 7 个层级,那就一定在某个地方有 7 个 if 语句。
低代码平台主要解决的是「次要任务」,用更简化的方式来实现同样的功能。
-
web 接口的设计模式
- 强类型模式:强类型模式指的是查询接口返回的是POJO对象,每一个查询结果对应POJO中的一个明确的具有特定业务含义的字段。
- 弱类型模式:弱类型模式指的是查询结果以K-V或JSON模式返回,没有明确的静态字段。例如 GraphQL