软件工程作为一门学科已有五六十年的历史,其发展可划分为两个时期。
20世纪60年代末到80年代初,这一时期的主要成果体现为:提出瀑布模型,试图为开发人员提供有关活动组织方面的指导;开发了诸多过程式语言(c语言 ,Ada语言 ,Pascal 语言)和开发方法(例如,Jackson方法,结构化方法)。这一时期的主要特征可概括为:前期主要研究系统实现技术,后期则开始关注软件质量和软件工程管理。
20世纪80年代以来,在工程技术方面提出了面向对象软件开发方法。
软件开发的本质
计算机软件一般是指计算机系统中的程序及其文档。其中,程序是计算机任务的处理对象和处理规则的描述;文档是为了理解程序所需要的阐述性资料。
由以上定义可知,软件是对一个特定问题域的抽象,是被开发出的一种逻辑实体,而不是有形的物理部件,软件开发的目标是将问题域中的概念映射为运行平台层面上的概念。
因此可以说,软件开发就是要弥补问题域与运行平台之间的“距离”。
如果按照自顶向下的途径进行软件开发的话,首先是通过需求及建模,把问题域的概念和处理逻辑向需求(抽象)层进行映射,再把需求层的概念和处理逻辑向设计层进行映射,依次进行,直到映射到运行平台这一抽象层为止。