软工复习
选择
1.以下哪一类不属于IEEE对需求的分类:环境需求
2.以下哪个不是功能需求通常意义上体现的三个层次:质量需求
3.下列关于职业道德与个人自身发展的关系中,说法不正确的是:职业道德是个人能力提高的基础
4.下列关于职业道德修养的形成,说法不正确的是:与个人素质无关
5.软件危机最初出现于以下哪个阶段:程序系统阶段
6.以下哪个选项不是软件的组成部分:开发模型
7.以下哪个选项不属于软件的开发过程:可行性研究
8.螺旋模型的每个螺旋周期可分为4个步骤,以下哪个不属于这四个步骤:运行维护
9.流程图中的三种基本结构不包括下列那一项:判断结构
10.以下关于代码注释说法错误的是哪一个:注释会影响程序执行速度
11.项目的四项约束不包括以下哪一项:技术
12.以下哪一项不属于SWOT分析:Strategy
13.下列哪项不是目前常用的人机交互方式:接口技术
14.不是人机界面构思方法的选项是()有 、 形态分析法:子系统机能分析法
15.不是将持久类映射到关系数据库表的基本方式的选项是:将类和数据库直接转换
16.下列哪项不是常用界面类型的优点():超级链接型
17.下列哪项不是常见的网页布局格式():嵌入型
18.下列哪项不是人机界面的设计原则():通用性
19.成功的用户界面开发支柱不是是建立在()基础上的:优秀设计人员
20.只有单重继承的类层次结构是( )层次结构:树型
21.类的()意味着一个操作在不同的类中可以有不同的实现方法:多态
22.中间件可以分为数据库访问中间件,远程过程调用中间件、面向消息中间件、实务中间件,分布式对象中间件等多种类型、windows平台的ODBC和JAVA平台的JDBC属于()。:数据库访问中间件
23.软件测试的目的是():尽可能多的发现软件系统中的错误
24.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准:程序的内部逻辑
25.存储过程不具备()功能:调用时编译即可
26.存储过程的缺点是():可维护性差
27.将永久性设计类映射到数据模型不具有():随时执行映射
28.软件危机主要体现在:软件产品的质量难以控制
29.为了解决软件危机,人们提出了用()的原理来设计软件。:工程学
30.关于软件架构,下面说法错误的是():架构设计的目标只是为了提高系统的重用性
31.关于架构和应用框架,下面说法错误的是():先大局后局部,就出现了应用框架;先通用后专用,就出现了架构
32.下面哪个是设计模式中抽象工厂模式的描述?():将抽象部分与实现部分分离,使它们都可以独立地变化
33.下面说法错误的是( ):用例图是从程序员角度来描述系统的功能
34.一个安保系统的角色有:经理,安全主管和保安。角色与角色之间有泛化关系,请问他们之间谁是父角色?下面说法正确的是():保安作为安全主管的父角色,安全主管作为经理的父角色。
35.用例模型采用( )的思想,是需求分析模型的表现形式之一,主要用于表现系统的( ):面向对象 功能需求
36.在UML用例图中,参与者表示( ):人、硬件或其他系统可以扮演的角色
37.运行时架构分析,指的是系统( )需求分析,主要是指确定系统中的进程,确定进程之间的通信机制,分配进程之间的协调资源,确定进程的生命周期以及在进程之间分布模型元素。:并行性
38.在用例之间,会有三种不同的关系,下列哪个不是它们之间的可能的关系( ):关联(connect)
39.( )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。:时序图
40.在下面选项中哪两种图形可以互相转换:协作图和时序图
41.下面选项中 ( )不是序列图中的基本元素。:泳道
42.边界类是用于描述外部参与者与系统之间的交互。一个系统可能有多种边界类:包括( )。:用户界面类,系统接口类和设备接口类
43.一个对象发出消息后,必须等待消息接受者的回应,然后才能继续往下执行。这个对象发出的消息是( )。:同步消息
44.下面说法错误的是( ):协作图可以描述对象的创建和撤销的情况
45.在实践中,以下哪项不属于应用程序需要控制的永久性问题?( ):查找
46.对象实现了数据和操作的结合,使数据和操作( )于对象的统一体中。:封装
47.( )代表对类或子系统所提供职责的抽象描述:接口
48.逆向工程在软件工程中主要用于( )阶段:分析
49.子系统是通过接口定义行为,这些行为是由子系统所包含的( )所提供:类
50.在用例设计时,以下哪项不属于常见的异常流形式?( ):错误输出处理
51.子系统的设计步骤不包括下列哪一项?( ): 确定子系统参与人员
52.子系统将作为以下哪个过程的输入和输出?: 子系统设计
53.“接口”表示( )对外提供的服务。:子系统
54.在下列设计元素中,哪项代表系统内的控制线程?:封装体
55.关于子系统,下面说法正确的是( ):系统只应依赖于其他模型元素的接口。
下面说法错误的是( )。:子系统的特点是高耦合,独立进展。
大题
什么是用例模型,用例图有哪些元素,用例描述内容?
用例模型用于描述系统的功能需求。用例图:角色、用例、关联和系统边界。用例描述:简要描述、前置条件、基本事件流、其他事件流、异常事件流、后置条件等。
软件测试与软件质量保证的区别是什么?
软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作的一个重要环节。质量保证的工作是通过预防、检查和改进来保证软件质量。
简述详细设计阶段的主要任务是什么:详细设计是将概要设计产生的功能模块进一步细化,形成可编程的程序模块,然后设计程序模块的内部细节。任务:算法设计,数据结构设计,模块接口细节设计,测试用例设计,数据库物理设计,数据代码设计,其他设计,编写详细设计说明书并进行评审
简述项目管理的五个阶段:启动,规划,执行,监控,收尾
需求变更控制中应该注意什么
认识到变更的必要性,并为之制定计划。维护需求基线,审计变更记录。管理范围蔓延。灵活应对变更需求
什么是黑盒测试法?和白盒的区别?“黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用, 程序是否能适当地接收输入数据,产生正确地输出信息 。”
(1)定义不同:黑盒测试不注重内部结构,白盒测试注重内部结构及内容特性;
(2)测试对象不同:黑盒测试主要针对的是软件展示给用户的功能,多用于功能测试,白盒测试主要针对的是程序代码逻辑,多用于单元测试;
(3)测试方式不同:白盒测试是穷举路径测试,黑盒测试是穷举输入测试。
(4)测试目的不同:黑盒测试的目的是检测是否有不正确或遗漏的功能,而白盒测试的目的是通过在不同点检查软件程序的状态,确定实际状态是否与与其状态一致。
什么是软件测试? 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
"在ATM系统中的“取款”用例,银行卡无法识别,密码错误,输入金额不符合要求,余额不足,取款机中现金不足
什么是架构的设计模式?常见的设计模式有哪些?
架构的设计模式是在软件架构上针对特定上下文件解决常见问题的通用、可复用的解决方案。常见的设计模式有:抽象工厂模式、适配器模式、桥接模式、外观模式等。
什么是软件架构?进行软件架构设计的主要目的是什么?
软件架构:是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计,是一个系统的草图。
目的:是为了解决软件系统复杂度带来的问题
简述类和类之间的关系有哪些,并举例说明。
继承关系、实现关系、依赖关系、关联关系、聚合关系、组合关系。
(1)聚合关系,表示类间的关系是整体与部分的关系,例如汽车由引擎、轮胎以及其他零件组成;
(2)组合关系:一种更强的聚合关系,对象A包含对象B,对象B离开对象A没有实际意义;
(3)依赖关系:对象间最弱的一种关联方式,是临时性的关联;
(4)关联关系:对象之间一种引用关系,比如客户类与订单类之间的关系;
(5)实现关系:指的是一个class类实现interface接口的功能;
(6)继承关系:指一个类继承另一个类的功能,并可以增加自己的新功能,例如父与子。
从软件用户对软件的实际需求来看,常见的需求有哪些种类?
功能性需求、非功能性需求、设计约束
软件生命周期有哪些阶段?
问题定义、需求分析、软件设计、软件开发、软件测试、运行维护
需求获取的方式有哪些,请简要描述?
用户访谈、用户调查、现场观摩、文档考古、建立联合分析小组、原型法、模型驱动、基于上下文的方法。
请举例描述一种你熟悉的面向对象设计原则?
单一职责原则:一个类只负责一个功能领域中的相应职责。单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难以运用的原则。
请举例描述一种你熟悉的设计模式?
单例模式:确保某一个类只有一个实例且提供一个全局访问点
优点:节约系统资源、提高了系统效率,同时也能够严格控制客户对它的访问。
缺点:因为系统中只有一个实例,这样就导致了单例类的职责过重,违背了“单一职责原则”,同时也没有抽象类,所以扩展起来有一定的困难。
常用的软件测试方法有哪些?
黑盒测试、白盒测试、回归测试、性能测试、安全测试、兼容性测试
请描述什么是单元测试,其作用是什么?
是指对软件中的最小可测试单元进行检查和验证。
什么是测试驱动开发?
是指在编写实现代码之前先写测试代码的开发方式。
什么是敏捷开发?
是以用户的需求进化为核心、迭代、循序渐进的开发方法。
什么是结对编程?
是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一人输入代码,而另一人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员。
什么事软件危机?你觉得如何避免软件危机?
软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
避免:使用好的软件开发技术和方法;要有良好的组织、严密的管理,各类人员协同配合,共同完成任务;使用好的软件开发工具,提高软件生产率;建立严格的文档资料,重视软件开发过程的阶段评审。
Bug信息应包含哪些内容?未知,缺陷,不易发现,三种要素。
测试用例说明应该包含哪些内容?
1)定义:编写用于输入的实际数据和预期结果,并明确指出使用具体测试用例产生的测试程序的任何限制
(2)包含的内容标识符:由测试设计过程说明和测试程序说明引用的唯一标识符测试项:描述被测试的详细特性、代码模块等输入说明:
列举执行测试用例的所有输入内容或者条件输出说明:描述进行测试用例预期的结果环境要求:执行测试用例的软件、硬件、测试工具及人员等要求特殊要求:
描述执行测试用例的特殊要求用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响测试用例计划包含4个目标即:组织性、重复性、跟踪和测试证实。
试述软件测试活动的生命周期?
分析,计划,设计,执行,评估
网络测试的主要内容是什么?
网络应用测试,主要针对基于网络提供服务应用的一类测试。
主要内容:(1)性能测试;(2)功能测试;(3)网络应用负载测试;(4)应用系统响应时间测试;(5)应用系统升级测试。
软件的缺陷登记如何划分?
(1)致命错误,可能导致本模块以及其他相关模块异常,死机等问题;(2)严重错误,问题局限在本模块,导致模块功能失效或异常退出;(3)一般错误,模块功能部分失效;
(4)建议问题,由问题提出人对测试对象的改进意见。
用户文档测试的要点是什么?
读者群,术语,正确性,完整性,一致性,易用性,图表与界面截图,样例与示例,语言,印刷与包装
RUP中提出的4+1架构视图有哪些?
逻辑视图、实现视图、进程视图、部署视图和用例视图。
什么是架构的设计模式?常见的设计模式有哪些?
架构的设计模式是在软件架构上针对特定上下文件解决常见问题的通用、可复用的解决方案。常见的设计模式有:抽象工厂模式、适配器模式、桥接模式、外观模式等。
2、请你设计一款背单词软件,请尽可能多的罗列该软件可能的需求有哪些?
(1)英语资讯。平台会定时向用户推送有关英语学习和单词背诵的资讯,让用户了解更多英语学习的技巧。
(2)记忆检测。背单词APP设置检测功能,给新用户准备一份试题,了解用户的记忆功能强弱,用户可以在线答题,平台可以根据用户的答案进行分析。
(3)记忆方案。在用户通过记忆检测后,平台可以根据测试结果为用户定制一套单独的记忆方案,这一方案会根据用户的记忆强弱来设置,使得每位用户都可以快递进入到单词背诵的氛围中,从而提高背单词的效率。
4、请描述一种你熟悉的项目管理工具的使用过程。
(1)亲和图(Affinity Diagram)
亲和图用于收集大量语言资料(如想法、观点、问题等),它根据资料间的本质关系进行分组并对各组做出界定。
主要用途:确定解决问题的主题,找出与主题相关的问题。
(2)鱼骨图(因果图)(Fishbone (Cause & Effect) Diagram)
鱼骨图(因果图)用来找出问题的潜在原因。
主要用途:决定采集什么数据—采集数据—整理及演示数据—认别原因
5、是否需要有代码规范?对于是否需要有代码规范,请考虑下列论点并分别说明是否反驳/支持,并说明理由:
(1)这些规范都是官僚制度下产生的、浪费大家的编程时间、影响人们开发效率、浪费时间的东西。
反对,代码规范对于软件产业是非常重要的。并非是官僚制度,而是直接影响到代码维护,代码审核的。确实熟悉规范需要一定的时间,但是统一的编码习惯,可以使审核,维护的时间大大缩短,反倒不会影响开发效率
(2)我是个艺术家、手艺人,我有自己的规范和原则。
自己独特的规范和原则是不适用于团体合作的。一个软件的开发到投入市场,不可能仅仅一个人,而是需要一个巨大的团队的,如果你的编码风格过于独特,缩进,括号过于独特,会给别的程序员增添很多麻烦,大大降低效率,如果出现Bug,会让维护人员的工作量大大增加
(3)规范不能强求一律,应该允许很多例外。
例外是可以随着规范的不断精进而随之减少,直至消失的。一个软件团队的编译规范是不断完善的,有例外的话,也会随着软件的开发进行而减少,不应该允许很多。
(4)我擅长制定编码规范,你们听我的就好了。
一个团队确实是需要一个指定规范的人的,但是却不应该因为善于制定规范而去制定,而是要综合整个团队大体的编码习惯,然后在一些差异较大的地方找出一种最优的编写格式,并和团队的成员们一同商量,通过,则制定成一个小规范。所以一个指定规范的程序员不仅仅应该有比较熟练,成熟的规范经验,而且组织团结能力也一定要好。
11. 有一个医院病房监护系统,
分析类(未找到)
实体类:病人、医生、值班护士、标准病症信号库
边界类:病症监视器、报警信号、病情报告、病历、标准病症信号
控制类:病历库、中央监控系统
12. 小王的行为违背了哪些软件从业人员的职业道德。公司该采取什么措施保证软件的正常验收,根据什么来确定软件是否通过验收
(1)拒绝贿赂,除了合同的所有各方都知道的和都同意的之外,不接受第三方就该合同所付的回报、佣金或其他的酬金;
(2)软件质量保证策略:为了在软件开发过程中保证软件的质量,主要采取下述措施:审查、复查和管理复审、测试;软件质量保证活动:验证与确认、开发时期的配置管理;
(3)软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求;所有测试项没有残余的一级二级三级的错误;立项审批表、需求分析文档、设计文档和编码实现一致;验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告
13. 在OOA和OOD阶段都需要设计类图,请说明两个阶段对设计类图的主要区别
类的本身:分析阶段的类图主要对应领域层,而不涉及UI和数据持久层;设计阶段要考虑三者之间如何交互,如何解耦;类属性:分析阶段 从现实问题角度考虑对象的属性;设计阶段 引入"伪属性";类的操作:分析阶段 主要是从职责分配的角度为类指定操作,这通常都是公用接口;设计阶段 要考虑这些接口如何实现,可能会把一个公用操作又分解为几个小的操作,其中有些操作会是私有的;类之间的关系:分析阶段 类之间的关系–泛化与关联 来源于问题本身,而不是从计算机的角度考虑;设计阶段 连接,聚合,组合可能都被实现为对象的引用
14.set、get:目的在于降低类之间的耦合度。
15. 软件项目管理的4p观点包括哪些内容,它们符合读者对软件项目管理的认识吗?
(1)人员:人员的素质和组织管理是软件工程项目的基本要素和关键因素,在对人员进行组织时,有必要考虑参与软件过程的人员类型;(2) 产品: 定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、
技术或管理的约束等。(3)过程:通常将项目分解为任务-子任务等,分解准则是基于软件工程的过程。(4)项目:采用科学的方法及工具对项目基本内容进行管理,实现项目的目标。
16.油漆:
一种做法是首先刮掉四面墙壁上的旧漆,然后给每面墙壁都刷上新漆,最后清除溅在每个窗户上的油漆。首先由5名工人用刮板刮掉第1面墙上的旧漆(这时其余10名工人休息),当第1面墙刮净后,另外5名工人立即用刷子给这面墙刷新漆与此同时拿刮板的5名工人转刮第2面墙上的旧漆,一旦刮旧漆的工人转到第3面墙而且刷新漆的工人转到第2面墙以后,余下的5名工人立即拿起刮刀去清除溅在第1面墙窗户上的油漆, … .这样安排每个工人都有活干,因此能够在较短的时间内完成任务。
17. 对大型软件项目都采用划分小组的形式进行。如何划分小组形式和进行管理?
(1)主程序员制小组。该小组的核心有3个人。主程序员、辅助程序员和程序管理员。
如果大多数开发人员比较缺乏经验,而程序设计过程中又有许多事务性工作,则采取该种组织方法。(2)民主制程序员小组。在民主制小组中,组内成员之间可以平等地交换意见。适合于研制时间长、开发难度大的项目。(3)层次式小组。这种组织中,组内人员分为3级。组长负责全组工作,直接领导2~3名高级程序员,每位高级程序员管理若干名程序员。这种组织比较适合于层次结构的课题。
18. [问题1]请说明此项目在进行需求变更的过程中存在的问题。
1、项目组没有事先建立变更流程;2、没有建立CCB;3、没有配置管理,文档使用不符合要求;4、对于变更的实施没有监控;5、没有走变更申请评估~决策实施-监控-记录的流程;6、此变更使得项甘中的进度、成本基线有较大变化,应该变更项甘计划;7、变更决策后,口头布置任务不合适
[问题2 ]请分析该项目中的做法可能对后续工作造成什么样的影响?
1、后续集成测试可能会出现模块不匹配;2、加班赶工,代码出现错误的可能性高;3、没有对编码进行必要测试就进入集成测试,风险大;4、加班加点,人员可能心有不满,不利于项目建设;5、口头不布置的任务无处查找,可能造成推诿
[问题3 ]请简要说明整体变更控制流程。
1、提出变更申请;2、项目经理对变更进行评估,决定是否走变更流程;3、CCB决策;4、变更实施;5、变更验证;6、记录存档