通过一个学期对高级软件工程课程的学习,我认为软件工程师的软件工程知识技能水平高低主要体现在以下几个方面
- 一名合格的软件工程师必须掌握目前比较流行的语言,比如说C、C++、JAVA、C#、VB等常用的一种或者多种语言,具备进行简单应用开发的能力。这是做好软件工程师的一个前提条件,也是一个基本功。
- 对Windows、Linux、Unix等大型主流操作系统的使用和应用开发的熟练掌握,包括一些网络的基础知识。
- 掌握软件需求分析技术,包括对软件的分析和度量各种技术,包括软件静态和动态分析技术,以及编写软件UML和质量分析报告的能力等。
- 了解常用开发技术,掌握各类软件架构的特点,具备良好的学习技术。
- 综合素质上,需要具备良好的英语听说读写能力、具有良好的语言及文字表达能力、较好的沟通技巧及团队合作精神、有较强的责任感及进取精神、细心、耐心,具备逆向思维能力等。
试题
1.在面向对象设计的原则中、(36)原则是指抽象不应该依赖予细节,细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。
(36)A.开闭 B.里氏替换 C.最少知识 D.依赖倒置
【答案】D 【解析】
依赖倒置原则是指抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。在程序代码中传递参数时或在组合(或聚合)关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明和方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。为了确保该原则的应用,一个具体类应当只实现接口和抽象类中声明过的方法,而不要给出多余
的方法,否则,将无法调用到在子类中增加的新方法。
实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是OOD的目标的话,那么依赖倒置原则就是OOD的主要机制。有了抽象层,可以使得系统具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样,如果系统行为发生变化,则只需要扩展抽象层,并修改配置文件,而无须修改原有系统的源代码,在不修改的情况下来扩展系统功能,满足开闭原则的要求。依赖倒置原则是COM、CORBA、EJB、Spring等技术和框架背后的基本原则之一。
2. 执行者(Actor) 与用例之间的关系是 ( C )
(A)包含关系 (B)泛化关系 (C)关联关系 (D)扩展关系
3. 在类图中,下面哪个符号表示继承关系( C )
4.在类图中,“#”表示的可见性是(B)
(A) Public (B) Protected (C) Private (D) Package
5. 在类图中,下面哪个符号表示接口( C )
6.模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为 D
A.数据耦合 B.标记耦合 C.公共耦合 D.内容耦合
解析:一般可将耦合度从弱到强分为以下七级:
★非直接耦合
指两个模块中任一个都不依赖对方独立工作。这类耦合度最低。
★数据耦合
指两个模块间只是通过参数表传递简单数据。
★特征耦合
指两个模块都与同一个数据结构有关。
★控制耦合
指两个模块间传递的信息中含有控制信息。
★外部耦合
指若干模块都与同一个外部环境关联,例如I/0处理使所有I/O模块与特定的设备、格式和通信协议相关联。
★公共耦合
指两个或多个模块通过引用一个公共区的数据而发生相互作用。
★内容耦合
最高耦合度的是内容耦合。出现内容耦合的情形包括:当一个模块使用另一模块内部的控制
和控制信息;一个模块直接转移到另一模块内部等等。
一般说来,尽量使用数据耦合,少用控制耦合,限制外部耦合,完全不用内容耦合。
7. 某公司拟开发一个地面清洁机器人。机器人的控制者首先定义清洁任务和任务之间的关系,机器人接受任务后,需要响应外界环境中触发的一些突发事件,根据自身状态进行动态调整,最终自动完成任务。针对上述需求,该机器人应该采用()架构风格最为合适。
A.面向对象 B.主程序-子程序 C.规则系统 D.管道-过滤器
【答案】C 【解析】本题考查架构风格与架构设计策略的理解与掌握。
根据题目描述,机器人需要根据自身状态的外界环境进行自动调整,这是一个典型的根据外部事件进行响应的场景。比较4个候选项,规则系统比较适合根据外邹事件,以自身状态为基础自动进行处理和动作的场景。
8.某公司拟开发一个语音识别系统,其语音识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等,每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用()架构风格最为合适。
(47)A.解释器 B.面向对象 C.黑板 D.隐式调用
【答案】C 【解析】本题考查架构风格与架构设计策略的理解与掌握。
根据题目描述,语音识别系统是一个十分典型的专家系统,其特点是求解的正确结果不止一个,求解过程比较复杂,需要通过专家知识和反馈逐步得到正确结果。因此对比4个候选项,黑板结构特别适合求解这类问题。
9.某公司拟开发了个轿车巡航定速系统,系统需要持续测量车辆当前的实时速度,并根据设定的期望速度启动控制轿车的油门和刹车。针对上述需求,采用()架构风格最为合适。
(48)A.解释器 B.过程控制 C.分层 D.管道-过滤器
【答案】B 【解析】本题考查架构风格与架构设计策略的理解与掌握。
根据题目描述,轿车巡航定速系统是一个十分典型的控制系统,其特点是不断采集系统当前状态,与系统中的设定状态进行对比,并通过将当前状态与设定状态进行对比从而进行控制。因此对比4个候选项,过程控制特别适合求解这类问题。
10. 某公司拟开发一套在线游戏系统,该系统的设计目标之一是支持用户自行定义游戏对象属性,行为和对象之间的交互关系。为了实现上述目标,公司应该采用(49)架构风格最为合适。
A.管道-过滤器 B.隐式调用 C.主程序-子程序 D.解释器
【答案】D 【解析】本题主要考查软件架构设计策略与架构风格的理解与掌握。
根据题干描述,该软件系统特别强调用户定义系统中对象的关系和行为这一特性,这需要在软件架构层面提供一种运行时的系统行为定义与改变的能力,根据常见架构风格的特点和适用环境,可以知道最合适的架构设计风格应该是解释器风格。
11、在嵌入式系统的存储部件中,存取速度最快的是(B)。
A.内存 B.寄存器组 C.Flash D.Cache
存取速度:寄存器 > Cache > 内存 > 硬盘 > 光盘 > 软盘
寄存器属于CPU的一个组成部分而缓存只是集成到CPU封装内完全是和CPU独立的器件。另外二者速度相差很大,寄存器存取速度最快 其次缓存最后是内存。
12在UML提供的系统视图中,(35)是逻辑视图的一次执行实例,描述了并发与同步结构;(36)是最基本的需求分析模型。
(35)A.进程视图 B.实现视图 C.部署视图 D.用例视图
【答案】A D 【解析】
UML对系统架构的定义是系统的组织结构,包括系统分解的组成部分,以及它们的关联性、交互机制和指导原则等提供系统设计的信息。具体来说,就是指以下5个系统视图:
①逻辑视图。逻辑视图也称为设计视图,它表示了设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子集。
②进程视图。进程视图是可执行线程和进程作为活动类的建模,它是逻辑视图的一次执行实例,描述了并发与同步结构。
③实现视图。实现视图对组成基于系统的物理代码的文件和构件进行建模。
④部署视图。部署视图把构件部署到一组物理节点上,表示软件到硬件的映射和分布结构。 ⑤用例视图。用例视图是最基本的需求分析模型。
13. 以下关于软件架构设计重要性的描述,(C)是错误的。
A.软件架构设计能够满足系统的性能、安全性、可维护性等品质
B.软件架构设计能够帮助项目干系入(Stakeholder)更好地理解软件结构
C.软件架构设计能够帮助架构师更好地捕获和细化系统需求
D.软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用
【答案】C 【解析】本题主要考査软件架构设计的重要性。
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。软件架构设计能够满足系统的性能、安全性、可维护性等品质;软件架构设计能够帮助项目干系人(Stakeholder)更好地理解软件结构:软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用;软件架构设计对系统开发具有指导性:软件架构设计为系统复用奠定的基础;软件架构设计能够支持冲突分析。需要注意的是,软件架构设计与系统需求是直交的,两者并无必然联系。
13. 在嵌入式系统设计时,下面几种存储结构中对程序员是透明的是(11)。
(11)A.高速缓存 B.磁盘存储器 C.内存 D.flash存储器
【答案】A 【解析】本题主要考查嵌入式系统程序设计中对存储结构的操作。
14.对某公司欲开发一种工业机器人,用来进行汽车零件的装配。公司的架构师经过分析与讨论,给出了该机器人控制软件的两种候选架构方案:闭环控制和分层结构。以下对于这两种候选架构的选择理由,错误的是
A.应该采用闭环控制架构,因为闭环结构给出了将软件分解成几个协作构件的方法,这对于复杂任务特别适合
B.应该采用闭环控制结构,因为闭环控制架构中机器人的主要构件(监控器、传感器、发动机等)是彼此分开的,并能够独立替换
C.应该采用分层结构,因为分层结构很好地组织了用来协调机器人操作的构件,系统结构更加清晰
D.应该采用分层结构,因为抽象层的存在,满足了处理不确定性的需要:在较低层次不确定的实现细节在较髙层次会变得确定
【答案】A 【解析】
能够进行替换与重用,但闭环结构通常适用于处理简单任务(如机器装配等),并不适用于复杂任务。分层结构的特点是通过引入抽象层,在较低层次不确定的实现细节在较高层次会变得确定,并能够组织层间构件的协作,系统结构更加清晰。
15. Windows操作系统在图形用户界面处理方面采用的核心架构风格是(51)风格。Java语言宣传的“一次编写,到处运行”的特性,从架构风格上看符合(52)风格的特点。
(51)A.虚拟机 B.管道-过滤器 C.事件驱动 D.微内核-扩展
(52)A.虚拟机 B.管道-过滤器 C.事件驱动 D.微内核-扩展
【答案】C A 【解析】
Windows操作系统在图形用户界面处理方面采用的是典型的“事件驱动”的架构风格,首先注册事件处理的是回调函数,当某个界面事件发生时(例如键盘敲击、鼠标移
动等),系统会查找并选择合适的回调函数处理该事件。Java语言是一种解释型语言,
在Java虚拟机上运行,这从架构风格上看是典型的“虚拟机”风格,即通过虚拟机架构屏蔽不同的硬件环境。
二.判断题
1.软件的开发与运行经常受到硬件的限制和制约。(√)
2. 模块内的高内聚往往意味着模块间的松耦合。(√)
3. 软件的质量好坏主要由验收人员负责,其他开发人员不必关心。(X)
4.判定覆盖不一 定包含条件覆盖,条件覆盖也不一定包含判定覆盖。(√)
5.应该尽量使用机器语言编写代码,提高程序运行效率,而减少高级语言的使用。(X)
6. UML只能应用于软件系统模型的建立。(X)
7. 软件测试的目的是为了无一遗漏的找出所有的错误。(X)
8.用户对软件需求的描述不精确,往往是产生软件危机的原因之一-。(√)
9. 目前,软件项目的进度安排的两种比较常用的方法是程序评估与审查技术( PERT)
和关键路径法(CPM)。(√ )
10.一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的
人际关系,善于听取别人的意见。(√ )
11.目前的绝大多数软件都不适合于快速原型技术。(X)
12.面向数据的设计方法适用场合是具有明显的层次信息结构的应用如:企事业的信息
管理系统;系统软件(如操作系统)等。(√ )
13.缺乏处理大型软件项目的经验。是产生软件危机的唯一原因。(X)
14.测试计划、测试用例、出错统计和有关的分析报告一般不用长期保存。 (X)
15. 软件也会磨损和老化。 (X)
16.完善性维护是提高或完善软件的性能。(√)
17.缺乏有力的方法学的指导和有效的开发工具的支持,这 往往是产生软件危机的原
因之一。(√)
18.一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力。(X)
19.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获
取第一手资料,并从中提取出有价值的需求。(√ )
25.用穷举测试是较现实的测试方法。(X)
二.大题
1. 图书管理系统功能性需求说明如下: (25分)
✧图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一 标识其存在的编号。图书馆向每一一个借阅者发放图书
证,其中包含每-一个借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。
✧当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的
代理和系统交互。
✧系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。并且能够查询借阅者、图书和图书
管理员的信息。
✧° 可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。
回答下面问题:
1) 该系统中有哪些参与者? (3分)
借阅者 图书管理员 系统管理员
2) 确定该系统中的类,找出类之间的关系并画出类图
用户类、用户角色类、图书类、预定类、借阅类、书目类(6分)
类图(6分) 6个类每2个1分,6个关系每2个1分
3) 画出语境“借阅者预定图书”的时序图(10分)
2. 某软件公司欲开发一个网络设备管理系统,对管理区域内的网络设备(如路由器和交换机等)进行远程监视和控制。公司的系统分析师首先对系统进行了需求分析,识别出如下3项核心需求:
(a)目前需要管理的网络设备确定为10类20种,未来还将有新类别的网络设备纳入到该设备管理系统中;
(b)不同类别的网络设备,监视和控制的内容差异较大;同一类网络设备,监视和控制的内容相似,但不同厂商的实现方式(包括控制接口格式、编程语言等)差异较大;
(c)网络管理员能够在一个统一的终端之上实现对这些网络设备的可视化呈现和管理操作。
针对上述需求,公司研发部门的架构师对网络设备管理系统的架构进行了分析与设计,架构师王工认为该系统可以采用MVC架构风格实现,即对每种网络设备设计一个监控组件,组件通过调用网络设备厂商内置的编程接口对监控指令进行接收和处理;系统管理员通过管理模块向监控组件发送监控指令,对网络设备进行远程管理;网络状态、监控结果等信息会在控制终端上进行展示。针对不同网络设备的差异,王工认为可以对当前的20种网络设备接口进行调研与梳理,然后通过定义统一操作接口屏蔽设备差异。李工同意王工提出的MVC架构风格和定义统一操作接口的思路,但考虑到未来还会有新类别的网络设备接入,认为还需要采用扩展接口的方式支持系统开发人员扩展或修改现有操作接口。公司组织专家进行架构评审,最终同意了王工的方案和李工的改进意见。
————————————————
【问题1】 请用300字以内的文字解释什么是MVC架构风格以及其中的组件交互关系,并根据题干描述,指出该系统中的M、V、C分别对应什么。
MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化。
在本系统中,模型(M)代表监控组件、视图(V)代表控制终端、控制器(C)代表管理模块。
本题主要考査MVC架构风格的定义以及扩展接口模式结构的分析与理解。
MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化。
在本系统中,模型(M)代表监控组件、视图(V)代表控制终端、控制器(C)代表管理模块。
3. 阅读以下关于软件系统建模的叙述,在答题纸上回答问题1至问题3。
【说明】
某软件公司计划开发一套教学管理系统,用于为高校提供教学管理服务。该教学管理系统基本的需求包括:
(1)系统用户必须成功登录到系统后才能使用系统的各项功能服务;
(2)管理员(Registrar)使用该系统管理学校(University)、系(Department)、教师(Lecturer)、学生(Student)和课程(Course)等教学基础信息;
(3)学生使用系统选择并注册课程,必须通过所选课程的考试才能获得学分;如果考试不及格,必须参加补考,通过后才能获得课程学分;
(4)教师使用该系统选择所要教的课程,并从系统获得选择该课程的学生名单;
(5)管理员使用系统生成课程课表,维护系统所需的有关课程、学生和教师的信息;
(6)每个月到了月底系统会通过打印机打印学生的考勤信息。
项目组经过分析和讨论,决定采用面向对象开发技术对系统各项需求建模。
————————————————
【问题1】(7分) 用例建模用来描述待开发系统的功能需求,主要元素是用例和参与者。请根据题目所述需求,说明教学服务系统中有哪些参与者。
【参考答案】 学生、教师、管理员、时间、打印机。
【试题解析】
参与者是指系统以外的,需要使用系统或与系统交互的事物,包括:人或组织、设备、外部系统等。在本题中,较为容易识别的参与者包括:学生、教师、管理员,比较隐晦的参与者包括:时间、打印机。
【问题2】(7分)
用例是对系统行为的动态描述,用例获取是需求分析阶段的主要任务之一。请指出在面向对象系统建模中,用例之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,
“登录系统”用例与“注册课程”用例之间、“参加考试”用例与“参加补考”用例之间的关系分别属于哪种类型?
用例之间的关系包括:包含、扩展、泛化。 “登录系统”用例与“注册课程”用例之间的关系为:包含关系。
“参加考试”用例与“参加补考”用例之间的关系为:扩展关系。 【问题3】(11分)
类图主要用来描述系统的静态结构,是组件图和配置图的基础。请指出在面向对象系统建模中,类之间的关系有哪几种类型?对题目所述教学服务系统的需求建模时,类University与类Student之间、类University和类Department之间、类Student和类Course之间的关系分别属于哪种类型?
【参考答案】 类之间的关系包括:关联、聚合、组合、依赖、泛化、实现(可写可不写,因为实现是接口与类之间的关系,而接口是一种特殊的类)。
类University与类Student之间的关系是:聚合关系。 类University与类Department之间的关系是:组合关系。
类Student与类Course之间的关系是:关联关系。
【试题解析】 依赖关系:一个事物发生变化影响另一个事物。 泛化关系:特殊/一般关系。 关联关系:描述了一组链,链是对象之间的连接。
聚合关系:整体与部分生命周期不同。 组合关系:整体与部分生命周期相同。 实现关系:接口与类之间的关系。