通常情况下,软件工程师需要具备以下几个方面的知识结构:
第一:操作系统知识。操作系统知识是软件工程师必须具备的重要内容,Web开发领域可能会使用到Windows系列操作系统,大数据和物联网方向要使用到Linux系列操作系统,掌握操作系统的体系结构是进行软件研发的重要基础。主要内容包括资源管理、任务调度、并发管理、权限管理、网络管理等内容。
第二:编程语言和算法。编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发可能会使用PHP、Python、Java等语言,而大数据可能会使用Java、R、Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言,以应对不同的开发环境。算法是软件工程师的重点知识结构,因为软件研发说到底就是个数学问题,所以算法的掌握情况往往能够决定软件工程师的成长高度。当然,对于应用级软件工程师来说,也有可能不会接触到更多的算法。
第三:领域知识。不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。
一、选择题
1. 需求分析最终结果是产生(B)
(https://blog.csdn.net/weixin_38004638/article/details/80891465)
A.项目开发计划
B.需求规格说明书
C.设计说明书
D.可行性分析报告
2.软件开发过程中,需求活动的主要任务是(B)。
(https://blog.csdn.net/qq_41814324/article/details/95237670)
A.给出软件解决方案
B.定义需求并建立系统模型
C.定义模块算法
D.给出系统模块结构
3. 内聚是从功能角度来度量模块内的联系,按照特定次序执行元素的模块属于(C)
(https://blog.csdn.net/qq_41814324/article/details/95237670)
A.逻辑内聚
B.时间内聚
C.过程内聚
D.顺序内聚
4. 耦合是软件各个模块间连接的一种度量。一组模块都访问同一数据结构应属于(B)方式。
(https://blog.csdn.net/qq_41814324/article/details/95237670)
A.内容耦合
B.公共耦合
C.外部耦合
D.控制耦合
5. 为了提髙模块的独立性,模块之间最好是(D)
(https://blog.csdn.net/qq_41814324/article/details/95237670)
A.公共耦合
B.控制耦合
C.内容耦合
D.数据耦合
6. 面向对象的主要特征除唯一性、继承性、多态性外,还具有(A)
(https://blog.csdn.net/weixin_38004638/article/details/80891465)
A.封装性
B.移植性
C.完整性
D.兼容性
7.下列四个软件可靠性定义中正确的是(D)。
A、软件可靠性是指软件在给定的时间隔内,按用户工求成功运行的概率
B、软件可靠性是指软件在给定的时间间隔内,按设计要求成功运行的概率
C、软件可靠性是指软件在正式投入运行内,按规定说明书的规定成功运行的概率
D、软件可靠性是指软件在给定时间间隔内,按规格说明书的规定成功运行的概率
8.在软件生命期中,占工作量比例最大的是(D)。
A、可行性研究 B、建立系统的结构 C、编写程序 D、维护
9.用于概要设计所采用的描述手段是(B)。
A、DFD B、SC图(系统结构图) C、框图 D、数据结构图
10.数据库设计全过程中的关键是(B)。
A、分析用户要求 B、建立概念性数据模型
C、逻辑设计 D、物理设计
11.面向对象设计时,对象信息的隐藏主要是通过(A)实现的。
A、对象的封装性 B、子类的继承性
C、系统模块化 D、模块的可重用
12.下面不属于软件工程的基本原则的是(D)。
A、模块化 B、抽象 C、局部化 D、自顶向上
13.在用面向对象观点建立起的3种模型中,(B)是最基本、最重要、最核心的。
A、动态模型 B、对象模型 C、功能模型 D、状态模型
14.结构化分析SA是软件开发需求分析阶段所使用的方法,(B)不是SA所使用的工具。
A.DFD图 B.PAD图 C.结构化英语 D.判定表
15.在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有(B)
A、 隐藏复杂性 B、 信息隐藏 C、 即存类的重用 D、 类的开发
16.耦合度也可以分为七级:其中最松散的耦合是(A)。
A. 非直接耦合 B. 数据耦合 C. 特征耦合 D. 控制耦合
二、名词解释(https://wenku.baidu.com/view/7694f5eb9b6648d7c1c746d1.html)
1.设计模式
解答:设计模式是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计。所有的设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果。
2.结构化方法
结构化是一种传统的软件开发方法,其总的指导思想是自顶向下、初步求精、单入口、单出口、其基本原则是抽象和功能分解。
三、简答题
1.模块设计规则:
(https://blog.csdn.net/weixin_38004638/article/details/80891465)
解答:
(1)改进软件结构提高模块独立性。
(2)模块规模应该适中。
(3)深度、宽度、扇出和扇入都应适当。
(4)模块的作用域应该在控制域之内。
(5)力争降低模块接口的复杂程度。
(6)设计单入口单出口的模块。
(7)模块功能应该可以预测。
2. 软件危机的原因:
(https://blog.csdn.net/qq_41814324/article/details/95237670)
解答:
(1)软件的规模越来越大,结构越来越复杂。
(2)软件开发管理困难而复杂。
(3)软件开发费用不断增加。
(4)软件开发技术落后。
(5)生产方式落后。
(6)开发工具落后,生产率提高缓慢。
3.某一新闻管理系统主要用来发布新闻,管理员只需要一个,登录后可以在后台发布性温。任何人可以浏览新闻,浏览者可以注册成为系统会员,组册后可对新闻进行评论。管理员在后台可以对新闻、评论、注册会员进行管理,如修改、删除等。
请画出该新闻管理系统的用例图。
(https://max.book118.com/html/2018/1010/8050014031001126.shtm)
4. 根据模块的作用范围与控制范围的原则,判定a、b两图的正确性,并简单阐述原因。
(https://blog.csdn.net/weixin_38004638/article/details/80891465)
解答:图a不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。 图b的模块设计合理。
控制范围:是模块本身和他下属模块的集合。
作用范围:模块中的一个判定影响的所有模块的集合。
来源:https://www.cnblogs.com/xqqu/p/12151933.html