软件工程并非工程,计算机科学也不科学
IT行业如日中天,想当年,IT业中两大专业却也有欺世之嫌
我在过去参加了很多“软件工程”的辩论,也许太多了。 令人沮丧的是,虽然对于制作软件的“正确方式”有大量的意见,但却没有一种简单的方法来客观地评判这些意见以解决长期存在的争论。 我一直在思考和研究为什么会是这种情况,终于到最后才能够给出一个合理答案。
如果软件学科是“科学”,那么科学过程应该可以解决争论。 但它似乎失败。 有人认为,它是“工程”,而不是“科学”。 但工程只是应用科学。 例如,在工程中,桥梁设计在较长时间内是针对现实进行测试的。 即使在短期内,桥模型也可以在模拟现实的环境中进行测试。 模拟是对现实的捷径,但如果我们希望它们有用的话,仍然与现实有关。 如果桥梁最终失效,并且失效不是建筑或材料缺陷,那么剩下的是桥梁的工程设计。 工程师的模型必须紧紧束缚于物理和化学的规律。 工程师结婚的法律,无论他/她是否愿意。
但是我们在大部分的软件设计中没有这个。 我们有要求,例如输入和输出看起来像什么以及规定允许给定操作的最大时间的运行时约束。 但是,这些之间有许多是难以捉摸的客观指标。