软件开发基础
有多少新人在不同语言, 不同数据类型, 不同的选择, 循环等方式中游走, 一遍遍的书写着片断式的代码, 然后自认为已经步入了编程的大门, 其实仍然在殿堂外不断着徘徊着寻找着进入的大门. 其实我也算是其中一个. 作为一个程序员, 首先需要认识的不单单是语言的细节, 更重要的还有软件开发的意识. 本文将简单介绍一下软件开发的基本流程. 并且希望将它运用到以后的编程中.
我们为什么需要软件开发呢? 因为用户以及市场的需求, 迫使我们需要将这些需求进一步开发成为好的软件应用. 而整个软件开发的过程都是在用户需求的基础上, 通过一系列的过程将需求逐步的实现为具体的产物. 1
当你对一个问题无法理解的时候, 通过类推的方式, 将这个未知的问题类推到你熟悉的问题上, 往往是快速准确理解一个问题的好方法. 化学苯环的出现, 正是化学家凯库勒梦中梦见蛇用嘴咬住自己尾巴后的灵光一闪.
当然, 类推也要有好坏之分, 一个好的类推往往是简单的, 并且能够被更多的实验证据以及相关的发现给证明. 类推过头了就会导致错误的发生, 正如曾经科学家们对"以太"这个物质的寻找.
那么在软件开发过程中如何运用"类推"这一个强大的帮手呢?
类推相比较算法而言, 具有更强的启发性. 算法是由一系列针对某个特殊任务定义完善的指令构成的, 具有可预测性, 以及准确性. 而类推是帮助你找到答案, 帮助你如何看待, 理解一个问题. 算法直接告诉你了答案, 类推启发你自己去寻找答案. 由于很多问题的未知性, 并没有直接的, 全面的算法, 因此需要一个自己对自己启发的过程, 引导自己建立相应的算法.
在很多时候, 一个灵活使用类推的人能够更好的理解软件开发的过程.
建筑过程和软件开发的过程十分相近.
如果你需要建造一个很简单的结构–狗舍–你可以利用废旧的家俱, 买些木头以及钉子, 很快就能够搞定. 如果发现忘记装门了, 以及一些其他的小问题, 也能够轻松的完成. 你需要花费的大概只是一个下午的部份时间. 对于小的项目软件开发的过程中, 遇到的情况也是类似的, 如果你在1000行的代码中使用了一个错误的设计, 你可以对它进行重构, 或是全盘推倒重来, 即使这样你也不会失去太多.
如果你建造的是一个房子, 整个建造过程将变得非常复杂, 不良的设计导致的结果也将变得更加严重. 首先, 你需要确定建造什么类型的房子, 这个过程就好比软件开发过程中的问题定义. 然后, 你和建筑师一起完成普通设计, 这类比于软件开发过程中架构设计. 接着, 你绘制详细的蓝图, 雇佣一个承包商, 这类似于软件开发中的详细设计. 接着, 你要准备建造的位置, 打下地基, 为整个房子做骨架, 把墙壁和房顶完成, 这类似于软件开发中的软件架构. 当房子的大部份已经完成之后, 庭园设计师和粉刷匠开始干活了, 这类似于软件优化. 当完成整个过程之后, 不同的观察人员进入, 开始确认位置, 框架, 电线, 以及其他可以检测的东西, 这类似于软件审查, 结对编程.
两者之间其他的一些类比.
建筑以及软件的开发, 受益于合理的步骤. 如果在软件开发的过程中, 将整个顺序给打乱了, 这将导致代码编写, 测试, 调试的困难. 也就意味着需要花费更多的时间去完成. 当然, 小心的计划并不意味着过度计划, 而是先计划出大的框架, 如先将房子的框架计划好, 而是否铺地板什么的可以后续的过程中进行更改. 一个好的项目计划, 将会给你对细节进行更改的能力. 你的软件开发的经验越是丰富, 你事先能够考虑倒的计划也就越详细.
这样的类比, 能够帮助你更好的理解软件开发的过程, 以及不同类型的软件在开发过程中的差异 (不同建筑在建造过程中的差异一样).
不知道为啥ubuntu下dia导出的图成了这个样子??
1 http://ezinearticles.com/?The-Importance-of-Software-Development&id=1406350
2 book code complete
3 book fundamentals of python
Date: 2014-04-22 Tue3
Org version 7.8.11 with Emacs version 24
Validate XHTML 1.0