软件开发的过程中, 一定需要简单设计?

2017.7.4, 深圳, Ken Fang

前言: 简单设计只是写文档, 而不能指导开发, 这样的简单设计, 就只是在瞎折腾。

但是, 软件开发的过程中, 不做简单设计, 软件开发就永远做不好。

简单设计能指导开发, 指的是: 1.简单设计能使开发人员, 在开发前, 有一清晰且明确的指导地图; 开发人员沿著这指导地图, 便可开发出高质量的代码。使得代码不仅能符合各个质量属性上的要求, 更能使代码具备好的 “隔离 “; 不会因后续需求上的变更, 而产生新的缺陷或失败。 2. 简单设计能使开发人员, 在开发前, 便设计出测试用例; 使得开发人员可明确的定义, 每日所开发的 TASK, 完成的标准是什么? 需通过那些测试用例的场景? 3. 简单设计能使开发人员, 明确且客观的做出结论: 今天该完成的 TASK 完成了没? 假如, 没完成, 真正的问题是什么? 该寻求什么样的协助?

本文: 简单设计要如何做? 有的人是天生就会的。 而大部分的我们, 简单设计的思维, 是要经过一段时间锻练的;不是天生就会的。

Matei Zaharia; Spark 开发的主导者。 Matei 当在用 Scala 开发 Spark 时, 并没有做所谓的简单设计。 Matei 在开发前, 会先在脑中清楚的浮现出软件的架构。 Matei 便照着脑中的软件架构, 开发完了一行又一行伟大的代码。 Matei 每次在开发完一段代码后, 便会根据代码的弱点, 设计所谓 “灾难测试” 的测试用例;测试自己所开发的代码, 在架构上的弱点为何?

敏捷开发与软件工程实践;如:Story 场景树;对 Matei 而言, 是完全没有 “必要” 的。因为, Matei “天生” 就会简单设计了。

Story 场景树, 主要是要帮助开发人员, 锻练 “简单设计” 与 “测试用例设计” 的思维;当经过一段时间的锻练后, 开发人员自然而然的, 就可没有 “必要” 的再使用 Story 场景树, 进行简单设计。因为, 开发人员已能将软件架构浮现在脑海中, 并能自然而然的思考出测试用例。

为何? 因为, Story 场景树够可视化, 够轻量级;放在ㄧ个脑袋里, 绰绰有余。

[图一: Story 场景树: 可视化、轻量级的开发人员指导地图]

结论: 拥有 “简单设计思维” 的开发人员, 永远是在用 “脑” 驱动著手, 产生一行又一行伟大的代码。之所以称之为一行又一行伟大的代码, 是因为, 每一行代码永远都是能随著时间的推移, 而能持续的演进; 演进的过程中, 却依然保持著健康、强壮。伟大的代码就宛如是拥有强健生命的有机体。

永远只会用手写代码的开发人员, 产生的代码从一出生 (第一个版本), 就发育不全 (缺陷百出)。毫无疑问的, 随著时间的推移, 病只会越来越重 (缺陷、失败越来越多) 。

将能锻炼 “简单设计思维” 的方法、工程实践, 放在永远只会用手写代码的开发人员的面前时, 所会发生的场景, 就宛如是图二中, 那位拉车的…

拉车的永远说...我很忙。
拉车的永远说...先证明轮子对我是有价值的,我才会考虑用轮子。
拉车的永远说...我现在牛逼的很,为什么要用轮子? 

人生是选择题, 不是是非題; 做出什么样的选择? 便过著怎么样的人生; 产出什么样的代码。

[图二: 拉车的: 我很忙…]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习之旅

应用:能够快速实现的协同推荐

对于中小型的公司,用户的数据量及公司产品的个数都是较小规模的,需要提供给用户的推荐系统实现的重心也从人性化变成了实现成本,协同推荐就是非常常见、有效且可以快速实...

722
来自专栏PPV课数据科学社区

☞【实践】数据可视化技术指南(附加视频)

☞【实践】数据可视化技术指南(附加视频) 转自:36大数据 ? 图为:美国立法程序 大数据是时下热议的话题,伴随着大数据,同样已经激增的数据可视化方法和呈现形式...

3925
来自专栏人工智能头条

数据可视化方法、工具、核心理念及需要警惕的深坑

1615
来自专栏点滴积累

人工智能入门

前言 这个名字起的非常大,但是本文只能从一些概念和我自己的理解上介绍一下什么是人工智能。本文只是给从未接触过此块的人一个大致的印象和思路,其余人请直接略过。 一...

3857
来自专栏QQ大数据团队的专栏

用户增长分析——用户流失预警

1 前言 针对用户增长分析这个课题,本文主要从用户防流失的角度,阐述如何基于QQ社交网络数据构建用户流失预警模型,找出高潜流失用户,用于定向开展运营激活,从而...

5.5K2
来自专栏斑斓

领域模型在交流中扮演的角色

问题:我对于领域模型如何表示始终还不太明白。按照Evans书里的说法,代码应当是领域模型的主要部分,文档、图表作为补充。另外一方面,领域模型应当是所有参与者都能...

683
来自专栏CSDN技术头条

数据可视化方法、工具、核心理念及需要警惕的深坑

大数据是当下最火爆的话题之一。随之而来的,是数据可视化技术的持续发展,它用来展现和阐释大规模的数据。但是数据可视化技术并非千篇一律。 数据可视化是展现数据的最强...

19810
来自专栏周景超的专栏

腾讯 AI Lab 计算机视觉中心人脸 & OCR团队近期成果介绍(3)

在上一期中介绍了我们团队部分已公开的国际领先的研究成果,近期我们有些新的成果和大家进一步分享。

4202
来自专栏AI科技评论

深度|Facebook首创全新深度学习移动平台,“视频版”的Prisma是如何实现的?

AI科技评论按:“风格特效转换” 在Prisma出现之后就已被熟知,这是利用神经表征分离再组合图片的内容和风格,最后实现可用来描绘艺术图像。但是,就像我们所体...

3467
来自专栏机器之心

知乎:源自社区又服务于社区的 AI 技术

每次知乎的技术负责人公开谈及人工智能技术,「智能社区」都是一个绕不开的词汇。然而「智能社区」也是一个相对陌生的概念:如今研究者与工程师们明确了深度神经网络在语音...

1010

扫码关注云+社区