软考真题6:系统设计、架构设计、编程思想
## 简介 本文用于记录软考中,关于系统设计、架构设计、编程思想相关的题目。 包括但不限于: 1.
渲染中...
## 简介 本文用于记录软考中,关于系统设计、架构设计、编程思想相关的题目。 包括但不限于: 1. 面向对象 2. 编程行为 3. 编译语言、脚本语言 4. 系统需求、行为分析 这部分知识点大多需要有一定的工作经验才好理解。如有想要记录的题目,欢迎评论补充! > 关注公众号“**月上老狗**”,发送“**软件设计师**”,获取历年软件设计师软考真题。 > >  <!-- more --> ## 面向对象 0. 面向对象设计中,实体间的关系有哪些? - 关联关系:描述两个类之间的连接,表明它们之间存在某种联系,可以是一对一、一对多或多对多的关系。示例:订单类和客户类之间可以存在一对多的关联关系,一个客户可以有多个订单。 - 聚合关系:表示整体与部分之间的关系,部分可以独立存在而不依赖于整体。示例:车辆和引擎之间存在聚合关系,引擎可以被多个车辆共享,但是引擎可以独立存在。 - 组合关系:表示整体与部分之间的关系,但部分不能独立存在,它们的生命周期与整体相同。示例:汽车和轮胎之间存在组合关系,轮胎是汽车的一部分,没有汽车就不存在轮胎。 - 继承关系:表示类与子类之间的关系,子类继承了父类的属性和方法,并可以添加新的属性和方法。示例:动物类作为父类,猫、狗等作为子类,继承了动物类的一般属性和方法。 - 依赖关系:表示一个类使用另一个类的对象作为参数或局部变量。示例:订单类依赖于客户类,当创建订单时需要指定客户对象作为参数。 - 实现关系:表示接口与实现类之间的关系,实现类实现了接口中定义的方法。示例:一个类实现了某个接口,需要实现接口中定义的所有方法。 1. 在面向对象方法中,多态指的是( ) | 选项 | 分析过程 | | ------------------------------------------- | ------------------------------------------------------------ | | A. 客户类无需知道所调用方法的特定子类的实现 | 选A。在面向对象编程中,多态性允许我们将子类对象当作父类对象来处理,这样我们就可以在不知道对象具体类型的情况下调用相关方法 | | B. 对象动态地修改类 | 描述的是反射的概念,与多态不直接相关。 | | C. 一个对象对应多张数据库表 | 描述的是数据库设计中的模式,与多态无关。 | | D. 子类只能够覆盖父类中非抽象的方法 | 这个说法本身就是错误的。 | 2. 面向对象分析过程中,从给定需求描述中选择( )来识别对象 | 选项 | 分析 | | ----------- | ------------------------------------------------------------ | | A. 动词短语 | 错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。 | | B. 名词短语 | 正确。名词短语通常用来识别对象。 | | C. 形容词 | 错误。形容词通常用来识别对象的属性,而不是对象本身。 | | D. 副词 | 错误。副词通常不用来识别对象。 | 3. 采用继承机制创建子类时,子类中( )。 | 选项 | 分析 | | ----------------------- | ------------------------------------------------------------ | | A. 只能有父类中的属性 | | | B. 只能有父类中的行为 | | | C. 只能新增行为 | | | D. 可以有新的属性和行为 | 正确。在面向对象编程中,当我们采用继承机制创建子类时,子类不仅会继承父类的属性和行为,还可以有自己新的属性和行为。 | 4. 面向对象分析过程中,从给定需求描述中选择( )来识别对象 | 选项 | 分析 | | ----------- | ------------------------------------------------------------ | | A. 动词短语 | 错误。动词短语通常用来识别对象的行为或方法,而不是对象本身。 | | B. 名词短语 | 正确。名词短语通常用来识别对象。 | | C. 形容词 | 错误。形容词通常用来识别对象的属性,而不是对象本身。 | | D. 副词 | 错误。副词通常不用来识别对象。 | 5. 在面向对象系统设计中,如果重用了一个包中的某个类,那么就要重用该包中的所有类,这属于(40)原则。 |选项|分析| |--|----| |A. 共同封闭|共同封闭原则指的是同一个包中的类应该在同一次更改中被修改,即它们有相同的变化原因和方向。| |B. 共同重用|正确。共同重用原则指的是如果重用包中的某个类,那么就要重用包中的所有类。| |C. 开放—封闭|开放—封闭原则指的是软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。它强调的是设计的扩展性和稳定性。| |D. 接口分离|接口分离原则指的是客户端不应该被强迫依赖于它们不使用的接口,即将大的接口拆分成更小、更具体的接口。| ## 软件设计&架构设计 1. 采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的( ) | 选项 | 分析 | | ------- | ------------------------------------------------------------ | | A. 技术 | | | B. 部署 | | | C. 实现 | | | D. 行为 | 正确。这个阶段的目标是理解系统应该做什么,而不是如何做。这通常涉及到识别系统的主要功能,以及这些功能如何相互作用。 | 2. 在设计软件的模块结构时,( )不能改进设计质量。 | 选项 | 分析过程 | | --------------------------- | ------------------------------------------------------------ | | A. 尽量减少高扇出结构 | 高扇出结构意味着一个模块依赖于许多其他模块,这会增加复杂性和出错的可能性。 | | B. 模块的大小适中 | 适中的模块大小可以使模块更易于理解和维护,从而改进设计质量。 | | C. 将具有相似功能的模块合并 | 选C。虽然在某些情况下,将具有相似功能的模块合并可以提高效率,但这并不总是改进设计质量。<br />事实上,过度的合并可能导致模块过大和功能过于复杂,这可能降低设计质量。 | | D. 完善模块的功能 | 完善模块的功能可以使模块更加强大和灵活,从而改进设计质量。 | 3. 模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B。模块A和B之间的耦合类型为( )耦合。 | 选项 | 分析 | | ------- | ------------------------------------------------------------ | | A. 数据 | 选A。数据耦合是指模块之间通过参数传递数据进行交互,这是耦合度最低的一种形式。 | | B. 标记 | 标记耦合是指一个模块通过控制信息(如标记)来影响另一个模块的行为,这与问题描述不符。 | | C. 控制 | 控制耦合是指一个模块控制另一个模块的执行流程,这与问题描述不符。 | | D. 内容 | 内容耦合是指一个模块直接访问或修改另一个模块的内部数据,这是耦合度最高的一种形式,这与问题描述不符。 | 4. 以下关于C/S(客户机/服务器)体系结构的优点的叙述中,不正确的是( )。 | 选项 | 分析 | | ------------------------------------------------------- | ------------------------------------------------------------ | | A. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性 | 正确。C/S体系结构确实允许将系统划分为独立的层次,每个层次都有其特定的功能。 | | B. 允许各层灵活地选用平台和软件 | 正确。在C/S体系结构中,每一层都可以根据需要选择最适合的平台和软件。 | | C. 各层可以选择不同的开发语言进行并行开发 | 正确。由于各层的独立性,可以选择不同的开发语言进行开发,这有助于提高开发效率。 | | D. 系统安装、修改和维护均只在服务器端进行控制 | 不正确。在C/S体系结构中,虽然服务器端确实负责大部分的处理任务,但客户端也需要进行一些安装、修改和维护的工作。 | 5. 某企业财务系统的需求中,属于功能需求的是( )。 | 选项 | 分析 | | ------------------------------------------ | ------------------------------------------------------------ | | A. 每个月特定的时间发放员工工资 | 选A。这是一个功能需求,因为它描述了系统应该执行的特定任务或功能。 | | B. 系统的响应时间不超过3秒 | 这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。 | | C. 系统的计算精度符合财务规则的要求 | 这是一个质量需求,因为它描述了系统在执行任务时应达到的质量标准。 | | D. 系统可以允许100个用户同时查询自己的工资 | 这是一个性能需求,因为它描述了系统在执行任务时应达到的性能标准。 | 6. 以下关于管道过滤器体系结构的优点的叙述中,不正确的是( )。 | 选项 | 分析 | | ----------------------------------------- | ------------------------------------------------------------ | | A. 软件构件具有良好的高内聚、低耦合的特点 | 正确。在管道过滤器体系结构中,每个过滤器都是独立的,只负责一项特定的任务,因此具有高内聚性。 | | B. 支持重用 | 正确。由于每个过滤器都是独立的,因此可以在不同的管道中重复使用。 | | C. 支持并行执行 | 正确。如果系统资源允许,多个过滤器可以同时处理数据,从而实现并行执行。 | | D. 提高性能 | 不正确。虽然管道过滤器体系结构可以支持并行执行,从而在某些情况下提高性能,但是它也可能引入额外的开销,比如过滤器之间的数据传输开销。因此,是否能提高性能取决于具体的应用场景和实现方式。 | 7. 某高校信息系统设计的分 E-R 图中,人力部门定义的职工实体具有属性:职工号、姓名、性别和出生日期;教学部门定义的教师实体具有属性:教师号、姓名和职称。这种情况属于(),在合并 E-R 图时,()解决这一冲突。 > A.属性冲突 B.命名冲突 C.结构冲突 D.实体冲突 > > A.职工和教师实体保持各自属性不变 > B.职工实体中加入职称属性,删除教师实体 > C.教师也是学校的职工,故直接将教师实体删除 > D.将教师实体所有属性并入职工实体,删除教师实体 > 参考答案:CB > 解析: > - 属性冲突。同一属性可能会存在于不同的分 E- R 图,由于设计人员不同或是出发点不同,对属性的类型、取值范围和数据单位等可能会不一致。 > - 命名冲突。相同意义的属性在不同的分 E- R 图中有着不同的命名,或是名词相同的属性在不同的分 E-R 图中代表这不同的意义。 > - 结构冲突。同-实体在不同的分 E-R 图中有不同的属性,同-对象在某一分E-R 图中被抽象为实体 ,而在另-分 E-R 图中又被抽象为属性, 需要统一。 > > 本题属于结构冲突没有实体冲突的说法。 ## 编程&编程理论 1. 以下关于字符串的叙述中,正确的是( )。 | 选项 | 分析 | | ------------------------------------------- | ------------------------------------------------------------ | | A. 包含任意个空格字符的字符串称为空串 | 错误。在大多数编程语言中,一个空串是指一个没有任何字符的字符串,即使是空格字符也不包含。 | | B. 字符串不是线性数据结构 | 错误。字符串是一种线性数据结构,因为它的元素(字符)之间有一种线性的顺序关系。 | | C. 字符串的长度是指串中所含字符的个数 | 正确。字符串的长度通常是指它包含的字符的数量,包括所有的可见字符和空格。 | | D. 字符串的长度是指串中所含非空格字符的个数 | 错误。如上所述,字符串的长度通常包括所有的字符,包括空格。 | 2. 将高级语言源程序通过编译或解释方式进行翻译时,可以先生成与源程序等价的某种中间代码。以下关于中间代码的叙述中,正确的是( )。 | 选项 | 分析 | | --------------------------------------------- | ------------------------------------------------------------ | | A. 中间代码常采用符号表来表示 | 不正确。<br />符号表是编译过程中存储标识符及其属性的结构,不是用来表示中间代码的。中间代码是一种独立于机器的中间表示。 | | B. 后缀式和三地址码是常用的中间代码 | 正确。<br />后缀式(也称逆波兰表示法)和三地址码(包括四元式、三元式等)确实是常用的中间代码表示形式。 | | C. 对中间代码进行优化要依据运行程序的机器特性 | 不正确。<br />中间代码的优化通常是在不依赖具体机器特性的基础上进行的,目的是在生成目标代码前进行更高层次的优化。特定机器的优化是在后期生成目标代码时进行的。 | | D. 中间代码不能跨平台 | 不正确。<br />中间代码的设计初衷之一就是要独立于具体的机器,以便于跨平台移植和优化。 | 3. 在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的命名对象有( )。①关键字(或保留字) ②变量 ③函数 ④数据类型 ⑤注释 | 选项 | 解析 | | ---------------- | ------------------------------------------------------------ | | 关键字(或保留字) | 不需要用户命名。关键字是编程语言中预先定义好的,具有特殊含义的标识符,如if、else、for等。 | | 变量 | 需要用户命名。 | | 函数 | 需要用户命名。 | | 数据类型 | 需要用户命名。在高级语言中,一般会自行定义很多实体类型的数据体。 | | 注释 | 不需要命名。注释是不需要名字的。 | 4. 编译过程中进行的语法分析主要是分析( )。 | 选项 | 分析 | | --------------------------- | ------------------------------------------------------------ | | A. 源程序中的标识符是否合法 | | | B. 程序语句的含义是否合法 | | | C. 程序语句的结构是否合法 | 正确。编译过程中进行的语法分析主要是分析 程序语句的结构是否合法。<br />语法分析是编译过程中的一个重要步骤,它的主要任务是根据编程语言的语法规则,<br />检查源程序中的语句是否满足这些规则,也就是说,它主要分析程序语句的结构是否合法。 | | D. 表达式的类型是否合法 | | 5. 以下关于程序设计语言的叙述中,不正确的是( )。 | 选项 | 分析 | | --------------------------------- | ------------------------------------------------------------ | | A. 脚本语言中不使用变量和函数 | 不正确。脚本语言,如Python、JavaScript等,都广泛地使用变量和函数。 | | B. 标记语言常用于描述格式化和链接 | 正确。标记语言,如HTML和XML,常用于描述文档的结构和格式,包括格式化和链接。 | | C. 脚本语言采用解释方式实现 | 正确。脚本语言通常是解释执行的,而不是编译执行的。 | | D. 编译型语言的执行效率更高 | 正确。编译型语言,如C和Java,通常比解释型语言有更高的执行效率,因为它们的代码在运行前已经被编译成机器语言。 | 6. 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于( )阶段的工作。 | 选项 | 分析 | | ----------- | ------------------------------------------------------------ | | A. 词法分析 | | | B. 语法分析 | 正确。法分析阶段主要是检查源代码是否符合编程语言的语法规则,也就是判断程序语句的形式是否正确。 | | C. 语义分析 | | | D. 代码生成 | | ## 编程思想 1. 以下关于极限编程(XP)中结对编程的叙述中,不正确的是( )。 > 在极限编程(XP)中,结对编程是一种核心实践。两名程序员坐在同一台计算机前协作完成代码,其中一人写代码(称为司机),另一人审查代码(称为导航员)。 | 选项 | 解析 | | ----------------------------------- | ------------------------------------------------------------ | | A. 支持共同代码拥有和共同对系统负责 | 正确。<br />结对编程鼓励团队成员之间共享代码的所有权和对系统的责任。这促进了知识共享,减少了代码孤岛现象。 | | B. 承担了非正式的代码审查过程 | 正确。<br />在结对编程中,导航员会实时审查司机写的代码,这相当于一种非正式的代码审查,帮助立即发现和纠正错误。 | | C. 代码质量更高 | 正确。<br />结对编程通常能提高代码质量,因为两个人一起工作能够减少错误,提高代码的设计和可维护性。 | | D. 编码速度更快 | 不正确。<br />尽管结对编程有许多好处,但通常情况下,结对编程的编码速度不会比单独编程更快。由于两个人协作编写代码,这可能会比单独编写代码花费更多的时间。然而,通过提高代码质量、减少缺陷和降低未来维护成本,结对编程可以在整体开发效率和项目成功率上有所提升。 | 2. 极限编程(XP)的十二个最佳实践不包括( ) | 选项 | 分析 | | ----------- | ---------------------------------------------------------- | | A. 小的发布 | 正确。还可称为小型发布、小步快走。 | | B. 结对编程 | 正确。 | | C. 持续集成 | 正确。 | | D. 精心设计 | 错误。极限编程时敏捷开发思维,精心设计不符合敏捷开发思维。 | 3. 在进行软件开发时,采用无主程序员的开发小理,成员之间相互平等;而主程序员负责制的开发小姐,由一个主程序员和若干成员组成,成员之间没有的通。在一个由8名开发人员构成的小组中,无主程序员组和主程序员组的沟语路径分别是( ?) > 解析:为了计算沟通路径,我们需要了解计算沟通路径的公式。 > > - 对于无主程序员的小组,沟通路径数量可以表示为: `𝐶(𝑛,2)`=`𝑛(𝑛−1)/2`,所以 `𝐶(8,2)`=`8×(8−1)/2`=28。 > - 对于有主程序员的小组,我们需要分别计算主程序员和每个成员之间的沟通路径,以及成员之间的沟通路径。由于成员之间没有直接沟通,主程序员和每个成员之间的沟通路径为 n - 1。所以 8 -1 = 7。 4. 配置管理贯穿软件开发的整个过程。以下内容中,不属于配置管理的是( )。 | 选项 | 分析 | | --------------- | ------------------------------------------------------------ | | A. 版本控制 | 属于。版本控制是配置管理的重要组成部分,用于管理软件的不同版本和变更情况。 | | B. 风险管理 | 不属于。风险管理主要涉及识别、评估和应对项目开发中的风险,与配置管理无直接关系。 | | C. 变更管理 | 属于。变更管理是配置管理的重要内容,负责管理软件配置项的变更过程。 | | D. 配置状态报告 | 属于。配置状态报告用于记录和报告配置项的状态和变化,是配置管理的组成部分。 |
END
评论
登录后查看和发表评论
前往登录