《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一一3.1 在初始阶段我们并不真正地知道目标是什么

简介: 本节书摘来自华章出版社《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一 书中的第3章,第3.1 节,作者:(美) Frederick P. Brooks, Jr. 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.1 在初始阶段我们并不真正地知道目标是什么
理性模型最严重的缺陷在于,设计师们往往只有一个模糊不清的、不完整的既定目标,或者说是主要目的。在此情形之下: 设计中最困难的部分在于决定要设计什么。 在我还是学生的时候,有一个暑假里去替一家很大的军火商打工,在那里我被指定去做设计和构建一个小型数据库系统的工作,用以跟踪某个雷达子系统的上万张图纸以及其中每一张图纸的更新状态。 过了几个星期,我做出了一个能运行的版本。我自豪地向我的客户演示了一个输出报告的样例。 “做得不错,这的确是我想要的,不过你可否把这里改一下?那样我们就可以……” 在接下来的数个星期,每天早上我都给客户演示输出报告,每次都是顺应了前一天提出的要求之后的修订结果。每天早上,他都会对产品报告研习一番,然后使用一成不变的、彬彬有礼的口头禅提出另一项系统修订的要求。 系统本身很简单(是在打孔卡片机上实现的),而且那些修订在概念上看起来也是平淡无奇的。就算是最影响全局的变化也只是将图纸列表按照内部等级排序或缩进显示,而等级是用卡片上单独一个0~9的数字来表示的。其他的改进包括多级局部汇总(当然有例外情况要处理)以及自动地为需要注意的值标注上星号。 有那么一阵子,我很是愤愤不平:“为什么他不可以就想要的内容下定决心?为什么他不能把想要的对我一口气说完,而偏偏要每天挤一点出来呢?” 然后,我一点点地认识到,我为客户提供的最有用的服务是帮助他决定什么是他真正想要的。 那么,如今的软件工程原则要复杂得多了。我们认识到,快速原型是一种进行精准需求配置的必要工具。不仅整个设计过程是迭代的,就连设计目标的设定过程本身也是迭代的。 软件工程领域的复杂化不仅没有停止的势头,甚至连明显的放缓也看不到,在汗牛充栋的文献资料中,“产品需求”仿佛是给定设计过程的常规假设前提。不过,我要提出一点异议,那就是,在初期就能了解整个产品需求是相当罕见的,而远非常态: 设计师的主要任务乃是帮助客户发现他们想要的设计。 至少在软件工程领域,快速原型的概念有其地位及其公认的价值,但在计算机(体系结构)设计或建筑架构设计中,它的地位与在软件工程中并不总是相当。但无论如何,在目标迭代方面,我在这些设计领域都看到了相同的现象。越来越多的设计师们为计算机构建模拟器,为建筑构建虚拟环境演练,以此作为快速原型,从而促成目标的收敛。目标的迭代必须作为设计过程的固有组成部分加以考虑。

相关文章
|
10月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
502 104
|
缓存 监控 Android开发
App Trace 快速安装解析(开发者视角)
App Trace 是一款应用性能监控工具,可追踪启动时间、方法耗时及卡顿等指标,助力开发调试与性能优化。支持 Android 和 iOS 平台,提供依赖引入、初始化配置和自动化脚本等快速安装方案,同时包含采样率、本地缓存等高级配置选项。集成后可通过日志检查与测试事件验证功能,注意在发布版本中使用 no-op 版本以减少性能影响,并确保隐私合规。
Vue3——基于tdesign封装一个通用的查询组件
Vue3——基于tdesign封装一个通用的查询组件
618 3
|
存储 小程序 Python
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
1332 86
|
Kubernetes API 调度
在K8S中,创建pod过程?
在K8S中,创建pod过程?
|
安全 Linux 测试技术
Intel Linux 内核测试套件-LKVS介绍 | 龙蜥大讲堂104期
《Intel Linux内核测试套件-LKVS介绍》(龙蜥大讲堂104期)主要介绍了LKVS的定义、使用方法、测试范围、典型案例及其优势。LKVS是轻量级、低耦合且高代码覆盖率的测试工具,涵盖20多个硬件和内核属性,已开源并集成到多个社区CICD系统中。课程详细讲解了如何使用LKVS进行CPU、电源管理和安全特性(如TDX、CET)的测试,并展示了其在实际应用中的价值。
581 4
|
网络协议 算法 安全
NSEC和NSEC3
【10月更文挑战第18天】
819 1
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
744 1
|
Java Nacos Docker
使用docker compose 编排微服务发布
使用docker compose 编排微服务发布
314 3