单选题 某数据库中有员工关系E、产品关系P、仓库关系W和库存关系Ⅰ,其中各个关系的属性如下。
·员工关系E(employeeID,name,department)中的属性为:员工编号、姓名和部门。
·产品关系P(productID,name,model,size,color)中的属性为:产品编号、产品名称、型号、尺寸和颜色。
·仓库关系W(warehouseID,name,address,employeeID)中的属性为:仓库编号、仓库名称、地址和负责人编号。
·库存关系I(warehouseID,productID,quantity)中的属性为:仓库编号、产品编号和产品数量。
若要求仓库关系的负责人引用员工关系E的员工编号、仓库关系W的仓库编号和产品关系P的产品编号不能为空且唯一标识一个记录,并且仓库的地址不能为空,则依次要满足的完整性约束是______。
若需得到每种产品的名称和该产品的总库存量,则对应的查询语句为:
SELELCT name SUM(quantity)
FROM P,I
WHERE ______;
单选题
  • A.实体完整性、参照完整性、用户定义完整性
  • B.用户定义完整性、实体完整性、参照完整性
  • C.实体完整性、用户定义完整性、参照完整性
  • D.参照完整性、实体完整性、用户定义完整性
【正确答案】 D
【答案解析】
单选题
  • A.P.productID=I.productID
  • B.P.productID=1.productID ORDER BY name
  • C.P.productID=1.productID GROUP BY name
  • D.P.productID=1.productID GROUP BY name,quantity
【正确答案】 C
【答案解析】[解析] 关系模型的完整性规则是对关系的某种约束条件,关系模型中主要有3类完整性约束,分别为参照完整性、实体完整性和用户定义的完整性。 参照完整性规定实体间引用的完整性,本表中外码的值必须取空值或者在被引用的表中存在的相对应的主码值。由于仓库关系的负责人引用了员工关系的员工编号,因此应满足参照完整性约束。 实体完整性规定基本关系,即主属性不能取空值。由于员工关系E中的员工编号、仓库关系W中的仓库编号和产品关系P中的产品编号都不能为空且唯一标识一个记录,因此应满足实体完整性约束。 实体完整性和参照完整性是所有数据库系统都要支持的完整性约束。而用户定义的完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。根据题目要求“仓库的地址不能为空”,所以应满足用户定义完整性约束。 由以上完整性约束分析可知,正确答案是选项D。 SQL查询是数据库中非常重要的内容。该SQL查询要求对查询结果进行分组,即具有相同名称的产品的元组为一组,然后计算每组的库存数量。由此可排除选项A、B和D,空缺处的正确答案是选项C。
单选题 设有职工实体Employee(职工号,姓名,性别,年龄,通信地址,家庭成员),其中通信地址记录了邮编、省、市和街道信息;家庭成员记录了职工亲属的姓名。
为了将数据库模式设计的更合理,对于家庭成员属性______。
  • A.可以不做任何处理,直接记录亲属的姓名
  • B.只允许记录一个亲属的姓名
  • C.需要对职工实体设置若干个亲属姓名字段
  • D.应该将职工亲属的姓名加上职工号,设计成为一个独立的实体
【正确答案】 D
【答案解析】[解析] 如果用户希望在某些时候访问整个属性,而在另一些时候访问属性的一个成分,那么在设计模式中使用复合属性是一个很好的选择。 由于职工实体Employee的“通信地址”属性包含了邮编、省、市和街道信息等成分属性,因此“通信地址”是一个复合属性。通过复合属性可将相关属性聚集起来,使模型更清晰。 由于职工实体Employee的“家庭成员”属性记录了职工亲属的姓名,而一个职工可能有0个、1个或多个亲属。该实体集中不同的职工实体在“家庭成员”属性上可能有不同数值,即该属性为一个多值属性。为了将数据库模式设计得更合理,应该将职工的亲属姓名加上职工号设计成为一个独立的实体。
单选题 某公司开发基于Web的招聘系统,采用Java EE系统架构。该系统实现时,对用户的登录判断所使用的动态SQL语句如下。
SELECT *FROM Users WHERE User Name="+strUserName+"AND Password="+strPassword+";
以下关于该SQL语句的讨论中,正确的观点是______。
  • A.这是一条安全的SQL语句,能够防止SQL注入
  • B.该SQL语句不安全,若执行测试用例“strUserName:Guo'or'a'='a',strPassword:Zhu 'or'a'='a”,则系统就允许以第一行的身份进行登录
  • C.该SQL语句容易造成SQL注入,若执行测试用例“strUser Name:'Guo'--,strPassword: Zhu”,则系统就允许以Guo身份登录,并对用户表中的所有行做任何操作
  • D.该SQL语句容易造成SQL注入,若执行测试用例“strUserName:'Guo';DROP table,strPassword:Zhu”,则系统将造成数据库中的所有表被永久删除
【正确答案】 B
【答案解析】[解析] 依题意,对于该动态SQL语句若采用拼接字符串方式,则无法防止SQL注入。例如,若执行测试用例“strUserName:Guo'or'a'='a',strPassword:Zhu'or'a'='a”,则该SQL语句变为: SELECT *FROM Users WHERE User Name='Guo' or 'a'='a' AND Password='Zhu' or'a'='a';由于'a'='a'条件总是成立,因此SQL的执行结果包括用户表中的所有行,系统就允许以第一行的身份进行登录。 再例如,若执行测试用例“strUserName:'Guo'--,strPassword:Zhu”,则该SQL语句变为: SELECT *FROM Users WHERE User_Name='Guo'--AND Password='Zhu'; 由于“--’是SQL中的注释符号,其后的内容为注释,因此上述语句中“--”之后的内容变为注释,只要用户表中存在用户名为Guo,系统就允许用户以Guo的身份登录,并以Guo的身份进行任何可进行的操作。 更为严重的情况下,若用户输入“strUserName:'Guo';DROP table users_details;'--'”,以及任何字符串作为strPassword,该SQL就变为: SELECT *FROM Users WHERE User_Name='Guo';DROP table users_details; '--'AND Password='Zhu'; 这就造成数据库中users details表被永久删除。 防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。
单选题 某系统集成项目组需要在Windows 2008 Server操作系统平台上应用C++语言编写相应的应用构件。该项目组宜选用______作为构件标准。
  • A.EJB
  • B.COM+
  • C.CORBA
  • D.ODBC
【正确答案】 B
【答案解析】[解析] 组件对象模型(COM)是个开放的组件标准,具有很强的扩充和扩展能力。COM将组件的概念融入到Windows应用中。COM+可以将它理解为COM的新发展,或者为COM更高层次上的应用。它的底层结构仍然以COM为基础,几乎包容了COM的所有内容。COM+倡导了一种新的概念,它将COM组件软件提升到应用层而不再是底层的软件结构,通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统。依题意,若某项目组需要在Windows操作系统平台上用C++语言编写应用构件,则该项目组宜选用COM+作为构件标准。
单选题 以下关于嵌入式系统的软件设计的描述中,说法错误的是______。
  • A.把应用程序转换成可以在目标机上运行的二进制代码,通常需要经过编译、链接和定址等3个步骤
  • B.编译过程生成的文件就是可以在嵌入式平台上执行的二进制文件
  • C.定址过程会把物理存储器地址指定给目标文件的每个相对偏移处
  • D.编译过程产生的所有目标文件被链接成一个目标文件
【正确答案】 B
【答案解析】[解析] 在嵌入式开发过程中有主机和目标机的角色之分。主机是执行编译、链接和定址过程的计算机:目标机是指运行嵌入式软件的硬件平台。首先把应用程序转换成可以在目标机上运行的二进制代码。这一过程包含3个步骤,分别为编译、链接和定址。 ①编译过程由交叉编译器实现。所谓交叉编译器就是运行在一个计算机平台上并为另一个平台产生代码的编译器。 ②编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。 ③定址过程会把物理存储器地址指定给目标文件的每个相对偏移处。该过程生成的文件就是可以在嵌入式平台上执行的二进制文件。
单选题 嵌入式系统硬件初始化过程分为3个主要环节,按照自下而上、从硬件到软件的次序依次是______。
  • A.板级→系统级→片级
  • B.系统级→板级→片级
  • C.片级→板级→系统级
  • D.系统级→片级→板级
【正确答案】 C
【答案解析】[解析] 嵌入式系统硬件初始化是设计一个完整的板级支持包(BSP)需要完成的工作之一,它可以分为3个主要环节,按照自底向上、从硬件到软件的次序依次为:①片级初始化;②板级初始化;③系统级初始化,详细描述如下表所示。
[*]
单选题 在嵌入式系统结构的组成中,板级支持包(BSP)也称为硬件抽象层(HAL),其特点是______。
  • A.硬件无关性,操作系统无关性
  • B.硬件相关性,操作系统无关性
  • C.硬件无关性,操作系统相关性
  • D.硬件相关性,操作系统相关性
【正确答案】 D
【答案解析】[解析] 板级支持包(BSP,也称为硬件抽象层HAL)一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置等功能,它主要具有以下两个特点。 ①硬件相关性,因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需为操作系统提供操作和控制具体硬件的方法。 ②操作系统相关性,不同的操作系统具有各自的软件层次结构,因此不同操作系统具有特定的硬件接口形式。
单选题 TCP采用滑动窗口机制传输数据,在数据传输过程中可能会出现“愚笨窗口综合症”,发生这一症状的最可能原因是______。
  • A.接收方发送0窗口的应答报文后,所发送的非0窗口应答报文丢失
  • B.在某个时刻发送了小TCP分组
  • C.一个连接还未释放,又请求新的连接
  • D.定义RTT值为2倍的测量值不恰当
【正确答案】 B
【答案解析】[解析] TCP采用滑动窗口机制传输数据,在数据传输过程中可能会出现“愚笨窗口综合症(也称为傻瓜窗口综合症)”,发生这一症状的原因是:在某个时刻发送了小TCP分组,导致以后不得不将数据分割成具有该尺寸的多个分组。解决这一症状的方法之一是:在窗口更新尺寸变得大于某一合理值之前不通知对方进行窗口更新。例如,采用Clark算法,禁止接收方发送1字节窗口确认报文。
单选题 如果本地域名服务器无缓存,当采用递归方法解析另一个网络某主机域名时,用户主机和本地域名服务器发送的域名请求条数分别为______。
  • A.1条,1条
  • B.1条,多条
  • C.多条,1条
  • D.多条,多条
【正确答案】 A
【答案解析】[解析] 通常情况下,域名解析有递归解析与反复解析两种方式。递归解析要求名字服务器系统一次性完成全部名字的地址变换,而反复解析则是每次请求一个服务器,不行的话再请求其他的服务器。
单选题 以下关于各种RAID级别的描述中,错误的是______。
  • A.RAID6的磁盘利用率随着RAID组内成员盘个数的增加而增大
  • B.当RAID组内成员盘的个数为3时,RAID5的磁盘利用率最低
  • C.当镜像组内成员盘的个数为4时,RAID10的磁盘利用率最高
  • D.RAID1具有磁盘镜像和磁盘双工功能,其磁盘利用率固定为50%
【正确答案】 C
【答案解析】[解析] 廉价磁盘冗余阵列(RAID)是利用一台磁盘阵列控制器来管理和控制一组磁盘驱动器,组成一个高度可靠的、快速的大容量磁盘系统。RAID级别是指磁盘阵列中硬盘的组合方式,不同级别的RAID为用户提供的磁盘阵列在性能上和安全性的表现上也有所不同。RAIDO也称为Stripe(条带化),它把连续的数据分散到多个磁盘上存取,代表了所有RAID级别中最高的存储性能。其磁盘利用率是100%,但它不提供数据冗余。 RAID1具有磁盘镜像和磁盘双工功能,可利用并行读/写特性,将数据块同时写入主盘和镜像盘,故比传统的镜像盘速度快,但其磁盘利用率只固定为50%。 RAID10将数据分散存储到RAID组的成员盘上,同时为每个成员盘提供镜像盘,实现数据全冗余保存。它利用了RAID0较高的读写效率和RAID1较高的数据保护和恢复能力,其磁盘利用率为1/m(m为镜像组内的成员盘个数)。当m=2时,RAID10的磁盘利用率最大,即50%。 RAID5为了保障存储数据的可靠性,采用循环冗余校验方式,并将校验数据以螺旋方式分散存储在RAID组的各成员盘上,即没有专用的校验盘。RAID5允许RAID组内的一个成员盘发生故障,即当RAID组的某个成员盘出现故障时,通过其他成员盘上的数据可以重新构建故障磁盘上的数据。若RAID组内的成员盘个数为n(n≥3),则RAID5磁盘利用率为(n-1)/n。当n=3时,RAID5的磁盘利用率最低,即66.67%。 RAID6是在RAID5的基础上把校验信息由一位增加到两位的RAID级别。它实际上是一种扩展RAID5等级。它与RAID5的不同之处在于,除了每个硬盘上都有同级数据异或校验区外,还有一个针对每个数据块的异或校验区。RAID6允许RAID组内同时有两个成员盘发生故障。故障盘上的数据可以通过其他成员盘上的数据重构。若RAID组内的成员盘个数为n(n≥4),则RAID6磁盘的利用率为(n-2)/n。当n=4时,RAID6的磁盘利用率最低,即50%。 由以上分析可知,RAID5、RAID6的磁盘利用率都随着RAID组内成员盘个数的增加而增大。
单选题 某公司开发基于Web的招聘系统,采用Java EE系统架构。该系统要求在50个用户并发时,主要功能的处理能力至少要达到5个请求/秒,平均数据量为12KB/请求,则该招聘系统的通信吞吐量至少为______。
  • A.2.4576Mbps
  • B.1.8286Kpps
  • C.2.4MB/s
  • D.3000KB/s
【正确答案】 D
【答案解析】[解析] 依题意,该招聘系统的并发用户数N=50个,每单位时间的在线事务数量T=5个请求/s,事务服务器每次处理的数据量D=12KB/请求,则系统的通信吞吐量P=N×T×D=50×5请求/s×12KB/请求=3000KB/s。
单选题 当用排队论模型分析信息系统软件性能时,对结果影响最大的参数是______。
  • A.事务平均丢失率
  • B.事务平均到达率
  • C.事务平均长度
  • D.事务平均重传次数
【正确答案】 B
【答案解析】[解析] 当使用M/M/1排队论模型分析信息系统软件性能时,每个资源的利用率[*],其中λ表示单位时间内到达的事务数,μ表示该资源单位时间内能够完成的事务数;每个处理中的平均事务数[*];平均系统时间[*];每个处理的平均等待时间[*]。从这些计算各性能指标的公式可知,对结果影响最大的参数是事务平均到达率。
单选题 通常情况下,电子政务业务分为3个领域。在如下图所示的电子政务业务模型中,(Ⅰ)、(Ⅱ)、(Ⅲ)空缺处的内容分别为______。
【正确答案】 D
【答案解析】[解析] 所谓电子政务,是指国家机关在政务活动中全面应用现代信息技术进行管理和办公,并向社会公众提供服务。根据政府机构的业务构成,通常情况下,电子政务主要包括3个应用领域:①政务信息查询,面向社会公众和企业组织,为其提供政策、法规、条例和流程的查询服务;②公共政务办公,借助因特网实现政府机构的对外办公(如申请、申报等),提高政府的运作效率,增加透明度;③政府办公自动化,以信息化手段提高政府机构内部办公的效率(如公文报送、信息通知和信息查询等)。在如图所示的电子政务业务模型中,(Ⅰ)、(Ⅱ)、(Ⅲ)空缺处的内容分别为办公自动化系统、政务信息发布系统和政务业务办理系统。
单选题 在下列应用场景中,属于SaaS(软件即服务)模式的是______。
  • A.消费者从供应商处购买软件的License
  • B.消费者从互联网下载和使用免费软件
  • C.供应商开拓新的IT基础设施业务,消费者通过Internet从该IT基础设施获得服务
  • D.供应商通过Internet提供软件,消费者从供应商处租用基于Web的软件来管理企业经营活动
【正确答案】 D
【答案解析】[解析] 云计算有SaaS、PaaS和IIaaS三大服务模式。其中,SaaS(软件即服务)是一种通过互联网提供软件服务的模式,在该模式中企业用户不用再购买软件,而采用向软件服务商提供租用软件的方式来完成本企业的经营活动。在这种模式下,企业(或其他消费者)无须建设机房、购买软硬件、雇用IT运维人员,只需向软件服务提供商支付项目实施费和定期的软件租赁服务费,软件服务提供商负责管理和维护软件。据此,选项D中供应商提供的是运行在云计算基础设施上的应用程序,消费者可以在各种设备上通过瘦客户端界面(如浏览器)访问,消费者不需要管理(或控制)任何云计算基础设施(包括网络、服务器、操作系统、存储等),因此它属于SaaS模式。 PaaS(平台即服务)是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。它提供给消费者的服务是将客户采用的开发语言和工具(如Java、C++、python、.Net等)开发的(或收购的)应用程序部署到供应商的云计算基础设施上去。消费者不需要管理(或控制)底层的云基础设施,包括网络、服务器、操作系统、存储等,但是客户能控制部署的应用程序,也能控制运行应用程序的托管环境配置。 IaaS(基础设施即服务)提供给消费者的服务是对所有基础设施的利用,包括处理器、存储、网络和其他基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不用管理(或控制)任何云计算的基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(如防火墙、负载均衡器等)的控制。
单选题 客户关系管理(CRM)系统是基于方法学、软件和因特网的,以有组织的方式帮助企业管理客户关系的信息系统。______准确地说明了CRM的定位。
  • A.CRM在注重提高客户满意度的同时,一定要把帮助企业提高获取利润的能力作为重要指标
  • B.CRM有一个统一的以客户为中心的数据库,以方便对客户信息进行全方位的统一管理
  • C.CRM能够提供销售、客户服务和营销3个业务的自动化工具,具有整合各种客户联系渠道的能力
  • D.CRM系统应该具有良好的可扩展性和可复用性,并把客户数据分为描述性、促销性和交易性数据3大类
【正确答案】 A
【答案解析】[解析] CRM是一个集成化的信息管理系统,它存储了企业现有和潜在客户的信息,并且对这些信息进行自动的处理,从而产生更人性化的市场管理策略。选项A是CRM的定位,选项B、选项C和选项D都是CRM系统应具备的主要功能。
单选题 企业信息化的最终目标是实现各种不同业务信息系统间跨地区、跨行业、跨部门的______。
  • A.数据标准化
  • B.信息管理标准化
  • C.信息共享和业务协同
  • D.技术提升
【正确答案】 C
【答案解析】[解析] 企业信息化建设是企业适应信息技术快速发展的客观要求,企业信息化建设涉及方方面面,既有硬件建设,也有软件建设;既包括组织建设,也需要员工个人素质的全面提高;它不仅仅是部门内部的建设,更是部门间的资源共享和业务协同。因此企业信息化的最终目标是实现各种不同业务信息系统间跨地区、跨行业、跨部门的信息共享和业务协同。
单选题 以下不属于敏捷供应链特点的是______。
  • A.支持供应链中跨企业的生产方式的快速重组,实现对市场变化的快速响应
  • B.支持供应链中跨企业信息系统的集成、调整、重构和信息共享
  • C.供应链中各个企业能根据要求方便地进行组织、管理的调整和企业生产模式的转变
  • D.可以辅助销售人员展开推销,增加客户在生命周期中的价值
【正确答案】 D
【答案解析】[解析] 选项A、选项B、选项C都是敏捷供应链区别于一般供应链系统的特点。而选项D是数据挖掘在客户关系管理(CRM)中的作用。
单选题 信息资源管理(IRM)是对整个组织信息资源开发利用的全面管理。那么,信息资源管理最核心的基础问题是______。
  • A.人才队伍建设
  • B.信息化运营的体系架构
  • C.信息资源的标准和规范
  • D.信息资源管理规划
【正确答案】 C
【答案解析】[解析] 企业信息资源管理(IRM)不是把资源整合起来就行了,而是需要一个有效的信息资源管理体系,其中最为关键的是从事信息资源管理的人才队伍建设;其次是架构问题;第三是环境要素,主要是标准和规范,信息资源管理最核心的基础问题就是信息资源的标准和规范。
单选题 信息工程的基础是信息战略规划,规划的起点是将企业战略目标和企业的信息需求转换成信息系统目标,实施信息系统工程是要为企业建立起具有稳定数据型的数据处理中心,以满足各级管理人员关于信息的需求,它坚持以______为信息处理的中心。
  • A.数据
  • B.过程
  • C.应用
  • D.功能
【正确答案】 A
【答案解析】[解析] 信息战略规划是信息工程实施的起点,也是信息工程的基础。信息战略规划的起点是将企业战略目标和企业的信息需求转换成信息系统目标。实施信息系统工程是要为企业建立起具有稳定的数据处理中心,以满足各级管理人员关于信息的需求,它坚持以数据为信息处理的中心。
单选题 某软件开发团队欲开发一套管理信息系统,在项目初期,虽然用户提出了软件的一些基本功能,但开发人员对实现这套软件功能的算法效率、操作系统的兼容性和人机交互的形式等情况还是比较模糊。在这种情况下,该团队在开发过程中应采用______。
  • A.瀑布模型
  • B.增量模型
  • C.原型开发模型
  • D.快速应用程序开发(RAD)
【正确答案】 C
【答案解析】[解析] 某软件开发团队欲开发一套管理信息系统,在项目初期,用户提出了软件的一些基本功能,但是没有详细定义输入、处理和输出需求。同时,开发人员可能对算法的效率、操作系统的兼容性和人机交互的形式等情况不确定。在这些情况或类似情况下,原型开发模型是该团队在开发过程应采用的较好解决办法。
单选题 以下不属于软件工程需求分析阶段任务的是______。
  • A.分析软件系统的数据要求
  • B.确定软件系统的功能需求
  • C.确定软件系统的性能要求
  • D.确定软件系统的运行平台
【正确答案】 D
【答案解析】[解析] 需求分析阶段的主要任务是为一个新系统定义业务需求,该阶段的关键是描述一个系统必须做什么(或者一个系统是什么),而不是系统应该如何实现。它通常被划分为5个工作阶段:问题分析、问题评估和方案综合、建模、规约和复审。 具体来说,需求分析阶段需完成以下要求:①确定软件系统的功能需求和非功能需求;②分析软件系统的数据要求;③导出系统的逻辑模型;④修正项目开发计划;⑤如有必要,可以开发一个原型系统。 对于本题的选项D,确定软件系统的运行平台是系统设计阶段的工作任务之一。
单选题 在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法有______。
  • A.结构化语言、数据流图和PAD图
  • B.结构化语言、IPO图和HIPO图
  • C.结构化语言、判定树和判定表
  • D.数据流图、判定树和判定表
【正确答案】 C
【答案解析】[解析] 在结构化分析中,数据流图以图形的形式描述了系统的逻辑模型,而数据字典是以文字的形式描述系统的逻辑模型。数据流图没有对图中各成分进行说明,利用数据字典为数据流图中的每个数据流、数据存储、加工、外部实体及组成数据流或文件的数据项做出说明。 其中对加工的描述称为“小说明”,或称为“加工逻辑说明”,它描述了输入数据流、输入文件与输出数据流、输出文件之间的逻辑关系。常用的加工逻辑描述方法主要有结构化语言、判定树和判定表。
单选题 软件需求分析产生软件操作特征的规格说明,指明软件和其他系统元素的接口,建立软件必须满足的约束。以下对于软件需求分析的描述中,错误的是______。
  • A.软件工程师研究系统规约和软件项目计划,并在系统语境内理解软件和复审,从而生成计划软件范围的估算
  • B.需求分析使得系统工程师能够刻画出软件的功能和性能,指明软件和其他系统元素的接口,并建立软件必须满足的约束
  • C.经过仔细的需求分析活动,软件工程师能够得到详细的系统规约
  • D.需求分析能够为软件设计者提供可被翻译成数据、体系结构、界面和过程设计的模型
【正确答案】 C
【答案解析】[解析] 需求分析是一种软件工程活动,它在系统级软件分配和软件设计间起到桥梁的作用。需求分析使得系统工程师能够刻画出软件的功能和性能,指明软件和其他系统元素的接口,并建立软件必须满足的约束。 需求分析允许软件工程师(在这种角色中经常称为软件工程师)精化软件分解模块,并建造将被软件处理的数据、功能和行为模型。需求分析为软件设计者提供了可被翻译成数据、体系结构、界面和过程设计的模型,最后,需求规约为开发者和客户提供了软件建造完后质量评估的依据。 软件需求分析可被划分成:①问题分析;②问题评估和方案综合;③建模;④规约;⑤复审等工作阶段。 初始时,软件工程师研究系统规约(如果存在的话)和软件项目计划,并在系统语境内理解软件和复审,从而生成计划软件范围的估算。接着,必须建立针对分析的相互通信方式,以使得问题分析得到保证。软件工程师的目标是对用户或客户认识到的基本问题要素进行识别。 问题评估和方案综合是分析工作的下一个主要关注点,软件工程师必须定义所有外部可观察到的数据对象,评估信息流和内容;定义并详细阐述所有软件功能;在影响系统事件的语境内理解软件行为;建立系统界面特征;以及揭示其他设计约束。这些任务中的每一个都旨在描述问题,以便可以综合出全面的方法或解决方案。 通过对当前问题和希望的信息(输入和输出)进行的评估,软件工程师开始综合一个或多个解决方案。为了便于开始,必须详细地定义系统的数据、处理功能和行为。一旦已经建立这些信息,就该考虑针对实现的基本体系结构。客户/服务器方法似乎是合适的,但是,它确实属于在软件计划中概括的范围吗?似乎需要一个数据库管理系统,但是,该数据库系统真的是用户/客户需要的吗?继续评估和综合的过程,直至软件工程师和客户均确信针对后面的开发步骤软件确实已被适当地刻画了。 贯穿整个评估和综合过程,软件工程师的主要焦点是“什么(what)”,而不是“怎么做(how)”、“系统会产生和使用什么数据?系统必须完成什么功能?将定义什么界面?会应用什么约束?”等。 在问题评估和综合解决方案的活动中,软件工程师创建系统模型,以便可以更好地理解数据和控制流,处理功能和操作行为,以及信息内容。模型是软件设计的基础,也是创建软件规约的基础。
单选题 软件设计阶段的度量考虑了架构层次、构件层次和界面设计层次等问题。其中,______的设计度量集中于软件构件的内部特性。
  • A.架构层次
  • B.界面设计层次
  • C.构件层次
  • D.功能层次
【正确答案】 C
【答案解析】[解析] 软件设计阶段的度量考虑了架构层次、构件层次和界面设计层次的问题。其中,架构层次设计度量考虑了设计模型的体系结构和结构方面;构件层次设计度量通过建立内聚、耦合和复杂度的间接度量提供了模块质量的指示;界面设计度量给GUI的布局恰当地提供了指示。 构件层次的设计度量集中于软件构件的内部特性且包括模块的“三个C”的测度,即模块内聚性、耦合性和复杂度的测度。这些测度可以帮助软件工程师判定一个构件级设计的质量。
单选题 “置用户于控制之下”是用户界面设计“黄金规则”之一。以下针对这一规则的理解中,错误的是______。
  • A.设计应允许用户与出现在屏幕上的对象直接交互
  • B.使用户与内部技术细节隔离开来
  • C.尽量避免用户交互被中断或撤销
  • D.不强迫用户进入不必要的或不希望的动作方式来定义交互模式
【正确答案】 C
【答案解析】[解析] Theo Mandel在关于界面设计的著作中,提出了3条“黄金规则”,即①置用户于控制之下;②减少用户的记忆负担;③保持界面一致性。这些黄金规则实际上形成了用于指导人机界面设计活动的一组设计原则的基础。与“置用户于控制之下”相关的一组设计原则如下。 ①以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式。 ②提供灵活的交互。 ③允许用户交互被中断和撤销。 ④当技能级别增长时可以使交互流线化并允许定制交互。 ⑤使用户与内部技术细节隔离开来。 ⑥设计应允许用户与出现在屏幕上的对象直接交互。
单选题 黑盒测试注重于测试软件的功能性需求,主要用于软件的后期测试。______不能用黑盒测试检查出来。
  • A.功能不对或遗漏错误
  • B.界面错误
  • C.外部数据库访问错误
  • D.程序控制结构错误
【正确答案】 D
【答案解析】[解析] 黑盒测试注重于测试软件的功能性需求,即黑盒测试使软件工程师能设计出将测试程序所有功能需求的输入条件集。 黑盒测试试图发现以下类型的错误:①功能不正确或遗漏;②接口错误;③数据结构或外部数据库访问错误;④行为或性能错误;⑤初始化和终止错误。 与白盒测试不同,白盒测试在测试过程的早期执行,而黑盒测试倾向于应用在测试的后期阶段。
单选题 以下关于维护软件所需的成本叙述中,说法正确的是______。
  • A.纠正外部和内部设计错误比纠正源代码错误需要更大的成本
  • B.需求定义纠错的成本小于源代码纠错的成本
  • C.用户文档需要经常更新,其维护成本超过了纠正设计错误的成本
  • D.与需求定义相比,源代码的文字量大得多,所以源代码的维护成本更高
【正确答案】 A
【答案解析】[解析] 根据系统开发的生命周期可知,系统设计阶段在前,软件编码阶段在后,纠正开发阶段早期的错误要比纠正后期的错误代价大,因此,纠正外部和内部设计错误比纠正源代码错误需要更大的成本。
单选题 在UML中,系统的______包含了类、接口和协作,它们形成了问题及其对问题的解决方案的术语词汇。
  • A.实现视图(Implementation View)
  • B.设计视图(Design View)
  • C.部署视图(Deployment View)
  • D.用例视图(Use Case View)
【正确答案】 B
【答案解析】[解析] 在UML中,系统的设计视图(Design View)包含了类、接口和协作,它们形成了问题及其对问题的解决方案的术语词汇。它主要支持系统的功能需求,即系统提供给最终用户的服务。在UML中该视图的静态方面由类图和对象图表现;动态方面由交互图、状态图和活动图表现。由于开发人员利用该视图来完成所有的用户功能需求,而用户所关心的恰恰就是所建立的系统是否能满足用户的所有功能需求,因此,评价建模水平的标准归根结底主要是由设计视图体现的。 选项A的实现视图(Implementation View),包含用于装配与发布物理系统的构件和文件。在UML中该视图的静态方面由构件图表现,动态方面由交互图、状态图和活动图表现。 选项C的部署视图(Deployment View)包含了形成系统拓扑结构的节点。它主要描述对组成整个物理系统的部件的分布、交付和安装。在UML中该视图的静态方面由部署图表现,动态方面由交互图、状态图和活动图表现。 选项D的用例视图(Use Case View)包含用例。实质是描述形成系统体系结构的动力,而非描述软件系统的组织。在UML中该视图的静态方面由用况图表现,动态方面由交互图、状态图和活动图表现。 另外,进程视图(Process View)包含形成系统并发与同步机制的线程和进程,主要针对系统的性能、可伸缩性和系统的吞吐量。在UML中该视图的静态和动态方面的表现与设计视图基本相同,但进程视图注重于描述线程和进程的主动类。
单选题 利用UML建立业务模型是理解企业业务过程的第1步。使用活动图(Activity Diagram)可显示业务工作流的步骤和决策点,以及完成每一个步骤的角色和对象,它强调______。
  • A.上下层次关系
  • B.时间和顺序
  • C.对象间的迁移
  • D.对象间的控制流
【正确答案】 D
【答案解析】[解析] 用UML建立业务模型是理解业务过程的第1步。使用活动图可表示企业业务的工作流。这种UML图显示工作流中的步骤和决策点,以及完成每一步骤的角色和对象。它强调对象间的控制流,是一种特殊的状态图(Statechart Diagram)。 在UML模型图中,协作图(Collaboration Diagram)按组织结构对控制流建模,它强调上下层次关系。序列图(Sequence Diagram)用于按时间顺序对控制流建模,它强调的是时间和顺序。
单选题 通常情况下,在软件生存周期中,将某种形式表示的软件转换成更高抽象形式表示的软件的活动称为逆向工程。逆向工程导出的信息可以分为4个抽象层次,其中______抽象出的信息,要求人参与判断和推理的工作最多,恢复的难度最大。
  • A.领域级
  • B.结构级
  • C.功能级
  • D.实现级
【正确答案】 A
【答案解析】[解析] 逆向工程导出的信息按抽象级别由低到高依次是:实现级、结构级、功能级、领域级。其中,实现级可以抽象出程序的抽象语法树、符号表等信息;结构级可以抽象出反映程序分量之间相互依赖关系的信息(例如调用图、结构图等);功能级可以抽象出反映程序段功能及程序段之间关系的信息;领域级可以抽象出反映程序分量或程序与应用领域概念之间对应关系的信息。这些信息的抽象级别越高,则与代码的距离越远,通过逆向工程恢复的难度越大,而自动化工具支持的可能性相对变小,要求人参与判断和推理的工作增多。
单选题 极限编程(eXtreme Programming)是一种轻量级软件开发方法,它以______为规则。
  • A.文档驱动
  • B.数据驱动
  • C.模型驱动
  • D.代码驱动
【正确答案】 D
【答案解析】[解析] 极限编程XP是敏捷开发的典型代表,是一种轻量级软件开发方法。敏捷方法和重量级方法最大的不同是,以代码驱动的规则,其重要的文档是源代码。注意,敏捷方法不是文档驱动的,通常一件给定的工作只需要很少的文档。
单选题 软件产品线代表了一种强劲的软件开发范例,能够有效地提高软件生产率和质量,缩短开发时间,以及降低总开发成本。软件产品线主要由______和产品集合两部分组成。
  • A.构件库
  • B.核心资源
  • C.体系结构
  • D.开发组织
【正确答案】 B
【答案解析】[解析] 软件产品线代表了一种强劲的软件开发范例,它可使软件生产在时间、成本和质量方面获得显著改善。它是一个十分适合专业的软件开发组织的软件开发方法,能够有效地提高软件生产率和质量、缩短开发时间,以及降低总的开发成本。 卡耐基梅隆大学软件工程研究所(CMU/SEI)对产品线和软件产品线的定义是:产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,该特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,是在公共的核心资源(Core Assets)基础上开发的。这一定义体现了软件产品线的特征。
单选题 软件系统的文档可分为用户文档和系统文档两类。其中,______详尽描述了用户可以使用的所有系统设施及它们的使用方法,并解释系统可能产生的各种出错信息的含义。
  • A.系统文档
  • B.使用手册
  • C.功能描述文档
  • D.参考手册
【正确答案】 D
【答案解析】[解析] 用户文档主要描述所交付系统的功能和使用方法,并不关心这些功能是怎样实现的。用户文档是了解系统的第一步,它可以让用户获得对系统准确的初步印象。用户文档至少应该包括如下表所示5个方面的内容。
{{B}}用户文档{{/B}}
文档 说明
功能描述 说明系统能做什么
安装文档 说明怎样安装这个系统及怎样使系统适应特定的硬件配置
使用手册 简要说明如何着手使用这个系统(通过丰富的例子说明怎样使用常用的系统功能,并说明用户
操作错误是怎样恢复和重新启动的)
参考手册 详尽描述用户可以使用的所有系统设施及它们的使用方法,并解释系统可能产生的各种出错信
息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术)
操作员指南 说明操作员应如何处理使用中出现的各种情况
单选题 软件架构以规范的形式装配若干结构元素,从而描述出系统的主要功能、性能要求和其他非功能性需求。各个软件架构视图涉及的组件(元素)包括任务、步骤、模块和节点等。场景组件元素是______。
  • A.步骤
  • B.任务
  • C.模块
  • D.节点
【正确答案】 A
【答案解析】[解析] 软件架构以规范的形式装配若干结构元素,从而描述出系统的主要功能和性能要求,同时表述其他非功能性需求(如可靠性、可扩展性、可移植性和可用性等)。 场景用来说明重要的系统活动,是其他4个视图在用例(Use Case)驱动下的综合。在某种意义上场景是最重要的需求抽象。该视图是其他视图的冗余(即“+1”所体现的含义),但它起到了两个作用:①是可用来发现架构设计过程中的架构元素;②是可作为架构设计结束后的功能验证。它可作为架构原型测试的出发点,其风险承担者是最终用户和开发人员,组件元素是步骤。
单选题 软件架构设计的主要目标是:确保体系架构能够为设计人员和实现人员所承担的工作提供可靠的框架。以下活动中,不属于软件体系结构设计过程范畴的是______。
  • A.架构需求评审
  • B.映射已标识的构件
  • C.分析构件之间的相互作用
  • D.选择体系结构风格
【正确答案】 A
【答案解析】[解析] 体系结构需求用来激发和调整设计决策,不同的视图被用来表达与质量目标相关的信息。体系结构设计是一个迭代过程,包括提出体系结构模型(或选择体系结构风格)、把已标识的构件映射到软件体系结构中、分析构件之间的相互作用、产生软件体系结构,以及设计评审等过程。 架构需求评审属于软件架构需求范畴的过程之一。
单选题 在软件架构中,基于______的系统具有某种意义上的递归性,形成了“部分—整体”的层次结构,用户可以组合多个简单的子系统以形成一些较大的子系统,这些较大的子系统又可以组合成更大的子系统。
  • A.解释器模式
  • B.分层模式
  • C.知识库模式
  • D.事件驱动模式
【正确答案】 D
【答案解析】[解析] 在软件架构中,事件驱动系统的基本观点是:一个系统对外部的表现可以从它对事件的处理表现出来。其特点表现在:①系统是由若干个子系统或元素所组成的一个整体;②系统有一定的目标,各子系统在某一种消息机制的控制下,为了这个目标而协调行动;③在某一种消息机制的控制下,系统作为一个整体与环境相适应和协调;④在一个系统的若干子系统中,必定有一个子系统起着主导作用,而其他子系统处于从属地位;⑤任意一个系统和系统内的任意一个元素,都有一个事件收集机制和一个事件处理机制,通过这种机制与周围环境发生作用和联系。 在基于事件驱动模式的系统设计中,系统的每个子系统在设计过程中都要考虑其完整性和相对独立性,不绝对依赖于某一子系统,系统之间的协调和管理都是通过消息传递和收集来进行的。 由以上分析可知,基于事件驱动模式的系统具有某种意义上的递归性,形成了“部分—整体”的层次结构(可以用属性结构加以表示),用户可以组合多个简单的子系统以形成一些较大的子系统,这些较大的子系统又可以组合成更大的子系统。 基于解释器模式的系统核心在于虚拟机。一个基于解释器模式的系统通常包括正在被解释执行的伪码和解释引擎。其中,伪码由需要被解释执行的源代码和解释引擎分析所得的中间代码组成:解释引擎包括语法解释器和解释器当前的运行状态。 分层模式的特征表现在:一个分层系统采用层次化的组织方式构建,系统中的每一层都要承担两个角色。首先,它要为结构中的上层提供服务;其次,它要作为结构中下面层次的客户,调用下层提供的功能函数。除了最高层和最底层之外,整个系统中的任意层次都同时要满足这两点要求。 采用知识库模式构建的系统通常有两个功能截然不同的构件:①中央数据单元构件,用于代表系统当前的各种状态;②一些相对独立的组件的集合,用于对中央数据单元进行操作。 基于知识库模式的系统被分成以下两个子类:如果系统由输入数据流中的事务信息来驱动,即输入数据流中的事务指令可以触发系统相应进程的执行,则该系统可以称为基于传统数据库知识库模式的应用系统:如果系统由知识库的当前状态来驱动,即系统根据中央数据单元当前的各种不同状态启动不同的进程来响应知识库的状态变化,则该系统可称为基于黑板型知识库模式的应用系统。
单选题 某软件开发公司承接了一个语音和模式识别方面的嵌入式应用软件的开发工作。该公司的架构师决定采用成熟的架构风格指导整个软件的设计,以下______架构风格,最适合该嵌入式应用软件。
  • A.事件驱动
  • B.管道/过滤器
  • C.黑板结构
  • D.分层结构
【正确答案】 C
【答案解析】[解析] 知识库架构风格采用两种不同的构件:中央数据结构构件说明当前状态,独立构件在中央数据存储上执行,中央数据构件与独立的外部构件间的相互作用是系统中的主要问题。知识库模式有两种不同的控制策略:如果输入流触发进程执行的选择,则为基于传统数据库的知识库模式;如果是中央数据结构的当前状态触发进程执行的选择,则为基于黑板结构的知识库模式。黑板结构主要由知识源、黑板数据结构和控制等3部分组成。黑板结构架构风格的典型应用是信号处理领域,例如语音和模式识别。 事件驱动架构风格的基本思想是:构件并不直接调用过程,而是触发一个或多个事件。系统中的其他构件可以注册相关的事件,触发一个事件时,系统会自动调用注册了该事件的构件过程,即触发事件会导致另一构件中的过程调用。 在管道/过滤器架构风格中,每个构件(即过滤器)都有一组输入/输出,构件读取输入的数据流,经过内部处理后,产生输出数据流,该过程主要完成输入流的变换及增量计算。 分层结构架构风格采用层次化的组织方式,每一层都是为上一层提供服务,并使用下一层提供的功能。层次模式中的每一层最多只影响两层,只要给相邻层提供相同的接口,就允许每层用不同的方法实现,可以充分支持软件复用。分层模式的典型应用是分层通信协议,例如ISO/OSI参考模型、TCP/IP协议簇等。
单选题 特定领域软件架构(Domain Specific Software Architecture,DSSA)是一种有效实现特定领域软件重用的手段。在其基本活动中,______的主要目标是依据领域模型和DSSA开发并组织可重用信息。
  • A.领域实现
  • B.领域设计
  • C.领域分析
  • D.领域运维
【正确答案】 A
【答案解析】[解析] 按照Tracz的说法,特定领域软件架构(DSSA)是一个特定的问题领域中由领域模型、参考需求及参考架构等组成的开发基础架构,其目标就是支持一个特定领域中多个应用的生成。 DSSA的基本活动包括领域分析、领域设计和领域实现。领域分析的主要目的是获得领域模型,领域模型描述领域中系统之间共同的需求,即领域需求;领域设计的主要目标是获得DSSA,DSSA描述领域模型中表示需求的解决方案;领域实现的主要目标是依据领域模型和DSSA开发并组织可重用信息。
单选题 软件架构设计是降低成本、改进质量、按时和按需交付产品的关键活动。以下关于软件架构重要性的叙述中,错误的是______。
  • A.架构设计能够有效地管理复杂性,为系统开发提供指导
  • B.架构设计能够为复用奠定基础,并支持项目计划编制过程
  • C.架构设计能够解决冲突,并降低维护费用
  • D.架构设计能够满足系统的性能、安全性和可维护性等品质
【正确答案】 C
【答案解析】[解析] 软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。其重要性表现在:①能够满足系统的性能、安全性和可维护性等品质;②能够使得不同的利益相关人达成一致的目标;③能够支持项目计划和项目管理等活动;④能够为系统开发提供指导;⑤能够有效地管理复杂性;⑥能够为复用奠定基础;⑦能够降低维护费用;⑧能够支持冲突分析,而不是解决冲突。
单选题 面向服务架构体系结构(Service-Oriented Architecture,SOA)作为一种架构模型,使得所构建的服务可以以一种统一的、通用的方式进行交互。相对于面向对象架构模型,SOA是根据需求通过网络对______的应用组件进行分布式部署、组合和使用。
  • A.紧耦合、细粒度
  • B.松耦合、粗粒度
  • C.松耦合、细粒度
  • D.紧耦合、粗粒度
【正确答案】 B
【答案解析】[解析] 面向服务架构体系结构(Service-Oriented Architecture,SOA)作为一种架构模型,它将应用程序的不同功能单元(称为服务)通过服务之间的接口(和契约)联系起来。这使得构建的服务可以以一种统一的和通用的方式进行交互。SOA的几个关键特性是:它是一种粗粒度、松耦合的服务架构,服务之间通过简单、精确的定义接口进行通信,不涉及底层编程接口和通信模型。 相比较而言,面向对象的模型是紧耦合、细粒度的,而SOA是松耦合、粗粒度的。“松耦合”是指服务使用者看到的是服务的接口,其位置、实现技术和当前状态等对使用者而言是不可见的,服务私有数据对服务使用者是不可见的。“粗粒度”是指服务数量不应该太大,依靠消息交互而不是远程过程调用(RPC)交互,通常情况下,消息量比较大,但服务之间的交互频度较低。
单选题 在构件开发过程中,用户的需求可能会随时变化;在软件系统开发完毕、正常运行后,由一个单位移植到另一个单位,需求也会发生变化。在这两种情况下,就必须相应地修改软件体系结构,以适应新的变化了的软件需求。以下不属于体系结构演化过程范畴的是______。
  • A.体系结构需求获取
  • B.需求变化归类
  • C.更新构件的相互作用
  • D.技术评审
【正确答案】 A
【答案解析】[解析] 体系结构演化使用系统演化步骤去修改应用,以满足新的需求。主要包括以下6个步骤:需求变化归类→制订体系结构演化计划→修改、增加或删除构件→更新构件的相互作用→构件组装与测试→技术评审。
单选题 REST(REpresentational State Transfer)是目前因特网的核心架构风格之一。与传统的Web服务相比,REST服务的主要优势不包括______。
  • A.基于URI和超链接技术,无须通过集中式的服务信息仓库即可发现服务资源
  • B.支持缓存,具有状态相关特性,所构建的应用系统具有较强的伸缩性
  • C.基于轻量级的Web框架,仅需要基本的开发工具支持,构建过程简单且成本较低
  • D.基于W3C/IETF的标准与规范,其实现技术简单且成熟
【正确答案】 B
【答案解析】[解析] 表述性状态转移(REpresentational State Transfer,REST)是指从几种基于网络的架构风格中衍生出来的一种混合架构风格。其特点是客户端/服务器、无状态、缓存、统一接口、分层系统和按需代码。REST组件通过以一种数据格式转移资源的表述进行通信,可以基于接收者的能力和期待的内容,以及资源的性质,动态地选择不同的表述。与传统的Web服务相比,REST服务主要有以下几种优势。 ①REST服务基于W3C/IETF的标准与规范(包括HTTP、XML、URI和MIME等),其实现技术简单、成熟。 ②REST服务基于URI和超链接技术,不需要通过集中式的服务信息仓库即可发现服务资源。 ③REST服务支持缓存,具有无状态的特性,这些使得REST服务能够支持大量客户端,构建的应用系统具有较强的伸缩性。 ④REST服务基于轻量级的Web框架,仅需要基本的开发工具支持,构建过程简单且成本较低; ⑤REST服务的测试相对简单,采用浏览器即可完成服务功能测试。
单选题 基于架构的软件设计(ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。以下关于ABSD方法的描述中,错误的是______。
  • A.ABSD方法是一个自下向上、递归细化的过程,有助于降低架构设计的随意性
  • B.ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的
  • C.强调从不同的视角(Perspective)来检查和考虑体系结构的不同属性
  • D.在使用用例捕获功能需求的同时,可以通过质量场景捕获变更、性能和交互性
【正确答案】 A
【答案解析】[解析] 基于架构的软件设计(ABSD)方法是一个自顶向下、递归细化的过程。软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。据此,选项A的说法有误。 ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,体系结构总是清晰的,这有助于降低架构设计的随意性。 考虑到体系结构时,重要的是从不同的视角(Perspective)来检查,这促使架构师考虑体系结构的不同属性。例如,展示功能组织的静态视角能判断质量特性,展示并发行为的动态视角能判断系统的行为特性。 在使用用例捕获功能需求的同时,可以通过定义质量场景来捕获质量需求。使用质量场景捕获变更、性能、交互性和可靠性,分别称之为变更场景、性能场景、交互性场景和可靠性场景。
单选题 以下关于状态(State)模式和策略(Strategy)模式的叙述中,错误的是______。
  • A.对于客户程序而言,State模式比Strategy模式更透明
  • B.Strategy模式用来处理算法变化,State模式用来处理状态变化
  • C.State模式的对象变化频率比Strategy模式的对象高
  • D.State模式的“状态”是在对象外部,Strategy模式的“策略”是在对象内部
【正确答案】 D
【答案解析】[解析] State(状态)模式的设计意图是:允许一个对象在其内部状态改变时变更它的行为。而strategy(策略)模式的设计意图是:定义一系列的算法,把它们一个一个地封装起来,并且使它们可相互替换。可见,Strategy模式用来处理算法变化,而State模式则是处理状态变化。 Strategy模式在概念结构上与State模式非常相似,但它们各自的目的不同。区分这两个模式的关键是看行为是由状态驱动还是由一组算法驱动。通常情况下,State模式的“状态”是在对象内部的,Strategy模式的“策略”可以在对象外部。 在Strategy模式中,算法是否变化完全是由客户程序开始决定的,而且往往一次只能选择一种算法,不存在算法中途发生变化的情况。而State模式如其定义中所言,在它的生命周期中随时存在着状态的转变和行为的更改,而且状态变化是一个线形的整体。对于客户程序而言,这种状态变化往往是透明的。