整理不容易,求点赞关注~
1.软件的特性:(复杂性、不可见性、易变性、服从性、非连续性)
2.软件工程的定义:(把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程)
3.(1)软件工程的三要素:(过程+方法+工具)
(2)软件的两个组成部分:(程序+软件工程)
4.软件工程包含的五个领域:(软件需求分析、软件设计、软件构建、软件测试和软件维护)
5.判断题:面向过程方法关注的是业务:以业务驱动技术,强调IT与业务的对齐,以开放标准封装业务流程和已有的应用系统,实现应用系统之间的相互访问。(错误点:不是面向过程方法,是面向服务方法)
6.面向对象分析时,执行的活动顺序是(认定对象)、(组织对象)、(描述对象的相互作用)、(确定对象的操作)
7.面向对象程序设计语言为(面向对象)实现
8.接口分离原则的定义
(使用多个专门的接口要比使用单一的总接口要好。不应该强迫客户依赖于他们不用的方法,接口属于客户,不属于它所在的类层次结构。即依赖于抽象,不依赖于具体)
9.机会可行性研究的目的是(激发投资者的兴趣、寻找最佳投资机会)
10.项目的初步可行性研究阶段可以省去吗?(可以)
11.详细可行性研究是一项(费时、费力且需要一定资金支持)的工作
12.项目评估的目的是(审查项目可行性研究的可靠性、真实性和客观性)
13.(技术可行性分析)往往决定了项目的方向。
14.经济可行性分析主要是对(整个项目的投资及所产生的经济效益)进行分析,一般还需要对(项目的社会效益)进行分析
15.软件项目的质量,主要用(技术评审)和(软件测试)两种方法配合使用来保证
16.一个程序的控制流图中有n个结点,m条边,在测试用例数最少的情况,确保程序中每个可执行语句至少执行一次所需要的测试用例数的上限等于环形复杂度即(m-n+2)
17.三种代码复审【自我复审、同伴复审、团队复审】的形式和特点
(1)自我复审:形式为自己对自己复审。特点是用同伴复审的标准来要求自己。不一定有效,因为开发者对自己总是过于自信。如果能持之以恒地以他人的角度来复审自己,对个人有很大好处
(2)同伴复审:形式为复审者对开发者复审。特点是简便易行。
(3)团队复审:形式为团队对开发者复审。特点是有严格的规定和流程,用于关键代码以及复审后不再更新的代码,覆盖率高但效率可能不高。
18.结对编程的特点、优缺点、适用场景
(1)特点:每时每刻都处在代码复审的状态
(2)优点:提高设计质量、降低时间成本
(3)缺点:大多数人喜欢一个人工作、时间可能花在培训上
(4)适用场景:新手和新手结对编程、探索一个新领域的时候
19.六种开发流程:写了再改、瀑布模型、螺旋模型、原型+演进、分段交付、逐步交付
20.瀑布模型的特点和适用场景
(是结构化方法中最常用的开发模型,是由文档驱动的,适合开发需求明确的软件,不适合大型软件系统)
21.螺旋模型的特点和适用场景
(引入了其他模型不具备的风险分析,适合需求不明确的软件或者大型昂贵的系统级的软件应用)
22.喷泉模型的特点和适用场景
(具有迭代和无缝的特性,以用户需求为动力,以对象为驱动,适合于面向对象的开发方法)
23.原型模型的适用场景
(适用于需求不明确且经常发生变化,但系统规模不太大且不太复杂的软件)
24.增量模型的特点和适用场景
(能在较短的时间内,提供可完成部分工作的初步产品给用户;用户有较为充裕的时间学习和适应新产品,适用于需求明确的项目)
25.判断题:螺旋模型可以快速的提供一个初始版本让用户测试,基于该模型进行软件开发,开发成本低
(错误:不是螺旋模型,是增量模型)
26.判断题:使用草图和模型来阐述用户界面是面向对象方法的原则
(错误)
27.判断题:原型法要求对系统做全面、详细调查和分析
(错误点:原型法的特点是需求不明确,这里应为瀑布模型)
28判断题:面向对象方法技能反映问题域,也能被计算机系统求解域所接受。
(正确)
29.判断题:原型法与结构化方法都要求用户需求在系统建立之前
(错误)
30.(1)基于模型的系统工程作为一种(形式化的建模方法学),为了应对基于文档的传统系统工程工作模式在复杂产品和系统研发时面临的挑战,
(2)以逻辑连贯一致的多视角系统模型为桥梁和框架,
(3)实现跨领域模型的可追踪、可验证和动态关联,
(4)驱动人工系统生存周期内各阶段和各层级内的系统工程过程和活动,使其可管理、可复现、可重用,
(5)进而打破专业壁垒,破解设计和工艺、研发和制造、研制和使用维护的分离,极大提高沟通协同效率,
(6)实现以模型驱动方法来采集、捕获和提炼数据、信息和知识
31.现欲开发某高校一卡通系统,用于替换一个已存在的系统,最适合用(瀑布)模型
32.敏捷过程的特点:(注重个人和交流、与客户交流、响应变化,强调可工作的软件胜过大量的文档,是面向对象的)
33.敏捷软件开发方法是一种(增量式)开发方法,它将(实现和测试)视为软件过程的中心活动,将其他开发活动融入其中。敏捷对团队的要求包括:(自主管理、自我组织、多功能型)
34.敏捷开发方法scrum的步骤包括:(Product Backlog、Sprint Backlog、Sprint)
35.需求工程包括需求开发和需求管理两大类活动
(1)需求开发的主要活动:(需求获取、需求分析、需求定义、需求验证)
(2)需求管理的主要活动:(变更控制、版本控制、需求跟踪、需求状态跟踪)
36.(1)表述的需求是指(客户直接说出来的需求)
(2)真正的需求是指(客户实际期望的需求)
(3)未表明的需求是指(客户期待的需求)
(4)令人愉悦的需求是指(客户期待的惊喜)
(5)潜在的需求是指(客户期待,其他相关人反馈的需求)
37.控制项目成本属于(未表明的需求)
38.只有(可测量的、可测试的、可跟踪的、完整的、相互协调的,且主要干系人愿意认可的)需求,才能作为基准
39.判断题:系统规划要从用户的现状出发,以技术变革为导向、以用户需求为基础,依据组织的战略目标进行
(错误点:不一定要以技术变革为导向)
40.交流的途径总数是(n×(n-1) / 2)
41.风险管理的四个分类:(人、流程、技术、环境)
具体来源为
(1)人:(客户、用户、利益相关者、团队成员、机构、政治因素)
(2)流程:(项目的目标,决定流程,项目特点,预算,费用,日程,需求,设计,构建和测试的过程)
(3)技术:(技术是否可用,安全性,开发和测试的环境支持,工具,发布,支持,运营环境)
(4)环境:(法律,规定,竞争对手,经济环境,商业和行业条件)
42.风险的定义(某种破坏或损失发生的可能性),风险管理的定义(识别、评估、降低风险到可以接受的程度)
43.项目估算一般需要考虑(规模、复杂度、成本)等因素,与(项目类型)无关
44.判断题:数据字典中加工逻辑必须描述实现加工的数据结构和算法
(错误)
45.使用结构化分析方法进行需求分析,围绕数据字典建立的三个层次模型:(实体关系图)、(数据流图)、(状态转换图)
46.结构化设计是一种面向(数据流)的方法,可以进一步细分为(概要设计和详细设计)两个阶段,它根据(模块独立性)原则和系统结构准则,将DFD转换为系统结构图,用系统结构图来建立系统的物理模型,描述系统分层次的模块结构,以及模块之间的通信与控制关系。
47.数据流图(DFD)的绘制
(1)矩形代表(外部实体)
(2)圆角矩形代表(流程)
(3)开口矩形代表(数据存储)
48.类图的绘制:定义类
[可见性] 属性名 [:类型] [=初值]
可见性:公有(+)、私有(-)、保护(#)
49.类图的绘制:表示关系的符号【关联、聚集、泛化、依赖、细化】
(1)关联:表示类中有多少个对象与关联类中的一个对象相关(未标明数字则为1)。在编程语言中体现为,一个类的对象作为另一个类的属性
(2)限定关联:对关联的含义做某种约束
(3)共享聚集(聚合):部分的对象可以构成一个整体的对象,整体的对象不存在了但部分的对象依然可以存在。在编程语言中体现为,部分类对象是整体类构造方法的参数
(4)组合聚集(组合):部分的对象构成一个整体的对象,整体的对象不存在了部分的对象也随之消失。在编程语言中体现为,部分类在整体类的构造方法中被实例化
(5)泛化(即继承关系)
(6)依赖:A类是独立的,B类依赖于A类。若A类改变将影响B类。在编程语言中体现为B类的方法用A类对象作为参数
(7)细化(实现):在不同抽象层次上更详细的描述
(8)UML类图几种关系总结(耦合性的顺序)
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
50.设计了三个类:交通工具、汽车、发动机。则交通工具和汽车之间是(继承)关系,汽车和发动机之间是(聚合)关系
51.UML是面向对象设计的建模工具,独立于任何具体程序设计语言,UML2.0中一共定义了14中图。
(1)结构图【静态图】包括:(类图、对象图、构件图、部署图、制品图、包图、组合结构图)
(2)行为图【动态图】包括:(用例图、顺序图、通信图、定时图、交互概览图、活动图、状态图)
52.UML的顺序图主要用于(参与者与系统中对象之间的交互,以及这些对象之间交互的建模)
53.判断题:面向对象的封装是将实体的属性和操作组合在一起
(错误)
54.(1)实体类:必须存储的信息和相关行为的类。例如事件、人员、用户
(2)边界类:系统内部与系统外部的业务主角之间进行交互建模的类。边界类依赖于系统的外部环境。例如用户界面类、系统接口类
(3)控制类:描述用例的业务逻辑的实现。当业务主角通过边界类来执行用例时,产生一个控制类对象,在用例执行完后,控制类对象会被销毁,如身份验证。
55.在某销售系统中,客户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统,则客户类属于(实体类),二维码类属于(控制类)
56.在面向对象设计中,用于描述目标软件与外部环境之间交互的类被称为(边界类)
57.当UML状态图用于对系统、类或用例的动态方面建模时,通常是对(反应对象)建模
58.以下UML状态图中,假设活动的状态是A,事件b=0发生且a>5,发生条件时C状态到D状态的转换条件是(一旦状态A和B的所有动作完成),D变为活动状态。
59.综合58题有关状态图的叙述,不正确的是(D)
A.动作可以在状态内执行,也可以在状态转换时执行
B. 当触发转换的事件发生并且转换没有指定的监护条件时,对象将离开当前状态,并且其do 动作终止
C. when(b=5)称为时间事件
D. 状态由事件触发
60.特定领域软件架构是指特定应用领域中为一组应用提供组织结构参考的标准软件架构。从功能覆盖的范围角度,(垂直域)定义了一个特定的系统族,包含整个系统族内的多个系统,可作为该领域系统的可行解决方案的一个通用软件架构;(水平域)定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖了多个系统族的特定部分功能
61.4+1视图模型包括:(逻辑视图、过程视图、物理视图、开发视图、场景视图)。其中(过程视图)用于捕捉设计的并发和同步特征;(开发视图)描述了在开发环境中软件的静态组织结构
62.基于架构的软件设计方法是架构驱动的方法,该方法是一个(自顶向下)的方法,软件系统的架构通过该方法得到细化,直到能产生(软件构件或模块)。
63.软件总体设计原则:(模块化、抽象、封装、信息隐蔽、模块独立)
64.六种耦合的含义
(1)无直接耦合:两个模块之间没有直接关系,模块独立性最强
(2)数据耦合:一模块访问另一模块时,通过数据参数交换输入输出
(3)特征耦合:两个模块通过传递数据结构加以联系
(4)控制耦合:模块间传递的是控制信息(会改变模块内部逻辑)
(5)公共环境耦合:一组模块引用一个公共数据区
(6)内容耦合:部分代码重叠
65.模块A通过非正常入口转入模块B内部,这两个模块之间是(内容)耦合
66.七种内聚的含义
(1)功能内聚:所有部分共同完成一个功能,缺一不可
(2)顺序内聚:一个部分的输出作为下一个部分的输入,必须顺序执行
(3)通信内聚:模块内各部分有相同的输入或有相同的输出
(4)过程内聚:模块内各功能以特定次序执行
(5)时间内聚:模块完成的功能必须在同一时间内执行
(6)逻辑内聚:把几种功能组合,根据传入参数确定执行哪种功能
(7)偶然内聚:块内各组成成分在功能上是互不相关的
67.某个模块吧几个相关的功能组合到一起,每次调用时,有传入参数决定该模块执行哪个功能,该模块的内聚类型为(逻辑内聚)
68.测试用例的两个方法:(等价类划分和边界值分析)
69.评估指标:CMMI
(1)CMMI一级,初始级/完成级。企业对项目的目标很清晰并得以实现。
(2)CMMI二级,管理级。企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人
(3)CMMI三级,明确级。企业不仅能够对项目有一整套的管理体系,并保障项目的完成,并且能够根据自身的标准流程和特殊情况,将这套管理体系予以制度化
(4)CMMI四级,量化管理级。企业实现了项目的数字化管理
(5)CMMI五级,优化级。企业的项目管理达到了最高的境界
70.CMMI的实施方法
(1)连续式:主要是衡量企业在项目中的管理能力
(2)阶段式:主要是衡量企业的成熟度
71.判断题:CMMI的项目管理类过程域不包含风险管理
(错误)
72.软件质量因素
(1)可用性:系统在完成预定功能时令人满意的程度
(2)可靠性:系统在给定的时间间隔和条件下有效运行的概率
(3)可维护性:系统在特定时间内可以正常进行维护活动的概率
73.在一个分布式软件系统中,一个构件失去了与另一个远程构件的连接。系统修复后,连接于30秒之内恢复,系统可以重新工作。这一描述体现了软件系统的(可用性)
74.在可用性和可靠性规划与设计中,需要引入特定的方法来提高系统的可用性,其中把可能出错的组件从服务中删除属于(错误预防策略)。
75.互操作性是指(软件产品与其他规定系统进行交互的能力)
76.软件维护是指(软件从开始使用至消亡的过程,时间对于软件开发而言通常更长)
77.某搜索引擎在交付后,开发人员修改了其中的索引方法,似的用户可以更快地得到搜索结果,这种修改属于(完善性)维护。
78.在软件逆向工程中,(设计恢复)是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息;(正向工程)指不仅从现有系统中恢复设计信息,而且使用该信息去改变或者重构现有系统,以改善其整体质量。
79.产品配置是指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的(文档)、(计算机程序)、(部件与数据)的集合
80.软件配置管理工具包括(追踪工具)、(版本管理工具)和(发布工具)