第一章
1、软件的发展(四个阶段)。
答:程序设计阶段、程序系统阶段、软件工程阶段、第四阶段。
2、软件定义。
答:1)在运行中能够提供所希望的功能和性能的指令集。(程序)
2)使程序能够正确运行的数据结构。(数据)
3)描述程序研制过程、方法所用的文档。(文档)
3、软件的特点。(问答)
答:1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2)软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。
3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。
4)软件的开发和运行经常受到计算机的限制,对计算机有着不同程度的依赖。
5)至今尚未完全摆脱手工的开发方式。
6)软件的开发费用越来越高,成本相当昂贵。
4、软件的分类。
答:1)基于软件的功能划分:系统软件、支撑软件、应用软件。
2)基于软件工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件。
5、软件危机。
答:软件危机是指软件开发和维护过程中遇到的一系列严重问题。
6、软件工程。
答:软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术、和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
7、软件工程学的基本目标。(问答)
答:1)确定面向计划、开发维护整个软件生存周期的方法学。
2)确定的软件成分,记录软件生存周期每一步的软件文献资料,按步显示轨迹。
3)可预测的结果,使得在生存周期中,每隔一定时间可以进行复审。
软件工程学的最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。
8、软件工程的原则。
答:1)分解2)独立性3)一致性4)确定性
9、软件生存周期:
答:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为软件生存周期。
需求分析
测试
运行与维护——维护阶段
10、软件开发模型。
答:1)瀑布模型,也称生存周期模型,是软件工程的基础模型(看一下内容)2)螺旋模型3)模型4)原型模型5)构件组装模型6)混合模型。
第二章
11、可行性研究的目的。
答:可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
一般来说应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案可行性等方面研究可行性。
12、可行性研究的步骤。(问答)
答:1)复查系统规模和目标。
2)研究目前正在使用的系统。
3)导出新系统的高层逻辑模型。
4)重新定义问题。
5)导出和评价供选择的方案。
6)推荐一个方案并说明理由。
7)推荐行动方针。
8)书写计划任务书。
9)提交复查。
13、系统流程图及基本思想。
答:系统流程图是描绘物理系统的传统工具。
基本思想:它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件。
系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。
第三章
14、需求分析的任务。
答:需求分析是软件定义周期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。
在这个阶段结束时交出的文档中应该包括详细的数据流图(DFD)、数据字典(DD)和一组简明的算法描述。
15、需求分析阶段的任务。(问答)
答:1)确定对系统的综合需求。
2)分析系统的数据需求。
3)导出系统的逻辑模型。
4)修正系统开发计划。
5)开发原型系统。
16、结构化分析方法。
答:结构化分析方法(简称SA方法)就是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目的之一就是把数据流和数据存储定义到元素级。
17、需求分析的原则。(问答)
答:1)必须能够表达和理解问题的数据域和功能域。
2)自顶向下、逐层分解问题。
3)要给出系统的逻辑视图和物理视图。
18、面向数据流的需求分析方法。
答:结构化分析方法使用数据流图(DFD)与数据字典(DD)来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。
19、数据流图的特性。
答:1)抽象性2)概括性3)层次性。(基本符号记下)P40
20、数据流图的功能:
答:1)系统分析员用这种工具可以自顶向下分析系统信息流程。
2)可在图上画出需要计算机处理的部分。
3)根据数据存贮,进一步作数据分析,向数据库设计过渡。
4)根据数据流向,定出存取方式。
5)对应一个处理过程,用相应语言、判定表等工具表达处理方法。
21、数据流图画法。
答:自外向内、自顶向下、逐层细化、完善求精。先找系统的源点和汇点。注意父图与子图的平衡。
22、数据流图与系统流程图、程序流程图的区别。(问答)
答:数据流图与系统流程图区别:
系统流程图中不仅含有数据流,还有物流、资金流,但数据流图将物流与资金流,抽象为数据形式。也就是就数据流图仅以数据流的形态来反映一个组织中整个管事业务的过程。
数据流图与程序流程图的区别:
程序流程图中的处理框之间有严格的时间上的顺序,也就是先执行哪个处理框,起始点以及终止点等。而数据流图只反映数据的流向、处理逻辑和必要的数据存贮,它不反映处理逻辑的先后。
23、数据字典的定义。
答:数据字典是关于数据信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流图的补充工具。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。
三个用于分析的图:层次方框图、Warnier图、IPO图。
四个用于设计的图:程序流程图、N-S图、PAD图、HIPO图。
第四章
24、PARNAS提倡的信息隐蔽原理指出:每一个模块的实现细节对于其他模块来说是隐蔽的,也就是说,模块中所包括的信息不允许其它不需要这些信息的模块调用。
隐蔽意味着有效的模块化可以通过定义一组独立的模块实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。
25、模块独立性。
答:模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。
26、耦合。
答:耦合是对一个软件结构内各个模块之间互连程度的度量。
耦合性最低为非直接耦合(模块独立性强);耦合性最高为内容耦合(模块独立性弱)。
内聚
答:内聚标志着一个模块内各个元素彼此之间结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展,理想内聚的模块只做一件事情。
内聚性最低为巧合内聚(模块独立性弱);内聚性最高为功能内聚(模块独立性强)。
(要求高内聚低耦合)
27、信息流两种类型:变换流、事务流。
28、Jackson系统开发方法是一种典型的面向数据结构的分析设计方法。
第五章
29、详细设计的任务。(问答)
答:1)为每个模块确定算法。
2)确定每一模块使用的数据结构。
3)确定模块接口的细节。
4)要为每一个模块设计出一组测试用例。
30、详细设计的原则。
答:1)模块的逻辑描述要清晰易读、正确可靠。
2)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程度的可读性、可测试性、可维护性。(其中5点为判断)P101
3)选择恰当描述工具来描述各模块算法。
第六章
31、面向对象方法的基本思想。
答:面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。
32、面向对象的定义。
答:1)一种使用对象、消息传递、类、继承、多态和动态绑定来开发问题域模型之解的范型。2)一种基于对象、类、实例和继承等概念的技术。3)用对象作为建模的原子。
33、对象定义。
答:对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。
34、消息:消息就是向对象发出的服务请求,它应含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。
35、方法:所谓的方法,它们实际上是类对象上的各种操作。
36、类:类的定义是具有相同属性和服务的一组对象集合。类由方法和数据集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。
37、继承性:继承性是自动地共享类、子类和对象中的方法和数据的机制。
38、封装:1)一个清楚的边界,所有的对象的内部软件的范围被限定在这个边界内。2)一个接口,这个接口描述这个对象和其他的对象之间相互的作用。3)受保护的内部实现,这个实现给出了由软件对象提供的功能的细节,实现细节能在定义这个对象的类的外面访问。
39、多态性:对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
40、UML:UML是一种标准(统一)建模语言。
41、标准建模语言UML的重要内容由五类图来定义。
答:1)用例图2)静态图(包括类图、对象图和包图)3)行为图4)交互图5)实现图。
第七章
42、编码:所谓编码就是把软件设计的结果翻译成计算机可以理解的形式,即用某种程序设计语言书写的程序。
43、程序设计语言分类。
答:面向机器语言:1)机器语言2)汇编语言。
高级语言:1)基础语言2)现代语言3)专用语言。
从语言的内在特点看高级语言分为:1)系统实现语言2)静态高级语言3)块结构高级语言4)动态高级语言。
44、编码风格:编码风格又称程序设计风格或编程风格,编码风格实际上指编程的基本原则。
良好的编码风格有助于编写出可靠而又容易维护的程序,编码风格在很大程度上决定着程序的质量。
45、程序效率:程序效率是指程序的执行速度及程序占用的存储空间。
46、有关程序效率的几条准则。
答:1)效率是一个性能要求,目标值应当在需求分析阶段给出。
2)好的设计可以提高效率。
3)程序的效率与程序的简单性相关。
第八章
47、P198影响软件的主要因素。(以右边为问)
答:1)正确性:系统满足规格说明和用户目标的程度。
2)完整性(安全性):对未经授权的人使用软件或数据的企图,系统能够控制的程度。
3)可用性:系统在完成预定应该完成的功能时令人满意的程度。
4)可理解性:理解和使用该系统的容易程度。
5)可维护性:诊断和改正在运行现场发现的错误所需要的工作量的大小。
6)可测试性:软件容易测试的程度。
48、测试工作量要占软件开发总成本的40%到50%以上测试的目的是确保软件的质量,尽量找出软件的错误并加以纠正,而不是证明软件没有错。测试的范围是整个生存周期,而不限于程序编码阶段。
49、软件测试:软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动。
找错的活动称测试;纠错活动称调试。
50、测试的原则。P212
答:1)测试前要认定被测试软件有错,不要认为软件没有错。
2)要预先确定被测试软件的测试结果。
3)要尽量避免测试自己编写的程序。
4)测试要兼顾合理输入与不合理输入数据。
5)测试要以软件需求规格说明书为标准。
6)要明确找到的新错与已找到的旧错成正比。
7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。
8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。
9)理解别人的程序比自己开发更难。
51、按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。
黑白盒测试法区别:黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程;白盒测试法是把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
52、大型软件系统的测试基本上由四个步骤组成:单元测试、集成测试、确认测试、系统测试。(注:顺序不能错)
53、单元测试也称模块测试、逻辑测试、结构测试,测试的方法一般采用白盒法,以路径覆盖为最佳测试准则。
54、集成测试分为:增式组装测试和非增式组装测试。
55、回归测试:纠错修改设计相应错误之后,必须重复执行先前测试集,这种重复先前测试的过程称回测试。目的在于进一步验证纠错正确性。
56、软件维护类型及定义。(问答)
答:定义:人们称在软件运行/维护阶段对软件产品所进行的修改就是维护。
要求进行维护的原因归结起来有三类:
1)改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。
2)因在软件使用过程中数据环境发生变化或处理环境发生变化,需要修改软件以适应这种变化。
3)用户和数据处理人员在使用时常提出改进现有功能,增加新的功能,以及改善总体性能的要求,为满足这些要求,就需要修改软件把这些要求纳入到软件之中。
按维护性质不同软件维护可分为:改正性维护、适应性维护、完善性维护和预防性维护。
57、大型软件的测试通常分散在三个阶段进行:
答:1)编码阶段应完成单元测试,包括静态分析与动态测试。
2)测试阶段应完成综合测试(集合)测试与确认测试。
3)系统测试则放在安装与验收阶段进行。
第九章
58、软件管理的功能:
答:1)制订计划;2)建立项目组织;3)配备人员;4)指导。
59、软件开发成本估算方法。
答:1)自顶向下的估算方法;
2)自底向上的估算法;
3)差别估计法。
60、软件管理方案。
答:定义:决定对软件项目的有效管理的全面计划。
1)软件管理方案概述;
2)阶段性方案;
3)组织方案:
4)测试方案:
5)变动控制方案;
6)文档方案;
7)培训方案;
8)复审和报告方案;
9)安装和运行方案;
10)资源和配置方案;
11)索引。
61)软件生存周期阶段及各阶段的任务。(问答)
答:软件生存周期分为七个阶段:问题定义、可行性研究、需求分析、设计、编码、测试、运行与维护。
但总体上分为三大阶段:
1)计划阶段
这里可分两步:软件计划和需求分析。确定软件的总目标、功能等,确定系统定义和有效性标准,写出需求说明书。
2)开发阶段
主要经过三个步骤:设计、编码和测试。首先对软件进行结构设计,对每个模块进行过程设计,最后进行组合测试和有效性测试。
3)维护阶段
进行配置评审,检查软件文档和代码是否齐全、是否一致、是否可维护等。确定维护组织和职责,并定义表明系统错误和修改报告的格式。