下一页
计算机软件基

主讲:赵英良
西安交通大学
计算机教学实验中心
第 1单元
软件概述
下一页
上一页
停止放映
第 2 页
姓名:赵英良
单位:计算机教学实验中心
地址,1300对面,计教中心 209
邮件,xjtuzhao@sina.com
下一页
上一页
停止放映
第 3 页
教学计划
课时,48学时
上课,36学时,17单元
实验,12学时,3个实验
大作业,1个,开发一个完整的软件系统
答疑,
实验时间另行通知
下一页
上一页
停止放映
第 4 页
实验内容
实验 1 单链表的生成、插入和删除
Windows98操作系统
实验 2 排序二叉树的建立和查找 。
实验 3 数据库系统及应用,实现, 学生成
绩, 数据库的管理操作(包括输入、查询、
报表、窗体)。
请同学们提前预习
下一页
上一页
停止放映
第 5 页
大作业
大作业,1个,开发一个完整的软件系统
内容,( 1) 软件基础中某项内容的动画演示
( 2)实现某种数据结构的多种操作,
要求考虑界面美观、操作方便,给用户以
必要的操作提示
( 3)可以自选题目
结果,( 1) 书面的设计文档:背景、目标、功能、
设计(类、模块)、算法、结果,存在的
问题及改进方法,每个人的个人总结,
( 2)源程序、运行程序、安装、使用说明。
形式,5人左右一组,组长负责,分工明确,
目标明确。每人至少负责两种操作的算法和程序。
(第 4周 9月 23日确定分组)
下一页
上一页
停止放映
第 6 页
大作业需提交的文档
1,项目开发计划( 9月 23日)
2,软件需求说明书
3,系统设计说明书(数据、概要、详细)
4,测试报告
5,用户手册(使用说明)
6,总结(项目总结、每个人的个人总结)
提交日期,12月 16日,17周答辩。
文档封面写明:项目名称、班级、组长、成
员(学号、姓名)、指导教师、日期
下一页
上一页
停止放映
第 7 页
考核方法:
( 1)考勤
( 2)作业(按章交)
( 3)实验
( 4)大作业(以上占 50%)
( 5)考试( 50%)
下一页
上一页
停止放映
第 8 页
资源:
中心主页,http://ctec.xjtu.edu.cn
通知、教学计划、课件、答疑
FTP资源,ftp://202.117.35.170
目录,Teacher/软件基础
课件 PPT、大作业要求、源程序等
作业提交,ftp://202.117.35.169
软件基础 /赵英良 /“班号”
“文件 \登陆”用户名,student 密码,ctec
视频点播,http://202.117.35.56
向上学习, http://202.117.35.70/~studyhard/
下一页
上一页
停止放映
第 9 页
网上提交作业的方法
作业提交方法,
?Http://ctec.xjtu.edu.cn
?,网上课堂 —— 作业自习室
? ftp://202.117.35.169/
?注册登录。执行, 文件 → 登录, 命令,在登录对话框中
输入,用户名,密 码:
?选择路径, /软件基础 /赵英良老师 /班级编号 /章号,
(如管工 11,电商 11,工商 11等 )。
?拷贝作业文件。打开, 资源管理器,,选择要上交的作
业文件,拖动文件到指定班级文件夹即可。
注意,每个文件只能提交一次,若想第二次提交,只有
先改变文件名称,再提交。
下一页
上一页
停止放映
第 10 页
网上答疑
答疑,
HTTP,//CTEC, xjtu, edu, cn
,网上课堂 —— 讨论答疑室 —— 软件基础”
Email,xjtuzhao@sina.com
ylzhao@ctec.xjtu.edu.cn
下一页
上一页
停止放映
第 11 页
课程内容 —— 软件的基础
1。数据结构
程序(软件)处理的对象是数据,怎样表达
和处理不同含义和关系的数据便是数据结
构。
如我们常见的数组,是相同类型的数据的顺
序存储结构。
下一页
上一页
停止放映
第 12 页
数据结构
? 数据结构是计算机的专业技术基础课。它研究
的主要问题有:
? 分析数据(计算机加工的对象)的特征
? 选择适当逻辑结构和存储结构
? 在存储结构的基础上实现对数据的操作
不同问题的数据需要用不同的数据结构描述
不同的数据结构,管理数据的难易程度不同
下一页
上一页
停止放映
第 13 页
数据结构应用举例
( 1)顺序存储结构和链式存储结构。
( 2)栈:程序调用、原始森林中标记
回家的路。
( 3)服务原则:队列。
( 4)文本编辑:怎样管理行、页、串。
下一页
上一页
停止放映
第 14 页
数据结构应用举例
( 5)稀疏矩阵的存储问题。
下一页
上一页
停止放映
第 15 页
( 6)级别、分支关系 —— 数
下一页
上一页
停止放映
第 16 页
( 7) Huffman编码 —— 最优二叉树
字符 频率 编码
? 1 5 0110
? 2 29 10
? 3 7 1110
? 4 8 1111
? 5 14 110
? 6 23 00
? 7 3 0111
? 8 11 010
下一页
上一页
停止放映
第 17 页
( 8)城市交通图 —— 图
下一页
上一页
停止放映
第 18 页
( 9)八皇后问题
皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。
如何将 8个皇后放在棋盘上(有 8*8个方格),使它们谁
也不能被吃掉!这就是著名的八皇后问题。
下一页
上一页
停止放映
第 19 页
2,操作系统原理
? 是研究计算机工作原理的一门学科:
研究的主要问题:
? 提高系统资源的利用率
? 更有效地组织、协调、管理计算机内部
的工作流程
? 为用户提供更友好、便捷的操作界面
了解操作系统的资源管理机制,有利于应
用程序高效、充分地利用资源
下一页
上一页
停止放映
第 20 页
操作系统的应用
? ( 1)用线性表还是链表(存储管理)
? ( 2)先进先出(队列,打印机的服务机制)
打印时先检测打印机是否空闲
? ( 3)文件系统:卷、目录、文件、属性、
链(关系到应用程序中的文件存取权限)。
下一页
上一页
停止放映
第 21 页
3、数据库系统原理
? 是一门综合性软件技术课。它研究的
主要问题是:
?描述数据记录(用数据描述语言)
? 实现对数据记录的管理操作
? 实现对数据库的应用管理
如何设计数据表(数据依赖、规范化)
如何查找(投影、联结、并、交、补等
关系运算)
下一页
上一页
停止放映
第 22 页
4、软件工程
? 是一门交叉学科;它包括计算机科学、数
学、工程学和管理等学科。主要研究:
? 克服、解决“软件危机”
? 改进“软件生产”的方法、工具
? 提高软件的生产率
解决软件开发中的管理和技术问题:
阶段划分、文档、评审
原形法、结构化、面向对象
下一页
上一页
停止放映
第 23 页
一、课程的目的和任务
,软件基础, 是非电类专业的一门技术
基础课,涉及计算机操作系统、数据结构、
数据库技术和软件工程四门课程的经典内
容,通过该课程的学习,使学生 掌握应用
软件开发所必需的基础知识,为今后结合
本专业开发应用 软件打下必要的基础。
下一页
上一页
停止放映
第 24 页
二、课程基本要求
? 了解计算机软件的基本概念,理解有关的常用 技术术
语 。
? 了解程序设计中 常用的数据结构及相应算法,初步掌
握对不同类型的问题求解选择适当的数据结构。
? 了解应用软件开发的最基本的环境;掌握 操作系统的
基本概念和基本功能,了解计算机系统硬、软件资源
如何控制管理。
? 了解如何以近代 软件工程 的观点开发应用软件的基本
概念和方法 。
? 了解 数据库的基本概念,初步掌握数据库系统的开发
方法。
了解概念,掌握基本理论和算法
下一页
上一页
停止放映
第 25 页
参考资料
1、教材
冯博琴主编,软件技术基础,人民邮电出版社,2000
2、参考书
?, 面向对象的理论与 C++实践, 清华大学出版社
?, 软件工程导论, 清华大学出版

?, ACCESS2000实用教程, 清华大学出版社
?, 数据结构 —OO方法与 C++描述, 清华大学出版

?, 计算机文化基础, 清华大学出版
? 汤子瀛等,计算机操作系统,西安电子科大出版,
1996
下一页
上一页
停止放映
第 26 页
0 概 述
? 随着信息化、网络化和数字化时代的到来,
社会对,软件” 的需求激增。如今,世界
发达国家都把 软件 列为国家发展的关键技
术领域。
? 美国国家关键技术委员会将软件列为六大
关键技术之一;
? 欧洲共同体将“软件和信息处理”列为关
键技术;
? 我国把信息产业放在优先发展的地位,看
作是中国发展高新技术、赶超世界先进水
平的一次千载难逢的机遇。
下一页
上一页
停止放映
第 27 页
0.1 软件的基本概念
? 0.1.1 软件的概念
? 计算机系统由计算机硬件和软件构成。
? 计算机神奇的功能是在软件的“指挥”下创
造出来的。
? 软件 是各种程序和有关资料的总称。
? 程序 是:
– 为实现特定目标或解决特定问题而用计算机语言
编写的命令序列的集合
– 是人们求解问题的逻辑思维活动的代码化描述
? 程序的 最重要的 目的 是:
– 第一是便于阅读、交流,最后是运行。
下一页
上一页
停止放映
第 28 页
0.1.2 软件的特征
? 软件是逻辑产品
? 软件产品质量的体现方式不同
? 软件产品的失败曲线不同
? 软件产品的成本构成不同
? 软件产品不存在同类零件替换
? 软件产品的静态和动态属性
下一页
下一页
上一页
停止放映
第 29 页
软件是逻辑产品
– 具有产值、价格、质量和功能的
特性
– 看不见,是逻辑的、无形的
– 是脑力劳动的结晶
– 以程序和文档的形式存在,通过
在计算机上执行来体现它的作用
? 结果,给开发、生产过程的管理带
来困难
下一页
上一页
停止放映
第 30 页
软件产品质量体现方式不同
? 在使用过程中体现:
– 实用、可靠、可操作性;
– 可维护性强
– 方便用户
– 不会折旧、损坏、老化
? 开发过程中质量难以控制
下一页
上一页
停止放映
第 31 页
软、硬件失败曲线
下一页
下一页
上一页
停止放映
第 32 页
软、硬件比例示意图(成本构成)
12%
需求

4%
生产率
开发人员
开发中,硬件成本小,人力成本大
生产中,生产成本小,维护成本大
计算机系统中,软件成本逐渐增大 。
下一页
上一页
停止放映
第 33 页
软件产品不存在同类零件替换
? 当硬件产品中某个部件损坏后, 可以用相同
的备用部件更换, 使硬件系统恢复正常工作 。
? 而软件产品却没有相同的备用部件可言, 因
为软件出现的每一个故障, 要么是由于设计
考虑不周造成的, 要么是编程错误造成的 。
? 由于软件无备用部件可供更换, 因而 软件维
护比硬件维护要复杂得多,成本也高得多 。
下一页
上一页
停止放映
第 34 页
软件产品的静态和动态属性
? 软件是由程序和相关文档资料组成的 。
? 程序是具有双重属性的:
– 它是求解客观问题的逻辑描述, 是 供阅读和交流的,
它的表示是 静态的 ;
– 程序最终是通过 运行 去执行特定的操作和数据处理,
它又具有极其复杂和丰富内涵 的动态属性 。
? 程序的双重属性 决定判别程序是否正确也要有双重标准,
– 静态的程序正确与否是检查它的 语法和句法是否符合
规则要求 ;
– 动态的程序正确与否则要 动态地测试程序的所有逻辑
流结构和数据结构是否正确 。
– 而后一种测试的难度和代价较之前一种要大得多 。
下一页
上一页
停止放映
第 35 页
0.1.3 软件的分类
? 软件按不同方式可以划分为不
同的类型:
–按功能划分
–按规模划分
下一页
上一页
停止放映
第 36 页
按功能划分软件分类
软件
系统软件
应用软件
操作系统
网络系统
语言编译器
工具软件
管理软件
实时软件
科学计算、数据处理
嵌入式软件
人工智能软件
专用领域软件
下一页
上一页
停止放映
第 37 页
系统软件
? 定义, 是支持计算机系统正常运行并实现
用户操作的那部分软件。 是为系统提供基
本功能服务的程序的集合。
? 一般是在计算机系统购买时随机携带的,
也可以根据需要另行安装。
? 系统软件的主要特征 是:
– 与硬件有很强的交互性
– 能对资源共享进行调度管理
– 能解决并发操作处理中存在的协调问题
– 其中的数据结构复杂,外部接口多样化,便于
用户反复使用
下一页
上一页
停止放映
第 38 页
应用软件
? 定义,应用软件是为满足用户不同
领域、不同问题的应用需求而提供
的那部分软件。
? 它可以拓宽计算机系统的应用领域,
放大硬件的功能。
? 应用软件具有无限丰富和美好的开
发前景。
下一页
上一页
停止放映
第 39 页
按规模划分软件分类
分类 程序规模 模块数 开发时间 开发人数
微型 500行以下 10~20 1~4周 1人
小型 1K~2K行 25~50 1~6月 1人
中 5K~50K行 250~1000 1~2年 2~5人
大 50K~100K行 1000以上 2~3年 5~20人
甚大 1M行 4~5年 100~1000人
极大 1M~10M行 5~10年 2000~5000
下一页
上一页
停止放映
第 40 页
0.2 软件的发展和软件危机
0.2.1 软件的发展
? 软件伴随计算机技术的发展经历了三个
阶段:
?程序设计阶段
?软件设计阶段
?软件工程阶段
下一页
上一页
停止放映
第 41 页
1.程序设计阶段
?程序设计阶段 ( 1946年~ 1955年 )
特点:
– 尚无软件的概念, 程序设计主要围绕硬件进行开发
– 规模很小, 工具简单
– 无明确分工 ( 开发者和用户 )
– 程序设计追求节省空间和编程技巧, 无文档资料
– 主要是用于科学计算
?以硬件为中心, 不关心程序设计,
手工生产, 个体劳动
下一页
上一页
停止放映
第 42 页
2.软件设计阶段
? 软件设计阶段 ( 1956年 ~1970年 ) 的特点:
– 硬件环境相对稳定, 出现, 软件作坊, 的开发组织形

– 开始使用产品软件 ( 可购买 ), 从而建立了软件的概

– 系统规模越来越庞大, 高级编程语言层出不穷, 应用
领域不断拓宽
– 开发者和用户有了明确分工, 社会对软件的需求量剧

– 但是软件开发技术没有重大突破, 生产效率低下, 从
而导致, 软件危机, 产生 。
? 硬件得到发展, 软件需求增长, 进入作坊式生产, 但管
理技术跟不上 。
下一页
上一页
停止放映
第 43 页
3.软件工程阶段
? 由于软件危机的产生, 迫使人们不得不研究, 改变软
件开发的技术手段和管理方法 。 用工程化的方法来管
理软件生产, 从此软件生产进入软件工程时代 。
? 软件工程阶段 ( 1970年 ~至今 ) 的特点:
– 硬件已向, 四化, ( 巨型, 微型, 网络, 智能 ) 发
展, 数据库技术已成熟并广泛应用, 第三, 四代语
言出现 。
– 第一代软件技术 ——结构化程序设计在数值计算领
域取得优异成绩;
– 第二代软件技术 ——软件测试技术, 方法, 原理用
于软件生产过程;
– 第三代软件技术 ——处理需求定义技术, 用于软件
需求分析和描述 。
下一页
上一页
停止放映
第 44 页
0.2.2 软件危机
? 产生背景,
? 硬件生产率大幅提高
? 软件规模越来越大
? 软件生产率很低
? 硬、软件供需失衡
? 矛盾引发“软件危机”
下一页
上一页
停止放映
第 45 页
硬件生产率大幅提高
? 如今, 计算机的发展已进入一个新的历史
阶段;
? 硬件产品已系列化, 标准化,, 即插即
用, 。
? 硬件产品的生产可以采用最高精尖的现代
化工具和手段, 自动成批生产 。 生产效率
几百万倍的提高 。
? 生产能力过剩 。
下一页
上一页
停止放映
第 46 页
软件生产随规模增大、复杂度增大
? 以美国宇航局的软件系统为例:
– 1963年 水星计划系统 200万条指令
– 1967年 双子星座计划系统 400万条指令
– 1973年 阿波罗计划系统 1000万条指令
– 1979年 哥伦比亚航天飞机系统 4000万条指令
? 假设 1个人一年生产一万条有效指令, 那么是否
4000人生产一年, 或 400人生产 10年就能完成任
务呢? 答案是否定的 。 一万条指令的复杂度决不
仅仅是 100条指令复杂度的 100倍 。
下一页
上一页
停止放映
第 47 页
软件生产率很低
? 伴随计算机的普及,整个社会对计算机
应用的需求越来越大。
? 但软件的生产却还沿用, 手工作坊, 的
生产方式,人工编程生产。生产效率仅
提高了几倍。
? 生产能力极其低下。
返 回
下一页
上一页
停止放映
第 48 页
硬、软件供需失衡
? 社会大量需求, 生产成本高, 生产过程
控制复杂, 生产效率低等等因素构成软
件生产的恶性循环 。
? 由此产生, 软件危机, 。
返 回
下一页
上一页
停止放映
第 49 页
矛盾引发“软件危 机”
? 软件危机 是指在计算机软件的开发和维护
过程中所遇到的一系列严重问题,
? 是指软件需求量急剧增加与软件生产成本
高、质量没有可靠保证和软件开发生产率
低之间的矛盾。
? 为了研究、解决软件危机,诞生了一门新
兴学科 ——软件工程学。它把软件作为工
程对象,从技术措施和组织管理两个方面
来研究、解决软件危机。
下一页
上一页
停止放映
第 50 页
软件危机的具体体现
( 1) 软件开发进度难以预测
( 2) 软件开发成本难以控制
( 3) 用户对软件功能难以满足
( 4) 软件产品质量无法保证
( 5) 软件产品难以维护
( 6) 软件通常缺少适当的文档资料
下一页
上一页
停止放映
第 51 页
( 1)软件开发进度难以预测
? 拖延工期几个月甚至几年的现象并不罕见,
这种现象降低了软件开发组织的信誉 。
? 以丹佛新国际机场为例 ( 9)
– 该机场规模是曼哈顿机场的两倍, 宽为希思机场
的 10倍, 可以全天侯同时起降三架喷气式客机;
– 投资 1.93亿美元建立了一个地下行李传送系统,
总长 21英里, 有 4,000台遥控车, 可按不同线路
在 20家不同的航空公司柜台, 登机门和行李领取
处之间发送和传递行李;
– 支持该系统的是 5,000个电子眼, 400台无线电接
受机, 56台条形码扫描仪和 100台计算机
– 按原定计划要在 1993年万圣节前启用, 但一直到
1994年 6月, 机场的计划者还无法预测行李系统何
时能达到可使机场开放的稳定程度 。
下一页
上一页
停止放映
第 52 页
( 2)软件开发成本难以控制
? 投资一再追加, 令人难于置信 。 往往是
实际成本比预算成本高出一个数量级 。
? 而为了赶进度和节约成本所采取的一些
权宜之计又往往损害了软件产品的质量,
从而不可避免地会引起用户的不满 。
下一页
上一页
停止放映
第 53 页
( 3)用户对产品功能难以满足
? 开发人员和用户之间很难沟通, 矛盾很
难统一 。 往往是软件开发人员不能真正
了解用户的需求, 而用户又不了解计算
机求解问题的模式和能力, 双方无法用
共同熟悉的语言进行交流和描述 。
? 在双方互不充分了解的情况下, 就仓促
上阵设计系统, 匆忙着手编写程序, 这
种, 闭门造车, 的开发方式必然导致最
终的产品不符合用户的实际需要 。
下一页
上一页
停止放映
第 54 页
( 4)软件产品质量无法保证
? 系统中的错误难以消除 。 软件是逻辑产
品, 质量问题很难以统一的标准度量,
因而造成质量控制困难 。
? 软件产品并不是没有错误, 而是盲目检
测很难发现错误, 而隐藏下来的错误往
往是造成重大事故的隐患 。
下一页
上一页
停止放映
第 55 页
( 5)软件产品难以维护
? 软件产品本质上是开发人员的代码化的
逻辑思维活动, 他人难以替代 。 除非是
开发者本人, 否则很难及时检测, 排除
系统故障 。
? 为使系统适应新的硬件环境, 或根据用
户的需要在原系统中增加一些新的功能,
又有可能增加系统中的错误 。
下一页
上一页
停止放映
第 56 页
( 6)软件缺少适当的文档资料
? 文档资料 是软件必不可少的重要组成部分 。
(1)是开发组织和用户的之间权利和义务的合
同书,
(2)是系统管理者, 总体设计者向开发人员下
达的任务书,
(3)是系统维护人员的技术指导手册,
(4)是用户的操作说明书 。
? 缺乏必要的文档资料或者文档资料不合格,
将给软件开发和维护带来许多严重的困难
和问题 。
下一页
上一页
停止放映
第 57 页
最典型失败系统的例子
? IBM公司开发 OS/360系统, 共有
4000多个模块, 约 100万条指令,
投入 5000人年, 耗资数亿美元, 结
果还是延期交付 。 在交付使用后的
系统中仍发现大量 ( 2000个以上 )
的错误 。 (p9)
下一页
上一页
停止放映
第 58 页
0.2.3 软件危机产生的原因
? 产生软件危机有两个方面的原因:
– 与软件本身的特点有关;是 内在 因
素, 客观的存在, 只能因势利导加以
解决 。
– 与软件开发和维护的技术方法有关;
是 外在 因素, 可以完善, 提高 。
下一页
上一页
停止放映
第 59 页
1.软件特点的因素 (内在因素 )
? 软件是逻辑产品, 是代码化了的人的
思维活动 。 在总体构思时, 别人无法
管理和干预 。 在写出程序, 并在机器
上运行之前, 进展情况难以掌握, 开
发质量也无法评估 。 这些都给管理和
控制带来不便 。
? 软件是特定问题在计算机上的运行描
述 。 实际问题的复杂性决定了一个实
用软件系统规模往往十分庞大 。 大有
大的难处 。 程序规模越大, 控制, 管
理难度也就越大 。
下一页
上一页
停止放映
第 60 页
2.软件开发维护技术方法的因素
( 1)开发人员和用户之间的矛盾 。许多软件系统开发失
败的主要原因是开发人员在没有准确、完整地了解了用户的需求后
就急于编程;用户对需求也往往不能准确、完整地提出(有用户对
计算机知识了解程度、对计算机处理能力的认识等因素)。
( 2)软件开发各阶段任务不明确,方法不科学 。
软件产品有其生命周期。在周期的各个阶段有其具体的任务,如何
完成任务,各个阶段有不同的技术方法和操作步骤。只有科学的按
生命周期各阶段的任务去组织实施,才能保证质量,降低成本;急
于求成,不按科学规律、方法实施,只能, 事倍功半,,事与愿违。
( 3)重编程,轻分析;中开发,轻维护;重程序,
轻文档
软件产品的使用寿命很长。在这期间因功能的增加、硬件的更新换
代,都要对软件进行必要的修改。据统计数据表明,软件维护的费
用占总费用的 55%~70%。软件工程的一个重要目标就是提高软件的
可维护性,减少软件维护的代价。
下一页
上一页
停止放映
第 61 页
0.2.3 解决软件危机的途径
( 1)采用现代化、社会化的组织
管理方式
( 2)使用成功的软件开发技术和
方法(面向过程、面向对象、自
顶向下等)
( 3)使用更好的软件开发工具
(汇编,C,VC、各种数据库管理
系统等)
下一页
上一页
停止放映
第 62 页
结束语
欢迎参加, 软件基础, 的网上讨论
HTTP,//CTEC, xjtu, edu, cn
谢谢,再见!