软件工程复习题

一.基础题

  1. 什么是软件?软件的特点有哪些?
  • 软件:
    软件是产品,由满足一定要求的,具有可用性、可靠性的程序系统和与之相匹配的文档资料所组成.
  • 特点:
    • 复杂
    • 逻辑上的产品,不可见
    • 软件是开发的而不是制造的
    • 软件不会磨损
    • 软件的根据需求定制的
    • 软件成本高昂
  1. 什么是软件危机?软件危机的表现是什么?
  • 软件危机:
    软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机
  • 表现:
    经费经常突破预算,时间超出预期
    开发的软件不满足用户需求
    软件质量差,可维护性差
    软件开发生产率跟不上硬件发展速率
    软件文档资料不完整且不合格
    软件价格昂贵
  1. 软件危机产生的原因是什么?
  • 原因:
    • 软件本身:软件本身是逻辑软件,缺乏可见性,开发过程难以评价衡量;软件不会磨损,维护意味着修改软件;软件规模大,多人合作难以形成整体。
    • 开发过程:对用户需求没有完整准确认识,急于求成
  1. 什么是软件工程?软件工程的基本内容有哪两个方面?
  • 软件工程:
    采用工程的概念、原理、技术、方法,把正确的管理技术和最好的技术方法结合,用于开发维护软件
  • 基本内容:
  1. 软件工程三个要素是什么?
  • 方法:完成软件开发的各项任务的技术方法
  • 工具:为运用方法而提供的自动的或半自动的软件工程的支撑环境
  • 过程:为了获得高质量的软件所需要完成的一系列任务的框架
  1. 你知道的软件工程过程模型有哪些?
  • 瀑布模型:对软件开发阶段顺序执行,具有顺序性和依赖性,容易导致后期问题堆积
  • 原型模型:快速设计一个符合要求的模型然后不断修改,反复循环
  • 螺旋模型:具有风险分析的快速原型模型
  • 迭代模型:
  • 演化模型
  1. 什么是软件生命周期?它有哪几个阶段?
  • 软件生命周期:
    从提出开发要求开始直到软件报废的整个时期
  • 阶段:
    • 计划阶段

      • 问题定义

      • 可行性研究(能不能做)

        • 对各种因素做可行性分析:经济上、技术上、法律上、时间上和操作上
          在可行性分析结束时,应将成本、进度、预定日期和人员安排写入报告
          只有客户和项目小组都同意了可行性报告,才开始项目
      • 需求分析(做什么)

    • 开发阶段

      • 概念设计(怎么做)
      • 详细设计(具体如何做)
      • 编码
      • 测试
    • 维护阶段

      • 运行与维护
  1. 从哪几方面进行可行性研究?
  • 从技术、经济、社会、技术、政策因素等方面
  1. 软件需求分析从哪几方面进行?
  • 功能需求、性能需求、可靠性需求、可用性需求、出错处理需求
  1. 进行需求分析的步骤是什么?
  • 获取需求
  • 分析与综合,建立模型
    • 业务模型,业务流程图
    • 功能模型,数据流图
    • 数据模型,ER模型
  • 书写文档,需求规格说明书
  • 需求分析评审,一致性、完整性、现实性、有效性
  1. 用什么图可以描述系统的业务?
  • 业务流程图
  1. 用什么图可以描述系统的功能?
  • 数据流图
  1. 什么是数据流图?它包括几种基本符号?其作用是什么?
  • 数据流图:是描述数据处理的工具。从数据传输和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,是一种功能模型
    基本符号:
  • 作用:
    描述数据在系统中如何流动
  1. 画出你所做项目的0层(或1层)数据流图
  • 第0层
  1. 说出画数据流图的原则,至少5条
  • 数据存储必定有输入和输出
  • 主图必须包括四种基本符号
  • 一个加工至少有一个输入数据流和输出数据流
  • 每个数据流必定与一个加工关联
  • 数据流图不可夹杂控制信息
  • 每个元素必须有名字
  • 任何一个子图必须与上一层的一个加工相对应,且二者的输入流和输出流必须一致
  • 主图上数据必须封闭在外部实体之间
  1. 什么是数据字典,它与数据流图有什么关系?
  • 数据字典:
    关于数据信息的集合,它对数据流图中的各个元素作完整的定义与说明
  • 关系:
    数据字典和数据流图共同构成系统的逻辑模型,数据字典是数据流图的补充工具
  1. 需求分析阶段产生的主要文档?
  • 需求规格说明书SRS,software requirement specification
    用户手册
  1. 什么是软件概要设计,该阶段的基本任务是什么?
  • 概要设计:
    将需求分析转化为软件表示,给出软件的总体体系结构框架。
  • 基本任务:
    设计软件系统结构
    用户界面及数据库设计
    编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册、测试计划书)
    评审
  1. 什么是模块独立性?衡量模块独立程度的标准是什么?
  • 模块独立性:
    使每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。
  • 标准:
    耦合:不同模块之间的依赖的紧密程度
    内聚:模块内部各个元素之间的紧密程度
    最好做到高内聚低耦合
  1. 什么是耦合?什么是内聚?
  • 耦合:不同模块之间的依赖的紧密程度
  • 内聚:模块内部各个元素之间的紧密程度
  1. 画出你所做项目的软件结构图

  2. 用户界面设计准则有哪些?

  • 用户界面适合于软件的功能
  • 容易理解,无误,提供提示信息
  • 一致性(风格、术语、步骤、动作)
  • 减少用户记忆负担
  • 及时反馈信息
  • 出错处理
  • 适应于各种用户
  • 国际化、个性化
  1. 概要设计阶段产生的主要文档?
  • 概要设计说明书
  • 数据库设计说明书
  • 用户手册
  • 测试计划说明书
  1. 你在概要设计说明书中主要使用的图是什么,表达什么?
  • 系统结构图、软件模块图、ER图
  • 目的:
    • 系统结构图是体现系统整体框架和互相之间的联系
    • 软件模块图是为了确定模块之间的层次结构和调用关系
    • ER图反映了实体与实体之间的联系,描述现实世界的概念模型
  1. 什么是详细设计?内容?
  • 详细设计:
    说明如何具体实现这个系统
  • 内容:
    数据结构和算法设计
  1. 描述算法的工具有哪些?
  • 算法流程图:直观但是不表示数据结构
  • 盒图N-S图:直观表示作用域和层次结构,但是难以修改
  • 问题分析图PAD图
  • 判定表
  • 判定树
  • 过程设计语言PDL(伪代码)
  1. 算法流程图和业务流程图的区别是什么?
  • 系统流程图是描述信息在各个部件之间流动的情况,反映了主体框架
  • 算法流程图则是描述述在处理这些信息时用到的算法的执行过程,是对局部的。
  1. 详细设计阶段产生的主要文档?
  • 详细设计说明书
  1. 什么是软件设计说明书?主要包括什么内容?
  • 详细设计说明书是详细设计阶段的主要成果,也是编码阶段主要参考的文档。
  • 主要包括:
    编写目的,项目目背景,参考资料,需求概述,软件结构,程序的功能,性能,输入项目, 输出项目,算法,程序逻辑,接口,存储分配等。
  1. 你认为编码时要注意的问题有哪些?
  • 变量、变量命名规范
  • 代码对齐,排版整洁
  • 编写代码边注释
  • 一行代码只做一件事
  • 内存管理
  • 错误处理
  • 可移植性
  1. 什么是软件测试?应该由谁去测试?
  • 定义:
    软件开发过程必须有质量保证的活动,是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。
  • 软件测试人员
  1. 软件测试的目标是什么?软件调试的目的是什么?
  • 目标:
    设计一组高效的测试用例,以最小的工作量和时间来发现最大数量的错误
    发生程序中的错误,证明程序有错
  • 目的:
    调试是确定错误的位置、性质并纠正。
  1. 什么是白盒测试,设计白盒测试方案的技术是什么?
  • 白盒测试:
    又称:结构测试、玻璃盒测试、基于覆盖的测试。根据被测程序的逻辑结构设计测试用例;力求提高测试覆盖率;
  • 技术:
    • 逻辑覆盖法
  1. 什么是黑盒测试,黑盒测试的主要方法是什么?
  • 定义:
    又称:功能测试、数据驱动测试、基于规格说明书的测试
  • 方法:
  • 等价类划分、边界值分析、错误推测
  1. 什么是测试用例?一个测试用例包括哪些内容?
  • 定义:
    测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
  • 内容:
    测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。
  1. 软件测试的步骤是什么?
  • 需求分析
  • 制订测试计划
  • 设计测试用例与编写
  • 实施测试
  • 提交缺陷报告
  • 生成测试总结和报告
  1. 软件系统的主要测试内容有哪些?
  • 接口与路径测试
  • 功能测试
  • 健壮性测试
  • 性能测试
  • 用户界面测试
  • 信息安全测试
  • 压力测试
  • 可靠性测试
  • 安装/反安装测试
  1. 你对你所做项目作了什么测试?举例说明。
  • 用户界面测试、可靠性测试、健壮性测试
  1. 面向对象和面向过程的分析设计方法有什么异同?
  • 区别:
    面向对象注重对数据的使用,试图把数据以及对其的操作封装在一起,减轻对函数的依赖。面向过程侧重对函数的应用,依赖函数。
  • 共同点:
    面向对象也是基于函数的基础上,然后减弱对函数的依赖,侧重于数据。
  1. 什么是UML?你知道的UML图有那些?
  • 统一建模语言,是一种定义良好,易于表达,功能强大且普遍实现的建模语言
  • 用例图:表示系统的功能并指出各个功能的操作者(外部)
  • 静态图:表示系统的静态结构,包括类图、对象图、包图
  • 行为图:描述系统的动态行为和对象之间的合作关系、包括状态和活动图
  • 实现图:描述系统的物理实现,包括配置图和构件图
  • 交互图:描述系统的对象之间的动态合作关系,包括顺序图和合作图
  1. UML中用什么图描述功能需求比较合适?
  • 用例图
  1. UML中用什么图描述业务流程比较合适?
  • 活动图
  1. UML中的类图描述什么?
  • 系统中类及其相互之间的各种关系,本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系
  1. 软件维护的四类活动是什么?
  • 改正性维护
  • 适应性维护
  • 扩充与完善性维护
  • 预防性维护
  1. 什么是CMMI?
  • 中文名:集成的能力成熟度模型capability maturity model integration
    ① 是一套融合多学科的、可扩充的产品集合,同时也是工程实践与管理方法
    ② CMMI是在CMM基础上发展起来的,它继承并发扬了CMM的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成果。它不仅能够应用在软件工程领域,而且可以用于系统工程及其他工程领域。
  1. 你认为数据流图、系统流程图、软件结构图、E-R图、算法流程图、测试用例分别用于软件开发的哪个阶段?
  • 需求分析、需求分析、概要设计、概要设计、详细设计、测试
  1. 你们的“可行性研究报告”中用到了那些图?
  • 业务流程图
  1. 你们的“软件需求规格说明书”中用到了那些图?
  • 业务流程图、数据流图
  1. 你们的“概要设计说明书”中用到了那些图?
  • 软件模块图、ER图
  1. 你们的“详细设计说明书”中用到了那些图?
  • 软件结构图、算法流程图

二.综合题/开放题

  1. 如果没有软件工程,软件行业将会怎样?
  2. 和硬件相比,软件越来越贵,这是为什么?将来是否有可能改变这种趋势?
  3. 你认为如何使软件开发变得容易?
  4. 畅想一下理想的软件开发模式是什么?
  5. 90年代初,面向过程的软件开发模式的弊端越来越多,为什么逐渐被面向对象所取代?如果不是面向对象,又可能是什么?
  6. 面向对象软件开发的缺点有什么?
    初学者不易接受
    若整体系统规划不合理则会导致部件之间失调
    需要先进的硬件环境支持
  7. 软件开发的进步总是伴随着某些不能解决的问题而出现的,如软件危机,你认为目前我们面临的问题有哪些?是否有可能作为软件技术进步的契机?
  8. 为什么说软件测试技术还处于婴儿阶段,还有那些方面的问题需要我们去研究?目前什么是最困难的?
  9. 如果给你30万创业基金,让你开办一个软件公司,你会做什么?怎么做?
  10. 你觉得软件开发技术将来会向何处发展?为什么?
  11. 谈谈你对软件工程的理解?
  12. 你希望软件工程课程怎样学?
  13. 你在这门课上学到的印象最深的是什么?
  14. 学过的和正在学的其他课程中与软件工程的最大区别是什么?
  15. 怎样当组长?难点是什么?
  16. 收获最大的是什么?
  17. 学习中最困难的是什么?
  18. 能将软件工程联系起来的课程有什么?怎么联系?
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小子挺不错

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值