一、填空题
1、软件是计算机系统中的程序(指令)、数据及其文档(+服务)的总称。
2、软件工程是指导计算机软件开发和维护的工程学科。
3、 软件工程学的主要内容是软件开发技术和软件工程管理。
4、 技术可行性的研究包括成本-效益分析、公司经营长期策略、开发所需的成本和资源和潜在的市场前景
5、 成本-效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。
6、 软件工程有两种效益,它们是无形效益和有形效益。
7、 需求分析阶段产生的最重要的文档是需求规格说明书
8、 数据流图的4种基本成分是数据流、加工、数据存储、数据源点或终点。
9、 系统详细设计阶段最后产生的文档是详细设计说明书。
10、 一组语句在程序中多处出现,为了节省内存空间把这些语句放在一个模块中,该模块是偶然内聚。
11、 软件详细设计工具可分为图形工具、设计语言和表格工具。
12、 在面向对象分析和OOD中,通常将对象的操作称为方法或服务
13、 具有相同特征和行为的对象构成类。
14、 从语言层次上,编程语言可以分为面向机器的语言和面向问题的语言两种类型。
15、 软件测试的目的是发现软件的错误
16、 软件测试用例主要由输入数据和预期输出结果两部分组成。
二、选择题
1.下面()不是软件的特征
A.系统性与复制性B.有形性与可控性C.抽象性与智能性D.依附性与泛域性
2.下面()不是系统软件。
A. BIOSB. Windowsc.设备驱动程序D.办公软件
3.软件危机的主要原因是()。A.软件本身特点及开发方法B.对软件的认识不够C.软件生产能力不足D.软件工具落后
4.下面()不属于软件工程学科所要研究的基本内容。A.软件工程原理B.软件工程目标C.软件工程材料D.软件工程过程
5.研究开发资源的有效性是进行()可行性分析的一方面。A.技术B.经济C.社会D.操作
6.技术可行性要解决()。
A.是否存在侵权的问题B.成本-效益问题C.运行方式是否可行的问题D.技术风险问题
7.在软件工程项目中,不随研发人数的增加而使软件的生产率增加的主要因素是( )。A.工作阶段间的等待时间B.生产原型的复杂性C.参与人员所需的工作站数D.参与人员之间的通信困难
8.制订软件计划的目的在于尽早对拟开发的软件进行科学合理估价,软件计划的任务是()。
A.组织与管理B.分析与估算
C.设计与测试
D.管理与调度
9.研究软硬件资源的有效性是进行()研究的一方面。A.技术可行性B.经济可行性
C.社会可行性D:操作可行性
10.系统流程图用于可行性分析中的()的描述。A.当前运行系统B.当前逻辑模型C.目标系统D.新软件
11.系统流程图是描述()的工具。A.逻辑系统
B.程序系统C.体系结构D.物理系统
12.SA方法的基本思想是()。A.自底向上,逐步抽象B.自底向上,逐步分解C.自顶向下、逐步分解D.自顶向下、逐步抽象
13.DFD是常用的进行软件需求分析的图形工具,其基本符号是()。
A.输入、输出、外部实体和加工
B.变换、加工、数据流和存储C.加工、数据流、数据存储和外部实体
D.变换﹑数据存储、加工和数据流
14.判定表和判定树是DFD中用以描述加工的工具,它通常描述的对象是()。A.逻辑判断B.层次分解C.操作条目D.组合组件
15.系统流程图用于可行性分析中的()的描述。A.当前运行系统B.当前逻辑模型C.目标系统D.新系统
16.系统流程图是描述()的工具。A.逻辑系统B.程序系统C.体系结构D. 物理系统
17.在程序的描述和分析中,用于指明数据来源、流向和处理的辅助图形是()。A.数据结构图B. DFDC.业务结构图D. 其他图
18.以下()不属于系统设计。A.总体设计
B.详细设计C.过程设计D.需求设计
19.为了提高模块的独立性,模块之间最好是()。A.公共耦合B.控制耦合C.数据耦合D.内容耦合
20.详细设计的任务是确定每个模块的()。A.外部特性B.算法和数据结构C.内部特性D、功能
21.数据库设计时的概念数据模型一般用()图表示。A. PADB.E-RC.E-PD.HIPO
22.在面向对象方法中,信息隐蔽是通过对象的()来实现的。A.分类性B.继承性C.封装性
D.共享性
23.只有类的共有界面的成员才能成为使用类的操作,这是软件设计的()原则。A.过程抽象B,功能抽象C.信息隐蔽
D.共享性
24.当且仅当一个操作对类的实例的用户有用时,它才是类公共界面的一个成员,这是软件设计的()原则。A.标准调用B.最小界面C.高耦合D.高效率
25.每个派生类应该当作基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集,这是软件设计的()原则。A.动态联编B.多态性C.信息隐蔽D.继承性
26.下面不属于一般程序设计方法的是()
A.模块化编程方法B. 体系化编程方法C. 结构化编程方法D. OOP设计方法
27.下面()不属于选择OOL应该考虑的因素。A.开发环境B.发展前景C.类库的可扩展性D.支持多继承
28.下面()是错误的说法。A.中间版本是软件未完成前的版本B. α版本是可以提交严格测试的软件版本C.β版本是提交给测试人员进行全面测试的软件版本D.发布版本是正式向社会发布,或向用户提交使用的软件版本
29.成功的测试是指运行测试用例后()。
A.未发现程序错误B.发现了程序错误C.证明程序正确D.改正了程序错误
30.检查软件产品是否符合需求定义的过程称为()。A.组装测试B.单元测试C.系统测试D.有效性测试
31.软件的集成测试工作最好由()承担,以提高集成测试的效果。A.该软件的设计人员B.该软件开发组的负责人
C.该软件的编程人员D.不属于该软件开发组的软件设计人员
三、简答题
1.什么是软件生存周期?软件生存周期为什么要划分阶段?划分阶段的原则是什么?
答案: ①软件生存周期(Software life cycle)是从开始研发软件到软件停止使用的整个过程。
② 把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。
③ 软件生存周期 阶段划分的原则主要包括:
(1)各阶段的任务相对独立。
(2) 同一阶段的工作任务性质尽量相同。
2.什么是软件开发方法?有哪些主要方法?
答案:① 软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。
②主要方法: 瀑布模型 、快速原型模型、增量模型、螺旋模型、喷泉模型
3.比较各种软件开发模型(模式)的特点。
答案:① 瀑布模型开发适用于 软件需求明确,开发技术成熟,工程管理较严格 的场合下使用
② 快速原型模型最适合于可以先尽快构建成一个原型的应用系统。
③ 增量模型适用于软件需求不明确、设计方案有一定风险的软件项目
④ 螺旋模型将 瀑布模型和快速原型模型 结合,强调了其他模型所忽视的风险分析,适合于大型复杂系统
⑤ 喷泉模型适合于利用面向对象技术的软件开发项目。 可使开发过程具有迭代性和无间隙性
4.可行性分析的任务有哪些?
答案: 可行性分析主要任务主要是:决定软件项目“做还是不做(是否可行)”、及完成对可行项目的“初步方案”。
5.需求分析的任务和步骤是什么?
答案: 需求分析的基本任务是通过软件开发人员与用户的交流和讨论,准确地分析理解原系统,定义新系统的基本功能、性能、开发时间、投资情况人员安排等,并获得需求规格说明书。
步骤:
(1)确定目标系统的具体要求;
(2)建立目标系统的逻辑模型;
(3)编写需求文档,验证确认需求。
6.需求分析方法的类型有哪些?
答案: 目前常用的需求分析方法分为4种:功能分解法、结构化分析法、信息建模法和面向对象的分析方法。
7.总体设计的原则有哪些?
答案: 由宏观到微观、逐步求精。
8.软件总体设计与详细设计的区别有哪些?
答案: 总体设计的主要任务是,通过仔细分析软件规格说明,适当地对软件进行功能分解,从而将软件划分为模块,并且设计出完成预定功能的模块结构。 详细设计应根据总体设计提供的文档,确定每一个模块的算法、内部的数据组织,选定工具表达清晰正确的算法,编写详细设计文档、详细测试用例与计划。
9.面向对象的开发方法与面向数据流的结构化开发方法有什么不同?
答案: 面向对象开发方法是我们分解问题所使用方法演化的结果。在结构化开发方法中过程抽象是优先的,而面向对象开发方法中优先的是实体,即问题论域的对象。
10.面向对象的特征和要素是什么?
答案:
特征:
(1)对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
(2)分类性。分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
(3)继承性。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
(4)多态性。多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
要素:
(1)抽象。抽象是指强调实体的本质、内在的属性。
(2)封装性(信息隐藏)。封装性是保证软件部件具有优良的模块性的基础。
(3)共享性。
11.软件实现的概念及主要任务和过程有哪些?
答案:
概念:软件实现是通过编程或利用复用与生成技术集成、测试和调试,具体完成软件产品(项目/工程)的过程。
主要任务:软件实现阶段的主要任务是将软件详细设计的结果转换为目标软件。
过程:在宏观上软件实现是指遵照制定的程序设计规范,按照“软件详细设计文档”中对数据结构、算法分析和模块实现等方面的要求和说明,从软件企业的函数库、存储过程库、类库、构件库、中间件库中挑选有关的部件,采用面向对象的语言,将相关部件进行组装,分别实现各模块的功能,最终实现新系统的功能、性能、接口、界面等。
在微观上,软件实现是指通过编程、调试、单元与集成测试、系统集成等创建软件产品的过程。
12.应该由谁来进行有效性测试?是软件开发者还是软件用户?为什么?
答案: 应该由软件开发者进行有效性测试。因为有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求 ,所以需要软件开发者进行测试。