软件工程方法与奥践 第6章软件实现 子教
软件工程方法与实践 第 6 章 软件实现 电 子教 案
第6章软件实现 6.1编程语言选择 6.2程序设计 6.3软件系统集成 6.4小结
第 6 章 软件实现 6.1 编程语言选择 6.2 程序设计 6.3 软件系统集成 6.4 小结
软件实现的任务 软件实现是把软件设计的结果“转换”成用某种程序设 计语言描述的源程序,进而得到可供“发布”的软件 (产品) 软件规模都很大,通常是由多个模块(对象)组成的软 件系统。软件实现除了以模块为单位的编程之外,还要 把多模块(对象)集成为系统。所以,软件(产品)的 实现包括编码和系统集成两大任务
软件实现的任务 软件实现是把软件设计的结果“转换”成用某种程序设 计语言描述的源程序,进而得到可供“发布”的软件 (产品)。 软件规模都很大,通常是由多个模块(对象)组成的软 件系统。软件实现除了以模块为单位的编程之外,还要 把多模块(对象)集成为系统。所以,软件(产品)的 实现包括编码和系统集成两大任务
611编程语言选择 编程语言不仅仅是编码的工具,其语言特性也会对编码 风格,对程序的可靠性、可理解性、可修改性和可维护 性等质量要素产生极大的影响。因此,编码之前要慎重 选择一种适当的程序设计语言,并对所使用的语言十分 熟悉,能得心应手、恰到好处地运用编程语言的特点, 为提高程序的清晰性和效率服务
6.1 编程语言选择 编程语言不仅仅是编码的工具,其语言特性也会对编码 风格,对程序的可靠性、可理解性、可修改性和可维护 性等质量要素产生极大的影响。因此,编码之前要慎重 选择一种适当的程序设计语言,并对所使用的语言十分 熟悉,能得心应手、恰到好处地运用编程语言的特点, 为提高程序的清晰性和效率服务
611程序设计语言的发展 程序设计语言经历了第一代(机器语言)、第二代(汇 编语言)、第三代(高级语言)和第四代语言(超高级 语言)等发展阶段。 ◆第三代语言(结构化高级语言)是过程化语言。这类 语言的每一条语句一般被编译成5~10条机器代码指令, 编写的程序容易理解、容易维护,直接提供结构化的控 制结构,具有很强的进程能力和数据结构能力。 ◆第四代语言(4GL,超高级语言)是非过程化语言。 这类语言的一条语句一般被编译成30-~50条机器代码, 进一步提高了编码效率,并使程序更易理解、更易维护
6.1.1 程序设计语言的发展 程序设计语言经历了第一代(机器语言)、第二代(汇 编语言)、第三代(高级语言)和第四代语言(超高级 语言)等发展阶段。 ◆第三代语言(结构化高级语言)是过程化语言。这类 语言的每一条语句一般被编译成5~10条机器代码指令, 编写的程序容易理解、容易维护,直接提供结构化的控 制结构,具有很强的进程能力和数据结构能力。 ◆第四代语言(4GL,超高级语言)是非过程化语言。 这类语言的一条语句一般被编译成30~50条机器代码, 进一步提高了编码效率,并使程序更易理解、更易维护
4GL的特点 ①4GL有很强的査询、存储、维护等数据管理机制,特 别适用管理信息系统编程。 ②4GL能提供一组高效的非过程化命令,组成语言的基 本语句。用户编程不必描述实现的细节 ③4L除含有程序控制逻辑和数据库操作语句外,还包 括生成和处理报表、表格、图形,以及实现数据运算和 分析统计功能的各种语句,构成了一个多功能、一体化 的语言系统,可适应多种应用开发的需要。 ④4GL的编译器或解释器一般都较大,速度慢,并尽可 能容错
4GL的特点 ①4GL有很强的查询、存储、维护等数据管理机制,特 别适用管理信息系统编程。 ②4GL能提供一组高效的非过程化命令,组成语言的基 本语句。用户编程不必描述实现的细节。 ③4GL除含有程序控制逻辑和数据库操作语句外,还包 括生成和处理报表、表格、图形,以及实现数据运算和 分析统计功能的各种语句,构成了一个多功能、一体化 的语言系统,可适应多种应用开发的需要。 ④ 4GL的编译器或解释器一般都较大,速度慢,并尽可 能容错
面向对象语言 面向对象语言类是在过程型语言的基础上发展而来的。 类是混合型面向对象语言,如C++语言。C+语言是面 向对象机制的C语言的一个超集。任何C程序不需改变就 能把它们从结构化范型平滑地过渡到面向对象范型。 另一类是纯面向对象语言,如Java语言。Java语言是继 C++语言之后,当今最流行的网络编程语言。它的面向 对象、跨平台和分布式等特点,极大地拓展了应用程序 的内涵和外延,给传统编程带来了一系列崭新的概念, 成为编程语言发展的潮流和方向
面向对象语言 面向对象语言类是在过程型语言的基础上发展而来的。 一类是混合型面向对象语言,如C++语言。C++语言是面 向对象机制的C语言的一个超集。任何C程序不需改变就 能把它们从结构化范型平滑地过渡到面向对象范型。 另一类是纯面向对象语言,如Java语言。Java语言是继 C++语言之后,当今最流行的网络编程语言。它的面向 对象、跨平台和分布式等特点,极大地拓展了应用程序 的内涵和外延,给传统编程带来了一系列崭新的概念, 成为编程语言发展的潮流和方向
612程序设计语言的特点 着重从对软件质量的影响,总结程序设计语言语法规则 的特点。 1.名字说明和类型说明 程序设计语言中对名字和类型的说明不仅仅是一种安全 措施,还是一种重要的抽象机制,使得可以引用某些复 杂的实体,而不必考虑这些实体的表示方法 名字说明和类型说明往往是紧密相联的。名字说明定义 了对象,类型说明定义了该对象的类型,从而确定了名 字的使用方式
6.1.2 程序设计语言的特点 着重从对软件质量的影响,总结程序设计语言语法规则 的特点。 1. 名字说明和类型说明 程序设计语言中对名字和类型的说明不仅仅是一种安全 措施,还是一种重要的抽象机制,使得可以引用某些复 杂的实体,而不必考虑这些实体的表示方法。 名字说明和类型说明往往是紧密相联的。名字说明定义 了对象,类型说明定义了该对象的类型,从而确定了名 字的使用方式
612程序设计语言的特点 2.变量初始化 为减少发生“变量没有赋值”错误的可能性,一个方法 是强制性的对程序中说明的所有变量初始化;另一个方 法是在说明变量时由系统给变量赋一个特殊的、表明它 尚未初始化的值,如果企图使用这个变量时,系统会发 出错信号。 3.程序对象的局部性 个软件系统的程序对象最简单的是线性特性。然而, 程序对象之间一定存在着某些必要的联系,即程序对象 具有局部性(或称联想特性)
6.1.2 程序设计语言的特点 2. 变量初始化 为减少发生“变量没有赋值”错误的可能性,一个方法 是强制性的对程序中说明的所有变量初始化;另一个方 法是在说明变量时由系统给变量赋一个特殊的、表明它 尚未初始化的值,如果企图使用这个变量时,系统会发 出错信号。 3. 程序对象的局部性 一个软件系统的程序对象最简单的是线性特性。然而, 程序对象之间一定存在着某些必要的联系,即程序对象 具有局部性(或称联想特性)
612程序设计语言的特点 4.程序块结构 块结构的高级语言以程序块为单位独立编译,并能提供 有限形式的动态存储分配。但是,块结构语言的机制是 不完善的,主要是内层程序块中说明的名字不能被外层 程序块访问;由于动态存储分配,两次调用一个程序块 的间隔中不能保存局部变量的值。有些块结构语言附加 了某种控制机制来改善块结构性能。 不同语言的块结构控制机制的名称: SIMULA中称为类 程, MODULA中称为模块, ALGOL68中称为段,Ada 中称为包
6.1.2 程序设计语言的特点 4. 程序块结构 块结构的高级语言以程序块为单位独立编译,并能提供 有限形式的动态存储分配。但是,块结构语言的机制是 不完善的,主要是内层程序块中说明的名字不能被外层 程序块访问;由于动态存储分配,两次调用一个程序块 的间隔中不能保存局部变量的值。有些块结构语言附加 了某种控制机制来改善块结构性能。 不同语言的块结构控制机制的名称:SIMULA中称为类 程,MODULA中称为模块,ALGOL 68中称为段,Ada 中称为包