软件工程基础知识测试
计算机软考中级职称 软件工程基础知识科目模拟题
![计算机软考中级职称 软件工程基础知识科目模拟题](https://img.taocdn.com/s3/m/290bf6580640be1e650e52ea551810a6f524c834.png)
以下是计算机软考中级职称软件工程基础知识科目可能涉及的20道选择题及其答案。
请注意,这些题目和答案是根据软件工程基础知识的一般内容设计的,并非直接来源于历年真题,但可以帮助你了解考试的可能题型和知识点。
1. 软件工程的主要目标是()。
A. 提高软件的生产效率B. 提高软件的可维护性C. 缩短软件开发周期D. 以上都是答案:D2. 下列哪个模型强调风险驱动,并在每个阶段都进行风险评估和迭代?()A. 瀑布模型B. 增量模型C. 原型模型D. 螺旋模型答案:D3. 在面向对象的设计中,封装是指()。
A. 将数据和对数据的操作封装在一起,形成一个独立的单元B. 类的继承关系C. 类的多态性D. 类的组合关系答案:A4. 下列哪项不是软件需求分析阶段的任务?()A. 确定软件系统的功能需求B. 确定软件系统的性能需求C. 编写详细的代码实现D. 编写需求规格说明书答案:C5. 软件测试的目的是()。
A. 证明软件没有错误B. 发现软件中的错误C. 改正软件中的错误D. 评估软件的性能答案:B6. 软件维护中,由于修改软件中的错误而对软件进行的维护称为()。
A. 改正性维护B. 适应性维护C. 完善性维护D. 预防性维护答案:A7. 下列哪个不是软件质量特性的要素?()A. 功能性B. 可靠性C. 可移植性D. 安全性答案:C(可移植性虽然与软件质量有关,但通常不被视为软件质量特性的一个主要要素,而是软件设计的一个考虑因素。
在这里,为了构成一道选择题,我们将其列为选项之一,但正确答案是不包括它。
实际上,更准确的选项可能是“易用性”或其他未列出的质量特性要素。
)注意:由于C选项的特殊性,实际考试中可能不会出现这样的选项。
为了完整性,这里保留了C选项并解释了其不准确性。
8. 软件配置项(SCI)是软件配置管理的基本单位,它不包括()。
A. 源代码B. 需求规格说明书C. 测试用例D. 项目管理计划答案:D(项目管理计划通常不属于软件配置项,而是项目管理活动的产物。
软件工程基础知识考试
![软件工程基础知识考试](https://img.taocdn.com/s3/m/3cc21112777f5acfa1c7aa00b52acfc788eb9f61.png)
软件工程基础知识考试(答案见尾页)一、选择题1. 软件工程的基本原理是什么?A. 线性顺序开发B.迭代和增量开发C. 自顶向下,逐步求精D. 需求驱动和变更管理2. 软件开发过程中,需求分析的目的是什么?A. 确定软件开发的具体功能需求B. 编写需求规格说明书C. 评估项目可行性D. 规划如何构建和维护软件3. 软件设计的主要阶段有哪些?A. 概念设计B. 详细设计C. 结构设计D. 过程设计4. 在敏捷开发方法中,迭代周期通常有多长?A. 1-2周B. 4-6周C. 3-4个月D. 2-4周5. 软件测试的目的是什么?A. 保证软件质量B. 提高软件效率C. 降低维护成本D. 提高用户满意度6. 数据库设计通常遵循哪些基本原则?A. 数据完整性B. 数据安全性C. 数据一致性D. 数据及时性7. 在软件开发中,版本控制工具的主要作用是什么?A. 整理源代码文件B. 跟踪代码变更历史C. 版本控制项目管理D. 提供协作开发环境8. 软件维护主要包括哪些活动?A. 修复缺陷B. 更新文档C. 性能优化D. 安全性增强9. 面向对象编程(OOP)的四个基本特性是什么?A. 封装B. 多态C. 继承D. 抽象10. 什么是敏捷开发,它与其他开发方法的区别是什么?A. 敏捷开发是一种软件开发方法,它强调团队合作和快速响应变化。
B. 敏捷开发与其他开发方法的区别在于它采用了迭代和增量的开发方式,而不是瀑布模型。
C. 敏捷开发强调的是文档的重要性。
D. 敏捷开发是一种运动,而不是一种软件开发方法。
11. 软件工程的基本概念是什么?A. 软件工程是一门技术学科,它涉及到软件的开发、维护和管理。
B. 软件工程是应用计算机科学、数学及管理科学等原理来开发软件的学科。
C. 软件工程注重软件的可靠性、可用性和可维护性。
D. 软件工程的目标是生产高质量的软件产品。
12. 软件开发过程中通常遇到的三种风险是什么?A. 技术风险B. 经济风险C. 过程风险D. 人员风险13. 软件生命周期通常包括哪几个阶段?A. 需求分析B. 设计C. 编码D. 测试E. 部署和维护14. 在软件开发中,需求分析的目的是什么?A. 确定软件系统的功能和性能要求。
软件工程考试题及答案
![软件工程考试题及答案](https://img.taocdn.com/s3/m/3325ccd5d5d8d15abe23482fb4daa58da0111c2d.png)
软件工程考试题及答案一、选择题1. 下列哪个不是软件工程的基本原则?A. 持续集成B. 形式化表示C. 高内聚低耦合D. 可重用性答案:B. 形式化表示2. 软件的可靠性是指什么?A. 软件的正确性B. 软件的可维护性C. 软件的效率D. 软件的稳定性答案:D. 软件的稳定性3. 下列哪个不是软件测试的目标?A. 发现软件中的错误和缺陷B. 验证软件是否满足用户需求C. 评估软件的质量D. 在短时间内完成软件开发答案:D. 在短时间内完成软件开发二、判断题1. 软件工程是一门工程学科,其目标是通过系统化的、规范化的方法对软件进行开发、运行和维护。
答案:正确2. “高内聚低耦合”是软件工程中的重要原则,指的是模块之间的独立性和模块之间的依赖程度。
答案:正确3. 软件需求分析是软件开发过程中的最后一步,最终确定软件系统的功能和性能。
答案:错误三、简答题1. 什么是软件工程?答:软件工程是一门工程学科,通过系统化的、规范化的方法对软件进行开发、运行和维护。
它涉及软件开发的各个阶段,包括需求分析、设计、编码、测试和维护等,并注重管理和团队合作,以提高软件质量、降低开发成本和加快开发进度。
2. 软件测试的目的是什么?答:软件测试的目的是发现软件中的错误和缺陷,验证软件是否满足用户需求,并评估软件的质量。
通过测试,可以提高软件的可靠性和稳定性,减少软件在使用过程中的风险。
3. 请简述软件开发生命周期中的各个阶段。
答:软件开发生命周期包括需求分析、设计、编码、测试和维护等阶段。
- 需求分析阶段:确定软件系统的功能、性能和约束条件,明确用户需求。
- 设计阶段:根据需求分析结果设计软件系统的结构和模块,确定软件的整体框架。
- 编码阶段:根据设计阶段的文档编写程序代码,实现软件系统的各个功能。
- 测试阶段:对软件进行各种测试,包括单元测试、集成测试和系统测试,以发现错误和缺陷。
- 维护阶段:根据用户反馈和需求变化,对软件进行修复和更新,确保其持续稳定运行。
软件工程基础考试
![软件工程基础考试](https://img.taocdn.com/s3/m/1f95cbd970fe910ef12d2af90242a8956aecaa08.png)
软件工程基础考试(答案见尾页)一、选择题1. 软件工程的基础是什么?A. 程序设计B. 数据结构C. 计算机科学D. 需求分析2. 软件开发过程中,需求分析和系统设计的关系是什么?A. 需求分析是系统设计的依据B. 需求分析和系统设计同时进行C. 需求分析在系统设计之后进行D. 需求分析和系统设计没有必然联系3. 软件工程的三个层次及其在软件开发过程中的作用是什么?A. 应用层、系统层、理论层B. 物理层、数据层、逻辑层C. 需求层、设计层、实施层D. 开发层、测试层、维护层4. 软件开发生命周期(SDLC)的概念是什么?它包括哪几个阶段?A. 软件开发生命周期是指软件的开发过程B. SDLC包括需求分析、设计、编码、测试和维护C. SDLC是一个线性的过程D. SDLC各阶段按顺序进行,不具备迭代性5. 什么是敏捷开发方法?它与其他开发方法的区别是什么?A. 敏捷开发是一种快速开发的软件开发方法B. 敏捷开发强调团队合作和客户参与C. 敏捷开发适合大规模软件项目D. 敏捷开发与其他开发方法的区别在于流程管理6. 什么是面向对象编程(OOP)?请列举OOP的三个基本特征。
A. 封装、继承、多态B. 封装、继承、抽象C. 封装、多态、接口D. 继承、多态、接口7. 数据库管理系统(DBMS)在软件开发中的作用是什么?A. 存储和管理数据B. 提供数据查询和修改功能C. 数据库管理员(DBA)负责DBMS的管理和维护D. 所有选项都正确8. 什么是版本控制?请简述版本控制的两种主要策略。
A. 版本控制是一种软件配置管理技术B. 版本控制可以跟踪软件项目的变更C. 版本控制的主要策略有Git和SVND. 版本控制确保软件代码的安全性9. 什么是软件测试?它的目的和基本原则是什么?A. 软件测试是在软件投入运行后进行的活动B. 软件测试是为了发现软件中的错误和缺陷C. 软件测试的原则包括早期测试、缺陷倾向分布等D. 软件测试的目的是提高软件的质量和可靠性10. 什么是配置管理?它在软件开发中的作用是什么?A. 配置管理是指对软件配置项进行管理和控制的过程B. 配置管理可以确保软件配置的一致性和可追溯性C. 配置管理的主要活动包括配置标识、配置控制、配置审核等D. 配置管理有助于解决软件生命周期中的版本冲突问题11. 软件开发过程中,需求分析的主要任务是?A. 确定软件开发的功能B. 编写需求规格说明书C. 进行系统设计D. 进行程序设计12. 在软件开发中,迭代过程是为了更好地适应变化,它主要包括哪几个阶段?A. 需求分析B. 设计C. 编码D. 测试13. 软件工程中的“软件”指的是什么?A. 程序和数据B. 程序、数据和文档C. 程序和数据,可运行D. 程序、数据和用户手册14. 软件工程的发展历程中,第一个正式发布的软件开发标准是?A. ISO 9000B. CMMIC. PMBOKD.软件开发生命周期(SDLC)15. 在软件工程中,测试的目的是什么?A. 证明软件的正确性B. 找出软件中的错误C. 提高软件的质量D. 规范软件的开发过程16. 软件工程中的“软件生命周期”通常包括哪几个阶段?A. 开发B. 运行C. 维护17. 软件工程中,版本控制的主要作用是什么?A. 监控软件的修改历史B. 管理软件的版本C. 确保软件的一致性D. 保证软件的可靠性18. 软件工程中,敏捷开发方法是一种以人为核心、迭代、循序渐进的开发方法,它的核心价值包括:A. 个体和互动跨功能团队B. 可用的软件客户合作C. 响应变化随时间进化D. 面向结果19. 在软件工程中,UML(统一建模语言)是一种用于描述、构造和编写软件系统的图形化语言,它通常用于以下哪个阶段?A. 需求分析B. 设计C. 编码D. 测试20. 软件工程的定义是什么?A. 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。
2024年软件资格考试程序员(初级)(基础知识、应用技术)合卷试题及解答参考
![2024年软件资格考试程序员(初级)(基础知识、应用技术)合卷试题及解答参考](https://img.taocdn.com/s3/m/133fcdea64ce0508763231126edb6f1aff0071f5.png)
2024年软件资格考试程序员(基础知识、应用技术)合卷(初级)自测试题(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)1、软件工程的基本原则中,强调通过变更来提高软件可维护性的原则是:A. 单一职责原则B. 开放封闭原则C. 依赖倒置原则D. 迪米特法则2、在软件开发生命周期中,以下哪个阶段不属于软件设计阶段?A. 需求分析B. 系统设计C. 详细设计D. 编码实现3、题目:在软件开发过程中,哪个阶段是确定系统需求和规格说明的阶段?A、需求分析阶段B、设计阶段C、编码阶段D、测试阶段4、题目:在面向对象编程中,下列哪个术语表示将一个对象的方法和数据封装在一起?A、继承B、多态C、封装D、抽象5、在软件开发过程中,以下哪个阶段主要关注软件需求的分析和定义?A. 需求分析阶段B. 设计阶段C. 实现阶段D. 测试阶段6、以下关于面向对象编程(OOP)的描述,哪项是错误的?A. 面向对象编程通过封装、继承和多态实现软件重用。
B. 在面向对象编程中,对象是数据和行为(方法)的封装。
C. 继承是面向对象编程中的一种机制,用于实现代码复用。
D. 面向对象编程中的类是对象的抽象,而对象是类的实例。
7、在面向对象编程中,以下哪个不是面向对象的基本特征?A. 封装B. 继承C. 多态D. 静态8、以下哪个不是Java中的数据类型?A. intC. booleanD. string9、在面向对象编程中,以下哪个原则强调的是将不同的职责分配给不同的对象,以降低对象之间的耦合度?A. 单一职责原则(Single Responsibility Principle,SRP)B. 开放封闭原则(Open/Closed Principle,OCP)C. 依赖倒置原则(Dependency Inversion Principle,DIP)D. 接口隔离原则(Interface Segregation Principle,ISP)11、以下哪个操作不是C语言中的基本输入输出函数?A. printf()B. scanf()C. getchar()D. putchar()13、题目:以下关于软件开发生命周期的说法中,错误的是:A. 软件开发生命周期包括需求分析、设计、编码、测试和维护阶段B. 需求分析阶段主要是确定用户需求,设计阶段是根据需求进行系统设计C. 编码阶段是将设计转换为程序代码,测试阶段是验证程序的正确性和性能D. 软件开发生命周期中,每个阶段都需要进行文档编写,但文档的详细程度不同15、题目:以下哪个选项不是Java中的基本数据类型?A. intB. floatD. String17、以下关于面向对象程序设计(OOP)的描述中,错误的是:A. 面向对象程序设计是一种程序设计范式,它将数据和行为封装在一起B. 面向对象程序设计中的对象具有属性和方法C. 在面向对象程序设计中,继承是实现代码复用的关键机制D. 面向对象程序设计中的多态是通过方法重载来实现的19、在面向对象编程中,以下哪个是封装的典型体现?A. 数据和方法的分离B. 数据的封装和私有化C. 类的继承D. 方法重载21、在软件开发过程中,以下哪个不是常见的软件开发模型?A. 水晶模型B. 瀑布模型C. V型模型D. 研发模型23、以下哪种说法不属于面向对象程序设计的基本特征?()A. 封装B. 继承C. 多态D. 静态25、在软件开发过程中,以下哪个阶段是需求分析的输出结果?A. 系统设计B. 系统测试C. 程序编码D. 系统实现27、以下哪个选项是关于面向对象编程(OOP)中继承的概念的正确描述?A. 继承允许一个类使用另一个类的成员变量和方法,而不需要重新定义。
软件工程基础考试试题
![软件工程基础考试试题](https://img.taocdn.com/s3/m/f86ed4a5112de2bd960590c69ec3d5bbfd0adaf4.png)
软件工程基础考试试题一、单选题(每题2分,共20分)1. 软件工程的主要目标是:A. 开发高质量的软件产品B. 提供解决复杂问题的工具和技术C. 改善软件开发过程的效率和质量D. 以上答案都正确2. 在软件生命周期中,软件需求分析阶段的主要任务是:A. 定义软件的功能和性能需求B. 设计软件的架构和模块C. 编写软件代码和进行调试D. 运行和维护软件系统3. 下列哪个不是软件测试的目标:A. 测试软件系统的正确性和健壮性B. 发现软件中的错误和缺陷C. 评估软件系统的可靠性和可用性D. 增加软件的功能和性能4. 软件配置管理的主要任务是:A. 维护软件系统的版本和变更历史B. 管理软件系统的开发团队C. 评估软件系统的质量和性能D. 设计软件系统的架构和模块5. 软件开发生命周期模型中,以下哪个模型强调迭代和循序渐进的特点:A. 瀑布模型B. 原型模型C. 增量模型D. 螺旋模型6. 下列哪个不是软件项目管理的主要任务之一:A. 制定项目计划和进度安排B. 管理项目团队的人力资源C. 编写软件系统的详细设计文档D. 控制项目的成本和质量7. 软件工程中常用的项目管理工具不包括:A. 甘特图B. PERT/CPMC. UMLD. 敏捷开发8. 在软件测试中,下列哪种测试方法是通过测试人员的随机操作来检验软件系统的可靠性:A. 黑盒测试B. 白盒测试C. 灰盒测试D. 增量测试9. 软件工程的核心原则包括:A. 模块化B. 重用C. 抽象D. 以上答案都正确10. 软件工程的关键技术包括:A. 需求分析和规格说明B. 概要设计和详细设计C. 编码和调试D. 以上答案都正确二、填空题(每题2分,共20分)1. 软件开发生命周期包括需求分析、设计、编码、测试、____和维护。
2. 软件需求分析的目标是明确软件的功能、性能和____。
3. 软件测试的基本原则之一是:测试应该完全独立于____。
4. 软件工程中常用的项目管理方法之一是____,用于确定最短的完成项目所需时间。
软件工程基础考试
![软件工程基础考试](https://img.taocdn.com/s3/m/b15b03486d175f0e7cd184254b35eefdc9d3157e.png)
软件工程基础考试(答案见尾页)一、选择题1. 软件工程的基础是什么?A. 程序设计B. 数据结构C. 硬件D. 需求分析2. 软件开发过程中,需求分析的目的是什么?A. 确定软件开发的功能需求B. 规划软件的架构设计C. 编写代码D. 进行系统测试3. 在敏捷开发中,迭代周期通常是什么?A. 一周B. 一个月C. 一个季度D. 六个月4. 软件工程的五大基本质量特性包括:功能性、可靠性、易用性、效率、可维护性。
其中,易用性是指软件易于理解和使用的能力。
这一特性是由哪个因素决定的?A. 用户的经验B. 开发者的技术水平C. 用户的技能水平D. 软件的设计和实现5. 在软件开发中,版本控制是一种有效的管理手段,它可以跟踪文件的变更历史并协助开发者协作。
以下关于版本控制的描述,不正确的是:A. Git是一种广泛使用的版本控制系统B. 版本控制可以防止软件被非法复制C. 版本控制可以帮助开发者回滚到以前的版本D. 版本控制可以确保不同开发者的工作同步6. 在软件工程中,测试是为了发现错误而执行程序的过程。
以下关于软件测试的描述,不正确的是:A. 测试应该尽早开始,贯穿整个软件开发过程B. 回归测试是在软件修改后进行的,目的是验证之前的错误已经修复C. 集成测试是在软件的各个模块组装在一起后进行的测试D. 功能测试和性能测试是软件测试的两种类型7. 软件工程师在编写代码时需要遵循一些命名约定,以便其他开发者能够更容易地理解和维护代码。
以下关于软件工程师命名约定的描述,不正确的是:A. 变量名应该使用小写字母和下划线(例如:user_name)B. 常量名应该使用全大写字母和下划线(例如:MAX_VALUE)C. 函数名应该使用动词开头的小写字母(例如:get_data)D. 类名应该使用大驼峰命名法(例如:UserInformation)8. 在软件开发中,配置管理是一种用于控制软件开发和维护过程中的变更的过程。
软件工程基础考试题目和答案
![软件工程基础考试题目和答案](https://img.taocdn.com/s3/m/ff84b30e68eae009581b6bd97f1922791688be83.png)
软件工程基础考试题目和答案一、选择题(每题5分,共25分)1. 软件工程的主要目标是什么?A. 提高软件开发效率B. 确保软件质量C. 降低软件开发成本D. 提高软件的可维护性答案:B2. 下列哪个阶段不属于软件开发生命周期?A. 需求分析B. 设计C. 测试D. 需求变更答案:D3. 下列哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 面向过程编程答案:A4. 下列哪个工具主要用于软件项目进度监控?A. Gantt图B. 思维导图C. 帕累托图D. 直方图答案:A5. 下列哪种方法主要用于风险管理?A. 风险识别B. 风险评估C. 风险应对D. 风险监控答案:A二、填空题(每题5分,共25分)1. 软件工程的核心思想是______,通过规范的开发过程和严格的质量控制,提高软件的质量和可靠性。
答案:工程化2. 软件需求分析的主要目的是______,明确软件的功能和性能要求。
答案:理解用户需求3. 结构化分析方法主要包括______、数据流图、实体关系图等。
答案:数据字典4. 软件测试的主要目的是______,发现并修复软件中的缺陷。
答案:保证软件质量5. 敏捷开发方法的核心价值观是______,强调快速响应变化和客户合作。
答案:个体和互动三、简答题(每题10分,共30分)1. 请简要描述软件开发生命周期的主要阶段及其作用。
答案:软件开发生命周期主要包括需求分析、设计、编码、测试和维护等阶段。
需求分析阶段用于理解用户需求,设计阶段用于制定软件架构和详细设计,编码阶段用于实现软件功能,测试阶段用于发现并修复软件缺陷,维护阶段用于提供软件支持和更新。
2. 请简要介绍敏捷开发方法的主要特点和实践原则。
答案:敏捷开发方法主要包括个体和互动、工作软件、客户合作、响应变化等价值观。
实践原则包括短迭代周期、持续反馈、自我组织和协作等。
敏捷开发方法强调快速响应变化,提高软件质量和开发效率。
软件工程基础知识
![软件工程基础知识](https://img.taocdn.com/s3/m/ab0a089569eae009581becdc.png)
软件工程基础知识考点指导考点1 :软件工程和项目管理基础★★★考点点拨:本考点考查软件工程和软件生成周期的概念,常用的软件开发模型,以及软件开发项目管理基础知识。
【试题1】软件工程三要素是______。
A)技术、方法和工具B)方法、工具和过程C)方法、对象和类D)过程、模型、方法答案:B分析:软件工程三要素:方法、工具和过程。
软件工程方法为软件开发提供了“如何做”的技术。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理以及软件开发各个阶段完成的工作。
理论链接:软件工程概述1.软件危机软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。
概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件?2.软件工程软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
软件工程是一门指导计算机软件开发和维护的工程学科。
软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。
【试题2】软件开发的结构化生命周期方法将软件生命周期划分成______。
A)计划阶段、开发阶段、运行阶段B)计划阶段、编程阶段、测试阶段C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计答案:A【试题3】软件生命周期的最后的一个阶段是______。
A)书写软件文档B)软件维护C)稳定性测试D)书写详细用户说明答案:B理论链接:软件生存(生命)周期软件生存周期:软件的产生直到报废的生命周期。
软件工程基础试题及答案
![软件工程基础试题及答案](https://img.taocdn.com/s3/m/ad2573774028915f804dc2d0.png)
软件工程基础试题及答案一、选择题【例1】对软件的特点,下面描述正确的是_______。
(考点1)A)软件是一种物理实体B)软件在运行使用期间不存在老化问题C)软件开发、运行对计算机没有依赖性,不受计算机系统的限制D)软件的生产有一个明显的制作过程解析:软件在运行期间不会因为介质的磨损而老化,只可能因为适应硬件环境以及需求变化进行修改而引入错误,导致失效率升高从而软件退化,所以本题正确答案为B)。
答案:B)【例2】以下哪项是软件生命周期的主要活动阶段?_______(考点2)A)需求分析B)软件开发C)软件确认D)软件演进解析:B)、C)、D)项都是软件工程过程的基本活动,还有一个是软件规格说明。
答案:A)【例3】从技术观点看,软件设计包括_______。
(考点3)A)结构设计、数据设计、接口设计、程序设计B)结构设计、数据设计、接口设计、过程设计C)结构设计、数据设计、文档设计、过程设计D)结构设计、数据设计、文档设计、程序设计解析:技术角度,要进行结构、接口、数据、过程的设计。
结构设计是定义系统各部件关系,数据设计是根据分析模型转化数据结构,接口设计是描述如何通信,过程设计是把系统结构部件转化为软件的过程性描述。
答案:B)【例4】以下哪个是软件测试的目的`?_______(考点5)A)证明程序没有错误B)演示程序的正确性C)发现程序中的错误D)改正程序中的错误解析:关于测试目的的基本知识,IEEE的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别,所以正确答案是C)。
答案:C)【例5】以下哪个测试要对接口测试?_______。
(考点6)A)单元测试B)集成测试C)验收测试D)系统测试解析:检查对测试实施各阶段的了解,集成测试时要进行接口测试、全局数据结构测试、边界条件测试和非法输入的测试等,所以正确答案是B)。
答案:B)【例6】程序调试的主要任务是_______。
软件工程试题及答案(较详细)
![软件工程试题及答案(较详细)](https://img.taocdn.com/s3/m/96ab2fcecd22bcd126fff705cc17552707225ed3.png)
软件工程试题及答案(较详细)软件工程试题及答案 (较详细)一、简答题1. 什么是软件工程?软件工程是一门综合应用计算机科学与工程学、管理学等知识的学科,它致力于开发和维护高质量的软件系统。
它包括需求分析、设计、编码、测试和维护等各个阶段,以确保软件项目能够按时交付、高效运行,并满足用户需求。
2. 请解释什么是软件生命周期?软件生命周期是指软件从构思、开发、使用到废弃的整个过程。
它包括需求分析、设计、编码、测试、部署和维护等多个阶段。
软件生命周期管理的目标是确保软件产品按时、按质量要求交付,并提供后续的支持与维护。
3. 请解释什么是需求工程?需求工程是软件工程中的一个重要阶段,它主要涉及对用户需求的调研、分析、规划和文档化。
通过需求工程,开发人员能够更好地理解用户需求,并将其转化为具体的软件需求规格说明书,为后续的设计和开发提供基础。
4. 什么是软件设计模式?软件设计模式是一套在软件设计过程中重复出现的解决方案。
它们被广泛接受,并被认为是开发高质量、可维护和可扩展软件的有效方法。
常见的软件设计模式包括单例模式、工厂模式、观察者模式等。
二、分析题1. 请说明面向对象和面向过程的编程范式的区别。
面向对象编程(OOP)和面向过程编程(POP)是两种不同的编程范式。
面向过程编程更侧重于任务的步骤和流程,它将问题分解为多个步骤,通过一系列函数或过程的调用来完成任务。
面向过程编程更加注重解决问题的步骤和执行过程。
面向对象编程更注重数据和对象的定义和封装,它将问题看作是一组对象的交互。
面向对象编程通过定义类、创建对象以及对象之间的协作来解决问题。
2. 什么是软件架构?软件架构是指软件系统的基本结构和组织方式。
它定义了软件系统中各个组件的职责、交互方式和部署方式。
常见的软件架构模式包括分层架构、客户端-服务器架构、微服务架构等。
3. 解释软件测试中的黑盒测试和白盒测试。
黑盒测试是一种测试方法,它基于对软件系统的功能需求进行测试,而不考虑内部的实现细节。
软件基础知识试题及答案
![软件基础知识试题及答案](https://img.taocdn.com/s3/m/4bd624430622192e453610661ed9ad51f11d5474.png)
软件基础知识试题及答案一、单项选择题(每题2分,共10题)1. 在计算机系统中,软件通常被分为哪两大类?A. 系统软件和应用软件B. 硬件软件和网络软件C. 应用软件和网络软件D. 系统软件和硬件软件答案:A2. 以下哪个选项是操作系统的典型功能?A. 文件管理B. 网络通信C. 数据加密D. 所有选项答案:D3. 计算机程序设计语言的发展经历了哪些阶段?A. 机器语言、汇编语言、高级语言B. 汇编语言、高级语言、机器语言C. 高级语言、机器语言、汇编语言D. 机器语言、高级语言、汇编语言答案:A4. 数据库管理系统(DBMS)的主要功能不包括以下哪一项?A. 数据定义B. 数据操纵C. 数据加密D. 数据控制答案:C5. 下列哪个不是网络协议的功能?A. 传输控制B. 路由选择C. 数据加密D. 错误检测答案:C6. 在软件开发过程中,需求分析阶段的主要任务是什么?A. 编写代码B. 设计数据库C. 确定软件需求D. 测试软件答案:C7. 以下哪个不是软件工程的原则?A. 抽象B. 模块化C. 迭代D. 随机性答案:D8. 面向对象编程(OOP)的主要特点不包括以下哪一项?A. 封装B. 继承C. 多态D. 过程性答案:D9. 软件测试的主要目的是什么?A. 修复所有已知错误B. 验证软件功能C. 评估软件性能D. 所有选项答案:D10. 敏捷软件开发方法的核心理念是什么?A. 严格的计划和控制B. 快速响应变化C. 遵循固定开发周期D. 重视文档编写答案:B二、多项选择题(每题3分,共5题)1. 以下哪些属于计算机软件的组成部分?A. 程序B. 数据C. 文档D. 硬件答案:A、B、C2. 软件危机主要表现在哪些方面?A. 软件开发成本高B. 软件项目延期C. 软件质量难以保证D. 软件维护困难答案:A、B、C、D3. 以下哪些是软件设计阶段的主要活动?A. 需求分析B. 架构设计C. 详细设计D. 编码实现答案:B、C4. 软件维护的类型包括哪些?A. 纠错性维护B. 适应性维护C. 完善性维护D. 预防性维护答案:A、B、C、D5. 以下哪些是软件测试的常见方法?A. 黑盒测试B. 白盒测试C. 灰盒测试D. 性能测试答案:A、B、C、D三、判断题(每题1分,共5题)1. 软件是计算机系统中的非硬件部分。
大学软件工程基础知识测试
![大学软件工程基础知识测试](https://img.taocdn.com/s3/m/74ff55086529647d26285273.png)
五、简答题1.层次图和层次方框图之间区别何在?P92①层次图描绘软件的层次结构,层次方框图描绘数据结构②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。
2.2、软件设计过程中为什么要采用模块化设计方法?P85参考答案:(1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解;(2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性;(3)、模块化可以提高软件的可修改性;(4)、模块化有助于开发过程的组织和经管;3.用某种软件复杂性度量算法来度量不同类型的程序时。
得出的度量值是否真正反映了它们的复杂性?如果对同类型的程序进行度量,其结果是否就比较有价值?参考答案:开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。
因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。
所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。
但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。
4.数据流图的作用是什么?它有哪些基本成分?参考答案:数据流图可以用来抽象地表示系统或软件。
它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
基本成分有:数据原点/终点数据处理数据流数据存储5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。
代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同;功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。
软件工程-测试题+答案
![软件工程-测试题+答案](https://img.taocdn.com/s3/m/5885a516bc64783e0912a21614791711cc797937.png)
一、单选( 每题参考分值2.5分)1、软件生存周期中时间最长的是()阶段。
A.总体设计B.需求分析C.软件测试D.软件维护答案:【D】2、UML中的()是可用来操作的行为和对象内部的工作过程。
A.活动图B.顺序图C.合作图D.状态图答案:【D】3、在下列工具与环境中()属于较早期的CASE。
A.基于信息工程CASEB.人工智能CASEC.结构的基于图形CASED.集成的CASE环境答案:【C】4、软件设计的主要任务是解决系统()的问题。
A.为何做B.怎么做C.做什么D.对谁做答案:【C】5、通过()可以完成数据流图的细化。
A.结构分解B.功能分解C.数据分解D.系统分解答案:【B】6、在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,下面选项中都属于“类”的特点或性质的是()A.封装、多态、继承、重载B.消息、封装、继承、多态C.消息、方法、多态、重载D.继承、多态、封装、消息答案:【A】7、软件测试方法中的静态测试方法之一为()A.计算机辅助静态分析B.黑盒法C.路径覆盖D.边界值分析答案:【A】8、软件测试中设计测试实例(test case)主要由输入数据和()两部分组成。
A.测试规则B.测试计划C.预期输出结果D.以往测试记录分析答案:【C】9、对象实现了数据和操作的结合,使数据和操作()于对象的统一体中。
A.结合B.隐藏C.封装D.抽象答案:【C】10、软件测试工作本身很复杂,其工作量要占软件开发总工作量的()A.5%-10%B.15%-20%C.40%-50%以上D.30%左右答案:【C】11、系统定义明确之后,应对系统的可行性进行研究。
可行性研究应包括()。
A.环境可行性、技术可行性、经济可行性B.经济可行性、实用性、社会可行性C.经济可行性、技术可行性、操作可行性D.经济可行性、社会可行性、系统可行性答案:【B】12、在面向对象的软件技术中,“类”就是对具有相同数据和相同操作的一组相似对象的定义,下面选项中都属于“类”的特点或性质的是()A.封装、多态、继承、重载B.消息、封装、继承、多态C.消息、方法、多态、重载D.继承、多态、封装、消息答案:【A】13、结构化分析的方法是一种()A.系统分析方法B.面向数据结构的分析方法C.面向对象的分析方法D.面向数据流的分析方法答案:【D】14、下列说法错误的是()A.数据流图是软件系统逻辑功能的图形表示,即使是非专业的计算机技术人员也容易理解B.数据字典和数据流图共同构成系统的逻辑模型C.E-R图用矩形表示实体,菱形表示联系,椭圆或圆角矩形表示实体(或联系)的属性D.系统流程图表达的是信息进行加工处理的过程,而不是信息在各部件之间的流动情况答案:【D】15、在结构测试用例设计中,有语句覆盖、判定覆盖、路径覆盖等,其中()是最强的覆盖准则。
软件工程基础知识试题及
![软件工程基础知识试题及](https://img.taocdn.com/s3/m/99f8d565492fb4daa58da0116c175f0e7cd119b9.png)
软件工程基础知识试题及答案解析软件工程基础知识试题及答案解析第一节:单项选择题1. 以下哪个不是软件工程的关键活动?A. 需求分析与规格说明B. 设计与实现C. 维护与更新D. 市场分析与调研答案:D解析:软件工程的关键活动包括需求分析与规格说明、设计与实现、维护与更新等,市场分析与调研是软件工程的前期准备活动,不属于关键活动。
2. 下列哪个不是软件测试的基本原则?A. 测试应该尽可能早地开始B. 测试应该尽可能晚地结束C. 测试应该覆盖尽可能多的场景D. 测试应该定期进行答案:B解析:软件测试的基本原则包括测试应该尽可能早地开始、测试应该覆盖尽可能多的场景、测试应该定期进行等,测试应该尽可能晚地结束不符合软件测试的基本原则。
3. 下面哪个不是软件需求的特点?A. 可变性B. 不精确性C. 差异性D. 一致性答案:D解析:软件需求的特点包括可变性、不精确性、差异性等,一致性不属于软件需求的特点。
4. 下列哪个不是软件开发生命周期模型?A. 瀑布模型B. 增量模型C. 敏捷模型D. 螺旋模型答案:C解析:软件开发生命周期模型包括瀑布模型、增量模型、螺旋模型等,敏捷模型不属于软件开发生命周期模型。
5. 下列哪个不是软件缺陷的分类?A. 语法错误B. 逻辑错误C. 界面错误D. 运行时错误答案:C解析:软件缺陷的分类包括语法错误、逻辑错误、运行时错误等,界面错误不属于软件缺陷的分类。
第二节:简答题1. 简要说明软件工程的定义和特点。
答:软件工程是研究和应用一种用工程化的方法开发和维护软件的学科。
软件工程的特点包括:复杂性、可变性、不可见性、不可测性等。
复杂性指的是软件系统往往由多个模块组成、包含大量的代码和数据,并且相互之间存在复杂的关系;可变性指的是软件系统的需求和规格常常会发生变化;不可见性指的是软件系统是不存在于物理空间中的,只能通过人机交互的方式来感知;不可测性指的是软件系统的行为和性能往往难以预测和估计。
软件工程测试题+参考答案
![软件工程测试题+参考答案](https://img.taocdn.com/s3/m/306a8a50f08583d049649b6648d7c1c708a10bcf.png)
软件工程测试题+参考答案一、单选题(共40题,每题1分,共40分)1、窃听是一种()攻击,攻击者()将自己的系统插入到发送站和接收站之间。
截获是一种()攻击,攻击者()将自己的系统插入到发送站和接受站之间。
A、被动,无须,主动,必须B、被动,必须,主动,无须C、主动,无须,被动,必须D、主动,必须,被动,无须正确答案:A2、如果一名攻击者截获了一个公钥,然后他将这个公钥替换为自己的公钥并发送给接收者,这种情况属于哪一种攻击?A、重放攻击B、Smurf 攻击C、中间人攻击D、字典攻击正确答案:C3、黑客攻击服务器以后,习惯建立隐藏用户,下列哪一个用户在DOS命令net user下是不会显示的。
A、fg#B、fg%C、fg_D、fg$正确答案:D4、下列哪一种方法在支持向量机中有应用A、拉格朗日乘子法B、二分法C、最小二乘法D、极大似然估计正确答案:A5、设顺序线性表的长度为30,分成5块,每块6个元素,如果采用分块查找,则其平均查找长度为A、6B、6.5C、11D、5正确答案:B6、对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为A、NB、N/2C、(N+1)/2D、[(1+N)*N ]/2正确答案:C7、信息安全中PDR模型的关键因素是()。
A、人B、客体C、技术D、模型正确答案:A8、某业务系统具有上传功能,页面上传的文件只能上传到UPLOAD目录,由于上传页面没有过滤特殊文件后缀,存在上传漏洞,而短时间厂家无法修改上传页面源码,现采取如下措施,哪种措施可以暂时防止上传漏洞危害又不影响业务系统正常功能。
A、禁止UPLOAD目录访问权限B、删除上传页面C、禁止UPLOAD目录执行脚本文件D、以上措施都不正确正确答案:C9、在各种作业调度算法中 , 若所有作业同时到达 , 则平均周转时间最短的算法是()。
A、多级反馈队列调度算法B、先来先服务调度算法C、高优先级优先调度算法D、短作业优先调度算法正确答案:D10、下面()不是数据字典的内容。
软件工程基础知识考试
![软件工程基础知识考试](https://img.taocdn.com/s3/m/5b6971b00875f46527d3240c844769eae109a308.png)
软件工程基础知识考试(答案见尾页)一、选择题1. 软件工程的基础是什么?A. 程序设计B. 数据结构C. 硬件D. 需求分析2. 软件开发过程中,需求分析和系统设计阶段的主要任务是什么?A. 编写代码B. 确定软件系统的功能需求C. 编写用户手册D. 进行系统测试3. 软件工程的生命周期通常包括哪些阶段?A. 开发B. 测试C. 部署D. 维护4. 在软件开发中,常用的软件开发方法有哪些?A. 敏捷开发B. 瀑布模型C. 结构化方法D. 面向对象方法5. 需求分析的目的是什么?A. 详细描述软件的功能和性能要求B. 确定软件开发的总成本C. 规划软件开发过程D. 评估项目风险6. 在软件工程中,什么是版本控制?A. 一种文件管理技术,用于跟踪软件的变更历史B. 一种软件开发方法论C. 一种编程语言D. 一种数据库管理技术7. 软件测试的目的是什么?A. 发现软件中的错误和缺陷B. 评估软件的性能C. 确保软件符合用户需求D. 提高软件的质量8. 在敏捷开发中,迭代周期通常有多长?A. 1周B. 2周C. 3周D. 4周9. 在软件工程中,什么是配置管理?A. 管理软件配置项的过程B. 软件开发过程中的一个活动C. 与软件开发和维护相关的所有活动的集合D. 软件开发完成后进行的活动10. 软件工程的定义是什么?A. 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。
B. 软件工程关注软件的开发、测试、维护和项目管理。
C. 软件工程的目标是实现软件的自动化开发。
D. 软件工程是一种实践性知识,不依赖于特定的工具或技术。
11. 软件开发过程中通常使用的模型有哪些?A. 瀑布模型B. 迭代模型C. 螺旋模型D. 面向服务的模型12. 什么是需求分析?它在软件开发过程中的作用是什么?A. 需求分析是识别和分析软件系统需要满足的条件或功能的过程。
B. 需求分析在软件开发过程中确保最终产品满足用户需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A.艾伦.图灵B.罗伯特.诺依斯C.比尔.盖茨D.冯.诺依曼
6.以下程序运行时输出结果是()。
#include<stdio.nt *c);
for(i=0;i<4:i++)
{for(j=0;j<4-j;j++)
Printf(“”);
for(k=0;k<=2*I;k++)
printf(“*”);
printf(“/n”);}
}
31.n/10+n%10*10 m[j]%k==0
{int j,k,m[2];
m[0]=n;
m[1]=(1)n/10+n%10*10;
for(j=0;j<2;j++)
for(k=m[j]/2;k>1;k--)
if((2)m[j]%k==0)return 0;
return 1;
}
int main()
{int i;
for(i=10;i<100;i++)
3. WWW浏览器使用的应用协议是()。
A.HTTPB.TCP/IPC.FTPD.Telnet
4.以下程序运行时输出结果是()。
#include<stdio.h>
#define M 3
#defme N M+1
#define NN N*N/2
main().
{printf("%d\n",NN);}
A.8B.7C.6D.5
A.每小时能传输的信息是10242字节B.每秒能传输的信息是10242位
C.每秒能传输的信息是10242字节D.每秒能传输的信息是1024字节
22.需求分析阶段不适于描述加工逻辑的工具是( )。
A.结构化语言C.判定树
B.判定表D.流程图
23.下列不合适作为数据处理与数据应用的语言是()
A.Cobol语言B.SQL语言C.4GL D.Ada语言
1.选择连续的对象,单击第一个对象后,可按住( )键,并单击( ),则所有连续对象全部选中()。
A.shift,第一个对象B.shift,最后一个对象
C.shift,随便一个对象D.alt,最后一个对象
2.要在Excel单元格中输入数字字符,例如学号“09140202”,下列输入正确的是()
A.“09140202”B.=09140202C.09140202D.’09140202
int main()
{
int a[10]={1,3,5,2,3,5,3,7,4,1},t=0;
f(a,10,5,&t);
printf("%d",t);
return 0;
}
void f(int a[],int n,int x,int *c)
{
if(n==0)return;
if(a[0]>=x)
(*c)++;
if(a_prime(i))printf("%d\n",i);
return 0;
}
答案:
BDACD BAC(DA)B ACDDC DCDCB BDA(BC)
25.局域网、城域网
26.**0****2**
27.机器
28.运行程序测试用例黑盒测试白盒测试
29.程序设计风格
30.
Main()
{
inti,j,k;
28.动态测试通过发现错误。根据的设计方法不同,动态测试又分为与两类。
29.为了提高程序的易读性,同时为减少错误,提高软件开发效率,编码时应注意养成良好的。
30.C语言编程输出如下图形(不能仅用printf语句,写主要部分代码即可)
31.#include<stdio.h>
int a_prime(int n)
{ case 0: printf("**0**");break;
case 1: printf("**1**");break;
}
case 2: printf("**2**");break;
}
}
此程序输出为___
27.汇编语言是面向的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
A.CPU型号B.主频C.存储容量D.微机型号
11.在因特网域名中“.com”通常表示()。
A.商业组织B.教育机构C.政府部门D.企业部门
12.防错性程序设计对具有潜在危险性的操作进行检查,并给出出错信息。采用这种程序设计方法可提高系统的___。
A.正确性B.有效性C.健壮性D.精确性
13.结构化分析方法以数据流图、___和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型。
A.AVERAGE WHILE(性别="女")·AND·(职务="科长"·OR·职务="处长")基本工资,职务补贴
B.AVERAGE FOR性别="女"·AND·职务="科长"·OR·职务="处长"基本工资,职务补贴
C.AVERAGE FOR性别="女"·AND·(职务="科长"·OR·职务="处长")基本工资,职务补贴
f(a+1,n-1,x,c);}
A.2B.3C.4D.5
7.ROM属于计算机的____。
A.主存储器B.外存储器C.控制器D.运算器
8.二进制数1111000转换成十进制数是_____。
A. 134 B. 124 C. 120 D. 122
9.下面程序的输出结果是____。
int m[3][3]={ {1}, {2}, {3} };
18. Excel 2003主界面窗口菜单栏中包含的菜单选项的个数为______。
A. 6B. 12C. 15D. 9
19.数据库GZ.DBF已经打开,库中含有字段:"性别","职务","基本工资","职务补贴"等。统计该库中所有女职工,职务是"科长"和"处长"的基本工资和职务补贴的平均值,其命令是()。
D.AVERAGE ALL FOR职务="科长"·OR·职务="处长"·AND·性别="女"基本工资,职务补贴
20.56KModem是普通模拟电话线上的传播速度,具体为()
A.上下载均为56KB.上载33.6K,下载56K
C.上载56K,下载33.6KD.上下载仍为33.6K
21.传输速率1Mbps是指:()
16.程序编写(实现)阶段完成的文档有____。
A.详细设计说明书B.详细设计说明书、用户手册
C.模块开发宗卷、操作手册D.用户手册、操作手册
17.下面命令可以查看网卡的MAC地址__。
A. ipconfig /releaseB. ipconfig /renew
C. ipconfig /allD. ipconfig /registerdns
int n[3][3]={ 1, 2, 3 };
main( )
{ printf("%d\n", m[1][0]+n[0][0] );/*①*/
printf("%d\n", m[0][1]+n[1][0] );/*②*/
}
①A) 0B) 1C) 2D) 3
②A) 0B) 1C) 2D) 3
10.微型计算机PentiumⅣ1.7G中的1.7G表示
24.下列关于接口的叙述中哪些是错误的()
A.接口中的数据必须设定初值B.接口中无法声明一般方法
C.接口可以声明引用D.以上都正确
25.网络按覆盖的范围可分为广域网、___、___。
26#include<stdio.h>
main()
{ int a=1,b=0;
switch(a)
{ case 1: switch (b)
A.DFD图B.PAD图C.IPO图D.数据字典
14.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是()
A. ABCEDB. DBCEAC. CDABED. DCBEA
15.一座办公大楼内各个办公室中的微机进行联网,这个网络属于()。
A. WANB. MANC. LAND. GAN