2015年10月22日

程序设计的理解

作者 kevinwang

我做了多年的软件工作,也曾经纠结设计与实现、需求与设计的过程、边界和内容,我仅从自己的理解,分享对于程序设计这个概念的理解,并抛砖引玉,与大家共同进步。

在数据结构课程中,定义了程序=算法+数据。在我们做软件设计和实现的过程中,基于需求分析结果,识别运行态数据,设计数据模型,这个模型能够在特定算法下处理运行态的数据。程序设计的过程,就是识别运行态数据,到抽象为数据模型,再到设计实现逻辑。

客户和软件公司对于软件的不同需要

很多“现代的软件工程师”,往往认为用代码实现了业务需求就是软件开发。从客户方看来,只要实现了功能,能够稳定运行,不关系你的架构好不好,工作量大不大。作为软件公司的专业的软件工程师来说,实现需求只是最最基本的功能,还要考虑软件完成后的易维护性、健壮性、易扩展性等等方面,不能因为客户一点的需求变化,或者第三方数据的编号,而需要对软件进行或大或小的改动。要知道,任何软件代码的变动,都需要经过严格测试才能够上线。

运行态数据

数据是软件运行的基础和目标所在。专业的软件工程师在对待业务需求时,首先需要分析,哪些数据是运行过程中作为参数定义的,哪些是作为输入采集的,哪些是来自于第三方的,哪些是服务于特定角色人群的,这些数据种类有多少,数量有多大。在此基础上对数据进行分类,识别出配置数据、输入数据、输出数据等。值得注意的是,所有这些数据,都是围绕客户需求,在软件运行时态作为输入或输出的数据。

数据模型

数据模型是衔接运行态数据和软件的重要部分,对运行态数据进行分析、抽象、设计为存储于数据库、配置文件、用户UI等不同方面的数据模型,针对有特殊要求的功能,例如性能和安全,设计中间运算的数据模型。

处理逻辑(算法)

处理逻辑是软件真正需要实现的功能,通过数据模型处理运行态数据,实现业务逻辑,并为使用者(业务用户、维护人员、软件公司开发和测试人员)提供易用、稳定的各种功能。

上面简要分享了我对于程序设计的理解,希望对于软件工程师有所帮助,在程序设计时既要考虑运行态的系统,也要考虑设计态的系统,从而进行良好的对接与实现,在这个过程中,数据是非常关键的因素,识别好数据,设计好模型,设计好逻辑,一个相对健壮、稳定的软件就具备了雏形。