第四节程式规划
程式规划是指在整体设计的观念上,事先对全部程式周详地、有系统地分析,再定出一个明晰的架构,以便于制作。
最理想的方式,是从使用者的角度,先决定应用功能、用键、输入形式、空间结构及模组划分等。
这些都确定了,才能按图索骥,根据蓝图写程式。也就是说,规划即先把目标介定妥当,以便按步就班,循序执行。
1,工作的认识:程式的规划,相当于设计建筑篮图,首先要明确认识工作性质、特征、条件,选择取适当的方式,以求得到最理想的结果。
2,程式的结构:结构要事先定案,是采用流程抑或模组?全部或部份采用组合语言?是依工作人员的素质分工,或者是用生产线统一制作?程式段、资料段及堆栈段的空间分配,每个程式联接次序的安排,暂存器的定义,缓冲器的设置等,都应该慎重地考虑清楚,并记录下来,以供工作之依据。
3,参数的设定:参数是程式的处理对象,必须合情合理地安排,且要有扩充的余地。因为参数与功能分类及程式的效率息息相关,对程式师而言,参数即相当于程式的处理对象;对应用程式的人,则等于工作的分类标准。其安排的结果,影响功能价值甚钜。
4,效率的要求:在第一章第三节中,我们特别强调了效率的法则,使用电脑的目的,就在于效率的追求。故在规划之初,就应该规定每一段程式的效率要求。
另外,参数的运用,也应考虑其使用的频率,凡能在事先一次准备妥当的,切不可等到运用时再临时计算。
5,测试的标准:测试就是品质管理,程式所应达到的指标,可由测试求证之。一般程式师只对程式的正确性负责。其实正确性与指标无关,乃是程式师最起码的责任。
组合语言程式的品质,应该包括原程式的写作规格及时限;程式的思路、理念;执行时的时效;程式空间的大小及安排;应用的方便与否;指令运用是否恰当等等。
执行程式的品管,则可以透过测试程式完成之。这种测试程式,也应该在规划之初,一并考虑。
6,制作的进度:程式制作的进度很难控制,而正因为其难以控制,更要加倍小心,事先规划。其方法是先按照工作性质,设定工作「难度值」。再对工作的程式师评估其「能力值」,依此设定一个「合理」的进度。最后,根据实际的工作进度调整之。一般说来,程式师需要三年以上的写作经验,才能养成进度的观念。
由于程式本身占有空间,所以其结构的好坏,对程式制作及执行效率影响极大。良好的结构应根据程式的性质、使用的频率、处理的先后过程等,在效率的立场,作全面的考虑。
一、程式性质
前文曾介绍过程式的种类,在规划时,要更进一步了解程式的性质。因为所谓的效率,一是指程式的制作、维护,一是指程式的执行及调用。这两者必须根据程式的性质,作适当的安排。
大体说来,程式的性质只有两种,一种是主动的,使用者可以直接控制执行;另一种是被动的、公用的,为其他程式所调用。
前者也可以说是应用程式,而后者比较类似系统程式。只是在这里强调的是其性质,以及如何根据其性质进行规划。
主动程式最好能放在同一模组中,当程式太大,必须分割时,也要设法联接在一起。但若在功能不同,所调用的模组亦无交集的情况下,为了避免跨越段与段时的效率损失,则无须考虑是否安置在同一模组内。
由于主动程式涉及使用人的习惯和设计者的理念,经常需要修改调整,变动极大。正因为这种因素,其「再利用」价值不高,对效率的要求也较低。
规划时,主动程式一定要与被动程式分开,而在制作时,则应注意其所占用的空间,与各段的关系。
被动程式既然是公用的,必然具备一些基本的功能。所谓被动是表示该程式仅在某种条件下,才被调用。由于其「再利用」的特色,应该设计成为精简的子程式。再依情况需要,或者为了节省空间,放在磁盘中,随时以覆盖其他子程式方式调用,或者为了效率,直接联接备用。