软件工程是一门涵盖多个领域的学科,旨在规范和优化软件的开发过程。本试卷主要考察了软件工程的基础概念、软件开发的生命周期、设计原则以及测试方法等方面的知识。
一、名词解释
1. 软件危机:在软件开发过程中遇到的技术、管理、成本和时间等问题,导致软件产品的质量和可维护性下降,难以满足用户需求的现象。
2. 纯收入:在软件项目中,纯收入通常指的是扣除开发成本后剩余的利润。
3. 模块:软件开发中的独立可重用部分,具有特定的功能,可以与其他模块组合以构建完整的系统。
4. 原型:在软件开发初期创建的简化的或不完全的功能版本,用于验证概念或获取用户反馈。
5. BROOKS 定律:由弗雷德里克·布鲁克斯在其著作《人月神话》中提出,指出增加开发人员到已延迟的项目中通常会进一步延迟项目,因为增加了沟通和协调的复杂性。
二、填空题
1. 软件是计算机程序及其说明程序的各种文档。文档是有关计算机程序功能、设计、编制、使用的文字或图形资料。
2. 软件生存周期包括问题定义、需求分析、概要设计、详细设计、编码、测试、运行和维护等阶段。
3. 在软件详细设计阶段,常用的工具有数据流程图、结构图、判定表、伪代码等。
4. 原型的目的在于快速验证软件项目的可行性和价值。
5. 模块的耦合性分为内容耦合、控制耦合、标记耦合、数据耦合、公共耦合、外部耦合和非直接耦合,从强到弱排列。
6. 聚性分为七类,最强的是内聚,最弱的是偶然内聚。
7. 构造图的深度指控制流的深度,宽度指并行执行的模块数量。
8. 集成测试常见的方法有自顶向下、自底向上和大棒测试等。
9. 对于变换型数据流图,需确定主处理、逻辑输入和逻辑输出。
10. 软件编码阶段应注意代码的可读性和可维护性,以提高软件质量。
三、选择题
1. 可行性研究应包括经济可行性、技术可行性、操作可行性和社会可行性。
2. 通过功能分解可以完成数据流图的细化。
3. 模块耦合越弱,说明模块独立性越强。
4. 模块的作用域定义为受该模块一个判断影响的所有模块集合。
5. Jackson 方法是一种面向数据结构的详细设计方法。
6. PDL(Programming Description Language)通常指的是伪码。
7. 软件测试首先进行单元测试,然后是集成测试,最后是有效性测试。
8. 制定进度方案常用的工具是甘特图和工程网络图。
9. 软件测试的目的是发现软件的错误。
10. 在维护阶段,完善性维护工作所占比例通常最大。
这些题目涵盖了软件工程的核心概念,如软件生命周期、软件设计原则、模块化、文档重要性、测试策略以及软件维护。理解和掌握这些知识点对于成为一名合格的软件工程师至关重要。在实际工作中,软件工程师需要运用这些理论来规划项目、编写代码、测试软件以及确保软件的长期可维护性。