面向对象软件工程知识点
1.封装是指把对象的(A)结合在一起,组成一个独立的对象。
A.属性和操作 B.信息流 C.消息和事件 D.数据的集合
2.状态图和活动图建立了UML面向对象开发过程中的对象动态(B)模型。
A.交互 B.状态 C.体系结构 D.软件复用
3.UML的(C)模型图由活动图、顺序图、状态图和合作图组成。
A.用例 B.静态
C.动态 D.系统
4.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A)。
A.活动图 B.状态图 C.配置图 D.构建图
5.设计模式就是对(D)的描述或解决方案,往往直接对应一段程序代码。
A.某个构件 B.成熟的设计 C.一个用例
D.特定问题
6.类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必须有(C)。
A.正负号 B.动作 C.具体值 D.私有成员
7.顺序图的模型元素有(A)、消息、生存线、激活期等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模。
A.对象 B.箭头 C.活动 D.状态
8.状态图可以表现(B)在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引起的动作。
A.一组对象 B.一个对象 C.多个执行者 D.几个子系统
9.使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实现的一种方法是(B)。
A.继承
B.多态性 C.约束 D.接口
二.面向对象软件工程概述_2
1.封装是指把对象的(A)结合在一起,组成一个独立的对象。
A.属性和操作 B.信息流
C.消息和事件 D.数据的集合
2.类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必须有(C)。
A.正负号 B.动作 C.具体值 D.私有成员
3.在下列软件生存周期模型中,规定了由前至后、相互衔接的固定次序的模型是(A)。
A.瀑布模型 B.增量模型 C.喷泉模型 D.螺旋模型
4.使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实现的一种方法是(B)。
A.继承
B.多态性 C.约束 D.接口
5.下列关于面向对象的分析与设计的描述,正确的是(B)。
A.面向对象设计描述软件要做什么
B.面向对象分析不需要考虑技术和实现层面的细节
C.面向对象分析的输入是面向对象设计的结果
D.面向对象设计的结果是简单的分析模型
6.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中类成员访问限定性(D)
A.Public B.Protected C.Private
D.friendly
7.一个对象和另一个对象之间,通过消息来进行通信。消息通信在面向对象的语言中即(B)
A.方法实现 B.方法调用
C.方法嵌套 D.方法定义
8.(C)不是软件需求规格说明书中应包括的内容。
A.功能需求 B.性能需求 C 数据结构 D 验收标准
9.软件复用技术的目的是降低软件(C)、提高软件开发的效率和缩短软件开发周期。
A.技术难度 B.资源浪费
C.开发和维护的成本 D.代价
10.面向对象方法中(D)机制是子类可以自动拥有父类的全部操作。
A.约束 B.对象映射 C.信息隐藏
D.继承
11.在UML中面向对象的概念有很多,下列哪个不是(D)
A.抽象 B.继承 C.封装
D.线程
12.在软件的需求分析中,开发人员要通过用户解决的最重要的问题是(A)。
A.要让软件做什么 B.要给该软件提供哪些信息
C.要求软件达到的工作效率为多大
D.要使软件具有何种结构
13.下列关于面向对象的分析与设计的说法中,不正确的是(B)。
A.面向对象分析侧重于理解问题
B.面向对象设计不需要考虑技术和实现层面的细节
C.面向对象分析描述软件要做什么
D.面向对象设计侧重于理解解决方案
14.内聚性和耦合性是度量软件模块独立性的重要准则,进行软件设计时应力求(B)
A.高内聚、高耦合
B.高内聚、低耦合
C.低内聚、高耦合 D.低内聚、低耦合
15.软件构件是已经通过全面测试并在(A)中运行的可复用、功能独立、完整且具有通用性的程序模块。
A.实际系统 B.试验室
C.系统测试 D.用户测试
16.在软件开发中,下面不属于设计阶段的任务的是(B)。
A.定义模型算法 B.定义需求并建立系统模型
C.数据结构设计 D.给出系统模块结构
17.软件的集成测试工作最好由(D)承担,以提高集成测试的效果。
A.该软件的设计人员 B.该软件开发组的负责人
C.该软件的编程人员
D.不属于该软件开发组的软件设计人员
18.一个对象和另一个对象之间,通过消息来进行通信。消息通信在面向对象的语言中即(B)
A.方法实现
B.方法调用 C.方法嵌套 D.方法定义
1.软件由 程序 、数据、 文档 三部分组成。
2.在UML软件开发过程的系统分析阶段,产生的对象模型有三种分别为对象的 静态 模型、对象的 动态 模型和对象的 系统功能 模型。
3. 软件工程 是指导计算机软件开发和维护的一门工程学科。
4.软件工程包括3个要素:方法、 工具 、过程。
一.简述面向对象系统开发过程。
1.面向对象的分析(OOA)
2.面向对象的设计(OOD)(高层设计和类设计)
3.面向对象实现与测试
4.维护阶段
二.什么叫软件生命周期,可将软件生命周期分为哪3个时期,每个时期又包含哪些阶段?
1.一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个时期称为软件生命周期 。
2.由软件定义、软件开发和运行维护三个时期组成。
3.问题定义,可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试,软件维护。(包含关系的话自己画一下,留空了)
三.简述面向对象方法的优点。
1.与人类习惯的思维方法一致(渐进的认识过程、抽象、归纳、演绎)。
2.稳定性好
3.可重用性好
4.较易开发大型软件产品
5.可维护性好(稳定性、容易修改、容易理解)
四.面向对象方法学的4个要点是什么?
面向对象方法=对象+类+继承+消息
(1)认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。
(2)把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。
(3)按照子类与父类的关系,把若干个对象类组成一个层次结构的系统。
(4)对象彼此之间仅能通过传递消息互相联系。
三. UML-4
1.状态图和活动图建立了UML面向对象开发过程中的对象动态(B)模型。
A.交互 B.状态 C.体系结构 D.软件复用
2.UML的(C)模型图由活动图、顺序图、状态图和合作图组成。
A.用例 B.静态
C.动态 D.系统
3.顺序图的模型元素有(A)、消息、生存线、激活期等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模。
A.对象 B.箭头 C.活动 D.状态
4.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A)。
A.活动图 B.状态图 C.配置图 D.构件图
5.状态图可以表现(B)在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引起的动作。
A.一组对象 B.一个对象 C.多个执行者 D.几个子系统
6.UML中,用例图展示了外部Actor与系统所提供的用例之间的链接,UML中的外部Actor是指(D)
A.人员 B.单位 C.人员和单位
D.人员和外部系统
7.UML的(B)模型图由类图、对象图、包图、构件图和部署图组成。
A.用例
B.静态 C.动态 D.系统
8.(A)模型是开发者与客户交流的纽带。
A.用例 B.类 C 状态 D 交互
9.自行车是一种交通工具,自行车和交通工具之间的关系是(D)
A.组合 B.关联 C.依赖 D.泛化
10.UML的系统分析进一步要确立三个系统模型是(D)、对象动态模型和系统功能模型。
A.数据模型 B.体系结构模型
C.对象关系模型 D.对象静态模型
11.下面(C)不是类图中类与类之间的关系。
A.依赖关系 B.关联关系
C.扩展关系 D.泛化关系
12.类图中关联的重数是指(B)。
A.一个类有多个方法被另一个类调用。
B.一个类的实例能够与另一个类的多个实例相关联。
C.一个类的某个方法被另一个类调用的次数。
D.两个类所具有的相同的方法和属性。
13.一个(C)迁移图符可以有多个目标状态,它们可以把一个控制分解为并行运行的并发线程,或将多个并发线程接合成单个线程。
A.状态 B.对象 C.活动 D.同步并发
14.UML客户需求分析产生的用例模型描述了系统的(D)。
A.状态 B.体系结构 C.静态模型 D.功能要求
15.UML的系统分析进一步要确立的三个系统模型是(B)、对象动态模型和系统功能模型。
A.数据模型
B.对象静态模型 C.对象关系模型 D.体系结构模型
16.(C)不是用例图的主要成分。
A.用例 B. 执行者 C.状态 D.系统
17.UseCase用来描述系统在事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系统”中,创建订单和更新订单都需要检查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是(C)关系。
A.聚集(aggregation )B.扩展(extend)
C.包含(include) D.分类(classification)
18.顺序图描述(D)对象之间消息的传递顺序。
A.某个 B.单个 C.一个类产生的 D.一组
19.状态图描述一个对象在不同(A)的驱动下发生的状态迁移。
A.事件 B.对象 C.执行者 D.数据
20.顺序图和合作图建立了UML面向对象开发过程中的对象动态(B)模型。
A.交互
B体系结构 C.软件复用 D.状态
21.活动图中动作状态之间的迁移不是靠(B)触发的,当活动(动作)状态中的活动完成时迁移就被触发。
A.对象 B.事件 C.执行者 D.系统
22.下列关于状态图的说法中,正确的是(B)。
A.状态图是UML中对系统的静态方面进行建模的五种图之一。
B.状态图是活动图的一个特例,状态图中的多数状态是活动状态。
C.活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。
D.状态图强调对有几个对象参与的活动过程建模,活动图更强调对单个反应型对象建模。
1. 组合 是指“整体”拥有它的“部分”,它具有强的物主身份,表示事物的整体/部分关系较强的情况,整体不存在了部分也会随之消失。
2.活动图既可以描述对象的动态行为,还可以用来描述 用例
。
3.用例模型中的执行者可以是 人员 也可以是 外部系统 。
4. 顺序 图和 合作 图用来表达对象之间的交互,是描述一组对象如何合作完成某个行为的模型化工具。
5.用例图中以实线方框表示系统的范围和边界,在系统边界内描述的是 用例 ,在边界外面描述的是 执行者
。
6.软件构件分为 源代码 构件、 二进制 构件和 可执行 构件。
7.交互模型描述系统中对象间的交互行为。每一个交互都有 (发送者) 和 (接收者) ,它们可以是整个系统、一个子系统、一个用例、一个对象类或一个操作。
8.活动图中活动状态的迁移不是由事件进行触发,一个活动执行完毕
自动 进入 下一个 活动状态。
1.简述系统动态建模包括哪些模型。
交换模型和状态模型
2.简述用例建模的步骤。
(1)定义系统的边界和范围
(2)寻找和确定系统的执行者
(3)寻找和确定用例
(4)对用例进行描述
(5)定义用例之间的关系
(6)审核用例模型
3.聚集和组合是关联的特例。聚集表示类与类之间的关系是整体和部分的关系。请分别举一组合聚合和组合的例子,并使用类图中的符号表示出来,并用代码实现。
(1)聚合
(2)组合
4.对于交通信号灯,每次红灯只持续30秒,然后绿灯亮。绿灯持续25秒,黄灯亮。黄灯闪烁5秒后红灯再一次亮。请用状态图描述信号灯。
四.面向对象设计模式-2
1.设计模式就是对(D)的描述或解决方案,往往直接对应一段程序代码。
A.某个构件 B.成熟的设计
C.一个用例
D.特定问题
2.(C)是指以设计复用为目的,采用一种良好定义、正规的、一致的方式记录的软件设计经验。
A.架构 B.模型 C.设计模式 D.一个对象成员
3.软件复用是面向对象系统分析与设计的核心支持技术之一,软件复用的核心是(D)。
A.对象类 B.模块 C.设计模式 D.软件构件技术
4.(C)是在不改变代码外在行为的前提下,对代码做出修改,以改进程序内部结构。
A.版本控制 B.代码调式
C.代码重构 D.代码走查
5.(B)不是敏捷软件开发所突出强调的。
A.个体和交互 B.面面俱到的文档 C.客户合作 D 响应变化
6.设计模式的作用不包括(C)。
A.优化的设计经验 B.极高的复用性 C.极高的耦合度 D.丰富的表达能力
7.设计模式在面向对象系统设计中是(D)的一种形式。
A.软件调用 B.设计方法 C.子系统 D.软件复用
8.设计模式的作用不包括(C)。
A.优化的设计经验 B.极高的复用性
C.极高的耦合度 D.丰富的表达能力
9.关于工厂模式下列说法正确的是(C)。
A.当面临一系列相互依赖的对象的创建工作时使用工厂方法模式较适合。
B.当面临一系列相互依赖的对象的创建工作时使用简单工厂模式较适合。
C.当面临一系列相互依赖的对象的创建工作时使用抽象工厂模式较适合。
D.以上都不对
10.一个设计模式的基本要素不包括(D)。
A.模式名称 B.问题 C.解决方案 D. 程序代码
11.(B)不是敏捷软件开发所突出强调的。
A.个体和交互 B.面面俱到的文档
C.客户合作 D 响应变化
12.(D)不是好的极限编程实践。
A.客户作为团队成员 B.短交付周期
C.结对编程 D.极高的开发速度
13.对依赖倒置原则(DIP)的理解,(A)是错误的。
A.高层模块调用低层模块,从而产生依赖
B.低层模块应该依赖于抽象 C .抽象不应该依赖于细节
D .细节应该依赖于抽象
14.(A)模式属于创建型设计模式。
A.抽象工厂 B.适配器 C.代理 D.策略
15.在面向对象设计中,设计模式是系统(B)的基础,正确的使用设计模式,有助于快速开发出可复用的系统。
A.分析
B.可复用 C.设计 D.实现(编程)
16.设计模式( B)具体的编程语言。
A.依赖于
B.独立于 C.依附于 D.指定了
1. 单例
模式属于对象创建型模式,它保证一个类仅有一个实例。
2.设计模式按照模式的目的将其分为创建型、 结构型
和 行为型 。这三种类型的设计模式,分别描述了对象在创建、组合以及以及相互作用的过程中如何降低它们之间的耦合性、提高复用性的种种方案。
3. 重构 是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
4. 命令 模式的动机是将调用操作的对象与知道如何实现该操作的对象解耦。
5.创建型模式就是描述怎么创建一个 对象 ,它隐藏了其创建的具体细节,使程序代码不依赖具体的对象。
6.行为型模式就是描述算法以及对象之间的 职责
分配
1.简述面向对象设计原则有哪些?
(1)单一职责原则
(2)开闭原则
(3)里氏代换原则
(4)依赖倒转原则
(5)接口隔离原则
(6)合成复用原则
(7)迪米特法则
2.简述什么是面向对象设计模式及抽象工厂模式的意图。
(1)面向对象软件开发领域中,设计模式包括一些规则来完成一定任务。设计模式针对一些特定的问题,提出一种解决方案。
(2)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
3.简述观察者模式的动机和意图。
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。
动机:在软件构建过程中,我们需要为某些对象建立一种"通知依赖关系"。一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。
使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。
4.简述适配器模式的动机和意图。
意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于 接口不兼容而不能一起工作的那些类可以一起工作。
动机:在软件系统中,由于应用环境的变化,常常要将一些显存的对象放在新的环境中应用,但是新环境要求的接口是这些显存对象所不满足的。
五.极限编程和RUP(新)
1.(B)不是敏捷软件开发所突出强调的。
A.个体和交互 B.面面俱到的文档 C.客户合作 D. 响应变化
2.(B)不是敏捷软件开发应该遵循的原则。
A.软件交付的时间间隔从几周到几个月,越短越好
B.开发后期,应尽量避免变化
C.尽早的、持续的交付有价值的软件 D.业务人员和开发人员一起工作
3.(D)不是好的极限编程实践。
A.客户作为团队成员 B.短交付周期 C.结对编程 D.极高的开发速度
1.极限编程是以测试开始的,测试程序优先设计,测试成为开发的基准, 测试驱动开发也就是客户的需求驱动软件的开发。
1.极限编程有哪些最佳实践?
需求方面(客户故事和客户全程参与)
设计方面(简单设计)
测试方面(测试驱动开发)
编码方面(最佳实践1:代码重构
最佳实践2:结对编程
最佳实践3:集体代码所有权
最佳实践4:强调编码标准)
项目管理方面(最佳实践1:持续集成
最佳实践2:短期交付
最佳实践3:可持续的开发速度
最佳实践4:系统隐喻
最佳实践5:计划游戏
最佳实践6:完整的团队)
2.试对极限编程和RUP进行比较。
(1)敏捷开发与RUP相比裁剪了很多内容。
(2)敏捷过程中客户的位置与作用是重要的,不可替代。
(3)在RUP中大量使用了UML建模,敏捷过程中不提倡面面俱到的文档所谓敏捷建模就是不依赖于专业的建模工具(如Rational Rose,Microsoft Visio),而是大量使用白板(也可以是白纸,黑板等等)画草图。而且草图也不一定完全遵循UML文法,只要是方便团队成员之间的沟通和理解均可。
(4)在RUP中很注重软件过程的管理,开发的监视和控制。所以会产生很多的相关文档,而在敏捷项目中,我们团队每个成员都是积极主动的参与者。所以我们最后的集成文档是可以略掉的。同时我们还避免了很多监控和测试的文档。
(5)一般来说,对于小型项目,硬件要求和系统复杂度都相对较低。所以很多团队都省去了配置与变更管理这项工作流,而且效果很好。
(6)在敏捷钟我们主张快速交付原型软件,这就意味着我们必须对设计过程进行适当的简化,越是简单的设计就越容易开始项目。
(7)项目的需求是不可能一蹴而就的。迭代式的发现需求,响应需求是RUP和敏捷过程共同包含的。
3.简述RUP有哪些最佳实践?
迭代式开发
管理需求
使用基于构件的体系结构
可视化建模
检验质量
控制变更
六.测试
1.一个成功的测试可以(C)。
A.表明程序没有错误 B.发现所有错误
C.发现尚未发现的错误 D.提高软件可靠性
2.在下列软件生存周期模型中,哪一个是由Rational公司推出的软件过程?(D)
A.瀑布模型 B.极限编程
C.喷泉模型 D.RUP统一过程
3.在程序的规格说明中,对输入条件有一句话:“…… 项数可以从1到999 ……” ,则在测试时可以划分:(A)。
A.一个有效等价类和两个无效等价类
B.一个有效等价类和一个无效等价类
C.两个有效等价类和两个无效等价类
D.两个有效等价类和一个无效等价类
4.从测试完成程度来看,下列选项中测试覆盖率最高的是(D)。
A.语句覆盖 B.分支覆盖
C.条件组合覆盖 D.路径覆盖
5.一个程序只有一个输入S,其取值范围是-60≤S≤60。现从输入的角度设计了一组测
试数据:-200,20,200,设计这组测试用例的方法是(B)。
A.条件覆盖 B.等价类划分
C.边界值分析 D.错误推断
6.使用(D)设计测试用例时,要选择临近边界的合法数据和非法数据。
A.因果图法 B.错误猜测法
C.等价类划分法 D.边界值分析法
7.例如:在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理,则在测试时可以划分(A)。
A.4个有效等价类和1个无效等价类
B.1个有效等价类和1个无效等价类
C.5个有效等价类和1个无效等价类
D.2个有效等价类和1个无效等价类
8.从测试完成程度来看,下列选项中测试覆盖率最低的是(A)
A.语句覆盖
B.分支覆盖 C.条件组合覆盖 D.路径覆盖
9.使用(D)设计测试用例时,要选择临近边界的合法数据和非法数据。
A.因果图法 B.错误猜测法
C.等价类划分法 D.边界值分析法
1.在集成测试中,模块的组装方法分为非渐增式和渐增式两种方法。在渐增式测试方法中包括 自顶向下
和 自底向上 两种集成策略。
2.测试任何软件产品都有两种基本的方法,通常,在测试过程的早期阶段主要使用 白盒测试 ,而在测试的后期阶段主要使用黑盒测试。
3. Alpha 测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试; Beta 测试由软件的最终用户们在一个或多个客户场所进行,即在开发者不能控制的环境中“真实”的应用。
4.在测试阶段,测试步骤分为模块测试、 集成测试 、系统测试、验收测试。
1.什么是白盒测试技术、黑盒测试技术?
一.(1)语句覆盖
(2)判定覆盖
(3)条件覆盖
(4)判定/条件覆盖
(5)条件组合覆盖
(6)路径覆盖
(7)点覆盖
(8)边覆盖
二.(1)等价划分
(2)边界值分析
(3)错误推测
2.等价类划分是一种黑盒测试技术,它把程序的输入域划分成若干个数据类,据此导出测试用例。若在程序的规格说明书中对输入条件有这样一句话:“……项数可以从1到999…….”,则需划分几个等价类,分别是什么?
则有效等价类是“1≤项数≤999”
两个无效等价类是“项数<1”或“项数>999
3.什么是Alpha测试?什么是Beta测试?
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试;
Beta测试由软件的最终用户们在一个或多个客户场所进行,即在开发者不能控制的环境中“真实”的应用.