计算机基础

Download Report

Transcript 计算机基础

计算机
软件系统
3.1 计算机软件概述
一、什么是软件
软件:计算机系统中的程序及其文档。
程序:计算任务的处理对象和处理规则的
描述。
文档:为了便于了解程序所需的阐明性资
料。
程序必须装入机器内部才能工作
文档是给人看的,不一定装入机器
3-2
计算机
软件系统
3.1 计算机软件概述
IEEE对软件的定义(1983):
软件是计算机程序、方法、规则、相关的
文档资料以及在计算机上运行的程序时所必
需的数据的集合。
程序:是计算机需要遵照执行的一系列指令,它作为一
种具有逻辑结构的信息,精确而完整地描述计算任务中
的处理对象和处理规则。
方法、规则:通常是在文档中说明并在程序中实现的。
文档:开发、使用和维护程序所需要的图文资料。
数据:向一个程序提供的输入。
3-3
计算机
软件系统
3.1 计算机软件概述
软件有三层含义:
①个体含义:即指计算机系统中的程序
及其文档;
②整体含义:即指在特定计算机系统中
所有上述个体含义下的软件的总体;
③学科含义:即指在研究、开发、维护
以及使用前述含义下的软件所涉及的理论、
原则、方法和技术所构成的学科。在这种含
义下,软件宜称为软件学,但一般仍称作软
件。
3-4
计算机
软件系统
3.1 计算机软件概述
二、发展过程
软件的发展受到应用和硬件发展的推动和
制约,其发展过程大致可分为三个阶段:
第一阶段
1946-1958
第二阶段
1956-1968
第三阶段
1968以后
第一个程序出现→
实用的高级程序设
计语言出现,这期
间重点考虑程序本
身,尚未出现软件
一词。
实用的高级程序设
计语言出现→软件
工程出现,这期间
出现软件一词,融
程序及其有关的文
档于一体。
软件危机
软件工程出现→现
在,1968年大西洋
公约学术会议提出
软件工程。
3-5
计算机
软件系统
3.1 计算机软件概述
三、软件的分类
系统软件:居于计算机系统中最靠近硬件
的一层,其他软件一般通过系统软件发挥作
用。如操作系统、编译程序、网络软件系统、
数据库系统、人机交互软件系统等。
支撑软件:支撑软件的开发与维护的软件
工具和软件开发环境。如环境数据库、各种
接口软件和工具组等。
应用软件:特定应用领域专用的软件。
3-6
计算机
软件系统
3.1 计算机软件概述
四、软件与硬件的关系
硬件:构成计算机系统的物理装置。
软件:用计算机指令和算法语言编写的程
序以及运行程序所需的文档、数据。
关系:硬件是软件运行的基础
软件是对硬件功能的扩充和完善
软件的运行最终被转换为对硬件的操作
计算机:硬件、软件→人工生命
人:躯体、灵魂→自然生命
3-7
计算机
软件系统
3.2 操作系统
操作系统是所有从事计算机应用、开发和
研究的人经常使用的系统软件。
一、什么是操作系统
管理硬件资源、控制程序运行、改善人机
界面、为应用软件提供支持的系统软件。
特征:并发性→同时执行多个程序
共享性→多个并发程序共同使用系统资源
随机性→程序运行顺序、完成时间以及运
行结果都是不确定的
3-8
计算机
软件系统
3.2 操作系统
二、操作系统的功能
1.主要作用
①管理各种软硬件资源;
②提供良好的用户界面。
2.基本功能
进程管理:对处理机进行管理。通过进程
管理协调多道程序间的关系,解决对处理机
实施分配调度策略、进行分配和回收等。
进程状态(就绪、运行、挂起/等待)。
3-9
计算机
软件系统
3.2 操作系统
存储管理:管理内存资源。
主要包括内存分配、地址映射、内存保护
和内存扩充。
设备管理:对硬件设备进行管理。
主要包括缓冲区管理、设备分配、设备驱
动和设备无关性。
用户接口:用户操作计算机的界面。
命令接口→通过交互命令方式,对计算机进行操作
程序接口→通过API调用例行程序实现既定的操作
3-10
计算机
软件系统
3.2 操作系统
文件管理:对信息资源的管理,操作系统
将这些资源以文件的形式存储在外存上。
文件:按一定格式建立在存储设备上的一
批相关信息的有序集合。
文件名:每个文件必须起一个名字。
主文件名.扩展名/文件类型
目录:文件的存放通过目录形式来实现
一个目录→可以有子目录
可以存放一组文件
3-11
计算机
软件系统
3.2 操作系统
多级目录结构:
盘符:\子目录1\子目录2\…\子目录n\文件名
C:\Program Files\Microsoft Office\OFFICE11\
winword.exe
3-12
计算机
软件系统
3.2 操作系统
三、操作系统的分类
1.批处理操作系统
特点:用户脱机使用计算机,作业成批处
理,多道程序运行,但无交互手段。
2.分时操作系统
特点:多路性,交互性,独占性。
3.实时操作系统
特点:及时性,高可靠性和完整性。
3-13
计算机
软件系统
3.2 操作系统
4.嵌入式操作系统
特点:运行在嵌入式环境中。
5.个人计算机操作系统
特点:单用户,单任务(DOS)
多任务(Windows)
6.网络操作系统
特点:基于计算机网络(Netware,
WindowsNT)
7.分布式操作系统
特点:统一性,共享性,透明性,自治性
3-14
计算机
软件系统
3.2 操作系统
四、常用的操作系统
操作系统是现代计算机必不可少的系统软
件,它是计算机的灵魂所在。
1.操作系统的诞生--盘古开天地
最初的操作系统出现在IBM704大型机上
微型计算机的操作系统则诞生于20世纪
70年代--CP/M。它能够进行文件管理,具
有磁盘驱动装置,可控制磁盘的I/O,显示器
的显示以及打印的输出。
3-15
计算机
软件系统
3.2 操作系统
2.操作系统早期霸主--DOS
1981年IBM公司首次推出IBM PC,就采
用了Microsoft公司开发的DOS操作系统。
DOS是在CP/M的基础上进行了较大扩充,
增加了许多内部和外部命令,使该操作系统
具有较强的功能及性能优良的文件系统。
由于Microsoft软件有向下兼容的特点,因
此决定了Windows出问题时,很多时候需要
在DOS下才能得到解决。
3-16
3.2 操作系统
计算机
软件系统
DOS的发展历史:
DOS的组成:
用户
用户程序
键盘命令
COMMAND.COM 命令处理程序
MSDOS.SYS 文件管理程序
IO.SYS
I/O管理程序
ROMBIOS
引导程序
3-17
计算机
软件系统
3.2 操作系统
3.操作系统当代大亨--Windows
1981年,微软公司内部制定了发展界面
管理者的计划。到1983年5月,微软公司决定
把这一计划命名为Microsoft Windows。
1983年11月,Bill宣布推出
Windows1.0版本,但不成功。直到1985
年才正式发布。
1987年,微软公司推出Windows2.0。
直到1990年,微软公司推出Windows3.0,
才逐渐取代DOS成为主流操作系统。
3-18
计算机
软件系统
3.2 操作系统
Windows内核系列发布表
日期
版本
日期
1983.11
1985.11
1987.4
1990.5
1992.4
1994.2
1995.8
1998.6
1999.5
2000.9
2001.1
止
Windows宣布诞生
Windows 1.0
Windows 2.0
Windows 3.0
Windows 3.1
Windows 3.11
Windows 95
Windows 98
Windows 98 SE
Windows Me
Win9x内核宣告停
1993.8
1994.9
1995.6
1996.8
1997.9
1998.8
1999.4
2000.2
2000.7
2001.10
2001.11
版本
Windows
Windows
Windows
Windows
Windows
Windows
Windows
Windows
Windows
Windows
Windows
NT 3.1
NT 3.5
NT 3.51
NT 4.0
NT 5.0 Beta 1
NT 5.0 Beta 2
2000 Beta 3
2000
2000 SP1
XP
XP 中文版
3-19
3.2 操作系统
计算机
软件系统
Windows NT/2000/XP总体结构
用户
用户态
核心态
环境子系统 集成子系统
系统服务
对象管 安全调用 进程管 本地过程 虚拟内存 输入输出设
理程序 监视程序 理程序 调用程序 管理程序 备管理程序
内核
硬件抽象层
3-20
计算机
软件系统
3.2 操作系统
4.天皇巨星--UNIX
UNIX是使用比较广泛、影响比较大的主
流操作系统之一。UNIX结构简练、功能强,
可移植性和兼容性都比较好,因而它被认为
是开放系统的代表。
UNIX是1969年贝尔实验室开发的多用户
操作系统,最早用于PDP-7和PDP-11小型
机,并很快得到普及。迄今已成为跨越从微型
机到巨型机范围的唯一操作系统。
3-21
计算机
软件系统
3.2 操作系统
UNIX发展简图
3-22
计算机
软件系统
3.2 操作系统
UNIX系统的框架结构
3-23
计算机
软件系统
3.2 操作系统
5.诱人的小企鹅--Linux
1991年,芬兰赫尔辛基大学的21岁学生
Linus Torvolds在学习操作系统时,将自己
开发的Linux系统源程序完整地上传到FTP
服务器上,供大家下载测试。
Operating Systems: Design and Implementation
Andrew S. Tanenbaum & Albert S. Woodhull
3-24
计算机
软件系统
3.2 操作系统
流行的Linux版本
Linux内核版本:测试版、稳定版
主版本号
2.6.8 当前版本错误修改次数
次版本号:奇数→测试版
偶数→稳定版
Red Hat Linux
Mandrake Linux
Turbo Linux
红旗Linux
中软Linux
www.redbat.com
www.mandrake.org
www.turbolinux.com.cn
www.redflag-linux.com
linux.cosix.com.cn
3-25
计算机
软件系统
3.2 操作系统
Linux操作系统的组成
用户应用程序
操作系统服务
Linux内核
硬件控制器
用户应用程序 直接提供用户使用的应用程序,如文字处理、浏览器
操作系统服务
用户与操作系统低层功能交互的接口程序 如Shell、
编译器、程序库等
Linux内核
用户及较高子系统与底层硬件的交互接口,实现对
CPU、内存、文件系统、I/O设备等的控制和管理
硬件控制器
直接完成对各种硬件设备的识别和驱动
3-26
计算机
软件系统
3.2 操作系统
6.天使的化身--Mac OS X
Apple Ⅰ/Ⅱ→Lisa→Macintosh
1976
1984
1985
1987
1988
1991
1994
1997
System
System
System
System
System
System
System
MAC OS
1998.10 MAC OS
1999.5 MAC OS
1999.10 MAC OS
1983
1.0
2.0
5.0
6
7
7.5
7.6
8
8.5
8.6
9
2000.1
2001.3
2001.9
2002
2004
2005
1984
MAC
MAC
MAC
MAC
MAC
MAC
OS
OS
OS
OS
OS
OS
X
X
X
X
X
X
10.0
10.1
10.2
10.3
10.4
3-27
计算机
软件系统
3.3 办公软件
一、办公软件概述
Microsoft Office 2003:
Word、Excel
PowerPoint、Access
FrontPage、Outlook Express
WPS Office 2003:
金山文字、金山表格
金山演示、金山邮件
3-28
计算机
软件系统
3.3 办公软件
二、文字处理
文字处理软件是指在计算机上辅助人们制
作文档的系统。
通用的文字处理软件:
1979:WordStar
1983:WordPerfect
1988:WPS
1990:Word 1.0 for Windows
1994:Word 6.0+Excel 5.0=Office 4.x
3-29
计算机
软件系统
3.3 办公软件
三、电子表格
电子表格软件是利用计算机来处理带数值
计算的表格软件。
通用的电子表格软件有:
1979:Visicalc
1982:Lotus1-2-3
198x:Excel for Macintosh
1994:Word 6.0+Excel 5.0=Office 4.x
3-30
计算机
软件系统
3.3 办公软件
四、演示文稿
演示文稿制作软件可以创建美观、实用的
幻灯片,并以简洁的方式表达出文稿内容
1987.4:PowerPoint 1.0(Windows
2.0)
1990.5:PowerPoint 2.0(Windows
3.0)
1992.5:PowerPoint 3.0(Windows
3.1)
1994.2:PowerPoint 4.0
3-31
计算机
软件系统
3.4 程序设计基础
一、程序设计的概念
程序设计:指利用计算机解决具体问题的
全过程。
程序设计的基本过程:
①分析所求解的问题
②抽象数学模型
③设计合适的算法
④编写程序
⑤调试运行
3-32
计算机
软件系统
3.4 程序设计基础
二、程序设计方法
1.结构化程序设计
基本思想:顺序结构
选择结构
循环结构
设计原则:自顶向下
逐步求精
模块化
程序模块1
程序模块2
条件
不成立
成立
程序模块1
条件
程序模块2
不成立
成立
程序模块
3-33
计算机
软件系统
3.4 程序设计基础
2.面向对象程序设计
对象:用来描述客观事物的实体,反映系
统为之保存信息和与之交互的能力。每个对
象有各自的内部属性和操作方法。
电视机
属性:
方法:
频道
颜色
音量
调节频道
调节颜色
调节音量
电视机对象
整个程序是由一系列相互作用的对象构成
的,对象之间的交互通过发送消息来实现。
3-34
计算机
软件系统
3.4 程序设计基础
类:具有相同的属性和操作方法,并遵守
相同规则的对象的集合。
类是对象集合的抽象,规定了这些对象的
公共属性(即数据结构)和方法(操作数据的函
数)。对象是类的一个实例。
例如:一个面向对象的图形程序,在屏幕的左下角显示一个半径为2cm
的红色圆,在屏幕的中部显示一个半径为3cm的黄色圆,在屏幕的右下
角显示一个半径为4cm的蓝色圆。这三个圆的圆心位置、半径大小和颜
色均不相同,是三个不同的对象。但是它们有相同的属性(圆心坐标、
半径、颜色)和相同的操作(显示图形、移动、缩放等),因此它们是同
一类事物,可以用“Circle类”来定义。
OOP特点:封装、继承、多态性
3-35
3.4 程序设计基础
计算机
软件系统
三、程序设计语言
文章
汉语、英语
字、词、语法结构
写文章
程序
计算机语言
数据表示、表达式、语句结构
编程序
计算机语言:计算机所能够识别的语言
程序:利用计算机语言编写的能够完成一
定功能的一组代码。
程序设计:利用计算机语言编写程序的过
程。
程序设计语言=计算机语言
3-36
计算机
软件系统
3.4 程序设计基础
1.语言的分类
应用范围
程序设计
方法
与硬件的
联系程度
通用语言、专用语言
系统程序设计语言、科学计算语言
事务处理语言、实时控制语言
结构化语言
模块化语言
面向对象语言
机器语言
依赖于计算机硬件(低级语言)
汇编语言
高级语言→与计算机硬件基本无关
3-37
计算机
软件系统
3.4 程序设计基础
⑴机器语言
从本质上说,计算机只能识别0和1两个数
字,因此,计算机能够直接识别的指令是由
一连串的0和1组合起来的二进制编码。
机器指令=操作码+操作数
机器语言:指计算机能够直接识别的指令
的集合。即以二进制代码表示的机器指令集
合,它是计算机能够直接识别和执行的语言。
3-38
计算机
软件系统
3.4 程序设计基础
[例题]用Intel 8086指令系统来编写机器语
言程序,要求完成 9+8=?
指令序号 机器语言程序
指令功能
1
10110000 把一加数 9 送到累加器 AL 中
00001001
2
00000100 把累加器 AL 中的内容与另一
00001000 数相加,结果仍存放在 AL 中
3
11110100 停止操作
优点:占用内存少,执行速度快;
缺点:面向机器语言,通用性差,不易阅读
和记忆,编程工作量大,难以维护。
3-39
计算机
软件系统
3.4 程序设计基础
⑵汇编语言
汇编语言:用符号代替机器指令所产生的
语言。例如,8086汇编语言对9+8=?编程
序号
1
2
3
汇编语言程序
语句功能
MOV AL,9
把加数 9 送累加器 AL 中
ADD AL,8
把累加器 AL 中的内容与另一数相加,
结果存入 AL,即完成 9+8 运算
HLT
停止操作
优点:比机器语言程序容易阅读和修改
缺点:面向机器语言,通用性差。
3-40
计算机
软件系统
3.4 程序设计基础
源程序:用汇编语言编写的程序。
汇编程序:负责翻译的软件。
主要作用→源程序转换成用二进制代码表
示的目标程序。
连接程序:将目标程序与库文件或其他目
标程序连接起来形成可执行程序。
汇编语言源程序
汇编程序
目标程序
连接程序
可执行程序
3-41
计算机
软件系统
3.4 程序设计基础
⑶高级语言
高级语言:用接近自然语言和数学语言的
语法、符号描述基本操作的程序设计语言
BASIC、FORTRAN、Pascal、COBOL、
C
VB、VC++、Delphi、Java、C#
例如前面9+8=?,用C语言编程:
main()
{ int al;
al=9+8; }
3-42
计算机
软件系统
3.4 程序设计基础
优点:符合人类习惯,简单易学
通用性强,便于维护
源程序:用高级语言编写的程序。
翻译程序:将源程序翻译成用二进制代码
表示的目标程序。
翻译程序的工作方式:
①解释方式:边解释边执行
②编译方式:写程序、编译程序
运行程序
3-43
计算机
软件系统
3.4 程序设计基础
解释方式
高级语言源程序
解释程序
执行结果
编译方式
高级语言源程序
编译程序
目标程序
连接程序
可执行程序
3-44
计算机
软件系统
3.4 程序设计基础
2.程序设计语言的选择
选择编程语言涉及很多因素:
①人的因素:编程小组精通这门语言吗
②任务需要:选择的语言能否实现任务的
全部功能?能跨平台吗?有数据库接口功能
吗?能直接控制声卡等硬件吗?
③客户指定,或要通过串行口控制一个外
部设备,C+汇编语言是最明智的选择。
了解一些流行的语言,对于做出合理选择会有帮助。
3-45
计算机
软件系统
8086汇
编语言
3.4 程序设计基础
用它编写的程序只能运行在装有80x86计算机上。现在汇编
语言仅用于那些要求程序尽可能短或速度要求很高的场合,
如为了控制硬件在操作系统、多媒体底层控制时使用它。
1954年出现,其他的高级语言几乎都直接或间接地从它发展
FORTRAN 而来。FORTRAN对于数值类型和计算功能支持较强,一般科
学家用来编制科学计算程序,应用面较窄。
Basic
Basic是为初学者设计的,开发于1964年。它从FORTRAN Ⅳ
和ALGOL 60改造而来。目前流行的是VB,它的集成开发环境
支持调试时解释执行和对最终版本的编译。开发商业软件。
Pascal
Pascal最初是70年代为帮助学生学习编程而开发的编译型语
言。它最先提出结构化程序设计,但很少用于商业开发。
Delphi
Delphi是Inprise公司于1995年推出的可视化编程语言。它
以Pascal为基础,扩充了面向对象和可视化的开发手段,使
得Delphi有能力与VB相抗衡。Delphi适用于应用软件、数据
库系统、系统软件等软件的开发。
3-46
计算机
软件系统
3.4 程序设计基础
C
C语言是美国电报与电话公司为了实现UNIX系统的设计思想
而发展起来的语言工具。其特点是兼顾了高级语言和汇编
语言,既提供了结构化程序设计,又带有低级语言的接口
C++
C++语言是在C语言的基础上为支持面向对象的程序设计而
研制的一个通用目的的程序设计语言。它可以用于编写从
简单的交互程序到高度成熟和复杂的工程科学中的任何程
序,目前流行的版本是MS VC++、Borland C++ Builder
Java
Java语言于1991年在Sun Microsystems公司设计出来,源
于对独立平台的语言需求。这种语言可创建嵌入各种(具有
不同CPU的)电器设备(如微波炉等)的软件,其特点是可移
植、跨平台,正好迎合了Internet的需要。
HTML(HyperText Markup Language)、XML(eXtensible
Markup Language)都属于语言,但它们都没有传统语言的
标记语言
基本控制结构和复杂的数据结构定义以及子程序定义,其
主要用途是描述网页的数据和格式。
3-47
3.4 程序设计基础
计算机
软件系统
四、数据结构与算法
程序=数据结构+算法
1.数据结构
数据:对客观事物的符号表示,指所有能
输入到计算机中并被处理的符号的总和。
数据元素:由若干个数据项组成,而数据
项是具有独立含义的数据最小单位。
姓名
N1
N2
N3
班级
4
2
4
数学
88
63
91
计算机
56
76
85
数据元素→记录、结点
数据项→字段、域
3-48
计算机
软件系统
3.4 程序设计基础
数据结构:研究数据及数据元素之间的关
系的一门学科。
基本内容:①数据的逻辑结构→数据元素
之间的逻辑关系(集合、线性、树形、网状结构)
②数据的存储结构→数据元素及其关系在
计算机存储器中的存储方式(顺序、)。
③数据的运算→施加在该数据上的操作
3-49
计算机
软件系统
3.4 程序设计基础
2.算法及其复杂性分析
求解一个给定的可计算问题,不同的人常
常编写出不同的正确程序。
①与计算方法相关的算法问题;
②程序设计的技术问题。
[例6]给定两个整数,求它们的最大公因数
算法A:计算函数gcd(x,y)
A1:输入x、y,z为临时变量;
A2:重复执行如下操作步骤:
3-50
计算机
软件系统
3.4 程序设计基础
①若y=0,则输出|x|,算法停止;
②若y≠0,则z←x mod y,x←y,y←z。
#include <math.h>
main()
{
int x,y,z;
printf("Input x,y=");
scanf("%d,%d",&x,&y);
while (y!=0)
{
z=x%y;
x=y;
y=z;
}
printf("gcd(x,y)=%d\n",abs(x));
}
3-51
计算机
软件系统
3.4 程序设计基础
问题→计算方法→算法→程序
同一算法→不同程序员→程序差别大
[例7]用程序变换技术设计gcd(x,y)的程序
#include <math.h>
main()
{
int x,y,z=0;
printf("Input x,y=");
scanf("%d,%d",&x,&y);
x=abs(x);
y=abs(y);
gcd(x,y,z);
}
int gcd(int x1,int y1,int z1)
{
if (x1==0)
{
z1=y1;
printf("gcd(x,y)=%d\n",z1);
}
else
if (x1<=y1) gcd(x1,y1-x1,z1);
else gcd(y1,x1,z1);
}
上述两例都反映辗转相除计算方法。
3-52
计算机
软件系统
3.4 程序设计基础
问题→不同计算方法、算法→不同程序
怎样判断程序和算法的好坏呢?这涉及到
算法的存在性和算法的复杂性。
算法复杂性分析:对算法计算所需要的时
间和空间的一种度量。
类型:时间复杂性、空间复杂性
算法复杂性的高低体现在运行该算法所需
要的计算机资源上,所需资源越多,该算法
的复杂性越高;反之,所需资源越少。
3-53
计算机
软件系统
3.4 程序设计基础
[例]计算第n个素数。
所谓素数是指恰有1和本身两个自然数为
其因数的大于1的整数。
除2为偶素数外,其余素数都是奇数。
算法A(简单算法):
A1.从素数定义出发,对自然数从小到大
一个一个去试。
A2.当n很大时,算法所需要的计算时间非
常大。
3-54
计算机
软件系统
3.4 程序设计基础
算法B(筛法,快速算法):
B1.输入n,输出第一个素数2;
B2.M←2,N←M×2;
B3.从2开始,依次筛除M+1到N之间所有
2的倍数,3的倍数,┄,直到某个已求得的
素数的平方大于N为止;
B4.依小到大输出N+1到M之间剩下的数;
B5.若已求得第n个素数,则输出第n个素数;
否则,M←当前最大素数,N←M×2,转B3
3-55
计算机
软件系统
3.4 程序设计基础
[例]三个中国人算法。
国王:艾述(喜爱数学)
宰相:孔唤石(数学家)
公主:秋碧贞楠(邻国)
公主:求出48770428644836899的真因
子
国王:2,3,4,┅┅,30000多数据(一天)
公主:验证一下,223092871
宰相:将全国百姓按自然数顺序编号,百姓
用自己的编号去除公主的数,谁除尽来领赏
3-56
计算机
软件系统
3.4 程序设计基础
童话说明:
①国王本人计算(串行算法,时间复杂性)
②全国百姓计算(并行算法,空间复杂性)
假设一个问题有两种算法:
①算法复杂性是n3(0.2s)
②算法复杂性是3n(4*1028s,1千万亿年)
(用每秒百万次的计算机,n=60)
如果一个问题没有多项式时间复杂性算法,
则称为难解型问题(计算复杂性理论)。
3-57
计算机
软件系统
3.4 程序设计基础
算法定义:一个算法就是一个有穷规则的
集合,其中的规则确定了一个解决某一特定
类型问题的运算序列。
算法的规则序列应满足五个重要条件:
①有穷性:算法必须执行有穷步后结束
②确定性:算法的每一步必须是确定的
③输 入:算法有零个或多个输入
④输 出:算法有一个或多个输出
⑤能行性:算法原则上能精确进行
3-58
计算机
软件系统
3.5 软件工程
一、软件危机与软件问题
1.软件危机
观点1:软件产品的生产总是超出预算,落
后于进度表,而且产品质量不可靠。
观点2:在软件的开发和维护过程中所遇
到的一系列严重问题。
软件的生产过程不像硬件那样规范,受人的因素和
外界影响很大,因此在软件生产的各阶段都会引入不同
程度的错误,致使成本上升,甚至导致软件失败。
3-59
3.5 软件工程
计算机
软件系统
2.软件危机的表现
软件开发和维护费用急剧上升
 不重视文档资料
 产品质量不可靠
 软件产品成本高于硬件产品

3-60
3.5 软件工程
计算机
软件系统
3.软件开发中的问题
软件生产技术进展缓慢
 软件成本和质量难以控制
 对软件开发的错误认识
 难以准确、全面把握用户需求
 不重视阶段审查和复审
 软件复杂且规模庞大
 软件维护费用上升

3-61
计算机
软件系统
3.5 软件工程
二、软件工程与开发准则
1.软件工程概念
软件工程:在软件开发与维护过程中采用
工程的原理、方法、技术并使用正确的管理
方法来指导软件生产的全过程。
主要内容:软件开发方法
软件过程
软件工具
3-62
3.5 软件工程
计算机
软件系统
2.软件开发的基本准则
B.W.Boehm综合各方意见,于1983年
提出了软件工程的基本准则。
严格阶段管理
 坚持阶段评审
 加强产品控制
 采纳新技术
 产品结果应能审查
 开发人数要适当

3-63
计算机
软件系统
3.5 软件工程
三、软件生命周期
软件生命周期是从时间的角度出发,从软
件目标的提出、定义、开发、维护,直到最
终被丢弃的整个过程。
计划时期→开发时期→运行时期
1.计划时期
问题定义:提出软件项目的目标和规模
可行性研究:对项目进行可行性调研和论
证,确定项目是否能或者值得开发
3-64
计算机
软件系统
3.5 软件工程
2.开发时期
开发时期要具体分析、设计和实现计划时
期定义的软件。
需求分析:做什么
概要设计:建立目标系统的总体结构
详细设计:怎样做
编码:选择程序设计语言进行描述。
测试:单元测试、综合测试、确认测试和
系统测试或者验收测试。
3-65
计算机
软件系统
3.5 软件工程
3.运行时期
交付使用→维护工作
维护的主要任务:通过各种必要的维护活
动延长系统的生命周期。
四、软件开发模型
1.瀑布模型
2.原型模型
3.螺旋模型
4.面向对象开发模型
3-66