徐州工程学院 1
第 8章 软件系统与软件工程徐州工程学院徐州工程学院 2
第 8章 软件系统与软件工程
8.1 操作系统
8.1.1 操作系统的形成
8.1.2 操作系统分类
8.1.3 操作系统功能
8.1.4 常用操作系统简介徐州工程学院 3
第 8章 软件系统与软件工程
8.2 软件工程简介
8.2.1 什么是软件工程
8.2.2软件开发模型
8.2.3软件开发能力成熟度模型徐州工程学院 4
第 8章 软件系统与软件工程
8.3 计算机的运算基础
8.3.1 数制
8.3.2 不同数制之间的转换
8.3.3 描述小数点和符号
8.3.4 原码、反码和补码
8.3.5常用计算机信息编码徐州工程学院 5
第 8章 软件系统与软件工程
8.4 程序设计基础
8.4.1 程序设计语言
8.4.2 程序设计步骤
8.4.3 面向对象的程序设计
8.5 数据处理基础
8.5.1 数据结构简介
8.5.2 算法及其描述
8.5.3 典型数据组织徐州工程学院 6
8.1 操作系统
操作系统是对硬件系统功能的首次扩充,
在计算机系统中占据特殊重要的地位,
所有其它软件,如编辑程序、汇编程序、
编译程序、数据库管理系统等系统软件,
以及大量的应用软件都是建立在操作系统基础上的,并得到它的支持和取得它的服务。
徐州工程学院 7
8.1.1 操作系统的形成
操作系统是在人们不断地改善计算机系统性能和提高资源利用率的过程中,逐步地形成和发展起来的。
操作系统从无到有、从小到大,功能不断增强,它是随着计算机硬件技术和软件技术的发展而发展的。操作系统的形成过程大致经历了手工操作、管理程序和操作系统三个阶段。
徐州工程学院 8
8.1.2 操作系统分类
迄今为止,操作系统的诞生已有 30年。
在此期间,计算机系统得到蓬勃发展。
相应地也就出现了合式各样的操作系统。
对操作系统可采取多种方法进行分类,
最常用的方法是根据特征的不同而把操作系统分为三种基本类型,即批处理操作系统、分时操作系统和实时操作系统。
徐州工程学院 9
8.1.2 操作系统分类
1.批处理系统
( 1)单道批处理系统
在系统监督程序的控制下,先把磁带上的第一个作业传送到内存,并把运行的控制权交给它,
当第一个作业处理完后又把控制权交还给监督程序,由监督程序再把第二个作业输入内存。
按这种方式对磁带上的作业自动地、一个接一个地处理,直至把磁带上的所有作业全部处理完毕。这便形成了最初的批处理技术。
徐州工程学院 10
8.1.2 操作系统分类
1.批处理系统
( 2)多道批处理系统
批处理系统虽诞生于 60年代初期。但至今仍作为一种主要的操作系统类型,并已将它配置于网络系统中,其主要优点是,系统吞吐量大、资源利用率高。批处理系统的缺点是,平均周转时间长、
不能提供交互作用能力。
徐州工程学院 11
8.1.2 操作系统分类
2.分时系统
实现分时系统的方法有,简单分时系统、基于多道程序设计的分时系统和具有前台和后台的分时系统。
在分时系统中,作业的运行方式不能像批处理系统那样,一个作业长期占有 CPU运行,其它作业则因不能获得 CPU而处于长期等待的状态,
致使其用户请求不能得到及时响应。
徐州工程学院 12
8.1.2 操作系统分类
3.实时系统
实时系统是指系统对特定输入做出反应的速度足以控制发出实时信号的对象;
或者说,计算机能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时设备和实时任务,
协调一致地运行。实时系统可分成实时控制系统和实时信息处理系统。
徐州工程学院 13
8.1.2 操作系统分类
4.网络操作系统
单机操作系统是封闭的,而网络操作系统恰恰相反,它是开放系统。因为只有,开放,,才适应网络中多用户之间的交往和全网资源的共享。
一个计算机系统入网后,不但大大扩大了本机用户的可用资源范围,同时也使该机的用户范围从本机用户扩大到全网用户。这就要求网络环境下的操作系统,既要为本机用户提供有效地使用网络资源的手段,又要为网络用户使用本机资源提供服务。
徐州工程学院 14
8.1.3 操作系统功能
在多道程序环境下,用户提交给系统的作业所据资源的总和,远多于系统所拥有的资源,系统必然会因不能同时满足所有作业的资源要求,
而无法将它们都开动起来。于是,为了使自己能投入运行,这些作业之间必将争夺资源。
程序的并发执行,有效地改善了系统资源的利用率和提高了系统的吞吐量,但它使系统复杂化,操作系统必须具有控制和管理各种并发活动的能力。计算机系统中的硬件和软件资源不再为某个程序所独占,而是供多个用户共同使用。
徐州工程学院 15
8.1.3 操作系统功能
1.处理机管理
处理机管理的主要任务是对处理机的分配和运行实施有效管理。在多道程序环境下,处理机的分配和运行又都是以进程为基本单位的,如某进程因某事件而无法继续执行时,应引起对处理机的重新分配。
因此,对处理机的管理,可归结为对进程的管理。所谓进程,就是是指在系统中能独立运行和进行资源分配的基本单位,它能和其它程序并发执行。
徐州工程学院 16
8.1.3 操作系统功能
2.存储器管理
存储器管理的主要任务是,为多道程序的并发运行提供良好环境;便于用户使用存储器;提高存储器的利用率;为尽量多的用户提供足够大的存储空间。
徐州工程学院 17
8.1.3 操作系统功能
3.文件管理
在现代计算机系统中,总是把大量信息以文件形式存放在外存中,以供所有的或清正的用户使用。系统也允许用户把处理结果保存在系统中,供以后使用。这样,操作系统中又必须配置文件系统,作为信息管理机构。
例如,为了方便用户,操作系统应向用户提供一个使用方便的接口,用户通过该接口,取得文件系统的服务,如用于建立、打开、关闭、
撤消文件,读或写文件等的系统调用,供编程时用。
徐州工程学院 18
8.1.3 操作系统功能
4.设备管理
设备管理的主要任务是为用户程序分配 I/O设备;完成用户程序请求的 I/O操作;提高 CPU
和 I/O设备的利用率;改善人机界面。
例如,系统可通过技术使某台打印机成为能被多个用户共享的设备,以提高设备利用率及加速程序的执行过程。这种只为用户所感觉到、
而实际上并不存在的设备,称为逻辑设备或虚拟设备。
徐州工程学院 19
8.1.3 操作系统功能
5.作业管理
作业管理的主要任务是根据系统条件和用户需要,对作业的运行进行合理的组织及相应的控制。
例如,根据系统能力和当前作业的运行情况,
按一定策略,从后备作业队列中选出一批作业,
为它们分配所需的 I/O设备和存储空间,将它们调入内存并为之建立相应的进程,使之成为具有获得处理机资格的候选进程。用户可通过某种形式向系统发出各种命令,以对自己的作业进行控制和管理。
徐州工程学院 20
8.1.4 常用操作系统简介
1,MS-DOS
MS-DOS巨大成功的原因,首先在于它的发展策略的正确。它总是不断地推出新版本,增添新功能以支持更新的硬件并满足用户的新需求;
同时新版本兼容老版本的功能,决不抛弃老用户。
MS-DOS取得巨大成功的另一个原因,在于它的最初设计思想及其追求目标的正确和恰当,
那就是为用户的上机操作和应用软件开发提供良好的外部环境。
徐州工程学院 21
8.1.4 常用操作系统简介
2,Windows操作系统
MS-DOS提供的是一种以字符为基础的用户接口,对于不熟悉硬件和操作系统的用户有一定的难度。
Microsoft Windows则是一种采用图形用户界面( GUI)方式的操作系统,用户只要使用鼠标,点击相关的图标就可以完成各种操作命令。
徐州工程学院 22
8.1.4 常用操作系统简介
3,UNIX/Linux操作系统
UNIX可以在微型机上运行,也可以在大型机上运行,已成为当今世界流行的多用户操作系统。
UNIX系统在 1969~ 1970年间,美国贝尔实验室首先在 PDP-7机器上实现了
UNIX系统。 1973年专门为 UNIX系统研制了 C语言,并重写了该系统。
徐州工程学院 23
8.1.4 常用操作系统简介
OS/2使用的多任务方式,可以对存储器和 CPU等资源进行全面控制。具有清晰的用户界面,提供功能很强的应用程序接口( API)。
在 OS/2支持下,可充分发挥全点可寻址设备的能力,绘制各种高质量的图形,
乃至进行图象处理。
徐州工程学院 24
8.2 软件工程简介
计算机硬件的迅速发展,需要人们开发优质软件以适应社会的需求,多年来人们沿用的人工作坊式的软件开发方法,严重地影响着软件的质量、成本及开发周期。
为了摆脱软件危机的困扰,一门研究软件开发与维护的普遍原理和技术的工程学科(软件工程学)从六十年代末期开始迅速发展起来了,
现在它已经成为计算机科学技术的一个重要分支,一个异常活跃的研究领域。
徐州工程学院 25
8.2.1 什么是软件工程
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,
并把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程学简称软件工程,研究的范围非常广泛,包括技术方法、工具和管理等许多方面,
软件工程又是一门迅速发展的新兴学科,新的技术方法和工具不断涌现,真可谓五花八门层出不穷。
徐州工程学院 26
8.2.2 软件开发模型
1.编码修正模型
在软件开发的早期,开发只有两个阶段,被简单地分成编写程序代码和修改程序代码。拿到项目,马上就根据需要,开始编写程序。编完代码,调试通过,就算基本完成任务,交付给用户使用。
如果应用中出了什么错误,或有什么新的要求,
就需要重新修改代码。由此可见,这种开发模型只是一种类似作坊式的方式,对开发一些较小的软件,似乎还能应付。
徐州工程学院 27
8.2.2 软件开发模型
2.转换模型
转换模型的优点是解决了代码结构经多次修改而变坏的问题;减少了许多中间步骤,如设计、
编码、测试等等。
但是,转换模型仍有较大局限。自动转换在实际应用上仅适用于规模很小或某些非常特定领域的产品,另外,它还需要非常庞大的支持体系。转换模型主要思想是用形式化的方法自动生成程序。
徐州工程学院 28
8.2.2 软件开发模型
3.平行瀑布模型
瀑布模型的各个阶段之间转换时,不一定要求完全按顺序进行,而是可以适当并行开展各阶段的开发工作。在上一个阶段尚未完全结束前,
就可开始后一阶段的开发工作。
例如,在需求分析完成 60%时,就可开始进行这 60%的已完成分析部分的设计工作。同时并行进行余留的 40%的需求分析。平行瀑布模型是对瀑布模型的进一步改进。
徐州工程学院 29
8.2.2 软件开发模型
4.瀑布模型
Winston Royce在 1970年提出了著名的
,瀑布模型,,规定了包括上述 6个工程活动,
并规定了它们自上而下、相互衔接的固定次序,
如同瀑布流水,逐级下落。
瀑布模型吸取软件开发早期的教训,开始将软件开发视为工程来管理,类似其他工程的管理,
软件开发也具有一定的工序。
徐州工程学院 30
8.2.2 软件开发模型
5.演进式开发模型
有人说,往往,干两次,后开发出的软件才能较好地令用户满意。第一次只是试验性开发,
其目标只在于探索可行性,弄清软件需求;第二次则在第一次开发的基础上获得较为满意的软件产品。
把第一次得到的试验性产品称为,原型,。如果系统十分复杂,就可能要开发多次,每次只开发系统的一部分功能。每次在前一次的基础上,进行改进并扩大性能、功能,直到达到要求。
徐州工程学院 31
8.2.2 软件开发模型
6.螺旋模型
螺旋模型更适合于大型软件的开发,应该说它对于具有高度风险的大型复杂软件系统的开发是较为实际的方法。螺旋模型实际上是吸收和综合了过去各种软件开发模型的优点。
20世纪 70年代和 80年代,硬件技术不断提高,软件系统的规模也不断扩大。而当我们面对一个复杂的大型软件系统时,用,瀑布模型,
还是,演进模型,难以有效地完成项目。
徐州工程学院 32
8.2.3软件开发能力成熟度模型
1,ISO 9000对软件开发过程的影响
ISO 9000标准肯定了软件开发过程对于软件质量的影响程度,好的过程意味着高质量的软件,反之亦然。
好的软件开发过程还意味着用低的开销来产生高质量的产品,所以对软件开发过程的研究是提高软件质量的关键。
徐州工程学院 33
8.2.3软件开发能力成熟度模型
2.软件开发能力成熟度模型
20世纪 70年代提出的软件危机问题,到了 80
年代还没有真正缓解。这种说法也许不十分公正,因为在此期间软件技术的确也得到很大的发展。
但是,要求软件解决的问题的复杂性增加得更快,速度超过人们开发及维护软件的能力。要求在经费、时间和性能的约束下交付可以使用的软件成为一种挑战。
徐州工程学院 34
8.3 计算机的运算基础
8.3.1 数制
在计算机中采用的数制是二进制,原因是电信号一般只有两种状态。由于二进制不便于书写,所以还需要使用八进制和十六进制等。
所谓数制,就是按进位的原则进行计数,
也叫作进位计数制。在日常生活中最常用的数制是十进制。
徐州工程学院 35
8.3.1 数制
1.十进制数
一个数用 10个不同的符号表示,且采用
,逢十进一,的进位计数制。日常生活中人们最熟悉十进制数,十进制是使用数字 1,2,3,4,5,6,7,8,9,0
等符号来表示数值,因此,十进制数中处于不同位置上的数字代表不同的值。
徐州工程学院 36
8.3.1 数制
2.二进制数
在计算机中使用二进制的原因是,二进制中只有 0和 1两个符号,使用有两个稳定状态的物理器件就可以表示二进制数的每一位,而制造有两个稳定状态的物理器件要比制造有多个稳定状态的物理键件容易得多。
另外,计算机的理论基础是数理逻辑,数理逻辑中的,真,和,假,可以分别用 0和 1来表示,
这就把非数值信息的逻辑处理与数值信息的算术处理互相联系了起来。
徐州工程学院 37
8.3.1 数制
3.八进制数
八进制数中处于不同位置上的数字代表不同的值。
每一个数字的权由 8的幂次决定,八进制的基数为 8。八进制是使用数字 0,l,2、
3,4,5,6,7多符号来表示数值的,
且采用,逢八进一,的进位计数制。
徐州工程学院 38
8.3.1 数制
4.十六进制数
十六进制数中处于不同位置上的数字代表不同的值。每一个数字的权由 16的幂次决定的,十六进制的基数为 16。
十六进制使用数字 0,l,2,3,4,5,6,7、
8,9和 A,B,C,D,E,F等符号来表示数值,
其中 A,B,C,D,E,F分别表示数字 10、
11,12,13,14,15。十六进制的计数方法为,逢十六进一,。
徐州工程学院 39
8.3.2 不同数制之间的转换
1.十进制数转换为非十进制数
将十进制整数转换为非十进制整数采用
,除基取余法,,即将十进制整数逐次除以需转换为的数制的基数,直到商为
,0”为止,然后将所得到的余数自下而上排列即可。简言之,将十进制整数转换为非十进制整数的规则为:除基取余,
先余为低(位),后余为高(位)。
徐州工程学院 40
8.3.2 不同数制之间的转换
2.非十进制数转换为十进制数
非十进制数转换为十进制数采用,位权法,,即把各非十进制数按权展开,然后求和,即可得到转换结果。
徐州工程学院 41
8.3.2 不同数制之间的转换
3.二进制、八进制、十六进制之间转换
由于二进制的权值 2i和八进制的权值 8i=23i,
3位二进制数恰好是一位八进制数,所以着把二进制数转换为八进制数,只要以小数点为界,
将整数部分自右向左和小数部分自左向右分别按每 3位为一组(不足 3位用 0补足),然后将各个 3位二进制数转换为对应的一位八进制数。
反之,若把八进制数转换为二进制数,只要把每一位八进制数转换为对应的 3位二进制数即可。
徐州工程学院 42
8.3.3 描述小数点和符号
计算机中的数采用二进制表示,数的的符号也采用二进制描述,通常,在数的最高位之前用一符号位,0表示正数,1
表示负数。而对小数点的处理,则采用定点和浮点两种方式。
徐州工程学院 43
8.3.4 原码、反码和补码
在计算机中,任何正数的原码、反码和补码的形式完全相同,而负数则有各种不同的表示形式:原码、反码和补码。
如果用 X表示真值,而将数在计算机内的各种编码表示称为机器数,根据表示方法的不同,把原码、反码和补码分别记为[ X] 原,[ X] 反 和[ X] 补 。
徐州工程学院 44
8.3.5常用计算机信息编码
二进制编码就是以若干位二进制码的不同组合来表示一组字母、符号及汉字等信息,计算机采用二进制编码,表示字母、运算符、标点符号、控制符以及汉字等信息。
为了帮助检错和纠错,可以在编码字中增加一些校验位,或者使用检错码和纠错码。下面将介绍最常用的 BCD码、字符编码、汉字编码和数据校验码。
徐州工程学院 45
8.4.1 程序设计语言
1.机器语言
机器指令的集合就是该计算机的机器语言,即计算机可以直接接受、理解的语言。这种机器语言是从属于硬设备的,不同的计算机设备有不同的机器语言。计算机指令系统中的指令是由 0,l代码组成并且能被机器直接理解执行,
它们被称为机器指令。
机器语言是计算机硬件所能直接,理解,的语言。机器语言的优点是:编程质量高、所占存储空间小、执行速度快、可以精确地描述算法徐州工程学院 46
8.4.1 程序设计语言
2.汇编语言
汇编语言就是,用比较直观的符号来表示机器指令的操作码,地址码,常量和变量等,也可称之为符号语言。
人们为了解决机器语言使用不便的问题,在 50
年代中期,采用能反映机器指令功能和特征的英语单词或其缩写作为指令的助记符,例如用
MOV表示数据传送,ADD表示加法,SUB表示减法等等。
徐州工程学院 47
8.4.1 程序设计语言
3.高级程序设计语言
高级程序设计语言不再依赖具体的机器,而是面向过程。一般情况下,人们无需了解计算机的内部结构,只要选择适当的数据结构和正确的算法,就可以依照高级程序设计语言的语法规则,编写出能描述解题过程的程序。
高级程序设计语言产生于 20世纪 50年代末期,
又称算法语言或高级语言。有 BASIC、
Visual Basic,C,Visual C++,Java等数十种,这些语言各有特点,分别适用于不同的应用领域。
徐州工程学院 48
8.4.2 程序设计步骤
程序是能使计算机按照要求处理信息的指令序列,而程序设计是创建这些指令序列的具体过程,它是软件开发的关键步骤之一。程序是计算机软件的主体,软件的质量主要是通过程序的质量来体现的,因此程序设计在软件开发中占有十分重要的地位。
程序设计是软件开发过程中的一个重要环节,
程序的质量主要取决于软件总体设计的质量,
但所选择的程序设计语言的特性和程序设计的途径也会对程序的可靠性、可读性、可测性和可维护性产生深刻的影响。
徐州工程学院 49
8.4.3 面向对象的程序设计
对象和类是面向对象程序设计的核心概念,程序员使用对象和类进行程序设计。类可以分成两种,一种是程序员可以直接使用的类;另一种需要程序员自行设计。对象是类的实例,同一个类可以建立多个对象,通过对象可以达到程序设计的目的,对象和类既有区别又有联系。
面向对象的程序设计(简记为 OOP)是目前占据主流地位的一种程序设计技术,采用面向对象程序设计技术的原因就是为了提高程序设计的效率。
徐州工程学院 50
8.5 数据处理基础
8.5.1 数据结构简介
数据结构就是指数据间的相互关系,数据是计算机程序加工处理的对象,具有着内在的联系,
决不是杂乱无章的堆积。只有了解数据的内在联系,才能对大量的数据进行有效处理。
数据结构一般包括:数据之间的逻辑关系,数据在计算机中的存储方式和数据的运算三个方面。数据运算包括:在表中找一个元素,从表中删去一个元素,向表中插入一个元素,等等。
徐州工程学院 51
8.5.2 算法及其描述
1.算法描述
自然语言可以是英文或中文等,但由于自然语言具有二义性且难以严格地表示算法的逻辑流程,因此一般不使用自然语言来描述算法。
算法可以使用专门的工具进行描述,常用的算法描述工具有:自然语言、流程图、决策表以及算法描述语言等。
徐州工程学院 52
8.5.2 算法及其描述
2.算法及其特征
算法开始前,可有零个或若干个输入量。算法执行完毕,必须有一个或若干个输出量。算法的含义与程序十分类似,但也有些区别。
通常,一个程序并不需要满足有限性,例如操作系统,只要整个系统不遭破坏,操作系统就一直在运行,程序是算法的一种特殊表示,是用机器可执行的编程语言书写。
徐州工程学院 53
8.5.2 算法及其描述
3.算法分析
所谓算法分析就是对算法效率的分析,其目的在于通过对算法占用的空间、特别是算法执行时间的讨论,寻求改进算法的途径。
评价一个算法的优劣,除了正确性和简明性外,
算法的效率是十分重要的。衡量一个算法的优劣通常从它的时间特性、空间特性以及易理解性等 3个方面来考虑。
徐州工程学院 54
8.5.3 典型数据组织
典型数据组织有线性表、队列、堆栈、
串、数组和树、广义表、图等的基本类型,不仅是一般非数值计算程序设计的基础,而且也是设计和实现编译程序、
操作系统、数据库管理系统等系统软件以及大型应用程序的重要基础。
下面将简要介绍几种典型的数据结构,
包括:线性表、队列和堆栈。