还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机软件技术基础复习题和思考题答案
1.
5.1复习题
1.解释计算机程序的概念计算机程序computerprograms,简称程序,是指计算机的指令序列
2.什么是源代码程序?源代码是指以程序设计语言编写的、可读的语句和声明的集合,程序设计人员的工作就是使用程序设计语言编写源代码,源代码经过编译后转变为计算机可以执行的程序
3.什么是可执行程序?可执行程序是指包含了计算机可以直接执行的指令的文件为了与源代码相区别,可执行程序又被称为二进制代码
4.什么是计算机软件技术?计算机软件技术是与软件的设计、实施和使用相关的多种技术的统称软件的设计与实施涉及到程序设计语言、算法和数据结构、数据库系统、多媒体、软件工程等技术,软件的使用涉及到质量、可靠性、专利、知识产权、道德、法律等管理和技术
5.如何对软件进行分类?可以根据软件的功能进行分类,也可以根据软件的不同开发方式进行划分,还可以从软件的使用方式进行分类根据软件的功能来划分是一种主要的分类方式,可以把软件分为系统软件、编程软件和应用软件3大类型
6.什么是系统软件?系统软件systemsoftware指管理和控制计算机硬件、使计算机工作的软件系统软件是一种非常重要的软件类型,它为用户提供了一种操作计算机硬件的便捷方法,为其他程序提供了运行的基础
7.常见的系统软件有哪些?根据系统软件的功能特点,可以继续划分为操作系统、设备驱动程序、实用工具以及其他系统软件
8.什么是操作系统?操作系统operatingsystem,OS是位于计算机系统中的硬件和软件之间的接口,负责管理和协调计算机硬件的操作和计算机有限资源的共享
9.列出3个典型的操作系统主要的操作系统包括微软公司的Windows系列操作系统、Unix和类Unix操作系统、苹果公司的MacOSX操作系统、Linux操作系统等任意列出3个即可
10.什么是编程软件?编程软件programmingsoftware又称为编程工具programmingtool或软件开发工具softwaredevelopmenttool,是一种软件开发人员用于创建、调试、维护其他程序和应用软件的软件工具
11.IDE缩写的中文含义是什么?集成开发环境integrateddevelopmentenvironment,IDE
12.什么是应用软件?应用软件applicationsoftware是指在计算机上运行的、支持或改进软件用户工作的计算机程序或者说,应用软件可以直接完成终端用户的工作
13.如何理解业务软件的概念?业务软件businesssoftware是有助于提高业务生产效率或者度量业务生产效率的应用软件业务软件又可以细分成多种类型,包括企业软件、企业基础设施软件、信息工作者软件等
14.什么是软件架构?软件架构softwarearchitecture有时也称为软件体系结构,是对软件系统总体结构的抽象表示,主要描述软件系统的组件、组件的接口特征以及这些组件之间的关系软件架构的研究内容主要包括软件架构设计模式、软件架构描述语言、软件架构文档以及形式化方法
15.WYSIWYG是什么意思?whatyouseeiswhatyouget,所见即所得
2.
6.1复习题
1.什么是机器语言?机器语言machinelanguage也称为机器代码指令machinecodeinstruction,是指直接用二进制的机器代码指令编写的、由处理器执行的程序就是机器语言程序
2.什么是汇编语言?汇编语言assemblylanguage是指用符号代替数字机器代码指令和其他常量进行编程的程序设计语言
3.什么是1GL/2GL/3GL/4GL/5GL?机器语言是第一代语言firstgenerationlanguage,1GL汇编语言是第二代语言2GL第三代语言3GL是从2GL精炼而来的2GL侧重于改进语言的逻辑结构,3GL主要是提高了语言的用户友好性许多常见的语言都是3GL,例如FORTRAN、COBOL、BASIC、C、C++、VisualBasic、Java、C#等,都是典型的3GL第四代语言4GL是从3GL演变而来的,具有更高抽象级别程序设计语言或程序设计环境与3GL相比,4GL是针对特定目的的、面向问题和系统工程的程序设计语言5GL关注的是约束条件和逻辑,而不是如何去实现算法5GL主要用于解决人工智能领域中的问题
4.FORTRAN语言的名称有什么含义?FORTRAN是公式翻译系统formulatranslatingsystem的缩写,侧重于科学计算
5.COBOL语言的主要作用是什么?COBOL是通用商业语言commonbusiness-orientedlanguage的简称,主要用于商业、金融、行政等行业领域
6.BASIC语言的主要作用是什么?BASICbeginner’sall-purposesymbolicinstructioncode,针对初学者的一般用途的符号指令代码语言该语言采用了解释计算方式,具有简单易学的特点
7.C语言是如何产生的?1972年,ATT贝尔实验室的DennisTrichie在开发Unix操作系统的过程中,提出了C程序设计语言之所以称为C语言,是因为其来自早期的BBCPL语言
8.VisualBasic语言与BASIC语言有什么关系?VisualBasic是微软公司于1991年发布的、基于COM模型的、具有集成开发环境的第三代事件驱动式程序设计语言
9.Java语言的特点是什么?Java语言的主要特点包括纯粹的面向对象语言、跨平台、编译—解释执行、支持多线程、支持分布式应用等
10.ColdFusion语言的作用是什么?一种用于Web开发的语言
11.什么是指令式程序设计语言风格?指令式程序设计风格imperativeprogrammingparadigm是指根据改变程序状态的语句描述计算过程的程序设计风格也就是说,指令式程序包含了计算机按照序列执行的指令或语句,描述计算机如何执行相应的操作
12.什么是过程式程序设计语言?过程式程序设计语言proceduralprogramminglanguages是一种为程序设计人员提供准确定义任务执行步骤的语言在过程式程序设计语言中,程序设计人员可以指定计算机将要执行的详细的算法步骤
13.面向对象程序设计语言有哪些特点?面向对象程序设计语言object-orientedprogramminglanguages,OOP语言是指采用封装性、继承性、模块化、多态性等面向对象技术进行程序设计的语言这种语言采用由数据和方法组成的对象结构和对象之间的关系进行应用程序的设计对象、类、实例、方法、消息、继承、封装、多态等特性都是面向对象程序设计语言中的基本概念目前,大多数的程序设计语言都是面向对象程序设计语言或具备面向对象技术特征,
14.特定领域语言的作用是什么?特定领域语言domainspecificlanguages是用于解决特殊领域中特殊问题表示技术和解决方案的程序设计语言典型的特定领域语言包括正则表达式、层叠样式表cascadingstylesheets,CSS、SQL查询语句、标记语言例如HTML、XML等等
15.什么是脚本语言?脚本语言scriptinglanguage是一种嵌入在另一种语言中、可以控制应用程序的程序设计语言
16.解释概念语句、变量、表达式、运算符、赋值、注释语句是程序设计语言的重要概念在指令式程序设计语言中,语句是组成语言的最小的独立元素语句本身是由许多语言元素组成的在语句中,常用的语言元素包括变量、常量、运算符、表达式、函数、赋值等变量是一种其值可变的标识符表达式是构成语句的重要元素在程序设计语言中,表达式是常量、变量、运算符、函数调用等按照优先级规则组成的序列运算符可以用来操作数据和比较信息等程序设计语言中的运算符是类似于数学运算符的集合常见的运算符有算术运算符、比较运算符、逻辑运算符、字符串运算符等类型赋值是改变变量值的一种基本手段注释是对代码或算法的详细描述在处理注释时,任何编译程序或解释程序都会忽略注释
17.基本数据类型包括哪些数据类型?一般地,基本数据类型包括整数类型、浮点数据类型、字符类型和字符串类型、布尔类型、枚举类型等
18.解释概念数组类型、记录类型、指针类型数组是描述一组具有相同数据类型的变量这一组变量经常被称为数组变量、数组值或简称为数组记录类型,又称为元组类型或结构类型,是一种定义多个内存位置连续的变量的数据类型记录中的各个组成部分,均称为记录域指针变量也是一种数据类型,其值通过地址指向另一个变量值
19.什么是程序控制结构?有哪些典型的程序控制结构?程序在执行过程中,可以根据需要改变程序的执行顺序程序有3种基本结构类型,即顺序结构、条件分支结构和循环结构
20.什么是子例程?子例程是某个主程序的一部分代码,该代码执行特定的任务并且与主程序中的其他代码相对独立子例程又被称为子程序、过程、方法、函数等在主程序中可以调用子例程来执行
3.
9.1复习题
1.简述多媒体的概念多媒体是指通过计算机或其他媒介传播的文字、图形、图像、声音、视频、动画等多种媒体的组合
2.分析多媒体的特点与传统的数值相比,多媒体具有许多特性,包括信息载体的多样性、集成性、交互性、时间相关性、数据量大等
3.什么是多媒体技术?根据技术的作用,可以将多媒体技术划分为多媒体数据压缩技术、多媒体软件技术、多媒体硬件平台技术、多媒体数据管理技术、多媒体展示技术、多媒体人机交互技术、多媒体通讯技术等根据多媒体元素的特点,可以把多媒体技术划分为图形处理技术、图像处理技术、音频处理技术、动画处理技术、视频处理技术等因此,多媒体技术是指对多媒体的采集、加工处理、存储、传输、应用等相关技术,也可以说,多媒体技术是图形、图像、音频、动画、视频等相关技术的集成
4.什么是有损压缩方法?什么是无损压缩方法?有损压缩方法lossycompression是指还原后的数据与压缩前的原始数据不相同,数据中的部分信息在压缩过程中损失了无损压缩方法losslesscompression是指还原后的数据与压缩前的原始数据是完全相同的,压缩过程中没有丢失原始数据的信息
5.JPEG和MPEG分别是什么意思?JPEG是JointPhotographicExpertsGroup静态图像专家组的简称,是静态图像压缩方法,是Internet上使用最为广泛的图像格式这是一种有多种压缩程度的有损压缩方法,其文件名后缀包括.jpg、.jpeg等数字视频音频的主要压缩标准是MPEGMovingPictureExpertsGroup,动态图像专家组
6.简述RLE的基本思想RLE是一种简单的数据无损压缩方法一般地,RLE的编码格式为fcn,其中f表示压缩标志,c表示字母字符,n表示字面字符的计数器
7.简述Huffman编码法的基本过程Huffman编码法是DavidHuffman于1952年在其博士论文中提出的,是一种基于概率的、变长度编码表进行压缩的编码方法,目的是找到最有效的二进制编码Huffman编码法是一种数据无损压缩方法.
8.比较矢量图和位图的特点由点、直线、曲线、多边形等基于数学公式的几何图形构成的图像称为矢量图vectorgraphics矢量图采用数学公式来存储几何图形位图bitmappixmap是指由像素点直接构成的图像BMP就是一种典型的位图格式矢量图是在运行时创建的,是计算机根据收到的指令绘制图像,而不是显示已经创建好的图像因此,矢量图是可伸缩的,其分辨率或图像质量不会下降同样的矢量图文件,当矢量图被放大时,一般都能比较清晰的显示图形
9.什么是加色模型?RGB是什么意思?加色模型指颜色是通过组合三种原色红色R、绿色G和蓝色B光源而生成的这种模型也称为RGB颜色模式
10.什么是减色模型?CMYK是什么意思?在减色模型中,利用涂料或墨水吸收色谱中的一部分颜色,将其余颜色反射到眼睛中,形成颜色CMYK颜色模式就使用了减色模型在进行打印时,青色Cyanic、洋红色Magenta、黄色Yellow和黑色blacK,black的简称是K,B指蓝色墨水被打印出形成全色图形
11.简述TIFF、BMP、GIF、PNG、SVG图像文件格式的特点TIFFtaggedimagefileformat,标记图像文件格式是一种主要用于桌面印刷的图像文件格式在图像扫描、传真、文字处理、光学字符识别等领域都有广泛地应用BMP是微软操作系统中处理图像的文件格式BMP文件是非压缩的,因此BMP文件的字节比较大BMP的优点是结构简单,可以应用于大多数应用程序中GIFgraphicsinterchangeformat,图像互换格式是CompuServe公司于1987年开发的图像文件格式GIF文件采用了基于LZW算法的连续色调的无损压缩算法进行压缩,压缩率一般在50%左右,它不属于任何应用程序PNGportablenetworkgraphic,流式网络图形格式是一种位图文件存储格式,使用了基于LZ77派生的无损数据压缩算法PNG的一个重要目的是在Internet上替代GIF文件格式SVG的英文全称为ScalableVectorGraphics,意思为可缩放的矢量图形它是基于XML(ExtensibleMarkupLanguage),由WorldWideWebConsortium(W3C)联盟进行开发的是一种开放标准的矢量图形语言
12.简述数字音频的特点数字音频是指用数字表示的声音波形数字化的录音过程是,每隔n分之一秒,就采样一次声音,以位或字节的形式存储为数字数字录音的质量取决于声音采样的采样率和每个样本值用多少数字表示的采样深度采样率的单位是KHz,表示每秒钟采样的千次数
13.简述CD、WAV、AU、MIDI、RA、MP
3、WMA音频文件格式的特点CDcompactdiscdigitalaudio,光盘数字音频是1980年飞利浦和索尼公司联合发布的用于存储声音信号轨道,例如音乐、歌曲的标准CD格式CD的采样率是
44.1KHz,16位采样深度,立体声由于最早的数字编码方法标准书的封面是红色的,因此CD又称为红皮书标准MIDImusicalinstrumentdigitalinterface,音乐设备数字接口是1982年发布的,是为电子音乐设备和计算机之间的通信而开发的通信标准MIDI允许不同制造商生产的音乐和声音合成器通过在设备之间连接的电缆发送消息,实现相互通信MIDI提供的协议用于传递乐谱的具体描述,例如音符、音符序列、演奏这些音符的乐器等MIDI数据不是数字化的声音,而是以数字形式存储的乐谱速记符号MIDI文件是一组带有时间戳的、记录了演奏音乐动作的命令因此,MIDI文件往往比数字化波形文件小得多WAVwaveformaudioformat,波形音频文件格式是微软开发的用于存储音频字节流的音频文件标准WAV是一种非压缩的音频格式,是Windows系列操作系统中使用的主要音频文件WAV文件尺寸比较大,大约每分钟10MB苹果Macintosh计算机系统使用的主要音频文件格式是AIFFAIFFaudiointerchangefileformat,音频交换文件格式是一种用于在个人计算机和其他电子音频设备上存储声音数据的音频文件格式AIFF本身是一种非压缩的音频格式,经过压缩后的AIFF文件称为AIFF-C或AIFCAIFF是一种音频视频应用程序使用的专业标准,其文件名后缀是.aiff德国爱尔兰根的Fraunhofer研究所开始研究致力于高质量、低数据量的声音编码20世纪80年代中期,该研究所在德国取得了MP3的专利权1991年,这项技术被提交到国际标准组织,整合进了MPEG-1标准MP3MPEG-1AudioLayer3是一种基于有损数据压缩方法生成的音频文件格式正常人耳只能听到频率在20Hz至20KHz的声音,音频文件中包含的一些声音超出了人耳所能听到的范围将音频文件压缩成MP3文件的基本思想是利用MP3编码器找到并删除音频文件中人耳听不到的声音MP3的压缩率高达10:1-12:1,其主要参数如下采样频率
44.1kHz、采样精度16位、立体声WMAWindowsmediaaudio,Windows媒体音频是微软开发的音频数据无损压缩技术,可以生成音频文件或音频编码WMA的主要特点是压缩率比较高,音质高,与WindowsMediaPlayer无缝捆绑,适于在网络上播放等RA是RealAudio的缩写,是RealNetworks公司于1995年开发的专有的音频文件格式该格式采用一系列的音频编码方法,采用了流音频格式,可以在网上边播放边下载
14.什么是帧率?帧率framepersecond,FPS,也称为画面更新率,是指视频格式每秒钟播放的静态画面数量典型的帧率由早期的每秒6或8张,至现今的每秒120张不等PAL与SECAM规定其画面更新率为25FPS,NTSC则规定其帧率为
29.97FPS,电影胶卷则是以24FPS在拍摄要达成最基本的视觉暂留效果大约需要10FPS的速度
15.简述MPEG、AVI、RMVB、WMV视频文件格式的特点MPEG包括MPEG-
11993、MPEG-
21995、MPEG-
41998、MPEG-72001等在内的多种视频格式大部分的VCD都是用MPEG-1格式压缩的,使用MPEG-1压缩算法,可以把一部120分钟长的电影压缩到
1.2GB左右MPEG-2是制作DVD和数字电视的标准使用MPEG-2压缩算法压缩一部120分钟长的电影可以压缩到5-8GB的大小,但是其图像的分辨率和质量更高采用MPEG-4技术,场景可以实现多视图、多图层、多音轨、立体声和三维视角,使得虚拟现实成为可能MPEG-7可以更好地描述多媒体的内容AVIAudioVideoInterleaved,音频视频交错是微软公司于1992年发布的多媒体技术AVI文件可以包含音频和视频两种数据,支持多种流音频和视频WMVWindowsmediavideo,Windows媒体视频是微软公司发布的压缩视频文件格式微软公司希望WMV能取代RealVideo之类的技术标准WMV具有可扩充的媒体类型、本地或网络回放、多语言支持等特点RMVBRealMediavariablebitrate,RealMedia可变比特率是RealNetworks公司开发的可变比特率的多媒体文件格式RMVB是一种由RM视频格式升级延伸出来的视频格式,其主要特点是打破了原先RM格式的那种平均压缩采样的方式,在保证平均压缩比的基础上合理利用比特率资源静止和动作场面少的场景采用较低的编码速率,这样可以留出更多的带宽空间,而这些带宽会在出现快速运动的画面场景时被利用这样,在保证了静止画面质量的前提下,大幅提高了运动图像的画面质量
16.简述动画的基本原理动画的基本原理是“视觉暂留”的生理学现象和“相似”的心理学现象人眼看到物体后,其影像会在视网膜上短暂地停留一会儿一般认为1/24秒内不会消失,再加上大脑要完成一个感知的过程,当一系列图像变化非常细微,且变化速度非常快时每秒至少24帧画面,他们看起来似乎混合在一起了,从而构成一种运动的视觉假象
17.简述多媒体软件的开发过程多媒体软件开发过程是指多媒体软件的规划、需求分析、故事情节板绘制、脚本编写、软件结构设计、多媒体元素准备、创建动画程序、测试、试运行和运行的整个过程
4.
11.1复习题
1.什么是算法?一般地认为,算法algorithm是一系列有限的解决问题的指令也就是说,算法是指能够对一定的规范的输入,在有限时间内获得所要求的输出算法也可以理解为是由规定的运算顺序所构成的完整的解题步骤还有些专家认为,算法是一个有穷规则的集合,这些规则规定了解决特定问题的运算序列
2.算法的基本特征是什么?有穷性是指任何算法在经过有限的步骤之后总会结束,步骤的数量是一个合理的数字实际上,算法的有穷性包含了时间的含义如果某种算法从理论上可以实现,但是运行时间过长例如要运行200年则可能失去了实际的应用价值确定性是指算法的每一个步骤都是精确定义的,在任何情况下这些步骤都是严密的、清晰的该特征是指算法不允许出现模棱两可的解释、不允许有多种不同的理解,不同的人、不同的环境下对同一种算法的理解应该是明确的、唯一的输入是指算法开始运算时给定的初始数据,这些输入是与特定的运算对象关联的输出是指与输入相关的运算结果,反映了对输入数据加工后的情况可行性是指算法的每一个步骤都是可以实现的,即使人们用笔和纸进行手工运算,那么在有限的时间内也是可以完成的
3.列出算法的表示方法表示算法的方式有多种,常用的方法包括自然语言、流程图、程序设计语言、形式化方法等不同的表示方法有不同的特点和作用
4.一般流程图有哪些图形元素?在一般流程图中,主要的图形元素包括开始/结束标志、箭线、处理框、输入/输出框、条件判断框等
5.NS图的特点是什么?NS图是Nassi-Shneiderman图的简称,有时也称为N-S图、盒图等,是1972年IsaacNassi和BenShneiderman提出的结构化表示程序的图形NS图遵循自顶向下的原则,将问题对象逐步分解为一个个小问题、再继续分解,直到可以使用简单的语句或控制流程图表示为止
6.什么是形式化方法?形式化方法是一种描述计算机软件和硬件系统思想的数学方法形式化方法主要用于规格说明、设计开发、系统验证等使用形式化方法的主要好处是可以准确地描述系统或算法的思想,可以满足工程原理验证、执行性能估算、系统可靠性验证等作用
7.什么是计算复杂度?衡量计算复杂度的主要标准是什么?计算复杂度表示应用一种算法需要付出多大的努力或成本是多少计算成本可以用多种不同的标准衡量,时间成本和空间成本是两个最常用的成本标准时间成本是指程序处理数据所耗费的时间度量,空间成本则是指程序处理数据时所耗费的存储空间的度量
8.列出常见的算法类型按照实现方式分类,可以将算法分为递归算法、迭代算法、逻辑算法、串行算法和并行算法和分布式算法、确定性算法和非确定性算法、精确算法和近似算法等如果根据设计方法来分类,可以将算法分为穷举法、分治法、线性规划法、动态规划法、贪心算法、回溯法等
9.解释下列算法的概念迭代算法、穷举法、分治法、逻辑算法、确定性算法、精确算法、近似算法迭代算法iterationalgorithms是采用计算机解决问题的一种基本方法该算法主要是利用计算机运算速度快、适合做重复性操作的特点,让计算机重复执行某种结构或一组指令或一些步骤,在每次执行这种结构或指令或步骤时,都从变量的原值推出它的一个新值也就是说,迭代算法通过从一个初始值出发寻找一系列近似值来解决问题迭代算法的基本步骤包括确定迭代变量、建立迭代关系式、对迭代过程和结束方式进行控制穷举法exhaustivesearch,又称为强力搜索法brute-forcesearch、枚举法enumerationmethod,是一种解决问题的基本方法,该方法枚举出所有可能的解决方案,然后对每一个可能的解决方案进行测评以便找到满足条件的方案分治法divideandconqueralgorithm的基本思想是把一个大问题分解成多个子问题,这些子问题可以继续再分解递归方式,直到分解后的子问题容易解决为止,然后把这些子问题的解决方案组合起来得到最终的结果逻辑算法logicalalgorithms又称为逻辑演绎、演绎逻辑,是一种以一般概念、原则为前提,推导出个别结论的思维方法,即根据某类事物都具有的一般属性、关系来推断该类事物中个别事物所具有的属性、关系的推理方法确定性算法deterministicalgorithms是最常见到的算法,其计算行为是可预测的在确定性算法中,给定一个特定的输入,总是会产生相同的输出结果,且其计算过程总是一样的精确算法exactalgorithms是指总是可以找到最优解的算法近似算法approximatealgorithms则是指寻找接近最优解的满意解的算法
10.解释下列算法的概念并行算法、串行算法、分布式算法、线性规划法、动态规划法、贪心算法、回溯法如果算法指令在计算机中执行的过程是一个指令接着一个指令,在指定的时刻只能有一个指令在执行,那么该算法是就串行算法serialalgorithms并行算法parallelalgorithms是并行计算中的重要问题,指在并行机上同时用很多个处理器联合求解问题的方法分布式算法distributedalgorithms是一种可以借助计算机网络进行运算的方法线性规划法linearprogrammingmethod,LPM又称为线性规划技术,是一种解决多变量最优决策的典型方法线性规划法是指在各种相互关联的多变量约束条件下,解决一个对象的线性目标函数最优化的问题其中,目标函数是决策者要求达到目标的数学表达式,用一个极大或极小值来表示;约束条件是指实现目标的能力资源和内部条件的限制因素,用一组等式或不等式表示动态规划法dynamicprogrammingmethod,DPM是1953年美国应用数学家RichardBellman提出用来解决多阶段决策过程问题的一种最优化方法多阶段决策过程是把研究问题分成若干个相互联系的阶段,每一个阶段都做出决策,从而使整个过程达到最优化动态规划法是一种多阶段决策方法,其基本思想是按时空特点将复杂问题划分为相互联系的若干个阶段,在选定系统行进方向之后,从终点向始点逆向计算,逐次对每个阶段寻找决策,使整个决策过程达到最优该方法又称为逆序决策过程贪心算法greedyalgorithms类似于动态规划法,在对问题求解时,先把问题分成若干个子问题,总是贪心地做出在当前看来是最好的选择也就是说,贪心算法不是从整体最优上加以考虑,所做出的决策仅是在某种意义上的局部最优解回溯法backtrackingalgorithms是一种选优搜索法,按选优条件向前搜索,以达到目标当搜索到某一步时,发现原先选择并不优或达不到目标,就退回上一步重新选择这种走不通就退回再走以便达到优化目的的方法称为回溯法
11.简述递归法的思想和特征递归法是一种思考和解决问题的方式,是计算机科学的核心思想之一递归法的主要思想是将一个初始问题分解成为比较小的、有着相同形式的子问题,直到子问题足够简单、能够被理解并解决为止,然后再将所有子问题的解组合起来得到初始问题的结果每个递归过程都包含如下两个步骤1一个能够不使用递归方法可以直接处理的基本情况;2一个常用的方法,能够将一种特殊的情况化解为一种或多种规模较小的情况,持续下去,最终将问题转换为对基本情况的求解
12.解释下列搜索算法的概念顺序搜索、二分搜索、散列搜索顺序搜索sequencesearch是一种最基本的搜索算法,该算法在一组数据元素组成的集合中按照关键项搜索指定的数据元素这些数据元素组成的集合往往是数组或链表等线性结构,因此顺序搜索也称为线性搜索linearsearch二分搜索算法binarysearch是指在一个有序数据集中,假设数据元素递增排列,搜索项与数据集的中间位置的数据元素进行比较,如果搜索项小于中间位置的数据元素,则只搜索数据集的前半部分;否则,搜索数据集的后半部分如果搜索项等于中间位置的数据元素,则返回该中间位置的数据元素的地址,搜索成功结束散列搜索的主要思想是根据指定的关键项值,计算其散列地址,然后根据散列地址在散列表中搜索如果该地址中的数据元素为空,则搜索失败;如果该地址中有数据元素存在,且该数据元素的关键项值与待搜索的关键项值相等,则搜索成功;如果该地址中有数据元素存在,但该数据元素的关键项值与待搜索的关键项值不相等,则按照散列冲突解决方法在下一个散列地址中搜索
13.解释下列排序算法的概念冒泡排序、插入排序、选择排序冒泡排序bubblesort是一种简单的互换类排序算法,其基本思想是比较序列中的相邻数据项,如果存在逆序则进行互换,重复进行,直到在一次比较过程中没有互换发生为止插入排序insertionsort是一种将无序列表中的数据元素通过依次插入到已经排序好的列表中的算法插入排序算法具有实现简单、对于少量数据排序效率高、适合在线排序等特点选择排序算法selectionsort的主要思想是,扫描数据序列,找到最小的数据,将该数据交换到序列最前面的位置,然后对其余数据序列重复前面的步骤直到数据全部排序为止
14.什么是数据结构?数据结构的研究内容是什么?数据结构是由数据元素根据某种逻辑关系组织起来以便有效使用的数据元素的集合数据结构的研究内容主要包括3个方面数据的逻辑结构、数据的存储结构和数据的运算方式数据逻辑结构是指对数据元素之间的逻辑关系的描述;数据必须在计算机内存储,数据的存储结构是数据结构的物理实现形式,是其在计算机内的关系表示,数据的存储结构也称为数据的物理结构;数据运算方式是指在分析研究数据结构时,需要同时讨论在该类数据上执行的运算才有意义
15.什么是集合结构?说出集合结构的典型操作集合set是一种用于存储数据的简单数据结构,数据元素之间没有特定的顺序而且不能重复如果集合中的数据元素在使用过程中不再改变,那么这种集合称为静态集合,静态集合只能执行查询操作如果集合中的数据元素可以在使用过程中改变,那么这种集合称为动态集合,动态集合可以执行插入、删除、更新等操作集合结构的典型操作包括●buildx1x2…xn创建一个包含了x1x2…xn数据的集合;●element_ofxS检查S集合中是否存储数据x;●emptyS检查S集合是否为空;●sizeS返回S集合中的数据元素的数量;●enumerateS按照任意顺序列出S集合中的数据;●pickS返回S集合中的任意一个数据
16.什么是线性表?线性表的基本特点是什么?列出线性表的基本操作线性表linearlist是由nn≥0个数据元素组成的有限序列a1a2…an,该序列存在唯一的一个第一元素和唯一一个最后元素当n=0时,线性表为空表线性表序列中的每个数据元素,除了第一个之外,都有且仅有一个前驱元素;除了最后一个数据元素之外,都有且仅有一个后继元素在该序列中,所有的数据元素都有相同的结构线性表的基本操作如下●buildL创建新表L;●setNullL置空表L;●lengthL求表L的长度,或者求表中元素个数;●getLi取表中第i个元素1≤i≤n;●priorLi取第i个元素的前驱元素;●nextLi取第i个元素的后继元素;●locateLx返回指定元素x在表L中的位置;●insertLix在表L中的第i个位置插入元素x;●deleteLx删除表L中指定的元素x;●sortL排序表L中的元素;●emptyL判别表L是否为空
17.链表有哪些特点?链表linkedlist是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列也就是说,结点包含两部分信息一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点链表中的最后一个结点没有后继元素,其指针域为空
18.树的基本特点是什么?列出树的主要运算方式树结构中有许多节点每个节点既可以是一个值,也可以是包含了一组值,甚至可以是另外一个独立的数据结构在树结构中,根root是起始节点每个节点有零个或一个或多个子节点childnode有子节点的节点称为子节点的父节点parentnode一般地,在通常绘制的树结构图中,子节点总是位于父节点之下一个子节点最多只能有一个父节点没有子节点的节点就好象大自然中的树叶一样,被称为叶子节点leafnode在树结构中,节点的高度是从该节点开始向下到叶子节点的最长的路径树的高度是指根节点的高度树的主要运算包括●创建树;●列出树的所有数据元素;●列出树的部分数据元素;●在树中搜索指定的数据元素;●在树的指定位置增加数据元素;●在树中找到指定节点的父节点;●在树中找到指定节点的子节点;●删除指定的某个数据元素;●删除指定的子树;●增加一个数据元素;●增加一个子树;●计算树的高度
19.什么是二叉树?简述二叉树中序遍历算法的基本思想二叉树是指父节点最多有两个被称为左、右子节点的树下面给出二叉树的递归定义二叉树T或者为空或者符合下面的描述1T有一个特殊的节点,称为根节点;2T有两个节点集合,LT和RT,分别称为T的左子树和右子树;3LT和RT都是二叉树在中序遍历算法中,遍历二叉树的顺序是遍历左子树、访问节点、遍历右子树通过中序遍历算法访问节点得到的节点序列称为中序序列
20.什么是图?图graph是由一个顶点集V和一个边集E组成的数据结构,其中E是顶点连接对如果用G表示图,则G=VE
21.什么邻接矩阵?什么是邻接表?设G是一个有nn0个顶点的图,VG={v1v2…vn},则邻接矩阵AG是一个n阶二维矩阵在该矩阵中,如果vi至vj有一条边,则ij项的值为1,否则为0G是一个有nn0个顶点的图,VG={v1v2…vn}在邻接表中,每个顶点v都对应着一个链表,该链表的每个节点都包含一个顶点u,且vu∈EG因为图中有n个顶点,所以可以利用一个长度为n的数组A,Ai指向第i个顶点对应的链表的第一个节点,链表由顶点vi的全部邻接顶点组成
22.简述深度优先遍历和广度优先遍历算法的基本思想深度优先遍历算法的基本思想是假设遍历过程中访问到顶点v,与顶点v邻接的顶点分别是w
1、w
2、…、wn下一步访问的顶点是w1,其他顶点等待访问顶点w1访问之后,再遍历所有与顶点w1相邻的顶点直到与顶点w1相关的所有顶点访问结束之后,再依次访问顶点w
2、…、wn,直到所有顶点访问结束为止广度优先遍历算法的基本思想是假设遍历过程中访问到顶点v,与顶点v邻接的顶点分别是w
1、w
2、…、wn下一步访问的顶点依次是w
1、w
2、…、wn,这些顶点访问之后,再依次访问与这些顶点相邻的顶点,直到所有顶点访问结束为止
5.
7.1复习题
1.简述数据库技术的演变过程从历史的发展来看,信息技术的快速发展、社会对信息需求的不断增强、信息资源的作用日益显现,是推动数据库技术发展的主要动力从数据管理的实践来看,数据库技术的演变过程是从手工管理、面向文件的数据管理阶段逐渐向面向数据库系统的数据管理阶段发展的过程
2.解释数据冗余性、数据不一致性数据冗余性dataredundancy是指同一个信息在多个数据文件中同时出现当多个不同的部门独立采集同一种信息时,就发生了这种冗余性数据不一致性datainconsistency是指由于同一种信息数据在多处采集和维护,有可能造成同一种信息有不同的数据表示
3.简述数据库管理系统阶段的特点1使用复杂的数据模型表示结构在这种系统中,数据模型不仅描述数据本身的特征,而且还要描述数据之间的联系这种联系通过存取路径来实现通过所有存取路径表示自然的数据联系是数据库系统与传统的文件系统之间的本质区别这样,所要管理的数据不再面向特定的某个或某些应用,而是面向整个应用系统,从而极大地降低了数据冗余性,实现了数据共享2具有很高的数据独立性数据的逻辑结构与实际存储的物理结构之间的差别比较大用户可以使用简单的逻辑结构来操作数据,而无需考虑数据的物理结构,该操作方式依靠数据库系统的中间转换在物理结构改变时,尽量不影响数据的逻辑结构和应用程序这时,就认为数据达到了物理数据的独立性3为用户提供了方便的接口在该数据库系统中,用户可以非常方便地使用查询语言,例如SQLstructuredquerylanguage,结构化查询语言或实用程序命令来操作数据库中的数据,也可以以编程方式例如在高级程序设计语言中嵌入查询语言操作数据库4提供了完整的数据控制功能这些功能包括并发性、完整性、可恢复性、安全性和审计性并发性是允许多个用户或应用程序同时操纵数据库中的数据,而数据库依然保证为这些用户或应用程序提供正确的数据;完整性是指始终包含正确的数据,例如通过定义完整性的规则使数据值可以限制在指定的范围内;可恢复性是指在数据库遭到破坏之后,系统有能力把数据库恢复到最近某个时刻的正确状态;安全性是指只有指定的用户才能使用数据库中的数据和执行允许的操作;审计性是指系统可以自动记录所有对数据库系统和数据的操作,以便跟踪和审计数据库系统的所有操作5提高了系统的灵活性对数据库中数据的操作既可以以记录为单位,也可以以记录中的数据项为单位例如,在SQL语言中,可以使用SELECT语句指定记录或记录中的数据项
4.解释下面的概念数据库、数据库管理系统、数据库系统、数据库技术数据库database是采用计算机技术统一管理的相关数据的集合,数据库能为各种用户共享,具有最小冗余度、数据之间联系密切、有较高的数据独立性等特点数据库管理系统databasemanagementsystem,DBMS是位于用户与操作系统之间的一层数据库管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的建立、查询、更新以及各种数据库控制等DBMS总是基于某种数据模型的,这些模型可以分为层次模型、网状模型、关系模型、面向对象模型等例如,MicrosoftSQLServer是一种基于关系模型的DBMS,我们称这种DBMS为关系型DBMS数据库系统databasesystem,DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机软件、硬件和数据资源组成的系统,是采用数据库技术的计算机系统数据库技术是研究数据库的基本原理、组成结构、数据存储、结构设计、系统管理和应用的一门计算机软件学科
5.什么是数据模型?什么是数据建模?数据模型datamodel是描述数据如何表示、如何访问的抽象模型,常用来定义特定领域的数据元素和数据元素之间的关系在程序设计语言中,数据模型也常常称为数据结构在数据库领域中建立的数据模型称为数据库模型数据库模型databasemodel是描述数据库结构和使用的方法和技术数据建模datamodeling是采用特定的方法和技术创建具体的数据模型的过程,用于定义和描述数据集合如果在数据库中建立数据模型,那么这种建模技术称为数据库建模databasemodeling
6.列出常见的数据库模型并简述这些模型的特点常见的数据库模型包括层次模型、网状模型、关系模型、对象关系模型、对象模型、多维模型等层次模型hierarchicalmodel是一种按照树状结构来组织数据的方式,层次模型主要用于早期大型机的数据库管理系统中和对XML文档数据的描述这种模型适合描述两种数据之间存在一对多的父子关系的客观对象,例如组织结构、产品结构、生物分类、XML文档等数据网状模型networkmodel是一种按照网状结构来组织数据的方式,在此结构中,每个节点都可能与其他节点之间建立关系网状模型适合于描述具有冗余数据的数据元素之间的关系关系模型relationalmodel最早是由E.F.Codd于1970年基于关系代数理论提出的,目的是使得数据库管理系统独立于各种应用程序关系模型的基本数据结构是用来描述实体的表,表是数据行的集合,表中的列描述了数据行的属性数据库中的多个表之间往往彼此关联
7.简述数据库管理系统的组成结构系型数据库管理系统的主要组成部分包括用户接口驱动程序、SQL引擎、事务处理引擎、关系引擎、存储引擎等对象数据库管理系统的组成包括程序设计语言驱动程序、查询引擎、事务引擎、存储引擎等
8.什么是ACID属性?事务处理引擎具有ACID属性,A表示原子性Atomicity,C表示一致性Consistency,I表示独立性Isolation,D表示持久性Durability原子性表示事务的执行全部完成或全部不完成;一致性的含义表示无论系统处于何种状态,都能保证数据库中的数据处于一致状态;独立性表示两个或多个事务可以同时运行而不互相影响;持久性表示事务的工作完成之后,工作结果会永远保存,即使系统失败也是如此
9.简述数据库技术的作用一般地,数据库技术主要用来管理大量业务数据、定义数据库、执行数据库操作、控制多用户访问等
10.表的特点是什么?一般而言,表具有以下基本特点代表实体、由行和列组成、行和列的顺序是不重要的等等
11.什么是数据库范式?数据库范式normalform,NF是确保数据库结构合理,满足各种查询需要、避免数据库操作异常的数据库设计方式第一范式是最基本的范式如果表中的所有属性值都是不可再分解的原子值,那么称该表是满足第一范式firstnormalform,1NF的要求在满足第一范式的基础上,所有的非主键属性值全部依赖于主键值,不存在部分依赖现象,这时的表称为满足第二范式secondnormalform,2NF的要求在满足第二范式的基础上,如果所有的非主键属性都不存在传递依赖现象,则称该表满足第三范式thirdnormalform,3NF的要求
12.什么是操作异常现象?数据冗余的含义是表示相同信息的数据在表的多个行中重复出现修改异常的含义是当我们修改了表中某一行的信息后,该表中另一行中相同的信息却没有被修改插入异常的含义是当我们向表中插入一行数据时,仅仅知道该行的一部分数据,另外一部分数据则不知道,结果这些已知的数据由于那些未知的数据而很难在表中正确地插入删除异常的含义是如果某些属性的值变为空,那么可能会丢失其他一些有用的信息
13.列出常见的数据库对象并简述其特点数据库中有许多对象,最基本的对象就是表,除此之外,视图、索引、存储过程、触发器等都是常见的数据库对象在关系型数据库系统中,表table是最基本的数据库对象,用于存储数据视图、索引、触发器等对象都与表对象有直接的关系视图view是由查询语句构成的对象,是一种查看表中数据的方式在许多应用程序开发过程中,往往不是直接查询表中的数据,而是通过查询视图来获得表中的数据在数据库中,索引index是一种可以加快检索表中数据的数据结构在创建索引时,需要基于表中的一个或多个列进行创建就像表耗费空间一样,索引也同样耗费空间在一个表上,可以创建一个或多个索引对象优化表上的索引结构,往往可以显著地提高数据库应用程序的效率存储过程storedprocedure是一组预编译的命令或子例程,可以在数据库中执行相关的操作存储过程的执行需要明确地调用,既可以在应用程序访问数据库系统时调用,也可以在数据库中直接执行存储过程主要用来完成数据校验、访问控制等功能与存储过程非常类似的数据库对象是触发器trigger,该对象也用来在数据库中执行特定的操作,但是触发器的执行是自动的触发器是指当执行某种操作时自动执行的代码块这些操作既可以是针对表的插入、更新等操作,也可以是针对视图的操作,还可以是针对数据库的操作例如,当在财务表上执行插入操作时,该操作的基本信息可以借助于触发器的功能自动记录在审计表中
14.什么是ERD图?如何绘制ERD图?实体关系图entityrelationshipmodel,ERD是一种描述数据库中数据之间逻辑关系的图形在数据库设计过程中,经常使用ERD图ERD图有时也称为E-R图、ER图等ERD有3个基本元素实体、关系和属性实体entity是客观存在的、可以被唯一识别的事物实体可以是学生、教师、课程、图书、数码相机等物理对象,也可以是像业务流程、选修课程、图书销售等发生的客观事件或概念一般地,常用名词短语来描述实体在ERD图中,常用直角矩形来表示实体关系relationship描述了两个或两个以上的实体之间的关联,常使用动词短语来描述关系例如,“购买”关系描述了用户与图书之间的关系,“选修”关系描述了学生与课程之间的关系在ERD图中,常使用菱形表示关系,菱形通过直线与表示实体的直角矩形连接起来,并且在关系两旁标上联系的类型,1:1联系、1:N联系或N:N联系在ERD图中,实体和关系都可以有属性,属性attribute描述了实体或关系的特征例如,学生实体的属性包括学号、姓名、性别、班级、电话等,连接学生和课程的选修关系的属性包括学号、课程代号、考试成绩等属性往往使用椭圆来表示,通过直线与实体或关系连接起来一般地,每个实体都有一个能够唯一地确认该实体的属性,该属性称为主键属性在ERD图中,常常在属性名称下面加下划线来表示主键属性
15.什么是数据完整性?数据完整性是指确保存储在数据库中的数据的一致性和准确性的约束或规则数据完整性有3种基本类型,即域完整性、实体完整性和参考完整性
16.什么是数据库的安全性?安全是数据库管理员的重要任务之一数据库的安全性是保障数据库不受非法用户访问的方法和机制,是计算机安全性的一个重要组成部分常用的数据库的安全性包括系统认证、访问控制、监视和审计、数据加密等方法
17.简述数据库的开发过程数据库开发过程是指设计和实现一个可以满足用户需求和使用的数据库的过程一般地,数据库开发过程包括4个阶段,即概念数据建模、逻辑数据库设计、物理数据库设计和数据库实现和维护
18.什么是SQL语言?SQL是结构化查询语言StructureQueryLanguage的简称,是当前流行的数据库语言在数据库中,可以使用SQL语言执行对象定义、数据操纵、权限管理、流程控制等操作
19.列出常用的数据操纵语句数据操纵语句用于在数据库中操纵各种对象,检索和修改数据,包括SELECT、INSERT、UPDATE、DELETE等语句SELECT语句是检索语句,可以从表中检索数据;INSERT语句是插入数据语句,可以把数据插入到表中;UPDATE语句是修改数据语句,可以对表中的数据进行修改;DELETE语句是删除数据语句,可以把表中的数据删除这些语句都是操纵数据库最常用的语句
20.列出常用的数据定义语句数据定义语句用于执行数据库的任务、创建数据库以及数据库中的各种对象,包括CREATE、ALTER、DROP等语句数据库中的常见对象包括数据库、表、索引、视图、触发器、存储过程等这些对象的创建、修改和删除等管理都可以通过CREATE、ALTER、DROP等语句来完成
21.简述数据库技术的发展趋势从当前的客观需求和研究状况来看,数据库技术的发展趋势主要有可以执行分布式处理的分布式数据库技术、可以处理复杂对象的面向对象数据库技术、可以处理多媒体海量数据的多媒体数据库技术、可以对数据库中数据进行多维和历史分析的数据仓库技术、可以支持长事务和协调处理的工作流数据库技术、可以存储空间位置信息的空间数据库技术、可以支持个人应用的移动数据库以及基于Web的数据库技术等
5.
7.2思考题(略)
6.
9.1复习题
1.什么是软件危机?为什么会出现软件危机?软件危机的表现形式是什么?软件危机softwarecrisis的概念,用于描述快速增长的计算机能力和需要解决的日益复杂的需求问题之间的关系大容量、高速度的计算机出现,计算机的应用范围迅速扩大,软件开发急剧增长,多种高级编程语言开始出现,操作系统快速发展,数据库管理系统诞生,软件系统的规模越来越大、复杂程度越来越高,软件可靠性问题越来越突出软件危机主要表现在以下几个方面软件开发项目费用超支、进度拖延失控;软件的可靠性差,尽管耗费了大量的人力物力,但是正确性却越来越难以保证;软件开发生产率低下,其提高的速度远远跟不上计算机应用迅速扩展和深入的需要;开发出的软件往往不能满足用户的需求;在许多软件项目中,软件代码难于阅读、理解和维护从整体来看,软件生产水平的发展远远落后于硬件生产水平的发展速度
2.解释软件工程的概念分析软件危机和软件工程之间的关系软件工程softwareengineering是指将系统的、规范的、可量化的方法应用于软件的开发、运行和维护,以及对这些方法所进行的研究软件工程的根本目标在于提高软件开发的生产效率和软件产品质量解决如何进行软件开发和提高软件开发的效率和质量的问题,是许多研究人员和软件开发专业人员研究和探索的目标一些专家认为,从软件历史发展来看,软件开发经历了艺术、技能和工程三大阶段早期的程序员使用的是一种探索性的编程风格,自己摸索软件开发技术,软件的好坏取决于程序开发人员的直觉、经验、冲动和爱好这种软件开发风格被认为是艺术的,程序开发人员就像艺术家一样凭直觉进行软件开发后来,随着软件开发需求的不断增加和对软件开发工作经验和教训的总结,许多新手经过培训就可以掌握一些软件开发技术和知识,软件开发技术逐渐从艺术形式过渡到工艺形式或技能形式再后来,许多计算机科学家致力于软件开发过程的系统研究、知识组织,提出了一系列可以提高软件开发效率和质量的思想、原则、方法和工具,这些都是软件工程的核心内容
3.什么是软件需求分析?软件需求分析softwarerequirementanalysis是软件开发中的主要活动之一,也是其他活动的基础,该活动的主要目的是确定软件系统应该为用户提供哪些功能来解决用户的需求
4.简述软件需求分析的主要任务软件需求分析活动又可以分为许多任务,主要包括调查研究、问题分析、确定目标、需求定义、需求分析、需求描述等
5.简述功能需求和非功能需求的区别与联系需求定义是指将明确的软件目标转换为可以满足这些目标的功能需求和非功能需求的过程功能需求是一个软件必须提供的活动和服务描述一般地,根据那些可以满足软件目标的输入、输出、流程和存储的数据来定义功能需求非功能需求是一个软件的特征和约束的描述典型的非功能需求包括单位时间内处理的事务数量和单位事务的响应时间;软件支持的并发性操作要求;易学性和易用性;预算、成本;进度安排和结束日期;文档和培训需要;软件的质量和可靠性要求与管理;安全性要求等两者既相互区别,又相互联系
6.简述软件需求规格说明书的内容框架1引言
1.1产品概述
1.2目的
1.3产品的范围
1.4参考文献
1.5术语定义和缩写2综合描述
2.1软件前景描述
2.2软件功能描述
2.3用户特征
2.4约束条件
2.5假设和前提3需求规格说明
3.1外部接口需求描述
3.
1.1用户界面
3.
1.2硬件接口
3.
1.3软件接口
3.
1.4通信协议
3.
1.5内存约束
3.
1.6运行
3.
1.7产品功能
3.
1.8假设和依赖性
3.2软件产品特征
3.
2.1说明和优先级
3.
2.2激励/响应序列
3.
2.3功能需求
3.3软件系统属性
3.
3.1可靠性
3.
3.2可用性
3.
3.3安全性
3.
3.4可维护性
3.
3.5可移植性
3.
3.6性能需求
3.4数据库需求4其他需求附录
7.简述软件设计的主要任务在软件设计过程中,主要完成的任务包括确定所需要的模块;模块之间的控制关系或调用关系;不同模块之间的接口,包括模块之间交换的数据项;单个模块的数据结构;执行单个模块所需的算法设计阶段的输入是需求分析描述文档,然后进行概要设计或高层设计和详细设计概要设计的主要任务是确定不同的模块、控制关系和模块之间接口的定义,其设计结果被称为程序结构或软件结构;详细设计的主要任务是设计不同模块的数据结构和算法,其结果被称为模块规范说明
8.简述软件设计时应该考虑到的主要因素在软件设计过程中,除了必须满足用户需求之外,为了保障软件的使用、扩展和维护,还需要考虑其他一些因素这些因素主要包括兼容性、可扩展性、容错性、可维护性、可靠性、可复用性、安全性、易用性等
9.简述软件设计时的模块化原则抽象abstraction是指从许多事物和问题中,舍弃个别的、非本质的属性,抽出共同的、本质的属性的过程在软件设计中,抽象原则意味着尽可能地摈弃事物和问题中的个性化信息例如,学生、图书、合同等事物都可以抽象为对象对于事物和问题而言,不同的层次和不同的角度,可能有不同的抽象结果模块化modularity是指将复杂的事物和问题进行分解,得到可以管理的更小的事物和问题的过程一般地,如果事物和问题分解得越细,得到的模块就越容易理解和解决,每一个模块的设计复杂度也就越低;但是,越细,模块数量越多,模块之间的耦合度则越复杂内聚是用于描述模块功能强度的度量,耦合是模块之间相互依靠和相互作用程度的度量理想的模块化原则是分解得到的模块具有高内聚、低耦合的特点
10.列出常用的面向功能的软件设计方法1967年,EdsgerDijkstra提出了结构化编程structuredprogramming方法;1969至1973年,DouglasRoss开发了结构化分析和设计structuredanalysisanddesigntechnique,SADT技术;1975年,LarryConstantine等人提出了结构化设计structureddesign方法;1975年,MichaelJackson提出了Jackson结构化编程Jacksonstructuredprogramming方法;1978年,TomDemarco等人强调采用结构化分析structuredanalysis技术;1980年,英国计算机和通信管理部门提出了结构化系统分析和设计方法structuredsystemsanalysisanddesignmethod,SSADM;1981年,DouglasRoss等人开发了基于SADT技术的IDEF0方法;1990年,JamesMartin提出了信息工程informationengineering方法在以上方法中,最基本的方法是结构分析structuredanalysis/结构设计structureddesign技术,简称SA/SD技术
11.列出UML
2.2中的图示UML
2.2定义了14种图示,用于软件需求分析、设计和开发这些图示可以分为两种类型静态视图结构视图和动态视图行为视图结构视图主要使用对象、属性、关系、运算等内容描述系统的结构,例如类图、对象图、部署图等;行为视图主要强调对象之间的合作、对象状态的变化等系统行为,例如序列图、活动图、用例图、时间图等
12.什么是软件编码?软件编码softwareprogramming是把软件设计转换为程序设计语言代码的过程有时,也把软件编码称为代码编写、软件构造、软件实现等有些专家把软件编码活动称为软件构造活动,强调软件复用、快速配置等特点
13.什么是软件测试?软件测试softwaretesting是指根据一组测试用例的输入和运行,观察软件产品是否能够按照期望的要求正常运行的过程如果产品没有按照期望的要求运行,那么表示产品中存在缺陷,需要记录下这些情况,以后就可以对产品进行调试和改正软件测试的目的在于发现产品中存在的所有缺陷、确保产品满足各种功能需求和非功能需求
14.简述测试用例的特点测试用例testcase是为了达到某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定的需求测试集是测试用例的集合,用于测试指定的软件产品
15.简述静态测试的特点静态测试是指在非运行环境中审视软件产品的方法,常见的静态测试包括代码评审、代码走查、代码检查等
16.比较分析黑盒测试和白盒测试的特点从测试策略来看,可以分为黑盒测试和白盒测试在黑盒测试策略中,测试用例的设计主要考虑软件产品的功能,不需要考虑软件产品的内部结构,因此这种测试也称为功能测试;而在设计白盒测试用例时,需要对软件内部结构有一个全面的理解,因此这种测试策略也称为结构测试
17.什么是等价类划分?等价类划分equivalencepartitioning是指把测试软件产品的输入划分为一组等价的类,然后基于这些等价类来设计测试用例在同一个等价类中,不同的测试用例可以得到完全相同的测试结果;不同的等价类中,测试用例不同则可能得到不同的测试结果在进行等价类分析时,如果输入到一个软件产品的数据可以由一个范围的值明确指定,那么至少可以定义一个有效的等价类和一个无效的等价类
18.语句覆盖、分支覆盖、条件覆盖、路径覆盖的特点常见的白盒测试方法包括语句覆盖、分支覆盖、条件覆盖、路径覆盖等语句覆盖statementcoverage是指选择足够多的测试数据,使被测程序中的每条语句至少被执行一次其主要思想是只有当程序中的每条语句至少被执行一次,才能发现程序中的错误,这些错误包括非法访问内存、错误计算等需要指出的是,由于测试过程中某些语句只执行了一次,所以并不能保证程序中的所有计算都能正确运行分支覆盖branchcoverage是指在设计测试用例时,应该提供足够多的测试用例,使得程序中的每个分支至少都获得一次真值或假值,或者使得程序中的每个分支都至少经历一次这种测试方法又称为决策覆盖decisioncoverage条件覆盖conditioncoverage的含义是指在构造测试用例时,应当使得每个条件语句中的每个逻辑条件的真值和假值至少满足一次路径覆盖pathcoverage是指在设计测试用例时,程序中的所有线性独立路径都会至少被执行一次
19.简述单元测试中桩模块的特点和作用在单元测试过程中,需要为被测模块开发一个驱动模块、一个或若干个桩模块驱动模块包含被测模块所访问的非本地数据结构,用于接收数据并将这些数据传递到被测模块桩模块是一个哑模块,拥有与指定过程一样的I/O参数,但是其行为却大大简化
20.集成测试的目的是什么?集成测试integrationtesting是在单元测试的基础上,测试在将所有的软件单元按照规格说明的要求组装成模块、子系统或系统的过程中,各部分的工作是否达到或实现了相应技术指标及要求的活动集成测试的主要目的是测试模块之间的接口,确保在一个模块调用另一个模块时,参数传递过程中不存在任何错误集成测试是非常有必要的,一些模块虽然能够单独地工作,单元测试时没有问题,但并不能保证多个单元模块连接起来也能正常工作另外,软件产品中的某些局部反映不出来的问题,有可能在集成测试时暴露出来
21.简述软件维护的概念软件维护softwaremaintenance是软件产品交付之后的活动,其目的是修正发现的错误、提高系统性能、增强软件产品对环境的适应性等一般地,有4种基本的软件维护类型正确性维护、适应性维护、完善性维护和防护性维护
22.分析常用的软件过程模型的特点软件过程模型softwareprocessmodel是对软件开发过程的抽象描述软件过程模型通常由多个阶段组成,阶段之间的次序、重叠、迭代等关系往往与软件项目的范围、规模、复杂性、需求等相关每个阶段都有特定的内容,并产生特定的成果软件生命周期中的过程和活动应用在这些阶段中以便完成相应的任务常用的软件过程模型包括瀑布模型、原型模型、迭代模型、螺旋模型、快速应用开发模型、极限模型等
23.CMM的中文含义是什么?能力成熟度模型
24.什么是软件配置管理?软件配置管理softwareconfigurationmanagement,SCM是跟踪和控制软件变化的方法,其主要内容是界定软件的组成项目,对每个项目的变更进行版本控制,并维护不同项目之间的版本关联,使软件在开发过程中,任一时刻的内容都可以被追溯
25.简述软件质量管理的内容按照ISO/IEC12207-2008标准的要求,软件配置管理的内容如下制定软件配置管理战略;标识和定义软件配置项,确定基线项;控制配置项的修改和发布;确定修改和发布配置项的责任人;记录和报告配置项的状态和修改情况;保障配置项的完整性和一致性;控制配置项的存储、处理、交付等
26.简述McCall质量因素模型的特点McCall质量因素模型把影响软件产品质量的因素分为3大类、11个因素在McCall质量因素模型中,产品修订productrevision因素描述了软件产品是否能够被修改的能力,该因素又可以分为3个子因素可维护性maintainability因素描述了可以找到和修复软件错误的能力;柔性flexibility因素描述可以按照业务变化需要进行改变的能力;可测试性testability因素描述了软件产品可以验证需求的能力产品转移producttransition因素描述了软件产品适应新环境的能力,该因素又分为3个子因素可移植性portability描述了软件产品从一个环境到转移另一个环境的能力,软件产品环境是指软件产品运行所需的硬件、软件的总称;可复用性reusability描述了现有的软件组件在不同的上下文中复用的能力;可互操作性interoperability描述了软件组件在一起工作的能力或组合程度产品运行productoperations因素描述了软件产品基本的运行特征,该因素又可以分为5个子质量因素正确性correctness因素描述了软件产品与需求规格说明书的功能一致性;可靠性reliability因素描述了造成软件产品失败的程度;有效性efficiency因素描述了软件产品对系统资源的使用情况,这些系统资源包括CPU、磁盘、内存、网络等;完整性integrity因素描述了对未授权访问的保护,也就是说,对未经授权的访问系统有控制;易用性usability描述了软件产品易于使用的能力
27.什么是软件复用?软件复用softwarereuse是指在两次或多次不同的软件开发过程中重复使用相同或相似的软件元素软件复用是提高软件生产力和质量的一种重要技术可以复用的软件元素包括需求分析文档、设计文档、设计过程、源代码、测试用例、领域知识等
28.什么是软件项目管理?软件项目管理softwareprojectmanagement,SPM是指在软件项目活动中运用专门的知识、技能、工具和技术,使项目能够实现或超过利益相关者的需要与期望在软件项目管理中,不仅要强调使用专门的知识和技能,而且还强调项目管理中各参与人的重要性项目经理不仅要努力实现项目的范围、时间、成本、质量目标,而且必须协调整个项目过程,满足项目利益相关者的需求和期望
6.
9.2思考题(略)。