下一页
计算机软件基础
The software basic
of computer
主讲:刘志强
西安交通大学
计算机教学实验中心
第 1单元
,软件基础, 概述
下一页
上一页
停止放映
第 2 页
《计算机软件基础,教学大纲
一、课程的目的和任务
二、课程基本要求
三、课程基本内容
四、实验内容
五、时间分配
六、考试方法
下一页
上一页
停止放映
第 3 页
一、课程的目的和任务
,计算机软件基础, 是非电类专业的一
门技术基础课,涉及计算机操作系统、数
据结构、数据库技术和软件工程四门课程
的经典内容,通过该课程的学习,使学生
掌握开发应用软件所必需的软件基础知识,
为今后结合本专业开发应用 软件打下必要
的基础。
下一页
上一页
停止放映
第 4 页
二、课程基本要求
? 了解计算机软件的基本概念,理解有关的常用技
术术语。
? 了解程序设计中常用的数据结构及相应算法,初
步掌握对不同类型的问题求解选择适当的数据结
构。
? 了解应用软件开发的最基本的环境;掌握操作系
统的基本概念和基本功能,了解计算机系统硬、
软件资源如何控制管理。
? 了解如何以近代软件工程的观点开发应用软件的
基本概念和方法。
? 了解数据库的基本概念,初步掌握数据库系统的
开发方法。
下一页
上一页
停止放映
第 5 页
三、课程基本内容
1、数据结构
2、操作系统原理
3、数据库系统原理
4、软件工程
下一页
上一页
停止放映
第 6 页
1,数据结构
? 数据结构是计算机的专业技术基础课。它
研究的主要问题有:
? 分析数据(计算机加工的对象)的特征
? 选择适当逻辑存储结构和物理存储结构
? 在存储结构的基础上实现对数据的操作
下一页
上一页
停止放映
第 7 页
2,操作系统原理
? 是研究计算机工作原理的一门学科:
研究的主要问题:
? 提高系统资源的利用率
? 更有效地组织、协调、管理计算机内部
的工作流程
? 为用户提供更友好、便捷的操作界面
下一页
上一页
停止放映
第 8 页
3、数据库系统原理
? 是一门综合性软件技术课。它研究的
主要问题是:
?描述数据记录(用数据描述语言)
? 实现对数据记录的管理操作
? 实现对数据库的应用管理
下一页
上一页
停止放映
第 9 页
4、软件工程
? 是一门交叉学科;它包括计算机科
学、数学、工程学和管理等学科。
主要研究:
? 克服、解决“软件危机”
? 改进“软件生产”的方法、工具
? 提高软件的生产率
下一页
上一页
停止放映
第 10 页
四、实验内容
本课程实验内容提要:
1、操作系统及应用; Windows’( 98)
的操作。
2、数据结构程序设计;用 C语言实现“二
叉树链表”的操作。
3、数据库系统及应用;用 ACCESS 实现
“学生成绩”数据库的操作。
下一页
上一页
停止放映
第 11 页
五、时间分配
1、课时分配,24学时
2、机时分配,24学时
课程名称 分配学时
操作系统
数据结构
数据库系统
软件工程
实验名称 分配机时
操作系统及应用 6
数据结构程序设计 6
数据库及应用 6
软件工程作业 6
4
10
4
6
下一页
上一页
停止放映
第 12 页
六、说明
1、考核方法
期末笔试。
2、教材
,计算机软件技术基础, 人民邮电出版社
3、参考书
,面向对象的理论与 C++实践, 清华大学出版社
,软件工程导论, 清华大学出版社
,ACCESS2000实用教程, 清华大学出版社
,数据结构 — OO方法与 C++描述, 清华大学出版社
,计算机文化基础, 交大出版社
下一页
上一页
停止放映
第 13 页
软件( Software)
? 随着信息化、网络化和数字化时代的到来,
社会对,软件” 的需求激增。如今,世界
发达国家都把 软件 列为国家发展的关键技
术领域。
? 美国国家关键技术委员会将软件列为六大
关键技术之一;
? 欧洲共同体将“软件和信息处理”列为关
键技术;
? 我国把信息产业放在优先发展的地位,看
作是中国发展高新技术、赶超世界先进水
平的一次千载难逢的机遇。
下一页
上一页
停止放映
第 14 页
软件的基本概念
? 什么是软件?
? 计算机系统由计算机硬件和软件构成。
? 计算机神奇的功能是在软件的“指挥”下
创造出来的。
? 软件是各种程序和有关资料的总称。
? 程序是:
– 为实现特定目标或解决特定问题而用计算机语
言编写的命令序列的集合
– 是人们求解问题的逻辑思维活动的代码化描述
? 程序的最重要的目的是:
– 便于阅读、交流
下一页
上一页
停止放映
第 15 页
软件的特征
? 软件是逻辑产品
? 软件产品质量的体现方式不同
? 软件产品的失败曲线不同
? 软件产品的成本构成不同
? 软件产品不存在同类零件替换
? 软件产品的静态和动态属性
下一页
下一页
上一页
停止放映
第 16 页
软件是逻辑产品
? 软件产品是:
– 具有产值、价格、质量和功
能的特性
– 看不见,是逻辑的、无形的
– 是脑力劳动的结晶
下一页
上一页
停止放映
第 17 页
软件产品质量体现方式不同
? 质量体现方式不同:
– 实用、可靠、可操作性;
– 可维护性强
– 方便用户
– 不会折旧、损坏、老化
下一页
上一页
停止放映
第 18 页
软、硬件失败曲线
下一页
下一页
上一页
停止放映
第 19 页
软、硬件比例示意图
12%
需求
率
4%
生产率
开发人员
成本构成不同,主要投资在研制;软件研制是一种人力、资金密集
的产业,而软件生产只是简单的复制、安装和培训。
下一页
上一页
停止放映
第 20 页
软件产品不存在同类零件替换
? 当硬件产品中某个部件损坏后, 可
以用相同的备用部件更换, 使硬件
系统恢复正常工作 。
? 而软件产品却没有相同的备用部件
可言, 因为软件出现的每一个故障,
要么是由于设计考虑不周造成的,
要么是编程错误造成的 。
? 由于软件无备用部件可供更换, 因
而软件维护比硬件维护要复杂得多,
成本也高得多 。
下一页
上一页
停止放映
第 21 页
软件产品的静态和动态属性
? 软件是由程序和相关文档资料组成的 。
? 程序是具有双重属性的:
– 它是求解客观问题的逻辑描述, 是供阅读和交流的, 它
的表示是静态的;
– 程序最终是通过运行去执行特定的操作和数据处理, 它
又具有极其复杂和丰富内涵的动态属性 。
? 程序的双重属性决定判别程序是否正确也要有双重标准:
– 静态的程序正确与否是检查它的语法和句法是否符合规
则要求;
– 动态的程序正确与否则要动态的测试程序的所有逻辑流
结构和数据结构是否正确 。
– 而后一种测试的难度和代价较之前一种要大得多 。
下一页
上一页
停止放映
第 22 页
软件分类
? 软件按不同方式可以划分
为不同的类型:
–按功能划分
–按规模划分
下一页
上一页
停止放映
第 23 页
按功能划分软件分类
软件
系统软件
应用软件
操作系统
网络系统
语言编译器
工具软件
管理软件
实时软件
科学计算、数据处理
嵌入式软件
人工智能软件
专用领域软件
下一页
上一页
停止放映
第 24 页
系统软件
? 是支持计算机系统正常运行并实现用户操
作的那部分软件。
? 一般是在计算机系统购买时随机携带的,
也可以根据需要另行安装。
? 系统软件的主要特征是:
– 与硬件有很强的交互性
– 能对资源共享进行调度管理
– 能解决并发操作处理中存在的协调问题
– 其中的数据结构复杂,外部接口多样化,便于
用户反复使用
下一页
上一页
停止放映
第 25 页
应用软件
? 应用软件是为满足用户不同领域、
不同问题的应用需求而提供的那部
分软件。
? 它可以拓宽计算机系统的应用领域,
放大硬件的功能。
? 应用软件具有无限丰富和美好的开
发前景。
下一页
上一页
停止放映
第 26 页
按规模划分软件分类
分类 程序规模 模块数 开发时间 开发人数
极小 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
下一页
上一页
停止放映
第 27 页
软件的发展
? 软件伴随计算机技术的发展经
历了三个阶段:
?程序设计阶段
?软件设计阶段
?软件工程阶段
下一页
上一页
停止放映
第 28 页
程序设计阶段
? 程序设计阶段 ( 1946年 ~1955年 )
特点:
– 尚无软件的概念, 程序设计主要围
绕硬件进行开发
– 规模很小, 工具简单
– 无明确分工 ( 开发者和用户 )
– 程序设计追求节省空间和编程技巧,
无文档资料
– 主要是用于科学计算
下一页
上一页
停止放映
第 29 页
软件设计阶段
? 软件设计阶段 ( 1956年 ~1970年 )
特点:
– 硬件环境相对稳定, 出现, 软件作坊,
的开发组织形式
– 开始使用产品软件 ( 可购买 ), 从而建
立了软件的概念
– 系统规模越来越庞大, 高级编程语言层
出不穷, 应用领域不断拓宽
– 开发者和用户有了明确分工, 社会对软
件的需求量剧增
– 但是软件开发技术没有重大突破, 生产
效率低下, 从而导致, 软件危机, 产生 。
下一页
上一页
停止放映
第 30 页
软件工程阶段
? 软件工程阶段 ( 1970年 ~至今 )
由于软件危机的产生, 迫使人们不得不研究, 改变
软件开发的技术手段和管理方法 。 从此软件生产进
入软件工程时代 。
? 特点:
– 硬件已向, 四化, ( 巨型, 微型, 网络, 智能 )
发展, 数据库技术已成熟并广泛应用, 第三,
四代语言出现 。
– 第一代软件技术 —— 结构化程序设计在数值计
算领域取得优异成绩;
– 第二代软件技术 —— 软件测试技术, 方法, 原
理用于软件生产过程;
– 第三代软件技术 —— 处理需求定义技术, 用于
软件需求分析和描述 。
下一页
上一页
停止放映
第 31 页
软件危机
? 硬件生产率大幅提高
? 软件规模越来越大
? 软件生产率很低
? 硬、软件供需失衡
? 矛盾引发“软件危机”
下一页
上一页
停止放映
第 32 页
硬件生产率大幅提高
? 如今, 计算机的发展已进入一个新的历史
阶段;
? 硬件产品已系列化, 标准化,, 即插即
用, 。
? 硬件产品的生产可以采用最高精尖的现代
化工具和手段, 自动成批生产 。 生产效率
几百万倍的提高 。
? 生产能力过剩 。
下一页
上一页
停止放映
第 33 页
软件生产随规模增大、复杂度增大
? 以美国宇航局的软件系统为例:
– 1963年 水星计划系统 200万条指令
– 1967年 双子星座计划系统 400万条指令
– 1973年 阿波罗计划系统 1000万条指令
– 1979年 哥伦比亚航天飞机系统 4000万条指令
? 假设 1个人一年生产一万条有效指令, 那么是否
4000人生产一年, 或 400人生产 10年就能完成任务
呢? 答案是否定的 。 一万条指令的复杂度决不仅
仅是 100条指令复杂度的 100倍 。
下一页
上一页
停止放映
第 34 页
软件生产率很低
? 伴随计算机的普及,整个社会对计
算机应用的需求越来越大。
? 但软件的生产却还沿用, 手工作坊,
的生产方式,人工编程生产。生产
效率仅提高了几倍。
? 生产能力极其低下。
返 回
下一页
上一页
停止放映
第 35 页
硬、软件供需失衡
? 社会大量需求, 生产成本高, 生产
过程控制复杂, 生产效率低等等因
素构成软件生产的恶性循环 。
? 由此产生, 软件危机, 。
返 回
下一页
上一页
停止放映
第 36 页
矛盾引发“软件危 机”
? 软件危机是指在计算机软件的开发和
维护过程中所遇到的一系列严重问题。
? 为了研究、解决软件危机,诞生了一
门新兴学科 —— 软件工程学。它把软
件作为工程对象,从技术措施和组织
管理两个方面来研究、解决软件危机。
下一页
上一页
停止放映
第 37 页
软件危机的具体体现
( 1) 软件开发进度难以预测
( 2) 软件开发成本难以控制
( 3) 用户对软件功能难以满足
( 4) 软件产品质量无法保证
( 5) 软件产品难以维护
( 6) 软件通常缺少适当的文档资料
下一页
上一页
停止放映
第 38 页
( 1)软件开发进度难以预测
? 拖延工期几个月甚至几年的现象并不罕见,
这种现象降低了软件开发组织的信誉。
? 以丹佛新国际机场为例
– 该机场规模是曼哈顿机场的两倍, 宽为希思机场
的 10倍, 可以全天侯同时起降三架喷气式客机;
– 投资 1.93亿美元建立了一个地下行李传送系统,
总长 21英里, 有 4,000台遥控车, 可按不同线路
在 20家不同的航空公司柜台, 登机门和行李领取
处之间发送和传递行李;
– 支持该系统的是 5,000个电子眼, 400台无线电接
受机, 56台条形码扫描仪和 100台计算机
– 按原定计划要在 1993年万圣节前启用, 但一直到
1994年 6月, 机场的计划者还无法预测行李系统何
时能达到可使机场开放的稳定程度 。
下一页
上一页
停止放映
第 39 页
( 2)软件开发成本难以控制
? 投资一再追加, 令人难于置信 。 往往是
实际成本比预算成本高出一个数量级 。
? 而为了赶进度和节约成本所采取的一些
权宜之计又往往损害了软件产品的质量,
从而不可避免地会引起用户的不满 。
下一页
上一页
停止放映
第 40 页
( 3)用户对产品功能难以满足
? 开发人员和用户之间很难沟通, 矛盾很
难统一 。 往往是软件开发人员不能真正
了解用户的需求, 而用户又不了解计算
机求解问题的模式和能力, 双方无法用
共同熟悉的语言进行交流和描述 。
? 在双方互不充分了解的情况下, 就仓促
上阵设计系统, 匆忙着手编写程序, 这
种, 闭门造车, 的开发方式必然导致最
终的产品不符合用户的实际需要 。
下一页
上一页
停止放映
第 41 页
( 4)软件产品质量无法保证
? 系统中的错误难以消除 。 软件是逻辑产品,
质量问题很难以统一的标准度量, 因而造
成质量控制困难 。
? 软件产品并不是没有错误, 而是盲目检测
很难发现错误, 而隐藏下来的错误往往是
造成重大事故的隐患 。
下一页
上一页
停止放映
第 42 页
( 5)软件产品难以维护
? 软件产品本质上是开发人员的代码化的
逻辑思维活动, 他人难以替代 。 除非是
开发者本人, 否则很难及时检测, 排除
系统故障 。
? 为使系统适应新的硬件环境, 或根据用
户的需要在原系统中增加一些新的功能,
又有可能增加系统中的错误 。
下一页
上一页
停止放映
第 43 页
( 6)软件缺少适当的文档资料
? 文档资料是软件必不可少的重要组成部
分 。
? 实际上, 软件的文档资料是开发组织和
用户的之间权利和义务的合同书, 是系
统管理者, 总体设计者向开发人员下达
的任务书, 是系统维护人员的技术指导
手册, 是用户的操作说明书 。
? 缺乏必要的文档资料或者文档资料不合
格, 将给软件开发和维护带来许多严重
的困难和问题 。
下一页
上一页
停止放映
第 44 页
软件生产随规模增大
– 1963年 水星计划系统 200万条指令
– 1967年 双子星座计划系统 400万条指令
– 1973年 阿波罗计划系统 1000万条指令
– 1979年 哥伦比亚航天飞机系统 4000万条指令
下一页
上一页
停止放映
第 45 页
最典型失败系统的例子
? IBM公司开发 OS/360系统, 共
有 4000多个模块, 约 100万条
指令, 投入 5000人年, 耗资数
亿美元, 结果还是延期交付 。
在交付使用后的系统中仍发现
大量 ( 2000个以上 ) 的错误 。
下一页
上一页
停止放映
第 46 页
软件危机产生的原因
? 产生软件危机有两个方面的原因:
– 与软件本身的特点有关;是内在因
素, 客观的存在, 只能因势利导加
以解决 。
– 与软件开发和维护的技术方法有关;
是外在因素, 可以完善, 提高 。
下一页
上一页
停止放映
第 47 页
软件特点的因素
? 软件是逻辑产品, 是代码化了的人的思
维活动 。 在总体构思时, 别人无法管理
和干预 。 在写出程序, 并在机器上运行
之前, 进展情况难以掌握, 开发质量也
无法评估 。 这些都给管理和控制带来不
便 。
? 软件是特定问题在计算机上的运行描述 。
实际问题的复杂性决定了一个实用软件
系统规模往往十分庞大 。 大有大的难处 。
程序规模越大, 控制, 管理难度也就越
大 。
下一页
上一页
停止放映
第 48 页
软件开发维护技术方法的因素
? 开发人员和用户之间的矛盾。许多软件系统开发失败的主要原
因是开发人员在没有准确、完整地了解了用户的需求后就急于
编程;用户对需求也往往不能准确、完整地提出(有用户对计
算机知识了解程度、对计算机处理能力的认识等因素)。
? 软件产品有其生命周期。在周期的各个阶段有其具体的任务,
如何完成任务,各个阶段有不同的技术方法和操作步骤。只有
科学的按生命周期各阶段的任务去组织实施,才能保证质量,
降低成本;急于求成,不按科学规律、方法实施,只能, 事倍
功半,,事与愿违。
? 软件产品的使用寿命很长。在这期间因功能的增加、硬件的更
新换代,都要对软件进行必要的修改。据统计数据表明,软件
维护的费用占总费用的 55%~70%。软件工程的一个重要目标就
是提高软件的可维护性,减少软件维护的代价。
下一页
上一页
停止放映
第 49 页
解决软件危机的途径
? 为了解决软件危机就要从技术措施和组织
管理两个方面去研究,不断总结经验教训,
提高软件产品的生产效率,降低软件开发
和维护的成本。
? 开发软件选用最好的开发工具是至关重要
的,即选择、设置良好的软件工程支撑环
境。工具选用的好,它可以, 放大, 人的
智力,大大加快软件开发速度,提高软件
质量。
下一页
上一页
停止放映
第 50 页
结束语
? 欢迎对数字化教学法提出意见,以利改进。
? 我的 E-mail地址:
fcliu@xjtu.edu.cn
? 数字化课件的路径,
jec253\user2\tools\lzq\软件基础
? 数字化作业提交路径:
Jec251\user\dataroom\homework\班级编号
谢谢,再见!
计算机软件基础
The software basic
of computer
主讲:刘志强
西安交通大学
计算机教学实验中心
第 1单元
,软件基础, 概述
下一页
上一页
停止放映
第 2 页
《计算机软件基础,教学大纲
一、课程的目的和任务
二、课程基本要求
三、课程基本内容
四、实验内容
五、时间分配
六、考试方法
下一页
上一页
停止放映
第 3 页
一、课程的目的和任务
,计算机软件基础, 是非电类专业的一
门技术基础课,涉及计算机操作系统、数
据结构、数据库技术和软件工程四门课程
的经典内容,通过该课程的学习,使学生
掌握开发应用软件所必需的软件基础知识,
为今后结合本专业开发应用 软件打下必要
的基础。
下一页
上一页
停止放映
第 4 页
二、课程基本要求
? 了解计算机软件的基本概念,理解有关的常用技
术术语。
? 了解程序设计中常用的数据结构及相应算法,初
步掌握对不同类型的问题求解选择适当的数据结
构。
? 了解应用软件开发的最基本的环境;掌握操作系
统的基本概念和基本功能,了解计算机系统硬、
软件资源如何控制管理。
? 了解如何以近代软件工程的观点开发应用软件的
基本概念和方法。
? 了解数据库的基本概念,初步掌握数据库系统的
开发方法。
下一页
上一页
停止放映
第 5 页
三、课程基本内容
1、数据结构
2、操作系统原理
3、数据库系统原理
4、软件工程
下一页
上一页
停止放映
第 6 页
1,数据结构
? 数据结构是计算机的专业技术基础课。它
研究的主要问题有:
? 分析数据(计算机加工的对象)的特征
? 选择适当逻辑存储结构和物理存储结构
? 在存储结构的基础上实现对数据的操作
下一页
上一页
停止放映
第 7 页
2,操作系统原理
? 是研究计算机工作原理的一门学科:
研究的主要问题:
? 提高系统资源的利用率
? 更有效地组织、协调、管理计算机内部
的工作流程
? 为用户提供更友好、便捷的操作界面
下一页
上一页
停止放映
第 8 页
3、数据库系统原理
? 是一门综合性软件技术课。它研究的
主要问题是:
?描述数据记录(用数据描述语言)
? 实现对数据记录的管理操作
? 实现对数据库的应用管理
下一页
上一页
停止放映
第 9 页
4、软件工程
? 是一门交叉学科;它包括计算机科
学、数学、工程学和管理等学科。
主要研究:
? 克服、解决“软件危机”
? 改进“软件生产”的方法、工具
? 提高软件的生产率
下一页
上一页
停止放映
第 10 页
四、实验内容
本课程实验内容提要:
1、操作系统及应用; Windows’( 98)
的操作。
2、数据结构程序设计;用 C语言实现“二
叉树链表”的操作。
3、数据库系统及应用;用 ACCESS 实现
“学生成绩”数据库的操作。
下一页
上一页
停止放映
第 11 页
五、时间分配
1、课时分配,24学时
2、机时分配,24学时
课程名称 分配学时
操作系统
数据结构
数据库系统
软件工程
实验名称 分配机时
操作系统及应用 6
数据结构程序设计 6
数据库及应用 6
软件工程作业 6
4
10
4
6
下一页
上一页
停止放映
第 12 页
六、说明
1、考核方法
期末笔试。
2、教材
,计算机软件技术基础, 人民邮电出版社
3、参考书
,面向对象的理论与 C++实践, 清华大学出版社
,软件工程导论, 清华大学出版社
,ACCESS2000实用教程, 清华大学出版社
,数据结构 — OO方法与 C++描述, 清华大学出版社
,计算机文化基础, 交大出版社
下一页
上一页
停止放映
第 13 页
软件( Software)
? 随着信息化、网络化和数字化时代的到来,
社会对,软件” 的需求激增。如今,世界
发达国家都把 软件 列为国家发展的关键技
术领域。
? 美国国家关键技术委员会将软件列为六大
关键技术之一;
? 欧洲共同体将“软件和信息处理”列为关
键技术;
? 我国把信息产业放在优先发展的地位,看
作是中国发展高新技术、赶超世界先进水
平的一次千载难逢的机遇。
下一页
上一页
停止放映
第 14 页
软件的基本概念
? 什么是软件?
? 计算机系统由计算机硬件和软件构成。
? 计算机神奇的功能是在软件的“指挥”下
创造出来的。
? 软件是各种程序和有关资料的总称。
? 程序是:
– 为实现特定目标或解决特定问题而用计算机语
言编写的命令序列的集合
– 是人们求解问题的逻辑思维活动的代码化描述
? 程序的最重要的目的是:
– 便于阅读、交流
下一页
上一页
停止放映
第 15 页
软件的特征
? 软件是逻辑产品
? 软件产品质量的体现方式不同
? 软件产品的失败曲线不同
? 软件产品的成本构成不同
? 软件产品不存在同类零件替换
? 软件产品的静态和动态属性
下一页
下一页
上一页
停止放映
第 16 页
软件是逻辑产品
? 软件产品是:
– 具有产值、价格、质量和功
能的特性
– 看不见,是逻辑的、无形的
– 是脑力劳动的结晶
下一页
上一页
停止放映
第 17 页
软件产品质量体现方式不同
? 质量体现方式不同:
– 实用、可靠、可操作性;
– 可维护性强
– 方便用户
– 不会折旧、损坏、老化
下一页
上一页
停止放映
第 18 页
软、硬件失败曲线
下一页
下一页
上一页
停止放映
第 19 页
软、硬件比例示意图
12%
需求
率
4%
生产率
开发人员
成本构成不同,主要投资在研制;软件研制是一种人力、资金密集
的产业,而软件生产只是简单的复制、安装和培训。
下一页
上一页
停止放映
第 20 页
软件产品不存在同类零件替换
? 当硬件产品中某个部件损坏后, 可
以用相同的备用部件更换, 使硬件
系统恢复正常工作 。
? 而软件产品却没有相同的备用部件
可言, 因为软件出现的每一个故障,
要么是由于设计考虑不周造成的,
要么是编程错误造成的 。
? 由于软件无备用部件可供更换, 因
而软件维护比硬件维护要复杂得多,
成本也高得多 。
下一页
上一页
停止放映
第 21 页
软件产品的静态和动态属性
? 软件是由程序和相关文档资料组成的 。
? 程序是具有双重属性的:
– 它是求解客观问题的逻辑描述, 是供阅读和交流的, 它
的表示是静态的;
– 程序最终是通过运行去执行特定的操作和数据处理, 它
又具有极其复杂和丰富内涵的动态属性 。
? 程序的双重属性决定判别程序是否正确也要有双重标准:
– 静态的程序正确与否是检查它的语法和句法是否符合规
则要求;
– 动态的程序正确与否则要动态的测试程序的所有逻辑流
结构和数据结构是否正确 。
– 而后一种测试的难度和代价较之前一种要大得多 。
下一页
上一页
停止放映
第 22 页
软件分类
? 软件按不同方式可以划分
为不同的类型:
–按功能划分
–按规模划分
下一页
上一页
停止放映
第 23 页
按功能划分软件分类
软件
系统软件
应用软件
操作系统
网络系统
语言编译器
工具软件
管理软件
实时软件
科学计算、数据处理
嵌入式软件
人工智能软件
专用领域软件
下一页
上一页
停止放映
第 24 页
系统软件
? 是支持计算机系统正常运行并实现用户操
作的那部分软件。
? 一般是在计算机系统购买时随机携带的,
也可以根据需要另行安装。
? 系统软件的主要特征是:
– 与硬件有很强的交互性
– 能对资源共享进行调度管理
– 能解决并发操作处理中存在的协调问题
– 其中的数据结构复杂,外部接口多样化,便于
用户反复使用
下一页
上一页
停止放映
第 25 页
应用软件
? 应用软件是为满足用户不同领域、
不同问题的应用需求而提供的那部
分软件。
? 它可以拓宽计算机系统的应用领域,
放大硬件的功能。
? 应用软件具有无限丰富和美好的开
发前景。
下一页
上一页
停止放映
第 26 页
按规模划分软件分类
分类 程序规模 模块数 开发时间 开发人数
极小 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
下一页
上一页
停止放映
第 27 页
软件的发展
? 软件伴随计算机技术的发展经
历了三个阶段:
?程序设计阶段
?软件设计阶段
?软件工程阶段
下一页
上一页
停止放映
第 28 页
程序设计阶段
? 程序设计阶段 ( 1946年 ~1955年 )
特点:
– 尚无软件的概念, 程序设计主要围
绕硬件进行开发
– 规模很小, 工具简单
– 无明确分工 ( 开发者和用户 )
– 程序设计追求节省空间和编程技巧,
无文档资料
– 主要是用于科学计算
下一页
上一页
停止放映
第 29 页
软件设计阶段
? 软件设计阶段 ( 1956年 ~1970年 )
特点:
– 硬件环境相对稳定, 出现, 软件作坊,
的开发组织形式
– 开始使用产品软件 ( 可购买 ), 从而建
立了软件的概念
– 系统规模越来越庞大, 高级编程语言层
出不穷, 应用领域不断拓宽
– 开发者和用户有了明确分工, 社会对软
件的需求量剧增
– 但是软件开发技术没有重大突破, 生产
效率低下, 从而导致, 软件危机, 产生 。
下一页
上一页
停止放映
第 30 页
软件工程阶段
? 软件工程阶段 ( 1970年 ~至今 )
由于软件危机的产生, 迫使人们不得不研究, 改变
软件开发的技术手段和管理方法 。 从此软件生产进
入软件工程时代 。
? 特点:
– 硬件已向, 四化, ( 巨型, 微型, 网络, 智能 )
发展, 数据库技术已成熟并广泛应用, 第三,
四代语言出现 。
– 第一代软件技术 —— 结构化程序设计在数值计
算领域取得优异成绩;
– 第二代软件技术 —— 软件测试技术, 方法, 原
理用于软件生产过程;
– 第三代软件技术 —— 处理需求定义技术, 用于
软件需求分析和描述 。
下一页
上一页
停止放映
第 31 页
软件危机
? 硬件生产率大幅提高
? 软件规模越来越大
? 软件生产率很低
? 硬、软件供需失衡
? 矛盾引发“软件危机”
下一页
上一页
停止放映
第 32 页
硬件生产率大幅提高
? 如今, 计算机的发展已进入一个新的历史
阶段;
? 硬件产品已系列化, 标准化,, 即插即
用, 。
? 硬件产品的生产可以采用最高精尖的现代
化工具和手段, 自动成批生产 。 生产效率
几百万倍的提高 。
? 生产能力过剩 。
下一页
上一页
停止放映
第 33 页
软件生产随规模增大、复杂度增大
? 以美国宇航局的软件系统为例:
– 1963年 水星计划系统 200万条指令
– 1967年 双子星座计划系统 400万条指令
– 1973年 阿波罗计划系统 1000万条指令
– 1979年 哥伦比亚航天飞机系统 4000万条指令
? 假设 1个人一年生产一万条有效指令, 那么是否
4000人生产一年, 或 400人生产 10年就能完成任务
呢? 答案是否定的 。 一万条指令的复杂度决不仅
仅是 100条指令复杂度的 100倍 。
下一页
上一页
停止放映
第 34 页
软件生产率很低
? 伴随计算机的普及,整个社会对计
算机应用的需求越来越大。
? 但软件的生产却还沿用, 手工作坊,
的生产方式,人工编程生产。生产
效率仅提高了几倍。
? 生产能力极其低下。
返 回
下一页
上一页
停止放映
第 35 页
硬、软件供需失衡
? 社会大量需求, 生产成本高, 生产
过程控制复杂, 生产效率低等等因
素构成软件生产的恶性循环 。
? 由此产生, 软件危机, 。
返 回
下一页
上一页
停止放映
第 36 页
矛盾引发“软件危 机”
? 软件危机是指在计算机软件的开发和
维护过程中所遇到的一系列严重问题。
? 为了研究、解决软件危机,诞生了一
门新兴学科 —— 软件工程学。它把软
件作为工程对象,从技术措施和组织
管理两个方面来研究、解决软件危机。
下一页
上一页
停止放映
第 37 页
软件危机的具体体现
( 1) 软件开发进度难以预测
( 2) 软件开发成本难以控制
( 3) 用户对软件功能难以满足
( 4) 软件产品质量无法保证
( 5) 软件产品难以维护
( 6) 软件通常缺少适当的文档资料
下一页
上一页
停止放映
第 38 页
( 1)软件开发进度难以预测
? 拖延工期几个月甚至几年的现象并不罕见,
这种现象降低了软件开发组织的信誉。
? 以丹佛新国际机场为例
– 该机场规模是曼哈顿机场的两倍, 宽为希思机场
的 10倍, 可以全天侯同时起降三架喷气式客机;
– 投资 1.93亿美元建立了一个地下行李传送系统,
总长 21英里, 有 4,000台遥控车, 可按不同线路
在 20家不同的航空公司柜台, 登机门和行李领取
处之间发送和传递行李;
– 支持该系统的是 5,000个电子眼, 400台无线电接
受机, 56台条形码扫描仪和 100台计算机
– 按原定计划要在 1993年万圣节前启用, 但一直到
1994年 6月, 机场的计划者还无法预测行李系统何
时能达到可使机场开放的稳定程度 。
下一页
上一页
停止放映
第 39 页
( 2)软件开发成本难以控制
? 投资一再追加, 令人难于置信 。 往往是
实际成本比预算成本高出一个数量级 。
? 而为了赶进度和节约成本所采取的一些
权宜之计又往往损害了软件产品的质量,
从而不可避免地会引起用户的不满 。
下一页
上一页
停止放映
第 40 页
( 3)用户对产品功能难以满足
? 开发人员和用户之间很难沟通, 矛盾很
难统一 。 往往是软件开发人员不能真正
了解用户的需求, 而用户又不了解计算
机求解问题的模式和能力, 双方无法用
共同熟悉的语言进行交流和描述 。
? 在双方互不充分了解的情况下, 就仓促
上阵设计系统, 匆忙着手编写程序, 这
种, 闭门造车, 的开发方式必然导致最
终的产品不符合用户的实际需要 。
下一页
上一页
停止放映
第 41 页
( 4)软件产品质量无法保证
? 系统中的错误难以消除 。 软件是逻辑产品,
质量问题很难以统一的标准度量, 因而造
成质量控制困难 。
? 软件产品并不是没有错误, 而是盲目检测
很难发现错误, 而隐藏下来的错误往往是
造成重大事故的隐患 。
下一页
上一页
停止放映
第 42 页
( 5)软件产品难以维护
? 软件产品本质上是开发人员的代码化的
逻辑思维活动, 他人难以替代 。 除非是
开发者本人, 否则很难及时检测, 排除
系统故障 。
? 为使系统适应新的硬件环境, 或根据用
户的需要在原系统中增加一些新的功能,
又有可能增加系统中的错误 。
下一页
上一页
停止放映
第 43 页
( 6)软件缺少适当的文档资料
? 文档资料是软件必不可少的重要组成部
分 。
? 实际上, 软件的文档资料是开发组织和
用户的之间权利和义务的合同书, 是系
统管理者, 总体设计者向开发人员下达
的任务书, 是系统维护人员的技术指导
手册, 是用户的操作说明书 。
? 缺乏必要的文档资料或者文档资料不合
格, 将给软件开发和维护带来许多严重
的困难和问题 。
下一页
上一页
停止放映
第 44 页
软件生产随规模增大
– 1963年 水星计划系统 200万条指令
– 1967年 双子星座计划系统 400万条指令
– 1973年 阿波罗计划系统 1000万条指令
– 1979年 哥伦比亚航天飞机系统 4000万条指令
下一页
上一页
停止放映
第 45 页
最典型失败系统的例子
? IBM公司开发 OS/360系统, 共
有 4000多个模块, 约 100万条
指令, 投入 5000人年, 耗资数
亿美元, 结果还是延期交付 。
在交付使用后的系统中仍发现
大量 ( 2000个以上 ) 的错误 。
下一页
上一页
停止放映
第 46 页
软件危机产生的原因
? 产生软件危机有两个方面的原因:
– 与软件本身的特点有关;是内在因
素, 客观的存在, 只能因势利导加
以解决 。
– 与软件开发和维护的技术方法有关;
是外在因素, 可以完善, 提高 。
下一页
上一页
停止放映
第 47 页
软件特点的因素
? 软件是逻辑产品, 是代码化了的人的思
维活动 。 在总体构思时, 别人无法管理
和干预 。 在写出程序, 并在机器上运行
之前, 进展情况难以掌握, 开发质量也
无法评估 。 这些都给管理和控制带来不
便 。
? 软件是特定问题在计算机上的运行描述 。
实际问题的复杂性决定了一个实用软件
系统规模往往十分庞大 。 大有大的难处 。
程序规模越大, 控制, 管理难度也就越
大 。
下一页
上一页
停止放映
第 48 页
软件开发维护技术方法的因素
? 开发人员和用户之间的矛盾。许多软件系统开发失败的主要原
因是开发人员在没有准确、完整地了解了用户的需求后就急于
编程;用户对需求也往往不能准确、完整地提出(有用户对计
算机知识了解程度、对计算机处理能力的认识等因素)。
? 软件产品有其生命周期。在周期的各个阶段有其具体的任务,
如何完成任务,各个阶段有不同的技术方法和操作步骤。只有
科学的按生命周期各阶段的任务去组织实施,才能保证质量,
降低成本;急于求成,不按科学规律、方法实施,只能, 事倍
功半,,事与愿违。
? 软件产品的使用寿命很长。在这期间因功能的增加、硬件的更
新换代,都要对软件进行必要的修改。据统计数据表明,软件
维护的费用占总费用的 55%~70%。软件工程的一个重要目标就
是提高软件的可维护性,减少软件维护的代价。
下一页
上一页
停止放映
第 49 页
解决软件危机的途径
? 为了解决软件危机就要从技术措施和组织
管理两个方面去研究,不断总结经验教训,
提高软件产品的生产效率,降低软件开发
和维护的成本。
? 开发软件选用最好的开发工具是至关重要
的,即选择、设置良好的软件工程支撑环
境。工具选用的好,它可以, 放大, 人的
智力,大大加快软件开发速度,提高软件
质量。
下一页
上一页
停止放映
第 50 页
结束语
? 欢迎对数字化教学法提出意见,以利改进。
? 我的 E-mail地址:
fcliu@xjtu.edu.cn
? 数字化课件的路径,
jec253\user2\tools\lzq\软件基础
? 数字化作业提交路径:
Jec251\user\dataroom\homework\班级编号
谢谢,再见!