温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
19
章:案例分析
案例
分析
试题1(2017年上半年试题1)
阅读以下关于基于微服务的系统开发的叙述,在答题纸上回答问题1至问题3。
【说明】
某公司拟开发一个网络约车调度服务平台,实现基于互联网的出租车预约与管理。公司的系统分析师王工首先进行了需求分析,得到的系统需求列举如下:
系统的参与者包括乘客、出租车司机和平台管理员三类;
系统能够实现对乘客和出租车司机的信息注册与身份认证等功能,并对乘客的信用信息进行管理,对出租车司机的违章情况进行审核;
系统需要与后端的银行支付系统对接,完成支付信息审核、支付信息更新与在线支付等功能;
针对乘客发起的每一笔订单,系统需要实现订单发起、提交、跟踪、撤销、支付、完成等业务过程的处理:
系统需要以短信、微信和电子邮件多种方式分别为系统中的用户进行事件提醒。
在系统分析与设计阶段,公司经过内部讨论,一致认为该系统的需求定义明确,建议尝试采用新的微服务架构进行开发,并任命王工为项目技术负责人,负责项目开发过程中的技术指导工作。
【问题1】(12 分〉
请用 100字以内的文字说明一个微服务中应该包含的内容,并用 300 字以内的文字解释基于微服务的系统与传统的单体式系统相比的 2 个优势和带来的 2 个挑战。
【问题2】 (8 分)
识别并设计微服务是系统开发过程中的一个重要步骤,请对题干需求进行分析,对微服务的种类和包含的业务功能进行归类,完成表 1-1 中的(1)~(4)。
表1-1 微服务名称及所包含业务功能
微服务名称
包含业务功能(至少填写3个功能)
乘客管理
(1)
出租车司机管理
(2)
(3)
支付信息审核、支付信息更新、在线支付
订单管理
(4)
通知中心
短信通知、微信通知、邮件通知
【问题3】(5分)
为了提高系统开发效率,公司的系统分析师王工设计了一个基于微服务的软件交付流程,其核心思想是将业务功能定义为任务,将完成某个业务功能时涉及到的步骤和过程定义为子任务,只有当所有的子任务都测试通过后改业务功能才能上线交付。请基于王工设计的在线支付微服务交付流程,从(a)~(f)中分别选出合适的内容填入图1-1中的(1)~(5)处。
选项:(a)提交测试 (b)全量上线 (c) 对接借记卡
(d) 获取个人优惠券 (e)试部署 (f)对账
试题分析
微服务架构是一种新的软件体系设计模式,它并没有形成统一、严格的定义,但是基于其分布式环境应用的场景,却拥有一些共同的特征:比如开发敏捷性、持续交付、可伸缩性、最终一致性等。
微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为单一的业务功能;每个服务可以很容易地部署并发布到生产环境里隔离和独立的进程内部,它可以很容易地扩展和变更;对于一个具体的服务来说可以采用任何适用的语言和工具来快速实现;服务之间基于基础设施互相协同工作。
微服务的系统相比传统的单体式系统有一定的优势:
(1)解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。这个应用被分解为多个可管理的分支或服务,每一个服务都有良好定义的边界,以远程过程调用(RPC)驱动或信息驱动的API 的形式;微服务架构模式单一模块代码库,实际很难实现。因此,独立的服务开发速度明显更快,而且更易理解和维护。
(2)让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API 约定。当然,大多数组织会通过限制技术选择来避免完全的失控。然而,这种自由意味着开发者们不用被迫使用从项目开始就存在的陈旧技术,他们可以选择使用当下的技术编写一个新的服务。另外,由于这些服务本身相对比较小,用新的技术来重写旧的服务也更可行一些。
(3)每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。举个例子,UI 团队可以执行A|B测试后立刻对UI 的变化执行迭代。微服务架构模式使不断地配置成为可能。
(4)让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数。另外,你也可以使用最适合服务的资源需求的硬件。举例说明,你可以在EC2 计算优化的实例上配置CPU 加强的图片处理服务,另外给EC2 存储优化的实例配置内存中的数据库服务。
微服务架构带来的挑战:
(1)并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。
(2)部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。
(3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。
(4)数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。
试题答案
(1)问题1
一个微服务中应该包含的内容有:资源、对资源的操作、API集合。
微服务的优势:
(1)解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。
(2)让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API 约定。
(3)每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。
(4)让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数。
微服务架构带来的挑战:
(1)并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。
(2)部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。
(3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。
(4)数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。
问题2
(1)乘客信息注册、乘客身份认证、乘客信用信息管理
(2)出租车司机信息注册、出租车司机身份认证、司机违章情况审核
(3)支付管理
(4)订单发起、订单提交、订单跟踪、订单撤销
问题3
(1)(f) (2)(c) (3)(d) (4)(a) (5)(b)
试题2(2017年上半年试题2)
阅读以下关于系统数据分析与建模的叙述,在答题纸上回答问题 1至问题 3。
【说明】
某软件公司受快递公司委托,拟开发一套快递业务综合管理系统,实现快递单和物流信息的综合管理。项目组在系统逻辑数据模型设计中,需要描述的快递单样式如图2-1所示,图 2-2 是项目组针对该快递单所设计的候选实体及其属性。
【问题1】(6分)
数据库设计主要包括概念设计、逻辑设计和物理设计三个阶段,请用 200字以内文字说明这三个阶段的主要任务。
【问题 2】](11分)
根据快递单样式图,请说明:
1) 图 2-2中三个候选实体对应的主属性PK1、PK2和PK3分别是什么?
2) 图 2-2 中应设计哪些实体之间的联系,并说明联系的类型。
【问题3】(8分)
在图2-2中添加实体之间的联系后,该实体联系图是否满足第一范式、第二范式和第三范式中的要求(对于每种范式判定时,假定己满足低级别范式要求)。如果不满足,请用 200 字以内文字分别说明其原因。
试题分析
问题1
概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型。
逻辑设计也称为逻辑结构设计,其主要任务是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。
物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。
问题2
寄件人实体中,证件号可以唯一标识元组,所以证件号是主键,自然证件号就是主属性。收件人主属性同理可得。
快递单中编号能唯一标识元素,所以编号是主键,编号也是主属性。
问题3
寄件人与收件人都比较好分析,字段少,关系明了。
快递单情况较为复杂,首先值得注意的是,总计属于派生属性,这自然带来不规范的情况。进一步分析,发现存在传递依赖,所以不属性第3范式。由于主键是单个属性的,所以部分依赖还是消除了。
试题答案
(2)问题1
概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型。
逻辑设计也称为逻辑结构设计,其主要任务是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。
物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。
问题2
PK1:证件号
PK2:编号
PK3:证件号
联系1:寄件人与快递单之间应有联系,联系类型:1:N。
联系2:收件人与快递单之间应有联系,联系类型:1:N。
问题3
寄件人,收件人均满足第3范式,因为这两个关系均消除了部分函数依赖与传递函数依赖。(自然也就同时满足第1范式与第2范式)。
快递单满足第2范式,但不满足第3范式,快递单的主键为编号,编号确定:保价金额、代收货款、运费、加急费、包装费、保价费,而这一系列费用的组合确定总计。所以存在传递函数依赖。注:增加了寄件人证件号与收件人证件号到快递单中,并不会影响快递单满足第2范式。
试题3(2017年上半年试题3)
阅读以下关于嵌入式多核程序设计技术的描述,回答问题 1至问题 3。
【说明】
近年来,多核技术己被广泛应用于众多安全关键领域(如:航空航天等)的电子设备中,面向多核技术的并行程序设计方法已成为软件人员急需掌握的主要技能之一。某宇航公司长期从事宇航电子设备的研制工作,随着宇航装备能力需求的提升,急需采用多核技术以增强设备的运算能力、降低功耗与体积,快速实现设备的升级与换代。针对面向多核开发,王工认为多核技术是对用户程序透明的,开发应把重点放在多核硬件架构和硬件模块设计上面,而软件方面,仅仅需要选择一款支持多核处理器的操作系统即可。而李工认为,多核架构能够使现有的软件更高效地运行,构建一个完善的软件架构是非常必要的。提高多核的利用率不能仅靠操作系统,还要求软件开发人员在程序设计 中考虑多进程或者多线程并行处理的编程问题。
【问题1】(12分)
请用300字以内文字说明什么是多核技术和多线程技术,并回答李工的意见是否正确,为什么?
【问题2】(6 分)
在多核环境下,线程的活动有并行和并发两种方式,请用300字以内的文字说明这两种方式的含义及差别。
【问题3】(7 分)
请根据自己所掌握的多核、多线程的知识,判别表 3-1给出的说法是否正确,并将答案写在答题纸上对应空白处(填写正确或错误)。
表3-1 关于多核和单核体系结构的说明
序号
说 明
是否正确
1
在面向多核体系结构开发应用程序时,只有有效地采用多线程技术并仔细分配各线程的工作负载才能够达到最高的性能
(1)
2
在面向多核平台设计多线程应用程序时,开发人员应当采用与面向单核平台时不同的设计思想
(2)
3
在多核平台上。多线程一般被当作是一种能够实现延迟隐藏的有效编程手段
(3)
4
多核平台为开发人员提供了一种优化应用程序的渠道,就是通过仔细分配加载到各线程(或各处理器核)上的工作负载就能够得到性能上的提升
(4)
5
在单核平台上,为了简化多线程应用程序的编写和调试,开发人员可能会做一些假设,这些假设也会适应于多核平台
(5)
6
在多核平台上,存储缓冲的Cache一致性问题是多核程序设计应当重点考虑的问题,但是,多核Cache的伪共享(False Sharing)问题在单核平台上也存在
(6)
7
再单核平台上,开发人员通常遵循优先级较高的线程不会受到优先级较低=线程的干扰的思想对代码进行优化,这样的代码在多核平台上运行就会非常不稳定
(7)
试题分析
多核是多微处理器核的简称,是将两个或更多的独立处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。
多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”,利用它编程的概念就叫作“多线程处理”。
如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。
对此,有一种通俗的解读:
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
多核编程技术主要包括并行计算、共享资源分布式计算、任务分解与调度、Lock-Free编程等内容。其中共享资源分布式计算、任务分解与调度是最重要的内容,也是大多数程序员未接触过的内容,许多并行算法都可以通过它们来实现。多核编程模式主要是提供一种多核并行与分布式编程的普遍方法,有了这些编程模式后,程序员不再需要去学习各种复杂的并行算法,它可以复用现有的串行算法,很容易地实现并行和分布式计算。在多核编程技术中,最重要的一点是如何将计算均匀分摊到各个CPU核上。
多核时代的到来,给程序员的编程思维带来了巨大的冲击和挑战。为了能够充分利用多核性能,程序员必须学会以分块的思维设计程序,以多进程或多线程的形式来编写程序。到底应该使用多进程还是多线程的形式来编写程序,是最让程序员感到困惑的问题之一,这些需要根据具体的应用来决定。在通常情况下,使用多线程进行多核编程比使用多进程有更大的优势,因为:
(1)线程的创建和切换开销比进程更小。
(2)线程之间通信的方式比较多,而且简单也更有效率。
(3)多线程有很多的基础库支持。
(4)多线程的程序比多进程的程序更容易理解和修改。
除了编程形式,使用多线程编程的动机也发生了改变。过去,Windows程序员使用多线程的主要原因之一是为了提高用户程序运行效率,例如,在长时间的计算中提高GUI、I/O或者网络的响应速度。而在多核时代编写应用程序为了充分利用多个计算核心,缩短计算时间,或者在相同的时间段内计算更多任务。例如,在进行游戏编程时,通过多线程的方式把碰撞检测的计算分散到多个CPU内核,就可以大大缩减计算时间,也可以利用多核做更细致的检测计算,从而能够模拟更加真实的碰撞。
处理器所能交换的最小存储单元就是一个cache行,或者一个cache块。两个独立的cache在需要读取同一cache行时,会共享该cache行。但如果在其中一个cache中,该cache行被写入,而在另一个cache中该cache行被读取,那么即使读写的地址不相交,也需要在这两个cache之间移动该cache行。就像两个人同时在写一本日志的两个不同部分,两人的写入动作相互独立,但是除非将日志撕成两半,否则这两个人必须来回地互相传递这本日志。同样地,两个硬件线程在写入一个cache的不同部分时,互相竞争cache,就像在进行乒乓球比赛。
试题答案
(3)问题1
多核是多微处理器核的简称,是将两个或更多的独立处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。
多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
李工的意见是正确的。多核处理器虽然带来了强大的计算能力,但如果无法实现程序的并行,那么,大量计算资源将被闲置,造成巨大的浪费。所以在开发中,要注重多核编程技术,从并行计算、共享资源分布式计算、任务分解与调度、Lock-Free编程等方面充分考虑相关问题,以便将多核处理器的性能充分发挥出来。
问题2
如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统,即系统中同时有多个线程,可以认为是并发的情况。
如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。当系统中有多个线程,并在同一时刻有两个,或两个以上的线程在运行状态,可认为是并行系统。
问题3
(1)√ (2)√ (3)× (4)√ (5)× (6)× (7)√
试题4(2017年上半年试题4)
阅读以下关于数据库分析与建模的叙述,在答题纸上回答问题1至问题 3。
【说明】
某电子商务企业随着业务不断发展,销售订单不断增加,每月订单超过了50万笔,急需开发一套新的互联网电子订单系统。同时该电商希望建立相应的数据中心,能够对订单数据进行分析挖掘,以便更好地服务用户。
王工负责订单系统的数据库设计与开发,初步设计的核心订单关系模式为:
orders(order_no,customer_no ,order_date,product_no,price,......);
考虑订单数据过多,单一表的设计会对系统性能产生较大影响,仅仅采用索引不足以解决性能问题。因此,需要将订单表拆分,按月存储。
王工采用反规范化设计方法来解决,给出了相应的解决方案。李工负责数据中心的设计与开发。李工认为王工的解决方案存在问题,建议采用数据物理分区技术。在解决性能问题的同时,也为后续的数据迁移、数据挖掘和分析等工作提供支持。
【问题 1】 (8分)
常见的反规范化设计包括增加冗余列、增加派生列、重新组表和表分割。为解决题干所述需求,王工采用的是哪种方法?请用300字以内的文字解释说明该方法,并指出其优缺点。
【问题2】 (8 分)
物理数据分区技术一般分为水平分区和垂直分区,数据库中常见的是水平分区。水平分区分为范围分区、哈希分区、列表分区等。请阅读下表,在(1)~(8) 中填写不同分区方法在数据值、数据管理能力、实施难度与可维护性、数据分布等方面的特点。
表4-1 水平分区比较表
范围分区
哈希分区
列表分区
数据值
(1)
连续离散均可
(2)
数据管理能力
强
(3)
(4)
实施难度与可维护性
(5)
好
(6)
数据分布
(7)
(8)
不均匀
【问题 3】(9 分)
根据需求,李工宜选择物理水平分区中的哪种分区方法?请用300字以内的文字分别解释说明该方法的优缺点。
试题分析
范围分区:就是根据数据库表中某一字段的值的范围来划分分区。
散列分区:散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。
列表分区:列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。
试题答案
(4)问题1
王工采用的是表分割的方式进行反规范化设计。
表分割包括水平分割与垂直分割两种形式:
水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。
垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
问题2
(1)连续(2)离散(3)弱(4)强(5)好(6)好(7)不均匀(8)均匀
问题3
李工宜选择范围分区方式。
范围分区优点包括:实现容易、数据管理能力强、提高查询效果、利于维护如备份恢复时间都可缩短、利于做过期过处理。
范围分区缺点包括:数据分布不均匀所以可以与哈希分区组合应用。
试题5(2017年上半年试题5)
阅读以下关于 Web 系统架构设计的叙述,在答题纸上回答问题 1至问题 3。
【说明】
某公司开发的 B2C 商务平台因业务扩展,导致系统访问量不断增大,现有系统访问速度缓慢,有时甚至出现系统故障瘫痪等现象。面对这一情况,公司召开项目组讨论会议,寻求该商务平台的改进方案。讨论会上,王工提出可以利用镜像站点、CDN内容分发等方式解决并发访问量带来的问题。而李工认为,仅仅依靠上述外网加速技术不能完
全解决系统现有问题,如果访问量持续增加,系统仍存在崩渍的可能。李工提出应同时结合Web内网加速技术优化系统改进方案,如综合应用负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等。经过讨论,公司最终决定采用李工的思路,完成改进系统的设计方案。
【问题 1】 (10分)
针对李工提出的改进方案,从 a ~j 中分别选出各技术的相关描述和对应常见支持软件填入表 5-1 中的(1) ~(10) 处。
表5-1 技术描述与常见支持软件
技术
相关描述
常见支持软件
负载均衡
(1)
(2)、LVS
缓存服务器
(3)
(4)、Memcached
分布式文件系统
(5)
(6)、(7)、MooseFS
Web应用服务器
加速对请求进行处理
(8)、(9)、Jetty
分布式数据库
缓存、分割数据、加速数据查找
(10)、Mysql
保存静态文件,减少网络交换量,加速响应请求
可采用软件级和硬件级负载均衡实现分流和后台减压
文件存储系统,快速查找文件
FastDFS
HAProxy
JBoss
Hadoop Distributed File System(HDFS)
Apache Tomact
Squid
MongoDB
【问题 2】(9 分)
请用100字以内的文字解释分布式数据库的概念,并给出提高分布式数据库系统性能的 3 种常见实现技术。
【问题3】 (6 分)
针对 B2C 商务购物平台的数据浏览操作远远高于数据更新操作的特点,指出该系统应采用的分布式数据库实现方式,并分析原因。
试题分析
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
Jboss是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用,而不用支付费用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
试题答案
(5)问题1
(1)(b)
(2)(e)
(3)(a)
(4)(i)
(5)(c)
(6)(7)(d)(g)
(8)(9)(f)(h)
(10)(j)
问题2
分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。
分布式数据库系统性能提升策略:
1. 全局查询树的变换
2. 副本的选择与多副本的更新策略
3. 查询树的分解
4. 半连接与直接连接
问题3
在本题所涉及到的环境中,由于读取数据的需求非常强烈,涉及到的数据量极大,而更新较少,可以在分布式数据库中采用一主多从的机制来分散读取数据的压力。更新数据时,操作主库,从主库再同步到从库,从库只负责读取数据。
试题6(2016年上半年试题1)
试题一(共25分)
阅读以下关于软件系统可行性分析的叙述,在答题纸上回答问题1至问题3。
某软件开发企业受对外贸易公司委托开发一套跨境电子商务系统,项目组从多个 方面对该电子商务系统进行了可行性分析,在项目组给出的可行性分析报告中,对项目的成本、收益情况进行了说明:建设投资总额为300万元,建设期为1年,运营期为4年,该方案现金流量表如表1-1所示。
表1-1 系统解决方案现金流量表(单位:万元)
阶段
0
1
2
3
4
合计
折现系数
1
0.91
0.83
0.75
0.68
-开发成本
300
300
-运营成本
40
50
60
70
220
总成本
300
340
390
450
520
折现值
300
336.4
377.9
422.9
470.5
-运营收益
160
180
200
220
760
总收益
160
340
540
760
折现值
145.6
295
445
594.6
【问题1】(12分)
软件系统可行性分析包括哪几个方面?用200以内文字说明其含义。
【问题2】(7分)
成本和收益是经济可行性评价的核心要素,成本一般分为开发成本和运营成本, 收益包括有形收益和无形收益,请对照下列7项内容,将其序号分别填入成本和收益 对应的类别。
a)系统分析师工资;
b)采购数据库服务器;
c)系统管理员工资;
d)客户满意度增加;
e)销售额同比提高;
f)软件许可证费用;
g)应用服务器数量减少。
类别
选项
开发成本
(1)
运营成本
(2)
有形收益
(3)
无形收益
(4)
【问题3】(6分)
根据表1-1所示现金流量表,分别给出该解决方案的静态投资回收期、动态投资回收期和投资收益率的算术表达式或数值(结果保留2位小数)。
试题分析
本题考查考生对于软件系统可行性分析方法的掌握情况。
可行性是指企业当前的条件下,是否有必要建设新系统,以及建设新系统的工作是否具备必要的条件。在信息系统建设项目中,可行性评通常从经济可行性、技术可行性、法律可行性和用户使用可行性四个方面进行分析,经济可行性通常被认为是项目的底线。经济可行性也称为投资收益分析或成本效益分析,主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。技术可行性也称为技术风险分析,研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。法律可行性也称为社会可行性,具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。用户使用可行性也称为执行可行性,是从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等,可以分为管理可行性和运行可行性。
掌握系统可行性分析方法是系统分析师的重要技能,特别是成本效益分析方法,能够根据现金流量表计算静态投资回收期、动态投资回收期和投资收益率等可行性指标。
【问题1】
软件系统可行性分析的内容和基本概念是进行软件系统可行性分析的前提。软件系统的可行性分析包括经济可行性、技术可行性、法律可行性和用户使用可行性,分别从项目建设的经效益、技术方案、制度因素和用户使用等四个方面对系统建设的必要性和可能性进行评估。
【问题2】
成本和收益的识别是经济可行性中成本效益分析的基础,成本主要描述系统的投入,收益主要描述系统建成后的产出。软件生存期中的成本按照系统投入的阶段可分为开发阶段的成本和建成后的运营成本两类,软件生存期中的收益按照量化放肆不同可分为有形收益和无形收益。系统分析师工资和采购数据库服务器属于系统开发阶段的投入,所以属于开发成本;系统管理员工资和软件许可证费用属于系统建成后运营阶段的投入,所以属于运营成本;销售额同比提高和应用服务器数量减少都意味着系统收益的增加,可以直接量化,所以属于有形收益;而客户满意度增加同样能够增加系统收益,但是无法直接量化,所以属于无形收益。
【问题3】
投资回收期就是投资收回的期限,也是用系统方案所产生的净现金收入回收初始全部投资所需要的时间。对于投资者来讲,投资回收期越短越好,从而减少投资的风险。计算投资回收期时,根据是否考虑资金的货币时间价值,可分为静态投资回收期和动态投资回收期。投资收益率又成为投资利润率,是指投资收益占投资成本的比率,用来反映投资的收益能力。各指标计算方法:
(1)静态投资回收期=累计净现金流量开始出现正值的年份数-1+|上年累计净现金流量|/当年净现金流量;
(2)动态投资回收期=累计折现值开始出现正值的年份数-1+|上年累计折现值|/当年折现值;
(3)投资收益率=投资收益/投资成本×100%。
试题答案
(1)【问题1】
(1)经济可行性。主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。
(2)技术可行性。研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。
(3)法律可行性。具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
(4)用户使用可行性。从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等。
【问题2】
(1)开发成本:(a)系统分析师工资、(b)采购数据库服务器
(2)运营成本:(c)系统管理员工资、(f)软件许可证费用
(3)有形收益:(e)销售额同比提高、(g)应用服务器数量减少
(4)无形收益:(d)客户满意度增加
【问题3】
静态投资回收期= 累计净现金流量开始出现正值的年份数-1+∣上年累计净现金流量∣/当年净现金流量 = (3-1)+(390-340)/(200-60) = 2.36年
动态投资回收期 = 累计折现值开始出现正值的年份数-1+∣上年累计折现值∣/当年折现值 = (3-1)+(377.9-295)/((200-60)*0.75) = 2.79年
投资收益率 = 投资收益/投资成本×100% = 594.6/470.5 = 126.38%
试题7(2016年上半年试题2)
阅读以下关于系统设计的叙述,在答题纸上回答问题1至问题3。
某软件公司为电子商务企业开发一套网上交易订单管理系统,以提升服务的质量 和效率。在项目之初,项目组决定釆用面向对象的开发方法进行系统开发,并对系统的核心业务功能进行了分析,具体描述如下:
注册用户通过商品信息页面在线浏览商品,将需要购买的商品添加进购物车内, 点击“结算”按钮后开始录入订单信息。
用户在订单信息录入页面上选择支付方式,填写并确认收货人、收货地址和联系方式等信息。点击“提交订单”按钮后产生订单,并开始进行订单结算。
订单需要在30分钟内进行支付,否则会自动取消,用户也可以手工取消订单。
用户支付完成,经确认后,系统开始备货,扣除该商品可接单数量,并移除用户购物车中的所有商品资料。
生成订单表单,出货完毕,订单生效。为用户快递商品,等待用户接收。
用户签收商品,交易完成。
【问题1】(12分)
识别设计类是面向对象设计过程中的重要工作,设计类表达了类的职责,即该类所担任的任务。请用300字以内的文字说明设计类通常分为哪三种类型,每种类型的主要职责,并针对题干描述案例涉及的具体类为每种类型的设计类举出2个实例。
【问题2】(3分)
在面向对象的设计过程中,活动图(activity diagram)阐明了业务用例实现的工作流程。请用300字以内的文字给出活动图与流程图(flow chart)的三个主要区别。
【问题3】(10分)
在面向对象的设计过程中,状态图(statechart diagram)描述了一个实体基于事件反应的动态行为。请根据题干描述,填写图2-1中的(a)-(e)空白,完成订单处理的状态图。
试题分析
本题主要考查考生对于软件系统设计的理解、掌握和应用。在解答该问题时,应认真阅读题干中给出的需求描述,然后进行类、活动图和状态图建模。
【问题1】
识别设计类是面向对象设计过程中的重要工作,设计类表达了类的职责,即该类所担任的任务。在系统设计过程中,类可以分为三种类型:实体类、边界类(或接口类)和控制类。
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息。题干描述中商品、订单、注册用户、送货信息、购物车等都是实体类。
边界类用于封装在用例内、外流动的信息或数据流。题干描述中商品信息页面、订单信息录入页面和订单表单都属于边界类。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+