首页 > 代码库 > 个人阅读作业2:关于项目经历的心得
个人阅读作业2:关于项目经历的心得
这次的阅读作业我阅读了《No Silver Bullet: Essence and Accidents of Software Engineering》,我想结合我的项目经历谈谈自己的心得体会。
这篇文章提到了在软件工程中我们面临的本质问题(Essential Difficulties),这些问题分别是:复杂性(complexity)、一致性(conformity)、易变性(changeability)、非可见性(invisibility)。相对于那些已经被过去的Breakthroughs解决的Accidental Difficulties来说,这些问题是难解的。
1.复杂性
随着软件规模逐渐增大,软件的复杂性增加也是显而易见的。软件复杂性的这个特征给软件的开发带来了不少的困难,通过结对编程作业,我对此产生了深刻的体会。助教交给我们的电梯作业的代码已经有了相当的规模,因而我和我的partner在完成作业的过程中对于代码中的某些地方产生了误解或遗漏了一些关键点,这给我们之间的交流产生了一定的困难,从而导致开发效率的低下。甚至对于我自己而言,当代码量超过一定数量时,也会由于复杂的软件结构弄出一些让自己苦笑不得的差错。
2.一致性
软件工程往往需要的是团队协作完成认为,所以在一套软件系统中必须有一套一致的接口,设计这个接口的困难往往会随着时间变化,甚至随着不同的应用场合而变化。这就要求我们在前期设计的时候仔细考虑这个问题,不要到了最后出现问题的时候才想着去改变。在团队作业中,由于我们缺少历练,还没有一下子就设想出来一个整体设计的构思能力,以至于我们不得不经常交流来避免造成不一致。
3.易变性
软件要经常修改,这一点但凡是经常使用电脑、手机等智能设备的人都深有体会。用户总是有各种各样的需求,又总会产生各种各样新的需求,作为一个软件开发者要经常修改自己的软件以迎合这些需求。对于我而言暂时还没有遇到这方面的问题,可能还是因为经历太少,但我认为这恰恰是软件产品不同于其他产品的一个闪光点,为了这个闪光点而付出再多再多也是值得的。也希望我能一直有这样一种乐观的态度,今后不会为修改代码的事情抓狂。
4.非可见性
软件是一种抽象的东西,所以设计软件的时候需要用图来表示软件的各种特征。这一点我是在实践中逐渐有了体会的。针对这个困难,在团队作业中我们在项目初期便用一部分时间将我们的项目的功能和界面在纸上画出了草图,这样我们每个人都能直观的看到我们将要制作的app的结构和功能,如此一来和大家一起讨论如何完成这个项目就变得轻松许多。
个人阅读作业2:关于项目经历的心得