(1)全面介绍:对计算机软件作全面、统一的介绍,使学生能对软件有一个完整的认识,而不是分裂的、局部的认识(2)重点突出:在软件的几个部分中重点突出数据结构、操作系统、数据库及软件工程等内容(3)面向应用:为嵌入式应用、控制管理及其它应用提供支撑。
本书共四篇9章,全面介绍计算机软件技术的基础、系统与工程应用,它们是:第一篇:引言共1章,全面介绍计算机软件技术的概况、分类与内容以及它在计算机系统中的地位与作用。第二篇:基础篇共2章,介绍计算机软件的程序与数据基础理论与应用。第三篇:系统篇共4章,介绍计算机软件中的四种常用系统,它们是系统软件—操作系统,程序设计语言及语言处理系统及数据库管理系统,此外还介绍应用软件系统。第四篇:开发篇共2章,介绍计算机软件开发的工程原理与应用,同时通过一个具体例子,全面了解软件各部分的关系与特点。
本书全面、系统地介绍了计算机软件知识,不仅能满足自动控制、通信、电子、遥感遥测、电子商务、信息管理等专业的需要,而且还能满足对计算机专业知识有一定深度要求的机械、电力、金融、保险等专业的需要。全书力求语言通俗易懂,理论联系实际,为相关专业提供后续课程支撑,同时也为学生通过相关计算机专业考试(如水平考试、等级考试等)提供支撑。
内容全面、重点突出。全面介绍了软件基本概念、算法理论、数据基础、数据结构、程序设计基础、操作系统、语言处理系统、数据库系统、软件支撑系统、软件应用系统、软件工程以及应用系统开发等软件相关的所有主要内容,并对最具代表性与基础性的数据结构、操作系统、数据库系统及软件工程进行重点介绍。
统一概念、完整体系。克服了常规计算机软件教材将软件分割成若干个分支和课程而带来的概念分裂、内容隔离等弊端,使学生学到的软件知识是统一与完整的。
重视基础、强调实践。以介绍基本概念、思想、方法等软件技术中的原理知识为主,使学生能掌握软件技术的基本知识,同时讲解了涉及全局的一些基本操作(如数据结构中的操作、数据库中的SQL语言以及软件工程中的结构化开发方法的基本操作流程),这些操作与原理互相协调和支撑,构成一个完整的知识体。
详略得当、言简意赅。对各章内容精心组织,选取了最具典型、最具代表性的内容,大胆淘汰了非典型的、非本质的内容。
本书特点
“计算机软件技术”是一门新的课程,经过这几年的发展已逐渐成形,同时也出现了一些优秀教材。但毋庸讳言的是,对课程的一些重要核心问题的研究尚需探讨,认识尚需理清,特别是对下面的两个关键性问题更需有一个一致的认识:
课程目标对象
课程目标定位
我们在编写本书的过程中一直围绕着这两个问题来展开,经过广泛调查、研究与探讨,我们认为:
一、课程目标对象
由于计算机的发展,计算机的应用已普及至多个专业领域,而且已成为这些专业必不可少的组成部分,因此需要对计算机专业知识有更多的了解,而目前的传统课程,如计算机基础与程序设计语言等已不能满足它们的要求,但是受课时所限又不能开设多门课程,因此就出现了综合多门计算机专业知识于一体的“计算机软件技术”课程。此课程之所以仅介绍“软件”,主要是由于这些专业的需求以计算机应用为主,而应用是直接以软件作为其基础的。因此“计算机软件技术”课程成为这些专业的又一门公共课程。
涉及较多计算机知识的专业包括两个层次:
第一层次:与计算机紧密相关的专业,它们对计算机专业知识的要求很高,这些专业包括自动控制、通信、电子、遥感遥测、电子商务、信息管理等。
第二层次:与计算机有一定关联的专业,它们对计算机专业知识有一定深度的要求,这些专业包括机械、电力、金融、保险等。
上面两个层次的专业可统称为计算机相关专业。
因此我们认为,“计算机软件技术”课程的目标对象应该是计算机相关专业的本科公共课程,其预修课程是计算机基础及程序设计语言课。
二、课程目标定位
“计算机软件技术”课程的目标定位是该课程设置的第二个需讨论的问题。首先,我们认为它是建立在课程目标对象基础上的,即该课程应该是计算机相关专业的一门公共基础课程。基于此种认识,它的目标定位应该是:
为相关专业提供计算机软件的全面、完整的知识。
为相关专业提供后续课程支撑。
为学生通过相关计算机专业考试(如水平考试、等级考试等)提供支撑。
下面对这些目标定位进行必要的解释:
1)“计算机软件技术”课程的首要目标是使学生全面与完整地掌握软件知识,为他们今后应用计算机打下坚实的基础。
2)由于相关专业的很多后续课程都与计算机有关,如自控专业的嵌入式系统课程、电力专业的电力调度相关课程等,它们都需要软件技术知识的支撑。
3)由于这些相关专业学生在学期间一般还需要获得计算机相应资质的证书(如计算机水平考试、等级考试等),所以此门课程可为他们的资质取得提供计算机软件方面的支撑。
本书是在对上述两个关键问题的统一认识基础上编写的,在编写过程中坚持如下五个原则:
1全面介绍,突出重点
本课程是一门基础性课程,因此必须对软件技术作全面、完整的介绍,但又不可能在一门课中对软件的各分支作详细介绍,只能择其重要主题作重点介绍,因此全面介绍、突出重点是本书内容组织的核心思想,它既能考虑到面,又能照顾到点。内容具体安排如下:
1)全面介绍:本书分四个部分,全面介绍了软件基本概念、算法理论、数据基础、数据结构、程序设计基础、操作系统、语言处理系统、数据库系统、软件支撑系统、软件应用系统、软件工程以及应用系统开发等十二个分支内容,涵盖了软件的所有主要内容。
2)突出重点:在全面介绍的基础上,我们挑选出最具代表性与基础性的四个主题作为重点,即数据结构、操作系统、数据库系统及软件工程。
2统一概念,完整体系
从学科观点讲,软件是一门独立的学科,它有其自身统一的概念、完整的体系。但为了研究与教学方便,长期以来将其分割成若干个分支与课程,这虽有利于研究与学习,但是长期分割也带来了概念分裂、内容隔离等弊端。而在计算机软件课程中必须还原其学科本来面目,使其有一个统一的概念与完整的体系,因此在课程内容组织中按软件学科体系组织,并统一概念。这样,学生所学到的软件知识是统一与完整的,而不是分裂的、隔离的。在本书中统一概念与完整体系主要体现在如下几个方面:
1)在内容组织上按软件含义分为程序、数据与文档;又按软件具体内容分为理论、系统与开发,它们分属两个不同维度,组成一个二维结构体系,而软件的12个分支内容则分属于二维世界中的9个不同范围,从而构成一个完整的体系。(具体参见13节)。
2)在长期的分割状态中软件的很多基本概念被分裂,在本教材中将予以统一,其代表性的概念是:
数据概念:数据概念在软件各分支中都有大量出现且根据不同需要而有不同的理解与定义。如在数据结构中、数据库系统中、操作系统的文件系统中、程序设计语言中以及应用软件开发中等。第3章对数据概念专门进行了统一全面的介绍。
软件概念:在软件的专门教材中都会出现软件的各种理解和定义,由于各分支的研究背景与对象的不同造成了对软件认识的不一致,本书第1章对软件的概念进行了整体与全面的介绍。这种概念的统一既有利于对概念的全面了解,也有利于各分支局部理解所造成的片面认识,同时也可纠正过去的混乱并节约了大量篇幅。
算法概念:算法概念在软件中多处都有出现,本书第2章对其进行了统一、全面的介绍。
3减少重复,填补空缺
在软件的各分支及课程的划分中往往存在着内容的重复与空缺,而由于本书采用了统一、完整的体系,因而可以避免这些现象的出现。
在本书中我们对在多个分支中出现的重复以及多门课程中的空缺均予以合并与补充,具体如下:
1)在软件工程与数据库系统中均有系统分析与设计的内容,前者着重程序设计而后者着重数据设计,但多处内容是重复的。我们在编写中将其统一合并至软件工程内容中。
2)对软件系统中的支撑软件与应用软件往往没有专门课程予以介绍,从而造成软件整体上的缺陷,本书第8章专门对这方面进行了介绍,以填补过去的空缺。
3)对跨越软件与硬件的应用系统也往往没有专门课程予以介绍,从而造成跨越学科的缺陷,本书第10章专门对这方面进行了介绍,以填补此方面的缺陷。
4原理为主,兼顾操作
由于该课程是一门基础性课程,因此要将有关软件技术中的基本概念、思想、方法讲清楚,这是首要的事情,同时也要对关乎全局的基本操作进行介绍。而且两者要相互支撑、相互协调。
本书以介绍基本概念、思想、方法等软件技术中的原理知识为主,使学生能掌握软件技术的基本知识,同时对涉及全局的一些基本操作,如数据结构中的操作、数据库中的SQL语言以及软件工程中的结构化开发方法的基本操作流程进行介绍,而这些操作与原理是互相协调、互相支撑的,它们构成了一个完整的知识体。
5精心组织,精选内容
软件技术只是一门课程,但它的内容很多,且涉及多门软件分支与课程,如何在一门课程的有限学时中将应讲授的内容都能加以介绍,这是一个值得探讨的问题。
解决此问题的方法有两个:
1)通过前面的统一概念、减少重复等手段可以大量精简内容。
2)对每章内容通过精心组织与精选内容的方法加以精简。总而言之,采用少而精的原则,对每个章的内容抽取其最典型、最具代表性的内容并重新组织,而大胆淘汰那些非典型的、非本质的内容。
本书每章内容的精髓都作了提炼,具体如下:
第1章:重点介绍软件概念
第2章:重点介绍算法概念
第3章:重点介绍数据概念
第4章:重点介绍数据的逻辑结构及基本操作
第5章:重点介绍操作系统基本原理
第6章:重点介绍程序设计语言与编译系统基本概貌
第7章:重点介绍关系数据库管理系统的原理与基本操作
第8章:重点介绍支撑软件与应用软件的基本概念
第9章:重点介绍结构化分析与设计及文档
第10章:重点介绍应用系统开发原理
本书适合作为计算机相关专业的“计算机软件技术”课程的教材,学时以3节/周~4节/周为宜,书中有“*”标记的内容可供教师自由挑选。
本书每章都提供复习指导,供学生复习之用,并附有习题。全书还配有电子教案供教师使用。
本书由徐洁磐、李臣明及史九林联合编写,其中徐洁磐负责第1、2、3、7、8和9章;李臣明负责第5、10章;史九林负责第4、6章的编写,最后由徐洁磐负责全书统稿。
本书由东南大学孙志辉教授审稿,在审稿过程中他对全书提出了诸多宝贵意见,在此表示衷心感谢。
本书在编写过程中还得到南京大学计算机软件新技术国家重点实验室以及河海大学计算机与信息学院的支持;同时还得到了南京航空航天大学林钧海教授、宁波大学邰晓英教授的帮助和指导,在此一并表示感谢。
计算机软件技术是一门新的课程,作者经验不足,水平有限,希望广大读者提出宝贵意见,以便进一步完善。
作者于南京大学
2010年2月
计算机科学及应用
徐洁磐 李臣明 史九林 编著:待补。
前言
第一篇概论篇
第1章计算机软件概论
11计算机系统与计算机软件
12计算机软件的基本概念
13软件的分类
14计算机软件的内容
本章复习指导
习题1
第二篇基础篇
第2章算法理论
21算法的基本概念
22算法的基本特征
23算法的基本要素
24算法描述
241形式化描述
242半形式化描述
243非形式化描述
*25算法的设计
26算法评价
27一个完整的算法表示
28几点说明
本章复习指导
习题2
第3章数据基础
31数据基本概念
311数据定义
312数据组成
313数据元素
32数据操纵与数据结构
321数据操纵
322广义数据结构
33数据分类
331数据特性分析与分类
332数据的三种分类之间的关系
34数据发展历史简介
35数据理论的深层次认识
本章复习指导
习题3
第4章数据结构
41概述
411数据元素
412数据的逻辑结构
413数据的物理结构
414物理结构的实现
415关于数据结构中的算法
42线性结构
421线性表
422栈
423队列
424串
43树结构
431一般树
432二叉树
44图结构
441图的定义
442图的几个术语及基本性质
443对图的基本操作
444图的存储结构
445图的遍历
本章复习指导
习题4
第三篇系统篇
第5章操作系统
51基本概念
511什么是操作系统
512操作系统的分类
513操作系统的功能
514操作系统的结构
52CPU管理与中断管理
521进程描述与进程控制
522进程同步、互斥与进程通信
523线程
524CPU调度
525中断管理
53存储管理
531内存分配
532地址重定位
533虚拟存储器及虚拟存储管理
54设备管理
541设备管理概述
542设备控制技术
543缓冲技术
544设备的分配与调度算法
545SPOOLING技术
546设备驱动程序
547外部存储器的管理
55文件管理
551文件系统及其结构
552文件的组织结构
553文件的目录管理
554文件的存储空间管理
555文件的存取控制
556文件的操作
56操作系统的用户接口
561操作系统的用户接口分类
562三种接口方式介绍
*57常用操作系统介绍
571Windows操作系统
572UNIX操作系统
573Linux操作系统
本章复习指导
习题5
第6章程序设计语言与语言处理系统
61概述
62程序与程序设计语言
621程序和程序设计
622程序设计语言
623高级语言的文法结构
63语言处理系统
631几个有关概念
632汇编程序
633解释程序
634编译程序
635语言环境
本章复习指导
习题6
第7章数据库系统
71基本概念
711数据库系统概述
712数据管理
713数据处理
72数据模型
721数据模型的基本概念
722概念模型
723逻辑模型
724物理模型
73关系模型数据库管理系统
731数据定义功能
732数据操纵功能
733数据控制功能
74关系数据库管理系统标准语言SQL
741SQL概述
742SQL的数据定义语句
743SQL的查询语句
744SQL分层结构查询
745SQL的更新语句
746SQL的统计、计算及分类
747SQL的视图语句
748SQL的数据控制语句
*75主流数据库产品价格
751大型数据库产品Oracle
752小型数据库产品SQL Server
753桌面式数据库产品Access及VFP
本章复习指导
习题7
*第8章支撑软件与应用软件
81支撑软件
811支撑软件的基本概念
812中间件
82应用软件
821概述
822应用软件组成
823典型应用软件介绍
本章复习指导
习题8
第四篇开发篇
第9章软件工程
91软件工程概述
911软件危机与软件工程
912软件工程的基本概念
913软件开发方法
914软件开发工具
915软件开发过程
916软件开发过程中的生存周期模型
917软件产品文档与标准
918软件质量保证
919软件项目管理
92结构化开发方法
921结构化开发方法介绍
922结构化分析方法
923系统设计
924系统编码
925测试
926运行与维护
93软件工程标准化
931软件工程标准化的意义
932软件工程标准化组织与标准
933我国的软件工程标准
94软件工程中的文档
941文档的作用
942文档的分类
943常用的软件文档
944文档编制的质量要求
95软件项目管理
951软件项目成本控制
952项目进度安排
953项目管理内容
954软件配置管理
96软件质量保证
961软件质量的概念
962保证软件质量的手段
本章复习指导
习题9
*第10章应用系统开发
101应用系统开发原理
1011应用系统组成概述
1012应用系统开发步骤
102应用系统组成
1021应用系统基础平台
1022应用系统的资源管理层
1023应用系统的业务逻辑层
1024应用系统的应用表现层
1025应用系统的用户层
1026典型的应用系统组成介绍
103应用系统开发实例——嵌入式电子点菜系统
1031嵌入式电子点菜系统简介
1032需求调查
1033系统分析
1034系统设计
1035系统平台
1036系统详细设计
1037系统结构图
1038系统实现
本章复习指导
习题10
附录数据结构的部分实验程序
参考文献