首页 读书笔记之《思考软件 创新设计》
文章
取消

读书笔记之《思考软件 创新设计》

读书笔记之《思考软件 创新设计》

1.商业思维:从商业模式到架构设计

1.1架构师划分

1.1.1A段架构师的角色 1.指”投资决策”或”签订合同”前的产品或项目的规划阶段 2.面对环境迅速变迁下的策略规划 3.在规划段阶段里,大多协助产品经理 4.偏于获利思维 5.对于A段而言”知彼“比”知己“更重要 6.往往不是设计自己,而是去“算计”敌人(竞争者) 1.1.2B段架构师的角色 1.指”投资决策”或”签订合同”后的开发建置阶段。 2.面对团队的实践策略、执行能力和技术变迁。 3.在生产阶段里,协助生产经理 4.偏于成本思维

1.2商业环境与模式是复杂的

1.2.1有效减法设计,才能开放加法 1.2.2商业思维 1.架构师的商业思维要素

1.1决策前的A段设计

a.考虑商业模式 b.考虑创新产品 1.2决策后的B段设计 a.考虑策略 b.考虑架构设计 2.商业思维三要素 2.1需要做加法的 a.商业模式 b.创新设计 2.2需要做减法的 c.架构设计

1.3如何从复杂中设计出简单

1.3.1发挥软件架构的三个特点 1.对称

1.1接口的一致性 1.2最完美的对称:无物 1.3虚实相依的力与美:源于对称的单纯和美丽 2.单纯 3.美丽 1.3.2减法支撑加法 1.掌握产品的全貌 1.1商业模式&创新产品(加法) 1.2架构设计(减法) 1.3生成技术&管理(加法) 2.组合出各种软件架构 2.1应用软件&服务(加法) 2.2软件设计(减法) 2.3硬件&通信设备(加法) 1.3.3设计原则 1.从非常复杂的商业模式和创新产品需求中设计出简单的软件架构 2.商业模式和产品设计的复杂性都是本质的 3.决策点是随着时间推移,决策前的A段设计和决策后的B段设计之间的结点

1.4软件的复杂是本质性的

1.4.1并非表象而已 1.4.2架构师从复杂设计出简单

2.获利思维与心境

2.1获利思维VS.成本思维

2.1.1获利思维 1.让用户<占便宜> 2.1.2成本思维 1.让用户<捡便宜>货

2.2 让架构师身价百倍的招式

2.2.1绽放<获利思维>的亮丽光芒 2.2.2系统架构设计 将一群零组件组合成一个整体的产品 2.2.3商业合作模式 将一群企业(厂商)组合起来,带来巨大利益并互惠共享

3.创新思维

3.1逻辑推理方式

3.1.1演绎推理 3.1.2归纳推理 3.1.3溯因推理 1.猜测现象的可能原因 2.高度灵活性 3.具有创造性的推理方式 4.<假定-否证> = 删除法 5.偏于”假定-否证”,不仅仅是实证逻辑

3.2 MECE分析法

3.2.1是Mutually Exclusive Collectively Exhaustive 缩写 3.2.2含义:相互独立,完全穷尽 3.2.3作用 1.针对重大问题,能够做到不重叠、不遗漏分类 2.借此有效把握问题的核心,并解决问题 3.持续进行<检验-否证> 3.2.3两条原则 1.完整性

分解过程中,不要遗漏,确保完整性 2.独立性 每项工作独立,不重叠 3.2.4分析2步骤 1.确认问题是什么 2.寻找MECE的切入 3.2.5实施方法 1.鱼骨图 1.1确认问题后,逐层分解 1.2找出关键问题 1.3解决问题的思路 2.头脑风暴法

3.3软件敏捷开发原则

3.3.1敏捷开发的主要概念 1.最简方案(Simplest solutions) 2.迭代过程(Iterative Process) 3.重构(Refactoring) 4.持续集成(Continous integration) 3.3.2A段架构师的敏捷力 1.架构设计是瓶颈所在 2.Design is Code 3.3.2B段架构师的敏捷力 1.开发&建置是瓶颈所在 2.Code is Design

4.组合思维

4.1设计出未来性

4.1.1架构师职责 1.致力于现在决策,并让它能包容未来的变化 2.让<目前决策>具有未来性 3.架构决策必须具有未来性 4.最关键的职责

4.1接口的设计

如何进行接口设计 4.2接口的表述 如何清晰表述接口 4.1.2架构师核心思维 1.愿景 2.组合 3.创新 4.未来性

4.2架构设计是独一无二的

4.2.1<万变不离其宗>的宗 1.致力于抽象出稳定、可靠、不变的共同性架构 2.偏于<乱中有序>,求共性 3.即古典抽象思维 4.2.2追求<与众不同>的特征 1.致力于组合出具体独特性的创新架构 2.偏于<序中有乱>,求独特性 3.即创新组合思维 4.2.3都是从复杂中找(设计)出简单之序,透过简单(规律)掌握复杂

4.3架构设计两个主要层面

4.3.1思考设计 4.3.2表述设计

4.4架构设计的关键议题

4.4.1给自己创造重构的自由度 4.4.2支持开发中重构的空间 4.4.3软件集装箱思维 1.特点

1.1 单一元素,一致接口 1.2 简单组合,无限复制 1.3 装进天下所能装之物 2.例子 2.1 70年代的函数 2.2 80年代的类 2.3 2010年的docker

5.战术引导战略思维

5.1架构师擅长于战术引导战略

5.1.1A段架构师A段时并不是战略的主要制定者,而是主要的战术提供者。 5.1.2<战略指导战术>原则 1.战略指导战术。 2.战术引导战略。

5.2程序员、架构师和高层经理之间的”战术引导战略“关系

5.2.1经理与架构师之间的”战略-战术“关系 5.2.2架构师与程序员之间的”战略-战术“关系

6.四项假设性思维

6.1假设是什么

假设是指在推理过程中,被视为当然、未曾明述的信念。

6.2四项假设

6.2.1不自觉假设 放宽思维局限 6.2.2有待被检验的假定 激发愿景想象 6.2.3完成性假设 想象最终结果 6.2.4万一性的假设 预留弹性空间

6.3架构师

6.3.1属于领导职位,与管理者互补 6.3.2要能洞悉管理团队错误决策的可能性灾难,敢于向大家说”NO“ 6.3.3说”NO“时,提出替代性的出路和愿景

6.4备胎思维

6.4.1目标备胎 6.4.2手段备胎

7.架构设计的十个学习步骤

7.1十个学习步骤是A段和B段架构师必备的思维和技能
7.2十个学习步骤从何而来

7.2.1从架构思维的4个元素出发 1.愿景 2.组合 3.创新 4.未来性 7.2.2学好<创意爱上限制> 1.组合 2.创新 3.幕后需要有效减法设计来支撑 7.2.3学好<创新组合> 7.2.4学习敏捷测试和通用性接口

7.3十个学习步骤

7.3.1减法 1.学习两种抽象视角

11架构师基于<变与不变分离>的视角,寻求<万变不离其宗>的宗 1.2架构师基于<形与内涵分离>的视角,即集装箱抽象视角 2.力求做到减法设计 7.3.2加法 1.关心下层的变动自由度 1.1基地要稳,偏于寻求不变,不是追求创新 1.2随机应变,关心底层模块的变动自由度 7.3.3企业 1.<系统架构控制力>支撑<商业竞争话语权> 7.3.4用户 1.<用户体验>是用户从简单中叫出复杂的满足感 7.3.5限制 1.创意爱上限制,即需求体验设计 7.3.6创新 1.假设性思维和从未来思考现在(Mapping from vison to reality) 7.3.7组合 1.清晰而明确的表述接口 7.3.8尽快对接口进行检验和测试 7.3.9设计通用性接口,取得系统控制权 7.3.10终于实践了<有效减法设计,才能开放加法>

8.设计的十项法则

8.1这<十项法则>从哪里来

8.1.1反思假设 8.1.2关注命令流及其控制点 1.制高点

1.1数量多 1.2分布于各主要接口 1.3经常是云平台架构的重头戏之一 2.(中央)控制点

8.1<十项法则>减法设计部分

8.1.1命令流设计 1.从制高点出发

设计主动性API,对外发号命令 2.设计命令通道 从通用性接口衔接到特殊性接口 3.落实命令下达 让高级命令普达天下 4.指挥数据流动 命令流智慧数据流动 力求数据流的效率极大化 8.1.2数据库设计 5.设计出集装箱 通过简单造型,包容多变数据、通信或技术 6.以箱掌控数据 基类创建子类方法

8.2<十项法则>加法设计部分

7.积极扩大版图 把基类当作礼物送人 8.系统有机成长 从简单组合出复杂法则 9.让用户占便宜 从简单中叫出复杂法则 创造商业价值、尤其是替客户创造价值、让客户占便宜 A.让供货商获利 没钱就改版、改版就有钱法则

9.其他

9.1架构师

9.1.1是一个技术制高点的岗位 9.1.2位居领导位置 9.1.3与企业高阶经理们互补,或者能汇集一身的 9.1.4熟练掌握溯因逻辑推理能力

9.2架构师素质

9.2.1A段架构师 9.2.2B段架构师

9.3图书信息

9.3.1书名 《思考软件,创新设计 – A段架构师的思考技术》 9.3.2作者 【美】Annping Kao 著 高焕堂(译) 9.3.3出版社 电子工业出版社

本文由作者按照 CC BY 4.0 进行授权