以下总结来自于《人月神话》 第四章 :贵族制,民主制和系统设计
系统设计中最重要的因素:概念完整性
1.设计必须由一个人或者具有共识的小型团队来完成
2.大型系统架构设计与具体实现相分离
3.必须有人控制概念,确保完整性,称之为 专制
根本任务定义为“打造构成抽象软件实体的复杂概念结构”
附:对于第2点 ,类似于SOA想法,或者微服务
SOA是一种设计方法/思想,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信。
比如单独创建一个工程部署在一台服务器上,并且写一个方法(或称函数)执行上述查询操作,然后使其他人可以通过某种途径(可以是http链接)访问这个方法得到返回数据,返回的数据类型是通用的json或者xml数据,就是说把这个操作封装到一个工程中去,然后暴露访问的方式,形成“服务”。比如这里就是注册用户服务,而关于注册用户的所有相关增删改查操作这个服务都会提供方法。
次要问题为“用编程语言表达这些抽象实体”
在保持专制性的前提下,架构师需要通过各种方式让他专制落地。
回归到个人开发者/个人研发身上,在开发一个新模块或者新功能时候,定义好任何可能混淆的,可延展性的概念。以防止未来的不可预测性。同时接受其他建议,纳入到“规则”中去。
简单来说:设计阶段保持专制,开发阶段保持民主
如何定义架构师?
可以代表用户的想法,简言之为产品经理的角色,支持用户真正受益。
思考:利益的一致性
甲方更需要一个 架构师
个人正在经历的事情
产品人员C关心功能是否上线,研发人员A发现系统健壮性出现问题,需要修复后才可以完善新功能。但是C坚决不同意A的想法,认为首要任务是甲方的满意度。
在这件事情中。C作为业务架构设计者没有与研发达成利益一致性。过多的决策和争议会影响对具体实现的关注。
那解决方案是,需要取得技术架构的设计者的意见。在两者之间做出决策。决策的结果不一定是双方都满意的或者优于任意一方的,重要是需要实现决策和实现分离。