第1章 设计之命题

1.设计首先诞生于脑海里,再慢慢逐步成形(实现)

2.好的设计具有概念完整性:统一、经济、清晰、优雅、利落、漂亮。。。

第2章 工程师怎样进行设计思维——理性模型

1.有序模型的有序过程,也是工程师的构思过程

2.理性模型太过简化与理想化

第3章 理性模型有哪些缺陷

1.设计最难的部分在于决定要设计什么,或者帮助用户找出他们想要什么

2.理性模型是自然的思维模型(理性主义,即相信人是理性的)

3.对有缺陷的模型的盲从很危险

第4章 需求、罪念以及合同

1.委员会式的,野心勃勃的大而全的软件极易失败

2.控制需求以保证需求的纯粹

3.人性(?)导致人们无法互相信任,于是需要先写下来合同

尽管对于很多事项肯定会发生变化大家心知肚明

 
瀑布模型更容易产生合同

4.设计与实现的合同分离开,事情会更清楚

第5章 有哪些更好的设计过程模型

1.我们需要一个主流的设计模型

2.问题与解得共同演化模型还不够完整

 
开放式开发对参与人员要求很高,且需要核心力量的存在来保持概念完整性

 
螺旋模型最有前途,仍有待继续研发

第6章 协作设计

1.现实需要团队设计
2.协作设计会带来额外代价
3.必须对协作设计加以控制来保证概念完整性(总体把握)

第7章 远程协作

1.远程协作不可避免
2.远程协作不是万能的,面对面很重要
3.从需求出发更好地利用远程协作

第8章 设计中的理性主义与经验主义

1.理性证明,理论上可行,实际上的组合复杂度可能无法承受

通过测试来覆盖用户应用的可能性,可以保证使用,但无法保证理论上100%的覆盖

2.人,大概应该是理性中带有瑕疵(非理性)的吧

 
因此,缜密的思考可以解决大部分的问题,测试用来弥补非理性带来的瑕疵

第9章 用户模型——错误胜过含糊

1.团队作业与设计系统的复杂性需要明确的用户与用例模型

2.假设可以带来讨论甚至争论,带来更多的思考,从而带来前行

3.错误胜过含糊

第10章 英寸、盎司、位与美元——预算资源

1.每项设计都有自己的关键资源,未必是美元

2.设计师习惯用美元的替代品作为关键资源来考虑问题

3.关键资源是可变的

4.要明确关键资源,并跟踪、控制它(一个人)

第11章 约束是我们的朋友

1.带有明确约束的系统更容易设计。约束会激发灵感

2.仔细地区分各种约束,必要时跳出现有的约束空间

 
反抗虚假的约束(为了用户与系统的最终利益)

3.优秀的通用设计很难

第12章 技术设计中的美学与风格

1.技术设计中存在美学(优雅),即使是纯粹的智力感受

2.逻辑美意味着简约,但也要易于扩展与组合

 
 
 
 
 
 
 
 
 
 
 
 
 
结构清晰

 
 
 
 
 
 
 
 
 
 
 
 
 
一致性(正交性,妥适性(简约性,透明性),普遍性)

3.技术设计中的风格体现于细节(另一方面设计的骨架在整体结构)

4.风格是一套统一的微观决策

5.风格要文档化,不光为了统一设计团队的意识,还包括维护人员

6.思考细节并决策,建立,修正自己的风格

第13章 设计中的范本

1.很少需要全新的设计(从头制造轮子)

2.可以站在现有范本的基础上

3.我们需要互相借鉴

4.学习范本需要书与文档。但我们的文档过于偏重于how,忽略了why以及相关决策来由与背景(经验)

5.关于范本,需要收集

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
分析、比较、评估,来更好的方便吸收用于指导实践,解决新问题

 
计算机软件做得还不够,需要研究人员/机构继续总结

6.并不是所有的问题都可以用已有范例解决

 
但了解的越多,基础就越扎实,越有助于做出好的设计,越有助于产生新的创意(改进)

7.创新的好的,但不应该成为目的

 
不应该偏离设计的本来目的。不要让欲望(个人愿望)冲昏头脑。

8.独创性应该用于用户界面/体验,而不一定非要是设计、开发技术等

第14章 专业设计者缘何犯错

1.专业设计人员所犯的错误,不是低级的简单错误,而是自以为是引起的根本错误,

 
即:设计了错误的东西(会很快过时)

2.不要迷信新技术,要站在一个更高的角度上来认识/理解/应用它

3.难得的是认识到(自己的)错误

4.成功更要反思

第15章 设计的分离

1.作为软件工业进步的必然(?)结果,以及越来越复杂的设计要求,

 
设计(者)与实现(者)/用户的分离不可避免

2.为了避免沟通不良带来的问题

 
(1)加强用户场景体验(模拟环境)

 
(2)迭代式设计

 
(3)将实践过程提前,(阶段)并发展开

 
(4)加强实践(不光是书本)的教育

第16章 展现设计的演变途径和理由

1.设计文档除了记录下设计本身,还要有设计演变及设计理由

2.由于知识的网状结构,表现形式具有挑战性

3.设计可以(并应鼓励)发现新的需求,潜在的方案

4.决策树结构会发生变化,记录下变化不容易

5.决策间关联太强导致决策复杂度增大但保有灵活性

 
决策集中模块化简化设计决策但失去灵活性

6.可视化工具可以帮助我们。但过于死板(太细)或繁琐会失去可用性

第17章 计算机科学家的建筑设计理想系统——从思维到机器

第18章 计算机科学家的建筑设计理想系统——从机器到思维

Brooks关于建筑设计系统的构想过程:
1.目标
2.设想(progressive truthfulness,模型库)及优缺点
3.人机交互

(1)用户下达指令的方式(序列)

 
 
 
 
指定动词、名词、文本、副词、视点/视图

 
(2)系统的表现形式

 
 
 
 
多个并发视窗(草图与绘图视图、2D视图、3D视图、外部视图、工作本视图、说明视图)、声音、触觉

4.泛化

5.可行性

第19章 卓越的设计来自卓越的设计师

  • 设计过程的根本目的在于可控,保证成功。而不是为了卓越的设计。
  • 通过设计过程过度限制优秀的设计人员会:
    • 损失优秀的设计
    • 增加(时间)成本
    • 降低士气
  • 医生有两种,一种是按照规章按部就班的普通医生,一种是用心和灵魂看病的伟大医生。--百家讲坛《名医是这样成名的》罗大中

1.卓越的设计来自卓越的设计师,而非来自卓越的设计过程

2.设计过程会抑制卓越的设计(为了给混沌的创新设计带来秩序)

(1)设计过程是保守的,倾向于将所有设计纳入到有序的框架中

 
(2)设计过程的目的是确保产品按照预想做出来,带有过多限制(可控)

 
(3)设计过程鼓励利用以前的经验,这些经验未必适用(背水一战,不许失败)

 
(4)设计过程倾向于否决,目标是防止错误与疏漏

 
 
 
 
因此每前进一步都需要很多人达成一致

 
(5)在一个标准设计过程中,很多专家所处的位置决定了他们的职责是挑错,而不是产生好的设计

 
 
 
 
(导致设计被迫妥协磨去棱角)

 
(6)设计过程中规则会越积越多(官僚主义,不灵活)

 
(7)设计过程大量占用设计人员的资源(时间)

3.设计过程可能更适用于跟随式产品

4.设计过程可以提高设计的平均水平(短板)

5.能力的分布是不均匀的,每个人都拥有自己特别的地方

6.卓越的设计需要大胆的,追求卓越设计的领导

7.好的(鼓励卓越设计的)设计过程,应该

 
(1)只关注大面,而非所有细节(避免过度保护)

 
(2)提供灵活的机制(规则可以被打破)

8.信任主设计师来保证概念完整性

 
(1)经理不要干涉设计

 
(2)确保主设计师的权威

 
(3)保护主设计师不被干扰

 
(4)主设计师的要求被重视并满足

第20章 卓越的设计师从哪里来

1.设计师的教育必须有充足的实践(及反馈)

2.招募设计师时,要清楚要求是什么,并多看实际工作

3.应该审慎地培养设计师

 
(1)建立真正的发展双轨制,明确设计人员应有的威望

 
(2)给他们正式的教育(培训),跟上发展,加深加宽认知

 
(3)规划多样的工作经历

 
(4)短期的休息可以恢复精神,开拓视野

4.管理设计师要注意发挥每个人的特性

5.保护设计师防止他们分心,不受管理者干扰,不去做管理

6.培养自己成为一名设计师,不断画草稿记录下自己的想法,请别人来评价自己的设计,学习前人的经验

第21章 案例研究:海滨小屋“View/360”

教训1:明确预算资源,越早越好
教训2:时刻注意约束条件的变动,跟踪好它们
教训3:多想想理由
教训4:多检查
教训5:仔细考虑将来的维护

第22章 案例研究:增加厢房

1.设计一个满足成本要求的系统,应先满足功能,再考虑成本(削减功能/追加预算),

而不是先设计一个简易版的系统再考虑扩充

2.教训:

 
(1)在设计上多花时间是值得的

 
(2)多与用户交流,多展示用户能理解的原型

 
(3)多测试用户用例

 
(4)多复查。确保自己能理解工作内容从而确保它们是正确的

第23章 案例研究:厨房重新建模

1.把设计决定的理由和过程都记录下来

2.在设计上多花时间是值得的

3.多交流有助于产生好想法

4.多执行用户用例,多利用原型,来更深入地了解/验证需求

第24章 案例研究:System/360体系结构

1.在团队中保持认识一致,很难

2.概念解耦(正交性)让设计更清晰

3.留出充裕的设计时间

4.保证实现符合设计(手册)

5.设计竞赛可以(1)解决问题(2)让所有人关注关键问题(3)提升士气

6.全新的设计早期要多投入到性能指标及重要属性的制定,以及关键资源的确定

7.全新的设计早期要多投入到说服其他人跟上新的观念

第25章 案例研究:IBM Operating System/360操作系统

不足:

1.OS/360太过丰富,加入了太多不重要的特性。实现了一种有史以来最好但过时的调试方法。系统生成太灵活以至太复杂,应该提供一些标准配置并在此基础上提供全方位支持

2.没有信息隐藏的思想

3.没有在早期设计阶段引入虚拟内存

4.调度进程JCL从开始就做错了东西

5.数据管理系统具有不必要的复杂性

6.没有坚持使用当时最好的高级语言PL/I,而使用了PLS——加了一层语法糖衣的汇编语言(思维定式)

经验:

1.给予系统架构师以充分设计授权

2.给予设计和原型足够的时间,投资会产生回报

第26章 案例研究:《Computer Architecture: Concepts and Evolution》图书设计

1.贪多不如简洁

2.行百里者半九十(认识到这一点并有针对性地计划)

第27章 案例研究:联合计算中心组织:三角区大学计算中心

1.早期明确用户需求有利于快速确定整体架构

2.提供终极方案保证关键用户需求得到实现

3.多沟通

4.多利用专家的知识

[读书笔记]设计原本[The Design of Design]的更多相关文章

  1. 【读书笔记】《Computer Organization and Design: The Hardware/Software Interface》(1)

    笔记前言: <Computer Organization and Design: The Hardware/Software Interface>,中文译名,<计算机组成与设计:硬件 ...

  2. 《Linux内核设计与实现》第四周读书笔记——第五章

    <Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...

  3. 《Linux内核设计与实现》读书笔记 - 目录 (完结)

    读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个<Linux内核设计与实现>读书笔记 的目录: < ...

  4. 《Linux内核设计与实现》读书笔记(十七)- 设备与模块

    本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs. 主要内容: 设备类型 内核模块 内核对象 sysfs 总结 1. 设备类型 linux中主要由 ...

  5. 《Linux内核设计与实现》读书笔记(十九)- 可移植性

    linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个). 但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, ...

  6. 《Linux内核设计与实现》 Chapter4 读书笔记

    <Linux内核设计与实现> Chapter4 读书笔记 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子 ...

  7. 《Linux内核设计与实现》Chapter 3 读书笔记

    <Linux内核设计与实现>Chapter 3 读书笔记 进程管理是所有操作系统的心脏所在. 一.进程 1.进程就是处于执行期的程序以及它所包含的资源的总称. 2.线程是在进程中活动的对象 ...

  8. 《Redis设计与实现》读书笔记

    <Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅 ...

  9. 《Linux内核设计与实现》读书笔记 - 目录 (完结)【转】

    转自:http://www.cnblogs.com/wang_yb/p/3514730.html 读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!! ...

随机推荐

  1. KeyValuePair用法(转)

    转载自:http://blog.sina.com.cn/s/blog_9741eba801016w61.html C# KeyValuePair<TKey,TValue>的用法.结构体,定 ...

  2. 菜鸟学习SSH(二)——Struts国际化

    国际化(internationalization,i18n)和本地化(localization,l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化.程序在不修改内部代 ...

  3. ELK 之一:ElasticSearch 基础和集群搭建

    一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...

  4. 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)

    作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...

  5. MFC + CxImage 实现自绘半透明按钮

    环境:VS2008 + CxImage btn.h [cpp] view plaincopyprint? #pragma once // CBtn #include "ximage/xima ...

  6. mysql服务无法启动

    可能是没有data文件夹,可以新建或拷贝以前的data文件夹到安装目录.

  7. java.lang.NoClassDefFoundError: org/apache/lucene/analysis/synonym/SynonymFilter

    2013-6-24 13:28:51 org.apache.solr.common.SolrException log 严重: java.lang.NoClassDefFoundError: org/ ...

  8. php:兄弟连之面向对象版图形计算器2

    上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...

  9. Perl 5 教程

    Perl 5 教程 http://www.cbi.pku.edu.cn/chinese/documents/perl/index.htm

  10. VS2010对C++11的支持列表(感觉大部分都不支持)

    c++11,就是之前的c++0x,已经成为了最新的c++标准.像咱这样天天用c++的,就赶紧follow一下.学习成果,放在这里,不说分享,至少自己增强下记忆. 首先,给出一些有用的链接. http: ...