面向对象软件工程实践指南 式等。 程序库是代码复用的最直接的例子。有很多的函数或者模块是软件之间都通用的,比如 说对一个数组的排序函数,文件的读、写函数等。将这些函数、模块封装在一个程序库 中,后续进行开发工作的程序员只需要简单地进行调用就可以了。程序库的好处是显而 易见的:程序员通过调用相应函数或模块,可以提高开发的效率;同时,程序库中的操 作一定是经过充分测试后正确的代码,减少了出错的可能。 ·类库是面向对象软件开发时实现复用的有效方式。将普遍需要的类放入类库,在软件开 发时可以直接使用这些类来创建对象,或者通过继承这些类并加以修改和扩充产生所需 要的子类。 ·软件服务:随着互联网、Web服务、Web API、云计算等技术的发展,在开发过程中可 以直接利用由服务提供商提供的服务或者API来构建系统,而无需了解实现服务的具 体代码和服务运行的具体方式。 ·软件开发者可以采用第三方的应用程序或应用框架实现代码的复用。这种代码复用往往 范围比较大,可以很大程度地提高开发效率。 设计模式是许多年软件开发的经验的结晶,它对各类问题提供了一些具有普遍借鉴意义 的解决方法。因而设计模式的重用实际上代表了一种知识的重用。 1.3传统软件工程 目前使用得最广泛的软件工程方法学,分别是传统软件工程和现代软件工程。传统软 件工程,主要指的是生命周期方法下的软件工程,是20世纪60年代为摆脱“软件危机”出 现的工程学。它采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件 工程环境来支持结构化技术的运用。该方法把软件生命周期的全过程依次划分为需求分析, 总体设计与详细设计,编码,测试,维护等几个主要阶段,然后顺序地完成每个阶段的任务。 每个阶段的开始和结束都有严格的标准,必须经过正式严格的技术审查和管理审查,前一阶 段的结束标准就是后一个阶段的开始标准。其中,审查最主要的标准就是每个阶段都应该提 交“最新的”高质量的文档。 1.需求分析 该阶段的主要工作是对待开发软件提出的需求进行分析并给出详细的定义。该阶段的 输出为软件需求说明书及初步的系统用户手册。 2.总体设计 以需求分析为结果,设计出总体的系统构架。包括模块的划分,数据传送与共享等内 容。该阶段的输出为概要设计说明书。 3.详细设计 在总体设计的基础上,设计模块内部的结构,包括界面设计、算法设计、数据库的设 计等。该阶段的输出为详细设计说明书。 4.编码 将设计模型映射为代码,用代码来实现设计的功能。利用编程语言,将人类的思想转面向对象软件工程实践指南 7 式等。 程序库是代码复用的最直接的例子。有很多的函数或者模块是软件之间都通用的,比如 说对一个数组的排序函数,文件的读、写函数等。将这些函数、模块封装在一个程序库 中,后续进行开发工作的程序员只需要简单地进行调用就可以了。程序库的好处是显而 易见的:程序员通过调用相应函数或模块,可以提高开发的效率;同时,程序库中的操 作一定是经过充分测试后正确的代码,减少了出错的可能。 类库是面向对象软件开发时实现复用的有效方式。将普遍需要的类放入类库,在软件开 发时可以直接使用这些类来创建对象,或者通过继承这些类并加以修改和扩充产生所需 要的子类。 软件服务:随着互联网、Web 服务、Web API、云计算等技术的发展,在开发过程中可 以直接利用由服务提供商提供的服务或者 API 来构建系统,而无需了解实现服务的具 体代码和服务运行的具体方式。 软件开发者可以采用第三方的应用程序或应用框架实现代码的复用。这种代码复用往往 范围比较大,可以很大程度地提高开发效率。 设计模式是许多年软件开发的经验的结晶,它对各类问题提供了一些具有普遍借鉴意义 的解决方法。因而设计模式的重用实际上代表了一种知识的重用。 1.3 传统软件工程 目前使用得最广泛的软件工程方法学,分别是传统软件工程和现代软件工程。传统软 件工程,主要指的是生命周期方法下的软件工程,是 20 世纪 60 年代为摆脱“软件危机”出 现的工程学。它采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件 工程环境来支持结构化技术的运用。该方法把软件生命周期的全过程依次划分为需求分析, 总体设计与详细设计,编码,测试,维护等几个主要阶段,然后顺序地完成每个阶段的任务。 每个阶段的开始和结束都有严格的标准,必须经过正式严格的技术审查和管理审查,前一阶 段的结束标准就是后一个阶段的开始标准。其中,审查最主要的标准就是每个阶段都应该提 交“最新的”高质量的文档。 1.需求分析 该阶段的主要工作是对待开发软件提出的需求进行分析并给出详细的定义。该阶段的 输出为软件需求说明书及初步的系统用户手册。 2.总体设计 以需求分析为结果,设计出总体的系统构架。包括模块的划分,数据传送与共享等内 容。该阶段的输出为概要设计说明书。 3.详细设计 在总体设计的基础上,设计模块内部的结构,包括界面设计、算法设计、数据库的设 计等。该阶段的输出为详细设计说明书。 4.编码 将设计模型映射为代码,用代码来实现设计的功能。利用编程语言,将人类的思想转