按照设计理论的解释,软件设计就是在建造软件产品之前的规划活动,它使用软件抽象实体模型,建立软件内部结构并进行推理、调整,以满足客户需求、符合环境约束。
要准确理解软件设计的内涵,就要分清软件产品的建造和规划,尤其是要清楚定位编程活动。
在20世纪90年代之前,人们认为编程行为属于建造,编程之前使用各种图形化的工具建立模型的行为属于规划。当时的学派认为需要建立严谨完备的结构图、ERD等设计模型,进行推理,验证合格之后才能开始编码。
但到20世纪90年代之后,人们认识到真正的建造活动不是编程,而是由编译器完成的编译、链接等可执行程序产生过程。因为软件开发的最终产品不是源程序代码,源代码是无法直接运行的,可以运行的是编译之后由0、1组成的二进制可执行程序,所以软件的材料载体是运行在目标机器上的二进制编码,产生可执行程序的编译、链接等活动才是真正的建造,在此之前包括编程在内的活动都是设计规划。