【软考系统架构设计师】2016下系统架构师案例分析历年真题
2016下系统架构师案例分析历年真题
- 【软考系统架构设计师】2016下系统架构师案例分析历年真题
- 2016年下系统架构师案例分析试题一(架构风格)
- 我的解答
- 标准答案
- 心得体会
- 2016年下系统架构师案例分析试题二(需求工程)
- 我的解答
- 标准答案
- 心得体会
- 2016年下系统架构师案例分析试题三(嵌入式)
- 我的解答
- 标准答案
- 心得体会
- 2016年下系统架构师案例分析试题四(J2EE架构)
- 我的解答
- 标准答案
- 心得体会
- 2016年下系统架构师案例分析试题五(MVC架构)
- 我的解答
- 标准答案
- 心得体会
2016年下系统架构师案例分析试题一(架构风格)
2016年下系统架构师案例分析试题一某软件公司为某品牌手机厂商开发一套手机应用程序集成开发环境,以提高开发手机应用程序的质量和效率。在项目之初,公司的系统分析师对该集成开发环境的需求进行了调研和分析,具体描述如下:a.需要同时支持该厂商自行定义的应用编程语言的编辑、界面可视化设计、编译、调试等模块,这些模块产生的模型或数据格式差异较大,集成环境应提供数据集成能力。集成开发环境还要支持以适配方式集成公司现有的应用模拟器工具。b.经过调研,手机应用开发人员更倾向于使用Windows系统,因此集成开发环境的界面需要与Windows平台上的主流开发工具的界面风格保持一致。c.支持相关开发数据在云端存储,需要保证在云端存储数据的机密性和完整性。d.支持用户通过配置界面依据自己的喜好修改界面风格,包括颜色、布局、代码高亮方式等,配置完成后无需重启环境。e.支持不同模型的自动转换。在初始需求中定义的机器性能条件下,对于一个包含50个对象的设计模型,将其转换为相应代码框架时所消耗时间不超过5秒。f.能够连续运行的时间不小于240小时,意外退出后能够在10秒之内自动重启。g.集成开发环境具有模块化结构,支持以模块为单位进行调试、测试与发布。h.支持应用开发过程中的代码调试功能:开发人员可以设置断点,启动调试,编辑器可以自动卷屏并命中断点,能通过变量监视器查看当前变量取值。在对需求进行分析后,公司的架构师小张查阅了相关的资料,认为该集成开发环境应该采用管道一过滤器(Pipe-Filter)的架构风格,公司的资深架构师王工在仔细分析后,认为应该采用数据仓储(Data Repository)的架构风格。公司经过评审,最终采用了王工的方案。【问题1】识别软件架构质量属性是进行架构设计的重要步骤。请分析题干中的需求描述,填写表1-1中(1)~(5)处的空白。【问题2】请在阅读题干需求描述的基础上,从交互方式、数据结构、控制结构和扩展方法4个方面对两种架构风格进行比较,填写表1-2中(1)~(4)处的空白。
【问题3】在确定采用数据仓库架构风格后,王工给出了集成开发环境的架构图。请填写图1-1中(1)~(4)处的空白,完成该集成开发环境的架构图。
我的解答
- 【问题1我的解答】
No | 说明 | 质量属性 |
a | 需要同时支持该厂商自行定义的应用编程语言的编辑、界面可视化设计、编译、调试等模块,这些模块产生的模型或数据格式差异较大,集成环境应提供数据集成能力。集成开发环境还要支持以适配方式集成公司现有的应用模拟器工具 | 易用性 |
b | 经过调研,手机应用开发人员更倾向于使用Windows系统,因此集成开发环境的界面需要与Windows平台上的主流开发工具的界面风格保持一致 | 可用性 |
c | 支持相关开发数据在云端存储,需要保证在云端存储数据的机密性和完整性 | 安全性 |
d | 支持用户通过配置界面依据自己的喜好修改界面风格,包括颜色、布局、代码高亮方式等,配置完成后无需重启环境 | 可修改性 |
e | 支持不同模型的自动转换。在初始需求中定义的机器性能条件下,对于一个包含50个对象的设计模型,将其转换为相应代码框架时所消耗时间不超过5秒 | 设计约束 |
f | 能够连续运行的时间不小于240小时,意外退出后能够在10秒之内自动重启 | 可用性 |
g | 集成开发环境具有模块化结构,支持以模块为单位进行调试、测试与发布 | 可测试性 |
h | 支持应用开发过程中的代码调试功能:开发人员可以设置断点,启动调试,编辑器可以自动卷屏并命中断点,能通过变量监视器查看当前变量取值 | 可测试性 |
- 【问题2我的解答】
比较因素 | 管道过滤器 | 数据仓库风格 |
交互方式 | 顺序结构或有限的循环结构 | 星型结构,网状结构 |
数据结构 | 文件 | 文件或模型 |
控制结构 | 数据驱动 | 业务功能驱动 |
扩展方法 | 接口适配 | 节点追加 |
- 【问题3我的解答】
1)手机应用程序集成开发环境
2)应用模拟器工具
3)代码调试
4)变量监视器
标准答案
- 【问题1标准答案】
No | 说明 | 我的解答 | 标准答案 |
a | 需要同时支持该厂商自行定义的应用编程语言的编辑、界面可视化设计、编译、调试等模块,这些模块产生的模型或数据格式差异较大,集成环境应提供数据集成能力。集成开发环境还要支持以适配方式集成公司现有的应用模拟器工具 | 易用性 | - |
b | 经过调研,手机应用开发人员更倾向于使用Windows系统,因此集成开发环境的界面需要与Windows平台上的主流开发工具的界面风格保持一致 | 可用性 | 易用性 |
c | 支持相关开发数据在云端存储,需要保证在云端存储数据的机密性和完整性 | 安全性 | 安全性 |
d | 支持用户通过配置界面依据自己的喜好修改界面风格,包括颜色、布局、代码高亮方式等,配置完成后无需重启环境 | 可修改性 | 可修改性 |
e | 支持不同模型的自动转换。在初始需求中定义的机器性能条件下,对于一个包含50个对象的设计模型,将其转换为相应代码框架时所消耗时间不超过5秒 | 设计约束 | 性能 |
f | 能够连续运行的时间不小于240小时,意外退出后能够在10秒之内自动重启 | 可用性 | 可用性 |
g | 集成开发环境具有模块化结构,支持以模块为单位进行调试、测试与发布 | 可测试性 | 可测试性 |
h | 支持应用开发过程中的代码调试功能:开发人员可以设置断点,启动调试,编辑器可以自动卷屏并命中断点,能通过变量监视器查看当前变量取值 | 可测试性 | - |
- 【问题2标准答案】
比较因素 | 管道过滤器 | 数据仓库风格 |
交互方式 | 顺序结构或有限的循环结构 | 星型(工具之间通过中心结点进行交互) |
数据结构 | 数据流(流式数据) | 文件或模型 |
控制结构 | 数据驱动 | 业务功能驱动 |
扩展方法 | 接口适配 | 模型适配(与数据仓库进行数据适配) |
- 【问题3标准答案】
1)模型,数据库,语法结构树
2)编辑器
3)适配器
4)应用模拟器工具 - 【解析】
- 本题考查的是架构设计过程中涉及到的一些质量属性,以及架构风格的对比。常用的质量属性包括:
- 性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。 - 可靠性
可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。 - 可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。 - 安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。 - 可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。 - 易用性
软件开发工具应有十分友好的用户界面,用户乐于使用;工具应能剪裁和定制,以适应特定用户的需要;工具应能提示用户的交互操作,提供简单有效的执行方式;工具还应能检查用户的操作错误,尽可能自动改正错误。
- 题目中还涉及到管道过滤器风格与仓库风格的对比。这两种风格的基本概念为:
- 在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。
- 在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。
一方面,若构件控制共享数据,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。 - 交互方式:管理过滤器很明显是顺序结构或循环结构,数据在管理中进行传递。而仓库结构是数据在中心位置,所有的处理均是中心结点与周边结点之间的交互,从形态来看,是星型的。
- 数据结构:从数据结构来看,仓库风格会使用一个文件将数据保存起来,所有的操作围绕这个文件进行。而管道过滤器则是在过滤器之间传递数据流。
- 控制结构:从控制结构来说仓库风格是业务功能驱动,而管道过滤器是由数据流驱动的。
- 扩展方法:从扩展方法来讲,管道过滤器是通过过滤器提供标准接口与其它过滤器对接,而数据仓库风格,要共享数据,扩展功能,只要功能的操作与数据模型本身是匹配的就行了,就像我们要共享一个数据库做系统集成,此时共享同一数据库的多个应用系统所用的数据模型一定会是一致的,否则无法去共享。
- 本题最后一问是分析开发环境架构图。要填充这个图,首先得想明白的是,这个环境中,仓库的中心是数据,数据对应的是语法结构树,因为一系列的处理都是以此为依据来进行的。接下来找出与编译器同等地位的其它处理工具即可。
心得体会
- 这是2016年案例的必做题,第一空考察了质量属性区分需求这个知识点。质量属性有可靠性(可用性),可扩展性,易用性,可修改性,安全性,性能等;现在对质量属性已经大致有数,但在做题时,还真没有想到。这样第一问第二空有大致可以锁定区间了。
- 第二空考察了架构风格的对比。管道过滤器和黑板仓库风格都是可以用在IDE集成开发环境当中的。这两个概念都懂,但是到了某个方面去对比,这种架构系分最爱的考察方式中,我还是出现了一点不适应。也说明深入理解架构风格方面我做得还不够。
- 比如在交互方式方面,数据仓库风格中数据都是网状结构,但不是选择而是填空的情况下,还真想不到。虽然管道过滤器给出了答案顺序结构或有限循环,但还是参照不出来,侧面说明了自己的基础不够好。
- 在数据结构方面,管道过滤器的数据结构终于够简单,让我蒙对了,而数据仓库风格的数据结构就是模型与文件,要是这里让我填空,我也填不出来。
- 在控制结构中,一个是数据驱动一个是业务功能驱动;这个还好理解的;最后在扩展方式中,管道过滤器是接口适配,而仓库风格适配的就是模型了,这个从第三空的图中多少可以看出些东西来。所以当一个问题一下子回答不上来的时候,参照案例背景甚至参照其他问题,是一个很好的实践。
- 第三个问题其实就是直接考对于背景的理解,通过对背景的理解将需求中找到的内容反映到架构图中的能力。按照上面所说的,回答正确第一小空很重要,这就取决于你对数据仓库风格的理解。仓库风格中的核心是数据,数据的核心是语法树。应用模拟器工具和编辑器我也都从需求中准确抓取内容了。
集成开发环境还要支持以适配方式集成公司现有的应用模拟器工具。从这个需求中就可以知道第三小空和第四小空就是适配器和模拟工具了。
2016年下系统架构师案例分析试题二(需求工程)
2016年下系统架构师案例分析试题二
某软件公司计划开发一套教学管理系统,用于为高校提供教学管理服务。该教学管理系统基本的需求包括:
(1)系统用户必须成功登录到系统后才能使用系统的各项功能服务;
(2)管理员(Registrar)使用该系统管理学校(University)、系(Department)、教师(Lecturer)、学生(Student)和课程(Course)等教学基础信息;
(3)学生使用系统选择并注册课程,必须通过所选课程的考试才能获得学分;如果考试不及格,必须参加补考,通过后才能获得课程学分;
(4)教师使用该系统选择所要教的课程,并从系统获得选择该课程的学生名单;
(5)管理员使用系统生成课程课表,维护系统所需的有关课程、学生和教师的信息;
(6)每个月到了月底系统会通过打印机打印学生的考勤信息。
项目组经过分析和讨论,决定采用面向对象开发技术对系统各项需求建模。
【问题1】
用例建模用来描述待开发系统的功能需求,主要元素是用例和参与者。请根据题目所述需求,说明教学服务系统中有哪些参与者。
【问题2】
用例是对系统行为的动态描述,用例获取是需求分析阶段的主要任务之一。请指出在面向对象系统建模中,用例之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,“登录系统”用例与“注册课程”用例之间、“参加考试”用例与“参加补考”用例之间的关系分别属于哪种类型?
【问题3】
类图主要用来描述系统的静态结构,是组件图和配置图的基础。请指出在面向对象系统建模中,类之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,类University与类Student之间、类University和类Department之间、类Student和类Course之间的关系分别属于哪种类型
我的解答
- 【问题1我的解答】
1)管理员
2)学生
3)教师
4)打印机
5)时间
6)课程课表 - 【问题2我的解答】
用例一般有三种类型:包含,扩展和泛化。
“登录系统”用例与“注册课程”用例之间是包含关系;
“参加考试”用例与“参加补考”是扩展关系; - 【问题3我的解答】
类之间的关系有继承,泛化,组合/聚合,依赖/调用。
类University与类Student之间是组合关系;
类University和类Department之间是组合关系;
类Student和类Course之间是调用依赖关系。
标准答案
- 【问题1标准答案】
1)管理员
2)学生
3)教师
4)打印机
5)时间 - 【问题2标准答案】
用例之间的关系包括了扩展,汎化,包含。
“登录系统”用例与“注册课程”用例之间是包含关系;
“参加考试”用例与“参加补考”是扩展关系; - 【问题3标准答案】
类之间的关系包括了关联,聚合,组合,依赖,泛化,实现。
类University与类Student之间是聚合关系;
类University和类Department之间是组合关系;
类Student和类Course之间是关联关系; - 【解析】
参与者是指系统以外的,需要使用系统或与系统交互的事物,包括:人或组织、设备、外部系统等。在本题中,较为容易识别的参与者包括:学生、教师、管理员,比较隐晦的参与者包括:时间、打印机。
类的关系 | 类关系说明 |
依赖关系 | 一个事物发生变化影响另一个事物 |
泛化关系 | 特殊/一般关系 |
关联关系 | 描述了一组链,链是对象之间的连接 |
聚合关系 | 整体与部分生命周期不同 |
组合关系 | 整体与部分生命周期相同 |
实现关系 | 接口与类之间的关系 |
心得体会
- 这题真心没啥好说的,就是关于类的关系,这里可以做个记忆。这题和系分某年的案例题是出奇的接近。
2016年下系统架构师案例分析试题三(嵌入式)
2016年下系统架构师案例分析试题三嵌入式系统是当前航空、航天、船舶及工业、医疗等领域的核心技术,嵌入式系统可包括实时系统与非实时系统两种。某宇航公司长期从事航空航天飞行器电子设备的研制工作,随着业务的扩大,需要大量大学毕业生补充到科研生产部门。按照公司规定,大学毕业生必须进行相关基础知识培训,为此,公司经理安排王工对他们进行了长达一个月的培训。【问题1】王工在培训中指出:嵌入式系统主要负责对设备的各种传感器进行管理与控制。而航空航天飞行器的电子设备由于对时间具有很强的敏感性,通常由嵌入式实时系统进行管控,请用300字以内文字说明什么是实时系统,实时系统有哪些主要特性。【问题2】实时系统根据应用场景、时间特征以及工作方式的不同,存在多种实时特性,大致有三种分类方法,即时间类别、时间需求和工作方式结构。根据自己所掌握的“实时性”知识,将图3-1给出的实时特性按三种分类方式,填写图3-1中(1)~(8)处空白。备选答案:时限的危害程度;时间角色;弱;时间响应;固定;时限/反应时间;时间明确;输入/输出激励;时间触发;强;周期/零星/非周期;事件触发。【问题3】可靠性是实时系统的关键特性之一,区分软件的错误(Error)、缺陷(Defect)、故障(Fault)和失效(Failure)概念是软件可靠性设计工作的基础。请简要说明错误、缺陷、故障和失效的定义;并在图3-2中标出错误、缺陷和失效出现阶段,说明缺陷、故障和失效的表现形式,填写图3-2中(1)~(6)处的空白。
我的解答
- 【问题1我的解答】
实时系统是进程之间能够没有延迟或在较短延迟的情况下,完成进行之间异步数据交换的系统。
实时系统的特点:可靠性强,异步通信延迟率低的特点 - 【问题2我的解答】
1)强
2)时间触发
3)事件触发
4)周期
5)零星
6)非周期
7)输入激励
8)输出激励 - 【问题3我的解答】
1)测试人员产生
2)用户使用产生
3)用户使用产生
4)编译开发时
5)系统测试时
6)发布运行时
标准答案
- 【问题1标准答案】
实时系统是指向系统发出一条指令之后,在一个极短的时间内,系统回复结果。
实时系统的特征:
1)时间约束性
2)可预测性
3)可靠性
4)与外部环境的交互作用性
5)多任务类型
6)约束的复杂性
7)具有短暂超载的特征 - 【问题2标准答案】
1)强
2)时间响应
3)时间明确
4)时限/反应时间
5)输入输出激励
6)周期/零星/非周期
7)时间触发
8)事件触发 - 【问题3标准答案】
类型 | 说明 |
软件错误 | 是指在软件的生存期内的不希望或者是不可接受的人为错误,其结果是导致软件缺陷的产生 |
软件缺陷 | 存在于软件(文档,数据,程序)之中的那些不希望或者不可接受的偏差 |
软件故障 | 是指软件运行过程中产生的一种不希望或不可接受的内部状态 |
软件失效 | 是指在软件运行过程中产生的一种不期望或不可接受的外部行为结果 |
1)存在
2)引起
3)用户经历
4)在开发过程中
5)在产品中
6)在运行时
- 【解析】
- 实时系统的特性包括:时间约束性,可预测性,可靠性,与外部环境的交互作用性,约束的复杂性,具有短暂超载的特征,多任务类型。
- 时间约束性
实时系统的任务具有一定的时间约束(截止时间)。根据截止时间,实时系统的实时性分为“硬实时”和“软实时”。硬实时是指应用的时间需求能够得到完全满足,否则就造成重大安全事故,甚至造成重大的生命财产损失和生态破坏,如在航空航天、军事、核工业等一些关键领域中的应用。软实时是指某些应用虽然提出时间需求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如监控系统等和信息采集系统等。 - 可预测性
可预测性是指系统能够对实时任务的执行时间进行判断,确定是否能够满足任务的时限要求。由于实时系统对时间约束要求的严格性,使可预测性称为实时系统的一项重要性能要求。除了要求硬件延迟的可预测性以外,还要求软件系统的可预测性,包括 应用程序的 响应时间是可预测的,即在有限的时间内完成必须的工作;以及 操作系统的可预测性,即实时原语、调度函数等运行开销应是有界的,以保证应用程序执行时间的有界性。 - 可靠性
大多数实时系统要求有较高的可靠性。在一些重要的实时应用中,任何不可靠因素和计算机的一个微小故障,或某些特定强实时任务(又叫关键任务)超过时限,都可能引起难以预测的严重后果。为此,系统需要采用 静态分析和保留资源的方法及冗余配置,使系统在最坏情况下都能正常工作或避免损失。可靠性已成为衡量实时系统性能不可缺少的重要指标。 - 与外部环境的交互作用性
实时系统通常运行在一定的环境下,外部环境是实时系统不可缺少的一个组成部分。计算机子系统一般是控制系统,它必须在规定的时间内对外部请求做出反应。外部物理环境往往是被控子系统,两者互相作用构成完整的实时系统。大多数控制子系统必须连续运转以保证子系统的正常工作或准备对任何异常行为采取行动。 - 多任务类型
在实时系统中,不但包括周期任务、偶发任务、非周期任务,还包括非实时任务。实时任务要求要满足时限,而非实时任务要求要使其响应时间尽可能的短。多种类型任务的混合,使系统的可调度性分析更加困难。
六、约束的复杂性
任务的约束包括时间约束、资源约束、执行顺序约束和性能约束。时间约束是任何实时系统都固有的约束。资源约束是指多个实时任务共享有限的资源时,必须按照一定的资源访问控制协议进行同步,以避免死锁和高优先级任务被低优先级任务堵塞的时间(即优先级倒置时间)不可预测。执行顺序约束是指各任务的启动和执行必须满足一定的时间和顺序约束。例如,在分布式端到端(end-to-end)实时系统很重,同一任务的各子任务之间存在前驱/后驱约束关系,需要执行同步协议来管理子任务的启动和控制子任务的执行,使它们满足时间约束和系统可调度要求。性能约束是指必须满足如 可靠性、可用性、可预测性、服务质量Qos等性能指标。 - 具有短暂超载的特点
在实时系统中,即使一个功能设计合理、资源充足的系统也可能由于一下原因超载:
- 系统元件出现老化,外围设备错误或系统发生故障。随着系统运行时间的增长,系统元件出现老化,系统部件可能发生故障,导致系统可用资源降低,不能满足实时任务的时间约束要求。
- 环境的动态变化。由于不能对未来的环境、系统状态进行正确有效地预测,因此不能从整体角度上对任务进行调度,可能导致系统超载。
- 应用规模的扩大。原先满足实时任务时限要求的系统,随着应用规模的增大,可能出现不能满足任务时限要求的情况,而重新设计、重建系统在时间和经济上又不允许。
- 软件失效的机理可描述为:软件错误→软件缺陷→软件故障→软件失效
- 软件错误
在可以预见的时期内,软件仍将由人来开发。在整个软件生存期的各个阶段,都贯穿者人的直接或间接的干预。然而,人难免犯错误,这必然给软件留下不良的痕迹。软件错误是指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。可见,软件错误是一种人为过程,相对于软件本身,是一种外部行为。 - 软件缺陷
软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差,如少一个逗号、多一语句等。其结果是软件运行于某一特定条件时出现软件故障,这时称软件缺陷被激活。 - 软件故障
软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态。譬如,软件处于执行一个多余循环过程时,我们说软件出现故障。此时若无时当的措施(容错)加以及时处理,便产生软件失效。显然,软件故障是一种动态行为。 - 软件失效
软件失效是指软件运行时产生 的一种不希望或不可接受的外部行为结果
心得体会
- 这题是考查嵌入式方面的问题,第一问考查的是嵌入式实时系统的定义和特点。
- 特点一共有七个:可预测性,可靠性,交互作用性,短暂的超载特点,多任务,时间约束性和约束复杂性。这个实时系统的概念需要深入理解一下。
- 然后是第三问,考查的是软件可靠性设计工作。分为了软件错误,软件缺陷,软件故障和软件失效。
首先问了这四个概念的定义。这四个概念也是需要重点理解和掌握的。软件错误一般指人为的错误,结果导致产生缺陷。 - 缺陷就是存在于软件之中的不希望存在的偏差;故障是指软件运行过程中产生的一种不希望或不可接受的内部状态;
- 失效是指在软件运行过程中产生的一种不期望或不可接受的外部行为结果。
- 失效和故障一个侧重于内部状态,一个侧重于外部行为结果;而软件错误会引起缺陷有因果关系。
- 对于第二问,到现在还没有摸清头脑来。发现嵌入式方面实在不好回答。实时系统的知识缺乏导致的把。
2016年下系统架构师案例分析试题四(J2EE架构)
某电子产品制造公司,几年前开发建设了企业网站系统,实现了企业宣传、产品介绍、客服以及售后服务等基本功能。该网站技术上采用了Web服务器、动态脚本语言PHP。随着市场销售渠道变化以及企业业务的急剧拓展,该公司急需建立完善的电子商务平台。公司张工建议对原有网站系统进行扩展,增加新的功能(包括订单系统、支付系统、库存管理等),这样有利于降低成本、快速上线;而王工则认为原有网站系统在技术上存在先天不足,不能满足企业业务的快速发展,尤其是企业业务将服务全球,需要提供24小时不间断服务,系统在大负荷和长时间运行下的稳定性至关重要。建议采用应用服务器的Web开发方法,例如J2EE,为该企业重新开发新的电子商务平台。【问题1】王工认为原有网站在技术上存在先天不足,不能满足企业业务的快速发展,根据你的理解,请用300字以内的文字说明原系统存在哪几个方面的不足。【问题2】请简要说明应用服务器的概念,并重点说明应用服务器如何来保障系统在大负荷和长时间运行下的稳定性以及可扩展性。【问题3】J2EE平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件可被分别部署到不同的机器中。请填写图4-1中(1)~(5)处的空白,完成J2EE的N层体系结构。
我的解答
- 【问题1我的解答】
在需要提供24小时不间断服务,系统在大负荷和长时间运行下的稳定性方面,原有系统都无法满足要求。
可扩展性,可靠性,性能,安全性等方面 - 【问题2我的解答】
应用服务器就是存在系统应用逻辑部分功能的服务器。
在稳定性方面,应用服务器可以通过集群技术和负载均衡来实现,集群中的Web服务器可以作为冗余部分,一台出现问题时,可以在使用另一台Web服务器。在大负荷的时候,可以分散请求到不同的Web服务器,从而实现负载均衡。
在可扩展性方面,因为采用集群技术,那么可以实现Web服务的的向外扩展。 - 【问题3我的解答】
1)JSP
2)Servlet
3)业务逻辑层
4)消息驱动Bean
5)DAO
标准答案
- 【问题1标准答案】
- PHP只能简单的分布式两层或者三层架构,而Java在这方面就比较强大,可以实现多层的网络架构。
- PHP是面向过程的语言,而Java是面向对象的语言,面向过程语言开发的程序,只要业务流程发生变化,修改的工作量就很大,所以可修改性很差,同时可复用性也不好。
- PHP在可靠性方面比J2EE平台差。J2EE平台有大量增强可靠性的成熟解决方案,而PHP只是一种脚本语言,在可靠性方面缺乏成熟解决方案。
- PHP对不同数据库采用不同的数据库访问接口,而Java通过JDBC来访问数据库。根据不同的数据库厂商提供的数据库驱动方便的访问数据库。访问数据库的接口比较统一。所以原架构在数据库连接方面修改起来工作量也是很大的。
- PHP适合采用中小型项目。所以在本项目中以前采用PHP是合适的。但目前大量的功能需要增加,PHP在稳定性方面达不到要求
- PHP的维护性没有Java好
- 在可扩展性和安全性上面PHP没有Java好。
- 【问题2标准答案】
- 应用服务器是指通过各种协议把商业逻辑暴露给客户端的程序。
- 若系统负荷量很大,可以部署多台应用服务,多台应用服务分担任务,以达到性能的要求。
- 应用服务器可以通过灵活的增加服务器来完成扩展,所以扩展性很好。
- 应用服务器可长时间稳定运行。因为当一台应用服务器出现故障时,可以将当前运行的食物转移至正常的应用服务器来执行完成。不影响业务正常运行,从而保证高可靠性与稳定性。
- 【问题3标准答案】
1)Applet
2)Servlet
3)EJB容器
4)SessionBean
5)实体Bean - 【解析】
- 应用服务器是指通过各种协议把商业逻辑曝露给客户端的程序。
- 它提供了访问商业逻辑的途径以供客户端应用程序使用。
- 应用服务器使用此商业逻辑就像调用对象的一个方法一样。
- 简单的说能实现动态网页技术的服务器叫做Web应用服务器。
心得体会
- 第一问说白了就是比对PHP技术和J2EE技术之间的差别的。既然都说使用J2EE了,在比对中自然要突出Java的优势了。PHP是面向过程的,在安全性稳定性都不如J2EE来的好。
- 第二问考察的是应用服务器的概念,应用服务器就是通过各种协议将商业逻辑暴露给客户端的程序。这个概念还是记一下吧其实也是好记忆的。应用服务器如何来保障系统在大负荷和长时间运行下的稳定性以及可扩展性,我大概都回答正确了,无非就是负载均衡+集群技术。
- 第三问惨不忍睹,Java2EE框架真心不是很清楚,通过这题也大概清楚了解了该框架。EJB容器层代替了MVC模式中的业务逻辑层;
- Applet称为JAVA小应用程序。运行与Web浏览器之上的程序。这种Applet程序的“.class”文件可以被嵌入到Web网页中,当支持JAVA的浏览器下载含有JAVA 小应用程序的网页时,就可以解析执行其中的Applet程序。
2016年下系统架构师案例分析试题五(MVC架构)
2016年下系统架构师案例分析试题五(MVC架构)Scrum是一个增量的、迭代的敏捷软件开发过程。某软件公司计划开发一个基于Web的Scrum项目管理系统,用于支持项目团队采用Scrum敏捷开发方法进行软件开发,辅助主管智能决策。此项目管理系统提供的主要服务包括项目团队的管理、敏捷开发过程管理和工件的管理。Scrum敏捷开发中,项目团队由Scrum主管、产品负责人和开发团队人员三种不同的角色组成,其开发过程由若干个Sprint(短的迭代周期,通常为2到4周)活动组成。Product Backlog是在Scrum过程初期产生的一个按照商业价值排序的需求列表,该列表条目的体现形式通常为用户故事。在每一个Sprint活动中,项目团队从Product Backlog中挑选最高优先级的用户故事进行开发。被挑选的用户故事在Sprint计划会议上经过细化分解为任务,同时初步估算每一个任务的预计完成时间,编写Sprint Backlog。在Sprint活动期间,项目团队每天早晨需举行每日站立会议,重新估算剩余任务的预计完成时间,更新Sprint Backlog、Sprint燃尽图和Release燃尽图。在每个Sprint活动结束时,项目团队召开评审会议和回顾会议,交付产品增量,总结Sprint期间的工作情况和问题。此时,如果Product Backlog中还有未完成的用户故事,则项目团队将开始筹备下一个Sprint活动迭代。为完成Scrum项目管理系统,考虑到系统的智能决策需求,公司决定使用MVC架构模式开发该项目管理系统。具体来说,系统采用轻量级J2EE架构和SSH框架进行开发,使用MySQL数据库作为底层存储。【问题1】Scrum项目管理软件需真实模拟Scrum敏捷开发流程,请根据你的理解完成图5-1给出的Scrum敏捷开发状态图,填写其中(1)~(5)的内容。【问题2】根据题干描述,本系统采用MVC架构模式,请从各选答案a~n中分别选出属于MVC架构模型中的模型(Model)、视图(View)和控制器(Controler)的相关内容描述填入表5-1的空(1)~(3)处。
备选答案:
【问题3】根据项目组给出的系统设计方案,将备选答案a~l的内容填写在图5-2中的空(1)~(9),完成系统架构图。
我的解答
- 【问题1我的解答】
1)形成用户故事
2)Product Backlog
3)Sprint Backlog
4)确认Product Backlog中是否有未完成的用户故事
5)交付产品增量 - 【问题2我的解答】
No | 包含内容 | 架构模式 |
a | 燃尽图 | 视图 |
b | Project | 控制器 |
c | Project Backlog | 模型 |
d | 用户故事 | 视图 |
e | 估算任务预计完成时间 | 控制器 |
f | Release燃尽图 | 视图 |
g | Sprint回顾会议 | 模型 |
h | 用户 | 模型 |
i | 交付产品增量 | 模型 |
j | 新建项目 | 控制器 |
k | Task | 控制器 |
l | Sprint | 控制器 |
m | 产品负责人 | 模型 |
n | Sprint Backlog | 模型 |
- 【问题3我的解答】
No | 我的答案 |
1 | Sitemesh(d) |
2 | JQuery(f) |
3 | 视图层(k) |
4 | 业务逻辑层(e) |
5 | Struts2(a) |
6 | Web层(j) |
7 | EJB(i) |
8 | Hibernate持久层(b) |
9 | 模型层(g) |
标准答案
- 【问题1标准答案】
No | 我的解答 | 标准答案 |
1 | 形成用户故事 | Product Backlog |
2 | Product Backlog | Sprint计划会议 |
3 | Sprint Backlog | 每日站立会议 |
4 | 确认Product Backlog中是否有未完成的用户故事 | 还有未完成的用户故事 |
5 | 交付产品增量 | 已交付的用户故事 |
- 【问题2标准答案】
No | 包含内容 | 架构模式(我的答案) | 架构模式(标准答案) |
a | 燃尽图 | 视图 | 视图 |
b | Project | 控制器 | 模型 |
c | Project Backlog | 模型 | 模型 |
d | 用户故事 | 视图 | 模型 |
e | 估算任务预计完成时间 | 控制器 | 控制器 |
f | Release燃尽图 | 视图 | 视图 |
g | Sprint回顾会议 | 模型 | 无 |
h | 用户 | 模型 | 模型 |
i | 交付产品增量 | 模型 | 无 |
j | 新建项目 | 控制器 | 控制器 |
k | Task | 控制器 | 模型 |
l | Sprint | 控制器 | 模型 |
m | 产品负责人 | 模型 | 模型 |
n | Sprint Backlog | 模型 | 模型 |
- 【问题3标准答案】
No | 我的答案 | 标准答案 |
1 | Sitemesh(d) | Sitemesh(d) |
2 | JQuery(f) | JQuery(f) |
3 | 视图层(k) | 控制层(h) |
4 | 业务逻辑层(e) | 业务逻辑层(e) |
5 | Struts2(a) | Struts2(a) |
6 | Web层(j) | 视图层(k) |
7 | EJB(i) | Web层(j) |
8 | Hibernate持久层(b) | Hibernate持久层(b) |
9 | 模型层(g) | 数据库服务© |
- 【补充知识】
- jQuery是一个简洁而快速的JavaScript库,可用于简化事件处理,HTML文档遍历,Ajax交互和动画,以便快速开发网站。
- jQuery目的是让开发者更容易地在网站上使用JavaScript。它不是一种单独的编程语言,与JavaScript一起工作。
- 使用jQuery,将用更少的资源做更多的事情。jQuery是基于javascript类库的框架
- SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。
- Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
心得体会
- 此题第一问考查了阅读理解。从结果上看,我阅读理解能力还是不够。
- 第二问考查MVC模式的组件归类。
- Project不是控制器是模型,想想项目工程可能有很多个,作为模型存储是可行的;新建项目反倒作为控制器比较合理。
- 用户故事我选了视图,觉得故事应该显示在Backlog上的,但是用户故事其实就是需求,不应该用数据库存储吗?
- Task和Sprint也应该存在数据库中把,所以不是控制器而是模型更加合理
- 第三问就是看框架填空的题目了。