3.5.1 程序开发过程

软件工程将软件系统的开发过程划分为前后相继的若干个阶段,称为系统开发生命周期(SDLC),开发人员必须严格遵循 SDLC 来开发软件系统。SDLC 包括分析当前系统、定义 新系统的需求、设计新系统、开发新系统、实现新系统和评估新系统等阶段。本书主要关注 程序设计,所以下面我们只讨论“开发新系统”这个阶段。

开发新系统阶段的任务大体上就是程序设计,它本身又可划分为几个步骤,构成程序开 发周期(PDC)。PDC 的各个步骤如下:

① 如果不理解,可以用四位十进制数 0123 乘以 10 做类比:将 0123 左移一位,右边补零,即得 1230。

  • 明确需求:明确问题是什么,理解用户在功能方面的要求。

  • 制定程序规格:描述程序要“做什么”。

  • 设计程序逻辑:设计程序的解题过程,即描述“怎么做”。

  • 实现:使用一种编程语言来实现设计,即编写程序代码。

  • 测试与排错:用样本数据执行程序,测试结果是否与预期吻合。如果发现有错误(行 话称为 bug)则排除错误(debug)。

  • 维护程序:根据用户需求持续开发、改进程序。 程序规格描述程序的要做什么事情,对于简单程序通常只需要描述程序的输入和输出分别是什么。

设计程序逻辑是核心步骤,其主要任务是设计出满足程序规格的算法,这也是本书自始 至终讨论的重点。在设计阶段,我们经常要使用两种设计工具:程序流程图和伪代码。我们 在前面介绍控制结构时已经通过例子展示了这两种工具的用法。

对于复杂程序,还需要使用其他的工具,如层次图或结构图(参见第 4 章)。 程序逻辑设计好之后,即可用一种编程语言来实现,如本书采用的 Python 语言。常用的

编程语言都是命令式语言,它们用一条一条的命令(语句)组成序列来表达程序逻辑。如何 将语句编排在一起,形成结构良好的程序,这正是结构化程序设计要解决的问题。

程序编好之后需要进行测试,以便发现错误并修改程序。测试的方法是,用样本数据去 执行程序,并检查计算结果是否符合预期。对于复杂结构的程序,应当先进行单元测试,最 后进行联合调试。

程序即使已经交付用户投入运行,仍然还有维护问题,以便排除测试调试阶段未发现的 错误,或者根据用户需要升级改进程序。

本书讨论的重点是设计程序逻辑,这个任务完成的好坏,不但直接影响下一阶段的编码 实现,还会影响以后的测试、调试和维护。例如,如果程序结构设计的很乱,程序就难以理 解,将来不管是自己还是换人来对程序进行升级改进,都会非常困难。

另外软件开发中还有一件重要的事情,那就是文档化。文档化工作不仅指 PDC 各个阶段 的成果要体现在各种文档中(如设计文档、用户手册、联机帮助等),还包括程序代码中的各 种文档化手段(如程序注释)。