图1.5表明了软件工程目标之间存在的相互关系。其中有些目标之间是互补关系,例如, 易于维护和高可靠性之间,低开发成本与按时交付之间。还有一些目标是彼此互斥的,例如, 低开发成本与软件可靠性之间,提高软件性能与软件可移植性之间,就存在冲突 (3)软件工程的原则 以上的软件工程基本目标适合于所有的软件工程项目。为达到这些目标,在软件开发过 程中必须遵循下列软件工程原则 抽象:抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象,自顶向 下、逐层细化的办法控制软件开发过程的复杂性。 ·信息隐蔽:将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者 直接访问。这就是信息封装,使用与实现分离的原则。使用者只能通过模块接口访问模块中 封装的数据 模块化:模块是程序中逻辑上相对独立的成分,是独立的编程单位,应有良好的接口 定义。如C语言程序中的函数过程,C++语言程序中的类。模块化有助于信息隐蔽和抽象, 有助于表示复杂的系统 局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具 有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性 ·确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。这有助 于人们之间在交流时不会产生误解、遗漏,保证整个开发工作协调一致。 ·一致性:整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符 号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格 说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致 ·完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了 保证系统的完备性,在软件开发和运行过程中需要严格的技术评审 ·可验证性:开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系 统易于检査、测试、评审的原则,以确保系统的正确性 使用一致性、完备性和可验证性的原则可以帮助人们实现一个正确的系统。 三、例题分析 【例1】软件是计算机系统中与硬件相互依存的另一部分,它是包括(A)、(B)及 (C)的完整集合。其中,(A)是按事先设计的功能和性能要求执行的指令序列。(B) 是使程序能够正确操纵信息的数据结构。(C)是与程序开发、维护和使用有关的图文材 料 供选择的答案: A~C.①软件 ②程序 代码④硬件 ⑤文档 ⑥外设 数据 ⑧图表 答案 分析:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的 完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够 正确操纵信息的数据结构。文档是与程序开发、维护和使用有关的图文材料。需要注意的是, 程序与算法在含义上有不同:算法的每一条指令必须是最基本的、必须通过有限步做完,而 程序没有这个要求7 图 1.5 表明了软件工程目标之间存在的相互关系。其中有些目标之间是互补关系,例如, 易于维护和高可靠性之间,低开发成本与按时交付之间。还有一些目标是彼此互斥的,例如, 低开发成本与软件可靠性之间,提高软件性能与软件可移植性之间,就存在冲突。 (3) 软件工程的原则 以上的软件工程基本目标适合于所有的软件工程项目。为达到这些目标,在软件开发过 程中必须遵循下列软件工程原则。 ·抽象 : 抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象,自顶向 下、逐层细化的办法控制软件开发过程的复杂性。 ·信息隐蔽 : 将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者 直接访问。这就是信息封装,使用与实现分离的原则。使用者只能通过模块接口访问模块中 封装的数据。 ·模块化 : 模块是程序中逻辑上相对独立的成分,是独立的编程单位,应有良好的接口 定义。如 C 语言程序中的函数过程,C++语言程序中的类。模块化有助于信息隐蔽和抽象, 有助于表示复杂的系统。 ·局部化 : 要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具 有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。 ·确定性 : 软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。这有助 于人们之间在交流时不会产生误解、遗漏,保证整个开发工作协调一致。 ·一致性 : 整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符 号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格 说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。 ·完备性 : 软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了 保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。 ·可验证性 : 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系 统易于检查、测试、评审的原则,以确保系统的正确性。 使用一致性、完备性和可验证性的原则可以帮助人们实现一个正确的系统。 三、例题分析 【例1】软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及 ( C )的完整集合。其中,( A )是按事先设计的功能和性能要求执行的指令序列。( B ) 是使程序能够正确操纵信息的数据结构。( C )是与程序开发、维护和使用有关的图文材 料。 供选择的答案: AC. ① 软件 ② 程序 ③ 代码 ④ 硬件 ⑤ 文档 ⑥ 外设 ⑦ 数据 ⑧ 图表 答案:A. ②, B. ⑦, C. ⑤ 分析:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的 完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够 正确操纵信息的数据结构。文档是与程序开发、维护和使用有关的图文材料。需要注意的是, 程序与算法在含义上有不同:算法的每一条指令必须是最基本的、必须通过有限步做完,而 程序没有这个要求