2012年(16)
分类: C/C++
2012-08-14 20:09:03
|
在这一小节中,谭老师将程序设计概括为“程序设计是指从确定任务到得到结果、写出文档的全过程”。他总结归纳了程序设计的6大任务:
1. 问题分析
2. 设计算法
3. 编写程序
4. 对源程序进行编辑、编译和链接
5. 运行程序,分析结果
6. 编写程序文档
整个软件设计的流程如下图所示:
软件设计流程
从这里看,整个程序设计的流程是不是很像一个瀑布呢:各个任务逐级依次向下。设计上,这就是程序设计模型中的最著名的瀑布模型(Waterfall Model)。瀑布模型中的程序设计过程是通过设计一系列阶段顺序展开的。实际上,根据程序开发的具体实践,我们可以把程序设计更加科学地划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。从问题分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,程序开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。瀑布模型的核心思想是,按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法,将逻辑实现与物理实现分开。它将一个完整的程序设计过程划分为如上的六个任务,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。因为瀑布模型所采用的各个细分逐渐化简的设计思想,跟C语言所支持的结构化程序设计非常贴合,虽然世界上还有其他的很优秀的程序设计模型,例如敏捷编程等等,但是因为两者之间天然的相似关系,使得瀑布模型成为C语言程序设计中应用最多的程序设计模型。
总体而言,程序设计是一个完整的过程,而不是我们通常认为的程序设计就是“编写程序”,它只是整个程序设计过程中的一个环节而已。从实践来看,“编写程序”这个任务在整个程序设计当中占有的比例,往往不到三分之一。在一个项目中,我们往往是将更多的时间用在前面的“问题分析”与“设计算法”以及后期的编写文档等等。这正是“汝果欲学诗,功夫在诗外”,如果我们想提高自己的程序设计能力,除了“编写程序”之外,我们更应该培养自己分析问题、解决问题的能力,而不是去钻研各种高深的语法细节,将时间浪费在“茴香豆的茴倒底有几种写法”上。
程序设计的这六个任务共同组织起来,才能完成一个程序的设计。如果中间缺失了某一个环节,我们就无法“得到结果”,也即最终的能够解决问题的程序。而我们也可以针对自己的薄弱环节,有意识地加以强化锻炼,这样才能真正成为一个专业的程序员。