专为大学生期末创造奇迹整理的知识点
1、软件是一种逻辑产品
2、软件开发方法是指导软件开发的一系列规则和约定
3、软件生存周期中花费最多的阶段是软件维护阶段
4、软件工程的三要素:工具、过程、方法
5、在软件生存周期中,能准确地确定“软件系统必须做什么”的阶段是需求分析阶段
6、瀑布模型本质上是一种线性顺序模型
7、瀑布模型突出的缺点是不适应用户需求的变动
8、在软件开发模型中,提出最早、应用最广泛的模型是瀑布模型
9、瀑布模型不适用于需求模糊不清的软件开发
10、快速原型的主要优点:能让用户参与开发、给出反馈;尽早把需求分析清楚,以降低风险;尽早地发现问题、纠正错误
11、快速原型的主要问题在于缺乏支持原型开发的工具
12、螺旋模型是一种减瀑布模型和增量模型结合起来的软件开发模型
13、在软件生产的程序系统时代由于软件规模扩大和和软件复杂性提高等原因导致了软件危机
14、集成化开发环境中的环境集成机制包括数据集成、控制集成、界面集成
15、软件工程的出现是由于物理系统
16、系统流程图是一种传统工具,用于描绘软件危机的出现
17、软件可行性研究的目的是阐述软件开发项目值得或不值得做
18、技术可行性研究要解决的问题是从技术方面说明项目是否可行
19、可行性研究的步骤首先是确定项目目标,即对要解决的问题进行定义
20、可行性研究的任务包括技术可行性、经济可行性、法律可行性
21、系统流程图是描述物理系统的工具
22、可行性研究实质上是要进行一次简化、压缩的需求分析,设计过程
23、需求分析最终结果是产生需求规格说明书
24、数据流图(DFD)是SA方法中用于表示系统的逻辑模型的一种图形工具。
25、需求规格说明书的作用包括软件验收的依据 、用户与开发人员对软件要做什么的共同理解、软件可行性研究的依据
26、数据词典是用来定义数据流图中的各个成分的具体含义
27、结构化分析方法(SA)是一种面向数据流的分析方法
28、软件开发的需求活动,其主要任务是定义需求并建立系统模型
29、结构化分析的核心是自顶向下的分解
30、需求分析的任务是正确说明让软件“做什么”
31、对于分层的DFD,父图与子图的平衡是指子图必须继承父图的输入与输出流
32、DFD的每个加工都必须有一个输入和输出数据流
33、需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目标系统的逻辑模型并写出软件规格说明书的过程。
34、结构化分析方法是以数据流图、DD和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型
35、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及需求评估
36、数据流图由加工、数据存储、源点和终点构成
37、DFD用于描述系统的软件功能
38、DFD即数据流图(Data Flow Diagram)
39、数据词典不包括的条目是数据类型
40、数据词典包括数据项、数据结构、数据流、处理逻辑、数据存储和外部实体
41、软件需求分析一般应确定的是用户对软件的功能需求和非功能需求
42、在数据流图中,有名字和方向的成分是数据流
43、软件结构图的形态特征能反映程序重用率的是扇入
44、概要设计的目的是确定整个系统的功能及模块结构
45、耦合是对软件不同模块之间互连程度的度量。各种耦合从强到弱的排列为内容耦合,公共环境耦合,控制耦合,数据耦合。
46、当一个模块直接使用另一个模块的内部数据时,这种模块之间的耦合为内容耦合。
47、数据耦合和控制耦合相比,则控制耦合的耦合性强
48、衡量模块独立性的标准是耦合性和内聚性
49、如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为时间内聚
50、为了提高模块的独立性,模块内部最好是功能内聚
51、 偶然内聚:如果一个模块的各成分之间毫无关系,则称为偶然内聚。
52、 逻辑内聚:几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。
53、 时间内聚:如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
54、过程内聚:如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。
55、 通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
56、 顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
57、 功能内聚:模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
58、内容耦合:当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。
59、公共耦合:两个以上的模块共同引用一个全局数据项就称为公共耦合。
60、控制耦合:一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
61、标记耦合:模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
62、数据耦合:模块间通过参数传递基本类型的数据,称为数据耦合。
63、非直接耦合:模块间没有信息传递时,属于非直接耦合。
64、如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合
65、软件设计是把软件需要转换为软件表示的过程
66、概要设计的主要成果是概要设计说明书
67、数据结构设计也是概要设计的重要内容,主要是进行数据的逻辑设计
68、概要设计与详细设计衔接的图形工具是SC图
69、SC图:Structure Chart,结构图
70、在软件开发中,任务属于设计阶段的有数据结构设计、给出系统模块结构、定义模块算法
71、软件设计原则有抽象、模块化、信息隐藏
72、软件详细设计的主要任务是确定每个模块的算法和使用的数据结构
73、借助于软件工具,可将PAD图容易地转换为高级语言源程序
74、PAD图:问题分析图(Problem Analysis Diagram)
75、不属于详细设计工具的是DFD图
76、DFD图:Data Flow Diagram,数据流图
77、程序的三种基本结构是顺序、选择和重复
78、UML的主要特点不正确的是面对过程,表达能力强
79、UML: 统一建模语言(Unified Modeling Language
80、静态建模图包括用例图、类图、对象图
81、用例图的模型元素包括用例、系统、行为者
82、类图的要不包括类名称、操作、属性
83、时序图中的要素包括对象、对象生命线、消息
84、对象模型的描述工具是对象图
85、协作图的要素包括对象、链、消息
86、类图反映了系统中对象之间的抽象关系,包括关联、聚合、泛化
87、描述类中某个对象的行为,反映了状态与事件关系的是状态图
88、动态模型的描述工具是状态图
89、表示对象的相互行为的模型是对象模型
90、用例图中用例之间的关系通常有关联关系、依赖关系和泛化关系
91、动态模型图包括:时序图、协作图、状态图和活动图图
92、汽车有一个发动机,汽车和发动机之间的关系是整体部分关系
93、火车是一种陆上交通工具,火车和陆上交通工具之间的关系是一般具体关系
94、面向对象程序设计语言不同于其他语言的最主要特点是继承性
95、软件部件的内部实现与外部可访问性分离,这是指软件的封装性
96、面向对象分析阶段建立的三个模型中,核心模型是对象模型
97、对象模型的描述工具是对象图
98、动态模型的描述工具是状态图
99、在只有单重继承的类层次结构中,类层次结构是树型层次结构
100、对象模型表示了对象的互相行为
101、在确定类时,所有名词是候选的类
102、面向对象分析的原则包括抽象、封装、继承
103、常用动词和动词词组来表示关联
104、在确定属性时,所有名词是候选的属性
105、在面向对象方法中,信息隐藏是通过对象的封装性来实现的
106、面向对象设计的准则包括模块化、抽象、信息隐藏
107、在编码中首先要考虑的是程序的可读性
108、属于序言性注释内容的有模块设计者、修改日期、程序的整体说明
109、序言性注释应置于文件或模块的起始位置
110、如果编写系统软件,可选用的语言是C语言
111、选择程序设计语言不应该考虑的是语言的功能
112、与编程风格有关的因素包括源程序文档化、语句构造、输入输出
113、最早用于科学计算的程序设计语言是FORTRAN
114、FORTRAN语言即公式翻译器
115、功能性注释的主要内容不包括模块的功能
116、对建立良好的编程风格,下面描述正确的是程序应简单、清晰、可读性好
117、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括合适的标识符、注释和程序的布局组织
118、编制一个好的程序应强调良好的编程风格,例如,选择标识符的名字时应考虑选择含义明确的名字,以正确提示所代表的实体
119、以下关于编程风格的叙述中,应提倡的是使用括号以改善表达式的清晰性、一般情况下,不要直接进行浮点数的相等比较、使用有清晰含义的标识符
120、在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在人们更重视程序的可理解性
121、为了提高易读性,源程序内部应加功能性注释,用于说明程序段或语句的功能
122、适合在互联网上编写程序可供不同平台上运行的面向对象的程序设计语言是Java
123、使用C语言开发的软件具有较好的可移植性
124、用低级语言开发的程序,具有运行效率高,开发效率低特点
125、发现错误多的程序模块,残留在模块中的错误也多
126、确定测试计划是在需求分析阶段制定的
127、集成测试计划是在概要设计阶段制定的
128、单元测试是在编码阶段完成的
129、集成测试工作最好由不属于该软件开发组的软件设计人员承担
130、为了提高软件的测试效率,测试工作需要有测试工具的支持
131、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由测试输入与预期的输出数据组成。
132、测试和调试最大的不同在于操作者的心理状态不同
133、一个成功的测试是发现至今尚未发现的错误
134、白盒法和黑盒法最大的不同在于的测试是测试用例设计方法不同
135、单元测试阶段主要涉及概要设计的文档
136、检查软件产品是否符合需求定义的过程称为确认测试
137、软件调试的目的是改正错误
138、进行软件测试的目的是尽可能多地找出软件中的错误
139、在进行单元测试时,常用的方法是采用白盒测试,辅之以黑盒测试
140、白盒测试方法一般适合于单元测试
141、为了提高测试的效率,应该选择发现错误可能性大的数据作为测试数据
142、属于白盒测试的技术有语句覆盖、判定覆盖、条件覆盖
143、在逻辑覆盖标准中,差错能力最强的是条件组合覆盖
144、在黑盒法中,着重检查输入条件组合的测试方法是因果图法
145、在需求分析阶段,就应该考虑软件可维护性问题
146、由于在开发过程中测试的不彻底、不完全而造成的维护是改正性维护
147、为适应软硬件环境变化而修改软件的过程是适应性维护
148、为增加软件功能和性能而进行的软件维护过程是完善性维护
149、维护阶段需由用户填写的维护文档是软件问题报告
150、软件的可维护性是指软件能被修改的难易程度
151、软件维护工作中最主要部分是完善性维护
152、维护中,因误删除一个标识符而引起的错误是编码副作用
153、维护中,因修改全局变量或公用数据而引起的错误是数据副作用
154、软件维护工作过程中,第一步是先确定维护类型
155、在软件生存周期中,工作量所占比例最大的阶段是维护阶段
156、软件工程对维护工作的主要目标是提高软件的可维护性,降低维护的代价
157、软件维护的副作用是指因修改软件而造成的错误
158、一般来说,在软件维护过程中,大部分工作是由用户的需求改变引起的
159、软件项目管理是软件生存周期一切活动的管理
160、在软件工程项目中,不随参与人数增加而使生产率增加的主要问题是参与人员之间的通信困难
161、COCOCO估算模型是结构性成本模型
162、自底向上估算方法的缺点是估算往往缺少系统级工作量,所以估算往往偏低
163、软件管理比其他工程管理更为困难
164、CMM模型中属于可管理级的特征软件过程中活动的生产率与质量是可度量的
165、由IEEE组织制定的标准是国际标准
166、GB/T 8567-2006《计算机软件文档编制规范》是推荐性行业标准
167、测试计划文档应从软件工程的需求分析阶段开始编写
168、理解螺旋模型的一个简便的方法,是把它看作在每个阶段之前都增加了风险分析过程的瀑布模型
169、在结构化分析中,用以表达内部数据运动情况的工具是数据流图
170、在一张状态图中,只能有一个初态
171、DFD的每一个加工中至少有一个输入流和一个输出流
172、一个模块访问了另一个模块的内部数据,两个模块间发生了内容耦合
173、能够清楚地表示复杂的条件组合和应做的动作之间的对应关系的工具是判定表
174、详细设计的基本任务是确定每个模块的算法
175、问题定义和可行性研究的主要任务都是概括地了解用户的需求
176、在数据字典中建立的一组严密一致的定义有助于改进分析员和用户之间的通信
177、编码和测试统称为实现
178、总体设计的过程通常由系统设计和结构设计阶段组成
179、程序的质量主要取决于软件设计的质量
180、软件危机是指软件开发和维护中出现一系列严重问题
181、可行性研究中描述系统高层物理模型的工具是系统流程图
182、准确地解决”软件系统必须做什么“是需求分析阶段的任务
183、结构化分析方法使用数据流图描述软件的功能模型
184、数据存储和数据流都是数据,仅仅是所处的状态不同
185、需求分析阶段完成后产生的重要文档,一个书软件需求规格说明书,另一个很可能产生的文档是软件验收测试计划
186、在结构化设计中,软件结构图是从需求分析得到的数据流图中映射出的
187、软件结构设计,在对事物流的分析中,识别出事务中心的分析的关键
188、连个模块通过传递记录、数组等数据结构参数参与联系,则称为这两个模块间存在标记耦合
189、软件初始化模块,其中包括几个相对独立的、必须在软件自启动阶段内完成的任务,这个模块的内聚级别是时间内聚
190、在软件开发与维护的各阶段中,单元测试在编码阶段完成
191、软件生命周期中,持续时间最长的阶段一般都是维护阶段
192、软件工程的中心课题是是控制软件的复杂度
193、在几种软件生命周期模型中,螺旋模型引入了风险分析,它适合大规模的内部软件项目开发
194、软件工具的主要目的是为了提高软件生产效率和改善软件的质量
195、在构造软件原型时,必须注意功能和性能(或需求)的取舍,忽略一切暂时不需关心的部分
196、在需求分析中,对加工处理算法的简单描述被记录在数据字典中
197、软件结构设计,应符合模块独立原理,做到高内聚和低耦合
198、判断表和判断树,用来描述复杂的条件组合和动作组合间的对应关系,宜作为辅助设计和测试设计的工具
199、黑盒测试主要用来进行功能测试
200、效率是一个性能需求,因该在需求分析阶段(或需求规格说明书)给出
201、软件再工程,也叫修理和再生,是一类软件工程活动。它由逆向工程、重构和正向工程组合而成
202、再软件开发的各个阶段,通过了正式复审的软件配置项被称为基线
203、与计算机科学的理论研究不同,软件工程是一门工程性学科
204、软件开发环境中最主要的组成部分是软件工具
205、瀑布模型是一种软件生命周期模型
206、技术可行性要解决技术风险问题
207、系统流程图是描述软件系统系统物理模型的工具
208、软件需求规格说明书的内容应包括主要功能、用户界面及运行环境、软件的性能
209、软件设计阶段一般又可分为概要设计和详细设计
210、概要设计又称为总体设计
211、黑盒测试主要是测试软件的功能
212、在软件生命周期中,维护阶段所占的工作量最大
213、判定树是判断表的变种
214、层次图中一个矩形代表一个模块
215、McCabe方法的流图,实质上是”退化了的“程序流程图
216、单元测试主要使用白盒测试技术
217、文档是影响软件可维护性的决定因素
218、两个模块通过访问同一个全程变量的互相合作,这种模块间的耦合方式称为公共环境耦合
219、信息流有两种类型,即变换流和事务流
220、预防性维护实质上是软件再工程
221、人们用代码行技术和功能点技术估算软件规模
1、软件通过你自己使用计算机的经历和对计算机的认识分辨软件和程序的差别,指出区别的关键点。
答:软件包括程序、数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能够正确地处理信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。软件包括程序,程序只是软件的一部分。
2、简述软件危机产生的原因以及避免的方法。
答:软件危机的产生有两方面因素,一方面与软件本身的抽象性和复杂性有关;另一方面则与软件开发和维护过程中使用的技术和方法有关,这是主观原因。
为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。
(1)使用好的软件开发技术和方法。
(2)使用好的软件开发工具,提高软件生产率。
(3)有良好的组织、严密的管理,各方面人员相互配合共同完成任务。
3、简述软件工程在软件开发中的作用和意义。
答:软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软件工程的目标是实现软件的优质高产。软件工程的目的是在经费的预算范围内,按期交付出用户满意的、质量合格的软件产品。
4、软件生命周期概念对软件的开发有哪些指导作用。
答:软件生命周期是软件工程的一个重要的概念。把整个软件生命周期划分为若干个较小的阶段,每个阶段都有相对独立的任务和完成任务的步骤和方法,然后逐步完成各个阶段的任务,这有利于软件开发过程的组织和管理,从而降低了整个软件开发过程的困难程度,从而使规模庞大、结构复杂和管理复杂的软件开发变得容易控制和管理。
5、分析瀑布模型和螺旋模型的异同,比较它们的适用场合。
答:瀑布模型是线性模型,是整体开发模型,文档驱动的模型,每一阶段必须完成指定的文档,需求明确的中、小型软件开发, 不适宜需求模糊或多变的应用软件开发;螺旋模型是典型迭代模型,是风险驱动模型,可用于面向对象开发,适宜风险较大的大型软件开发。
6、软件开发的早期,为什么要进行可行性研究?目标的可行性研究有几个方面?
答:许多软件开发问题都不能在预期的时间范围内或资源限制下得到解决。如果开发人员没有尽早停止没有可行解决方案的开发项目,就会造成时间、资金、人力、物力的浪费。为了降低软件开发失败的可能性,需要进行软件可行性研究。可行性研究要从经济可行性、技术可行性、运行可行性和法律可行性四方面进行。
7、简述可行性研究的步骤。
答:
(1)审核系统的规模和目标;
(2)分析研究现行系统;
(3)设计新系统的高层逻辑模型;
(4)获得并比较可行的方案;
(5)撰写可行性研究报告。
8、需求分析的任务是什么?怎样理解“做什么”和“怎么做”?
答:需求分析的基本任务是要准确地理解旧系统、定义新系统的目标,为了满足用户需要,回答“系统必须做什么”的问题,即确定系统必须完成哪些工作,对新系统提出完整、准确、清晰、具体的要求。
具体任务是:明确问题定义、导出软件的逻辑模型、编写软件需求规格说明书。
“做什么”,即深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统元素的接口细节,定义软件的其他有效性需求。
“怎么做”,即着手软件需求的实现:用比较抽象概括的方式确定目标系统如何完成预定的任务,确定系统的物理模型。
9、怎样建立目标系统的逻辑模型?
答:建立目标系统逻辑模型的一般过程:
(1)由当前物理系统导出当前系统物理模型;
(2)由当前系统物理模型,导出当前系统逻辑模型;
(3)参考当前系统逻辑模型,设想出新系统逻辑模型。
10、数据流图的作用是什么?它有哪些基本成分?
答:数据流图是用于表示系统逻辑模型的一种工具。它从数据传递和加工的角度,以图形的方式描述数据在系统中流动和处理过程。它表示了系统内部信息的流向以及系统的逻辑处理功能。
数据流图的主要成分有四种:数据流、数据存储、加工、数据流的源点和终点。
11、数据词典的作用是什么?它包括哪些内容?
答:数据词典是数据的集合,它对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具。数据流图和数据词典共同构成系统的逻辑模型,两者缺一不可。
其内容包括:数据流、数据项、数据结构、数据存储、加工逻辑、外部实体6类元素。
12、软件设计应遵循的原则是什么?
答:软件设计中一般应遵循以下原则:模块化、抽象、信息隐蔽与局部化、一致性、完整性和可验证性。
13、什么是软件的概要设计?概要设计阶段完成的主要任务是什么?
答:总体设计又称概要设计,是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构和数据库模式。
14、启发设计规则有哪些?
答:
(1)模块功能的完善化;
(2)消除重复功能,改善软件结构;
(3)模块规模应该适中;
(4)模块的深度、宽度、扇出和扇入都应适当;
(5)模块的作用范围应该在控制范围之内;
(6)力争降低模块接口的复杂程度;
(7)设计单入口、单出口的模块;
(8)模块功能应该可以预测。
14、软件的详细设计阶段完成的主要任务是什么?
答:
(1)算法设计;
(2)数据结构设计;
(3)模块接口细节设计;
(4)测试用例设计;
(5)数据库物理设计;
(6)数据代码设计;
(7)其他设计;
(8)编写详细设计说明书并进行评审。
15、数据输入界面设计的主要原则有哪些?
答:在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户的记忆负担、尽可能减少输入量并实现自动输入; 对共同的输入设置默认值; 使用代码或缩写; 自动填入已输入过的内容;列表式输入; 数据分组输入。
16、代码设计的原则有哪些?
答:代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。
16、简要介绍用例图的三个要素。
答:用例图主要包括以下三个元素:
①用例(Use Case):用例是系统的使用过程或要执行的动作序列,用来描述某个参与者使用系统所完成的功能。在图中用椭圆来表示,用例名称可写在椭圆中或椭圆下面。
②参与者(Actor)。或称角色或执行者,它是系统外部的一个实体(可以是任何的事物或人所扮演的角色等)。在图中用一个小人图形表示。
③关联。表示角色与用例之间的驱动和反馈关系,也可以表示用例间的包含与扩展关系。在图中用线段或带箭头的线段表示。
17、分别写出UML对象图中对象的三种表示方式。
答:在UML中,对象图和类图一样采用矩形图示,不过对象名称下方有下划线(类名称下方没有下划线),通常对象名采用:对象名:类名、 :类名 或 对象名三种格式表示,中间形式是尚未给对象命名,最后一种形式是省略了类名。
18、举例说明类图和对象图之间的关系。
答:对象图展示了一组对象和它们之间的关系。对象图是类图的实例,对象之间的连接是类之间关联的实例。类图和对象图的不同点在于对象图显示类的多个对象实例,而不是实际的类。
19、活动图的主要作用是什么,状态图的主要作用是什么?
答:状态图和活动图都属于行为图,主要用于分析、设计阶段描述对象的行为。状态图适于描述单个对象状态的变化情况,活动图适于描述一个工作过程、多个对象之间的合作。
状态图描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。
活动图(Activity Diagram)是状态图的变种。状态图适于描述单个对象状态的变化情况,而活动图的目的是描述动作(执行的工作和活动),以及对象状态改变的结果,适于描述一个工作过程、多个对象之间的合作。与状态图不同的是,活动图中动作状态的迁移不是靠事件触发,当动作状态中的活动完成时就触发迁移,活动图中的一个活动结束后将立即进行下一个活动。
20、面向对象分析通常要建立哪三种模型?它们分别描述系统的哪些方面?
答:面向对象分析通常要建立三种模型,分别是对象模型、动态模型和功能模型。其中:
对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的模型;
动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结构的模型;
功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。
21、对象模型有哪五种层次?
答:复杂问题(大型系统)的对象模型由5个层次组成,即主题层、类-&-对象层、结构层、属性层和服务层。
(1)类-&-对象层:定义类和属性。在这个层次将分析与待开发软件对应的各个现实世界的实体,并从中抽象出类和对象。
(2)结构层:定义对象和类之间的层次结构关系,如一般-特殊结构(即继承结构)、整体-部分结构(即组合结构)。
(3)属性层:定义属性。为类和对象层中抽取出来的各个类和对象设计静态属性和它们之间的关系。
(4)服务层:定义对象和类的动态属性以及对象之间的消息通信。
(5)主题层:主题是指导读者理解大型、复杂模型的一种机制。定义若干个主题,把有关的对象分别划归不同的主题,每个主题构成一个子系统。
22、建立对象模型的基本过程是什么?
答:建立对象模型的基本过程如下:
确定对象和类->确定结构 ->确定主题 ->确定服务和消息
23、程序设计语言发展至今已经历了哪几个时代?
答:第一代语言(机器语言)、第二代语言(汇编语言)、第三代语言(高级语言)。高级语言种类繁多,又可分为传统的基础语言、结构化语言和专用语言三类。
26、良好的编码风格包括哪几方面?
答:
(1)源程序文档化
(2)数据说明
(3)语句构造
(4)输入与输出
(5)效率
27、在软件开发时,应根据哪些因素选择程序设计语言?
答:
(1)项目的应用领域。
(2)用户的要求。
(3)软件开发工具。
(4)算法和数据结构的复杂性。
(5) 软件开发人员的知识。
(6) 系统的可移植性要求。
28、在软件开发时,应根据哪些因素选择程序设计语言?
答:
(1)项目的应用领域。
(2)用户的要求。
(3)软件开发工具。
(4)算法和数据结构的复杂性。
(5) 软件开发人员的知识。
(6) 系统的可移植性要求。
29、为什么要进行软件测试?软件测试要以什么目标和原则?
答:软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。软件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的结果也是分析软件可靠性的重要依据。
在软件测试中,应注意以下指导原则:
(1)所有测试都应追溯到需求
(2)坚持“尽早地和不断地进行软件测试”。
(3)测试用例应由输入数据和预期的输出结果两部分组成。
(4)程序员应避免测试自己的程序。
(5)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
(6)充分注意测试中的群集现象。
(7)严格执行测试计划,排除测试的随意性。
(8)应当对每个测试结果做全面检查。
(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。
(10)应长期保留所有测试用例。保留测试用例有助于以后修改程序后的回归测试。
30、软件测试包括哪几个过程?测试过程中包括哪些数据源?
答:测试过程分为4个步骤,即单元测试、组装测试、确认测试和系统测试。
数据源有:
(1)软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。
(2)测试配置:包括测试计划、测试用例、测试驱动程序等。
(3)测试工具:测试工具为测试的实施提供某种服务,以减轻测试过程中的手工劳动,提高测试效率。
31、黑盒测试法与白盒测试法的本质区别是什么?它们的使用场合有何不同。
答:黑盒测试法与白盒测试法的根本区别是设计测试用例的方法不同。前者是测试产品的功能,后者是测试产品的内部结构和处理过程。
通过黑盒测试主要发现以下错误:
(1)是否有不正确或遗漏了的功能。
(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。
(3)是否有数据结构或外部数据库访问错误。
(4)性能是否满足要求。
(5)是否有初始化或终止性错误。
白盒测试法是一种程序级的微观上的测试,不适合于大单元、大系统的测试,主要用于很小单元的测试,以及从事软件底层工作、生产构件的测试人员使用。
32、试比较测试与调试的异同。
答:软件测试的目的是尽可能多地发现程序中的错误,而调试的目的是根据测试时发现的错误,找出错误的原因和具体位置,并改正错误。测试与调试的不同如下表所示。
测试与调试的不同:
测试 (test) | 调试 (debug) |
---|---|
目的是发现错误 | 目的是找出错误位置并排除 |
有计划 | 被动的 |
以已知条件开始,使用预先定义的程序,有预知的结果 | 以不可知内部条件开始,结果一般不可预见 |
由独立的测试组,在不了解软件设计的条件下完成 | 由程序作者进行,谁开发的程序就由谁来调试 |
33、试叙述面向对象的单元测试、组装测试、确定测试的内涵。
(1)面向对象的单元测试
面向对象的单元测试是进行面向对象集成测试的基础。面向对象的单元测试以类或对象为单位。由于类包含一组不同的操作,并且某些特殊的操作可能被多个类共享,因此,单元测试不能孤立地测试某个操作,而是将操作作为类的一部分来测试。
(2)面向对象的集成测试
因为在面向对象的软件中没有层次的控制结构,并且构成类的成分彼此之间存在着直接或间接的交互作用,所以,传统意义上的自顶向下和自底向上的集成策略将不再适用。
(3)面向对象的确认测试
在确认测试层次,不需要再考虑类的实现和交互的具体细节,只要验证交互过程及功能,包括提供的用户界面,用户可见的操作,软件的反应和输出的结果等情况,其中测试用例的选择主要是依据动态模型和系统的脚本描述。
34、为什么要进行软件维护?软件维护通常有几种类型?
对软件进行维护的根本目的是为了延长软件的生存期。软件维护的原因除了软件在开发过程中的错误需要修改外,根本的原因是变化,使用软件的机构的工作流程、组织机构、软件工作的软硬件环境等都在变化,要求使用的软件也跟着变化,所以必须对软件进行维护。
维护的类型有四种(1)改正性维护(2)适应性维护(3)完善性维护(4)预防性维护
35、 请说明软件维护组织中各种人员及其职责。
答:维护组织机构内一般设修改负责人、维护管理员、系统监督员、配置管理员、维护人员等。各自的职责是:
修改负责人是维护的行政领导,管理维护的人事工作。
维护管理员负责接受维护申请,他把申请转交给系统监督员(或称系统管理员)去评价。并负责向上级报告维护工作。
系统监督员对维护任务做出评价。
配置管理员严格把关程序修改过程,控制修改的范围,对软件配置进行审计。
维护人员负责分析程序的维护要求并进行程序的修改工作。
36、请说明软件维护的流程。
答:(1)确定维护的类型及维护要求(2)根据不同维护类型确定维护的时机和策略(3)实施维护任务。(4)维护复审。
37、什么是软件的可维护性。
答:软件可维护性是指维护人员理解、改正和改进这个软件的难易程度。
38、简述决定软件可维护性的因素。
答:1)可理解性2)可测试性3)可修改性4)可靠性5)可移植性6)可使用性7)效率
39、简述提高软件可维护性的方法。
答:1)建立明确的软件质量目标2)使用先进的软件开发技术和工具3)进行明确的质量保证审查4)选择可维护的程序设计语言5)改进程序文档。
40、软件维护的副作用有哪些?
答:代码的副作用,数据的副作用,文档的副作用。
41、软件质量的六个要素是什么?
答:软件质量的6个要素是:
(1)功能性:软件所实现的功能满足用户需求的程度。
(2)可靠性:在规定的时间或条件下,软件所维持其性能水平的程度。
(3)易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时所做努力的程度。
(4)效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度
。
(5)可维护性:在一个可运行的软件中,为了满足用户需求、环境改变或软件错误发生时进行相应修改所做的努力的程度。
(6)可移植性:把程序从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。
42、软件工程标准化的意义有哪些?
答:软件工程标准化会给软件开发工作带来以下好处:
(1)提高软件的可靠性、可维护性和可移植性,从而提高软件产品的质量。
(2)提高软件的生产率,提高软件人员的技术水平。
(3)改善软件开发人员之间的通信效率、减少差错。
(4)有利于软件工程的管理。
(5)有利于降低软件成本、缩短软件开发周期,降低运行与维护成本。