『Professional course』软件工程基础期末复习

针对ZJNU2020-2021学年第一学期计师&计非班软工基础期末考试的资料整理

QQ图片20210113223140 _2_.jpg

题型

选择题 10 2

判断题 10 2

简答题 4 5

综合题 4 10

选择题&判断题

第一章 软件工程概述

  1. 什么是软件工程:
    • 软件工程是指导计算机软件开发维护的一门工程学科。
    • 软件工程就是为了经济的获得可靠的且能在实际机器上有效运行的软件,而建立和使用的完善工程原理。
    • ①把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;②研究①中提到的途径。
  2. 软件工程技术的两个明显特点:强调规范化、强调文档化
  3. 什么是软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
  4. 软件工程方法学包括三个要素方法工具过程
  5. 目前使用得最广泛的软件工程方法学,分别是传统方法学面向对象方法学
  6. 软件生命周期:指软件产品或软件系统从提出、设计、投入使用到被淘汰的全过程。由软件定义软件开发运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。软件生命周期模型也被称为软件过程模型.
  7. 软件工程过程软件规格说明软件开发软件确认软件演化
  8. 软件开发过程一般包括:需求设计实现维护等活动
  9. 软件开发的基本策略:复用、分而治之、优化——折衷

第二章 可行性研究

  1. 可行性研究的目的:就是用最小的代价尽可能短的时间内确定问题是否能够解决。

  2. 可行性研究主要任务:了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。

  3. 可行性研究的内容技术可行性、经济可行性、操作可行性,必要时还应该从法律社会效益等更广泛方面考虑。

  4. 数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。

  5. 数据字典组成数据流数据流分量数据存储处理

  6. 数据字典特点

    • 通过名字能方便查询数据定义
    • 没有冗余
    • 尽量不重复在规格说明的其他组成部分中已经出现的信息;
    • 容易更新修改
    • 单独处理描述每个数据元素信息;
    • 定义的书写方法简单方便而且严格
  7. 数据字典用途

    • 作为分析阶段的工具;(改进通信,消除误解)
    • 包含的对每个数据元素的控制信息是很有价值的。
    • 开发数据库的第一步
  8. 数据字典的实现

    • 数据流条目
    • 数据存储条目
    • 数据项条目:指不可再分解的数据单位。
    • 加工条目(加工规格说明):用来说明DFD中数据加工的加工细节。
  9. 数据流图(DFD):描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。

第三章 需求规格说明书

  1. 数据模型包含三种相互关联的信息:数据对象、描述数据对象的属性及数据对象彼此间相互连接的关系。
  2. 图形工具:层次方框图、Warnier图、IPO图

第五章 总体设计

  1. 总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构
  2. 模块化是衡量软件设计好坏的一个重要准则
  3. 模块化方法带来的好处:一方面,模块化设计降低了系统的复杂性,使得系统容易修改;另一方面,推动了系统各个部分的并行开发,从而提高了软件的生产效率。
  4. 抽象:指的是解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性而不考虑细节
  5. 信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面
  6. 模块独立的含义:模块完成独立的功能、符合信息隐蔽和信息局部化原则、模块间关联和依赖程度尽量小
  7. 模块的独立程度可以由两个定性标准来度量,即模块之间的耦合性和模块自身的内聚性。
  8. 原则:尽量使用数据耦合、少用控制耦合和特征耦合、限制公共耦合的范围、坚决避免使用内容耦合
  9. 事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到强内聚、弱耦合。
  10. 常用的软件结构设计启发规则:
    • 改进软件结构提高模块的独立性(降低耦合提高内聚,如消除重复功能)
    • 模块规模应该适中(过大可理解程度下降,过小开销过大、系统接口复杂)
    • 深度、宽度、扇出、扇入都应适当(深度:层次过多考虑合并;宽度:宽度越大系统越复杂;扇出:好的典型系统一般3或4;扇入:不能单纯追求高扇入)
    • 模块的作用域应该在控制域之内(控制域:模块本身和其下属模块的集合;作用域指受该模块内一个条件判定影响的所有模块的集合。作用域是从功能方面考虑的,控制欲是从结构方面考虑的)
    • 力争降低模块接口的复杂程度(接口传递信息应简单且和模块功能一致)
    • 设计单入口单出口的模块**模块功能应该可以预测**(相同输入产生相同输出,但要防止模块功能过分局限)
  11. 模块规模:应该适当。过大往往是由于分解不充分,过小则开销大于有效操作。
  12. 作用域和控制域:作用域应该在控制域之内。(判定点往上移或者把不符合的移进来)
  13. 降低模块接口复杂度:降低耦合、提高内聚。接口传递信息应简单且和模块功能一致。

第六章 详细设计

  1. 详细设计的结果基本上决定了最终的程序代码的质量。结构程序设计技术是详细设计的逻辑基础。
  2. 结构程序设计的定义:是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口和单出口的控制结构。
  3. 三种基本控制结构:顺序、选择、循环(再加两种DO-CASE型多分支结构DO-UNTIL型循环结构
  4. 结构程序设计:经典的结构程序设计(只使用三种基本的控制结构)、扩展的结构程序设计(使用五种基本的控制结构)、修正的结构程序设计(在上面五种结构基础上,加上LEAVE或BREAK结构)
  5. 人机界面设计的设计问题:系统响应时间、用户帮助设施、出错信息处理、命令交互。
    • 系统响应时间指从用户完成某个控制动作(例如,按回车键或单击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间。重要属性为长度和易变性
    • 用户帮助设施:向用户手册那样帮助用户操作。
    • 出错信息处理:出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”。有效的出错信息能提高交互式系统的质量,减轻用户的挫折感。
    • 命令交互
  6. 过程设计工具:图形工具、表格工具、语言工具
  7. PDL 是用正文形式表示数据和处理过程的设计工具。
  8. Jackson 方法是一种典型的面向数据结构的分析与设计方法。
  9. 程序复杂性主要指模块内程序的复杂性。
  10. McCabe 度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。
  11. Halstead 方法,工具程序中运算符和操作数的总数来度量程序的复杂程度

第七章 实现

  1. 通常把编码和测试统称为实现
  2. 程序设计语言分为以下几类:机器语言、汇编语言、高级语言
  3. 编码风格包括:源程序文档化、数据说明、语句结构、输入/输出方法和效率几个部分。力图从编码原则的角度提高程序的可读性,改善程序质量。
  4. 软件测试不等于程序测试,软件测试应贯穿于软件定义与开发的整个期间;
  5. 静态测试方法:人工测试方法,计算机辅助静态测试方法。动态测试方法:白盒测试,黑盒测试
  6. 测试可视为分析、设计、编码三个阶段的最终复审,以保证软件质量
  7. 测试过程需要三类输入:软件配置、测试配置、测试工具
  8. 大型软件系统的测试过程基本上由模块测试、子系统测试、系统测试、验收测试和平行运行等五个步骤组成。
  9. 单元测试主要对模块的五个基本特性进行评价:模块接口、局部数据结构、重要的执行通路、出错处理通路、边界条件
  10. 集成测试是测试和组装软件的系统化技术
  11. 集成测试方法通常采用黑盒测试技术。实施策略:非渐增式测试、渐增式测试
  12. 渐增式测试分为自顶向下结合(深度优先、广度优先)、自底向上结合
  13. 自底向上测试方法的优缺点与上述自顶向下测试方法的优缺点刚好相反。
  14. 确认测试必须有用户的参与,或者以用户为主。通常运用黑盒测试方法
  15. 用于系统测试的测试类型:恢复测试、安全性测试、强度测试、性能测试
  16. 通常把测试数据和预期的输出结果称为测试用例。
  17. 软件测试步骤:模块测试子系统测试系统测试验收测试平行运行

第八章 维护

  1. 在软件产品发布后对软件产品进行的修改就是所谓的软件维护。
  2. 软件维护的类型有:改正性维护、适应性维护、完善性维护、预防性维护
  3. 事实证明,在几种维护活动中,完善性维护所占的比重最大。
  4. 软件维护活动所花费的工作占整个生存期工作量的70%以上
  5. 在软件维护中,影响维护工作量的程序特性有6种:系统大小、程序设计语言、系统年龄、数据库技术的应用、软件开发技术、其它
  6. 软件可维护性是指软件维护人员理解、改正、改动或改进软件的难易程度。
  7. 目前广泛使用的是用如下的七个特性来衡量程序的可维护性:可理解性、可使用性、可测试性、可移植性、可修改性、效率、可靠性

第九章 面对对象方法学

  1. 传统方法学的缺点:生产率提高的幅度远不能满足需要、软件重用程度很低;软件仍然很难维护;软件往往不能真正满足用户需要
  2. 面向对象方法学的优点:与人类习惯的思维方法一致、稳定性好、可重用性好、可维护性好、较易开发大型软件产品
  3. 对象的特点:以数据为中心、对象是主动的、实现了数据封装、本质上具有并行性、模块独立性好
  4. 设计UML的目标:统一不同的建模语言、统一开发阶段、统一不同的软件应用论域、统一内部结构、与多种不同的开发过程并存
  5. 任何方法都应由建模语言和建模过程两部分构成。建模语言提供了用于表示设计的图形符号,建模过程描述了进行设计时所需遵循的步骤。

第十章

  1. 在面向对象分析中,主要由对象模型、动态模型和功能模型组成。对象模型是最基本、最重要、最核心的。
  2. 面向对象分析的关键工作,是分析、确定问题域中的对象及对象间的关系,并建立起问题域的对象模型
  3. 复杂问题(大型系统)的对象模型通常由下述5个层次组成:主题层、类与对象层、结构层、属性层、服务层
  4. 面向对象分析首要的工作,是建立问题域的对象模型。

第十一、十二章

  1. 面向对象设计细分为系统设计和对象设计。
  2. 面向对象设计的准则:模块化、抽象、信息隐藏、弱耦合、强内聚、可重用
  3. 启发规则:设计结果应该清晰易懂、一般-特殊结构的深度应适当、设计简单的类、使用简单的协议、使用简单的服务、把设计变动减至最小
  4. 软件复用可分为以下3个层次:知识复用、方法和标准的复用 、软件成分的复用
  5. 类构件有3种复用方式,分别是实例复用、继承复用和多态复用。
  6. 面向对象的对每个类进行单元测试方法:随机测试;划分测试;基于故障测试。
  7. 面向对象的集成测试方法:基于线程的测试;基于使用的测试。
  8. 面向对象的确认测试可以应用传统的黑盒测试方法。但是,基于情景的测试是主要的方法。

第十三章

  1. 估算软件规模:代码行技术、功能点技术
  2. 工作量估算:静态单变量模型、动态多变量模型、COCOMO2模型
  3. 人员组织:民主制程序员组、主程序员组、现代程序员组
  4. 能力成熟度模型(CMM)是改进软件过程的有效策略。

简答题

一、什么是软件危机 | 软件危机产生的原因 | 解决的措施

  • 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件不同程度地存在这些问题。
  • 产生软件危机的原因 :1.与软件本身的特点有关;2.和软件开发与维护的方法不正确有关。
  • 我们可以通过了解产生软件危机的原因,澄清错误认识,建立起关于软件开发和维护的正确概念,及时采取一系列综合措施来达到消除的目的。这些措施包括技术措施(方法和工具)组织管理措施,以及运用软件工程理论和实践

二、面向对象分析建模OCA建模建立的三个子模型 | 其中最重要最基本的是哪个模型 | 对于这个复杂问题的模型是由哪5个层次组成的

  • 分析建模的三种模型:

    QQ图片20210114013559.png
  • 对象模型

  • 复杂问题的对象模型划分为五个层次:

    QQ图片20210114013614.png

    说要熟悉用哪些工具

三、内聚和耦合的级别

会排序就行

  • 内聚(高→低)

    QQ图片20210114013627.png

  • 耦合(高→低)

    QQ图片20210114013639.png

四、需求分析工作结果有哪两个 | 需求分析说明书文档应该从哪几个方面去验证(四个方面)

  • 需求分析工作的两个结果:
    • 分析建模
    • 软件需求规格说明
  • 验证需求分析说明书文档:
    • 一致性
    • 完整性
    • 现实性
    • 有效性

五、可行性分析研究的主要内容是什么

  • 可行性研究主要技术可行性经济可行性以及操作的可行性3个方面加以研究,必要的时候还应该从法律社会效益等更广泛方面研究每种解法的可行性。

六、面向对象方法的主要优点是哪些?

  • 与人类习惯的思维方法一致
  • 稳定性
  • 可重用性
  • 较易开发大型软件产品
  • 可维护性

七、软件文档的分类(按照课本来)分成2类,分别描述的是什么 | 应该满足什么要求?

  • 分类 描述
    用户文档 描述系统功能使用方法,并不关心这些功能是怎样实现
    系统文档 描述系统设计、实现和测试等各方面的内容
  • 软件文档应满足的要求:

    • 必须描述如何使用这个系统,没有这种描述时即使是最简单的系统也无法使用
    • 必须描述怎样安装和管理这个系统
    • 必须描述系统需求和设计
    • 必须描述系统的实现和测试,以便使系统成为可维护

八、过程设计的工具可以分几类 | 课本中学习过的分别属于哪类

QQ图片20210114013657.png

综合题

DFD

QQ图片20210114013710.png

注意:所有的图符都要有名字,数据流,源点,加工,存储都要有名字,最多只有2条岔出去

程序、伪码转换判定树、PAD、盒图

判定树

QQ图片20210114013722.png

PAD图/问题分析图

QQ图片20210114013737.png

盒图/N-S图

QQ图片20210114013748.png

McCabe复杂性

= 边数 - 节点数 + 2(以流程图计算

软件过程模型&人员组织模型选择

瀑布模型

  • 阶段间具有顺序性依赖性

  • 推迟实现的观点。

  • 质量保证观点。(每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。)

  • 优势是规范的、文档驱动的方法;这种模型的问题是,最终交付的产品可能不是用户真正需要的

  • 对于需求明确、规模小的产品

  • 潜在功能变化少

快速原型模型

  • 使用这种软件过程开发出的软件产品通常能满足用户的真实的需求
  • 软件产品的开发过程基本上是线性顺序过程
  • 一般用于最终系统的早期用户评价,开发工期短,质量有保证。
  • 不需要提前获取用户需求

快速、容易修改

增量模型

  • 能在较短时间内向用户提交可完成部分的工作的产品;

  • 逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户带来的冲击。

  • 增量模型具有能在软件开发的早期阶段使投资获得明显回报易于维护的优点,开发出的软件具有较好的可扩充性。但是,要求软件工程师具有较高的技术水平,能够设计出开放的软件体系结构。

  • 快速原型并不快,需要快的应该选增量模型,瀑布模型比快速原型都快
  • 风险分析会选择螺旋模型(注意!)

民主制程序员组

重要特点:小组成员完全平等,享有充分民主,通过协商做出技术决策。通常采用非正式的组织方式。

主要优点:

  • 组员们对发现程序错误持积极态度。这种态度有助于更快速地发现错误,从而导致高质量代码
  • 有利于攻克技术难题

要求:多数成员是经验丰富技术熟练的程序员。

项目上具有创新性

主程序员组

主程序员组用经验多、技术好、能力强的程序员作为主程序员。

特性:专业化、层次性

核心人员的寻找困难,其中最大的问题是寻找主程序员的人选困难;小组成员发现程序错误的积极性不高。

已有完整需求

现代程序员组

解决方法,取消了主程序员的大部分行政管理工作。一分为二,技术组长、行政组长。此外,还可以在合适的地方采用分散做决定的方法。

大型项目组采取分小组、多层次方式,分散决策提高成员积极性。

适合大型项目

作业

  • 问题1:假定你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本的开发。由于市场竞争激烈,公司规定了严格的完成期限并且已经对外公布。你打算采取哪种软件生命周期模型?为什么?

    答: 采用增量模型。理由对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作。使用增量模型开发软件时可并行完成开发工作,能在较短时间内向用户提交可完成部分的工作的产品,以后根据需要再逐步增加产品功能,因此能加快开发进度。

    (分析:从陈述事实可以得到3个结论:1,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;2,该公司软件工程师对字处理软件很熟悉,有丰富的开发经验,具有增量模型开发新版字处理软件所需要的技术水平;3,该软件受到广大用户的喜爱,今后很可能还需要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改进和扩充。)

  • 问题2:假定要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你给出选择的理由。

    答:采用瀑布模型。理由:对这个软件的需求很明确,实现开平方根的算法也很成熟,因此,既无须通过原型来分析需求来验证设计方案。此外,一旦实现并测试完成之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该产品。
    (1.需求明确;2.功能单一,规模小;3.潜在功能变化少。)

  • 问题3:假定你要为一家生产和销售长筒靴的公司开发一个软件,使用此软件来监控该公司是存货, 并跟踪从购买橡胶开始,到生产长筒靴、发货给各个连锁店,直至卖给顾客的全部过程,以保证生产、销售过程的各个环节供需平衡,既不会停工待料现象,也不会有供不应求现象。你为这个项目选择生命周期模型时使用什么准则为合适?

    答:选用快速原型模型。
    理由:
    1、软件系统使用人员繁杂,需求确定困难;
    2、软件应用环节多,功能变化多,初期需求变化多,需要在修改原型的过程中明确需求。

设计测试用例

白盒

不能多写,多写扣分,最好两组。要写预期的路径和结果

  • 语句覆盖:使程序中每个语句至少执行一次,语句覆盖是最弱的逻辑覆盖

  • 判定覆盖:每个语句执行一次,且每个判定的真假分支都至少执行一次。判定覆盖仍是弱的逻辑覆盖。

  • 条件覆盖:每个语句执行一次,且使每个判定的每个条件的可能取值至少执行一次。

    条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖

  • 判定/条件覆盖:选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。

    即,能同时满足判定/条件两种覆盖标准取值。

黑盒

  • 等价类划分

    先划分等价类表,再编号,防止遗漏,尽可能完成所有等价类覆盖。有效的尽可能多的去覆盖,用尽量少的样例覆盖尽可能多的测试样例。每个无效等价类,单独设计测试类。

    测试样例:测试数据+预期结果,覆盖了哪个类最好写一下。

  • 边界值分析

    边界值要作为测试用例,对于测试样例,需要取最接近边界值的测试样例。

一些知识点

结构化分析的三个模型

  • 模型 描述
    数据模型 数据对象描述 实体-联系图(ER图)
    功能模型 加工规格说明 数据流图
    行为模型 控制规格说明 状态转换图
    • 数据字典(DD):模型核心(中心库)

    • ER图(ERD):描述用户的数据要求

    • 数据流图(DFD) :

      • 指明数据在系统中移动时如何被变换;
      • 描述对数据流进行变换的功能;
    • 状态转换图(STD):指明作为外部事件的结果,系统将如何动作。

    数据字典:对模型元素进行精确定义和详细解释

一些有的没的

判断

正确

  • 软件测试只能证明程序有错,不能证明程序没有错误。

  • 实体——关系图中的数据对象之间的关系也有可能有属性。

  • 独立编译的机制对于大型软件的编码工作极为重要。

  • 在边界值分析方法,输入/输出等价类的边界值都是要做为测试用例的。

  • 为了使得软件容易测试, 应该使用高级的程序设计语言编制程序。

  • 程序测试是一个程序的执行过程, 目的是为了发现软件中隐藏的错误。

  • 如果程序中连锁式连接了8个判定(IF)结构, 则程序中总的路径数达$2^8$ 。

  • 白盒测试仅与程序的内部结构有关, 完全可以不考虑程序的功能要求。

  • 使用括号以改善表达式的清晰性。

  • 不要修补不好的程序, 要重新写。

  • 不要进行浮点数的相等比较。

  • 使用有意义的标识符。

  • 利用数据类型对数据值进行防范。

  • 结构化方法和JSP方法都不适合于大型软件的开发。

  • 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序实现。

  • RCP法与RSP法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而后者将被废弃。

  • SA法是面向数据流,建立在数据封闭原则上的需求分析方法。

  • HIPO法既是需求分析方法,又是软件设计方法。

  • 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R 图。

  • 用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。

  • 信息隐蔽原则有利于提高模块的内聚性。

  • 所谓结构冲突,是指输入数据与输出数据之间很少或没有结构上的对应关系。通常解决 的办法是:构造一个或者多个中间结构,在输入和输出结构之间进行转换。

  • 项目应用领域是选择语言的关键因素。

  • 要用快速原型法开发软件,应选用4GL语言。

  • 良好的程序设计风格简单说就是高的编程技巧。

  • 类是指具有相同或相似性质对象的抽象,对象是抽象的类,类的具体化就是对象。

  • 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。

  • 面向对象的设计的主要目标是提高生产效率,提高质量和提高可维护性。

  • 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。

  • 面向对象的分析是用面向对象的方法对目标系统的问题空间进行理解、分析和反映。通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构。

  • 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系。

  • 复用也叫重用或再用,面向对象技术中的“类”,是比较理想的可重用软构件。有三种重用方式:实例重用、继承重用、多态重用。

  • 主题是一种关于模型的抽象机制,它是面向对象模型的概貌,也是关于某个模型要同时考虑和理解的内容,主题起一种控制作用。

  • 支持继承性是面向对象程序设计语言和传统程序设计语言在语言机制方面的根本区别。

  • 面向对象的分析过程主要包括三项内容:理解、表达和验证。

  • 面向对象的设计的主要目标是提高生产效率、提高质量和提高可维护性。

  • UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的。

  • 单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。

  • 功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。

  • 发现错误多的模块,残留在模块中的错误也多。

  • 在分析规范(因、果)的基础上画出因果图,再将其转换为有限项判断表,就容易得出测试用例。

  • 有效性测试是在模拟环境(或开发环境)下运用黑盒法,验证软件特性是否与需求符合。

  • 在发现错误后,则应按照一定的技术去纠正它,纠错的关键是“错误定位”。

  • 强调简明性的程序出错率低。

  • 用面向对象方法开发的软件系统,可维护性好。

  • 软件工程管理是对软件项目的开发管理,是对整个软件生存期的所有活动进行管理。

  • 直接影响软件开发风险的因素是成本估算。

  • CMM将软件过程的成熟度分为以下五个级别:初始级、可重复级、已定义级、 已管理级和优化级。

  • CMM对开发一个软件所做的基本要求是“有章可循、有章必循”。

错误

  • 在软件开发的过程中,工作量最大的一个阶段就是编写程序。

    错误。在软件的开发过程中,工作量最大的一个阶段应是测试阶段

  • 在开发初始原型的目的是为了确定用户的基本需求。

    错误。只有确定了用户的基本需求之后才可以开发初始原型,初始原型表达了用户的基本需求。

  • 尽可能推迟程序的逻辑实现是按照瀑布模型开发软件的一条重要的指导思想。

    错误。尽可能推迟程序的物理实现是按照瀑布模型开发软件的一条重要的指导思想。

  • 一般说来,模块的内聚程度越高,它们之间的耦合程度也越高。

    错误。一般来说,模块的内聚程度越高,它们之间的耦合程度也就越低

  • 结构化程序设计方法能改善程序结构,提高程序的运行效率。

    错误。结构化程序设计方法能改善程序结构,但往往降低了程序的运行效率

  • 如果测试数据满足条件覆盖,则必然满足判定覆盖。

    错误。对于特定的程序而言,满足条件覆盖的测试数据不一定必然也满足判定覆盖。

  • 信息隐蔽原则禁止在模块外使用在模块接口说明的关于该模块的信息。

    错误。信息隐蔽原则应该隐蔽的不是有关模块的一切信息,而是模块的实现细节

  • 每一个类都是其响应对象的一个实例。

    错误。每一个对象都是相应类的一个实例。

  • 编译程序可以发现源程序的一切错误,因此是程序正确性证明的使用工具。

    错误。编译程序只能发现源程序中的语法错误,并不能证明程序的正确性。

  • 计算机软件由两部分组成:一是机器可执行的程序;二是机器不可执行的,与软件开发、运行、维护和使用相关的数据。

    错误。计算机软件由两部分组成:一是机器可执行的程序及有关数据;二是机器不可执行的,与软件开发、运行、维护和使用相关的文档资料

  • 制定软件系统的确认测试准则时在软件生命周期中的设计阶段进行的。

    错误。制定软件系统的确认测试准则是在软件生命周期中的需求分析阶段进行的。

  • 为了快速完成集成测试, 采用一次性集成方式是适宜的。

    错误。采用一次性集成方式进行模块组装,往往成功的可能性低,而且出现错误时,不容易确定在什么地方出了问题,因此应采用增殖式集成方式,可以把出错的范围局限到少数模块中间。

  • 好的测试用例应能证明软件是正确的。

    错误。好的测试用例是能够发现新错误的测试用例,发现不了问题的测试用例就不是好的测试用例,用它们做测试是浪费时间和金钱。

  • 对递归定义的数据结构不要使用递归过程。

    错误。对递归定义的数据结构,应当使用递归过程来解决基于这种数据结构的应用问题。

  • 尽可能对程序代码进行优化。

    错误。程序代码的优化工作应交给编译器来做,程序设计时应首先考虑程序代码的清晰性、简明性、可读性、正确性、以至于可维护性。

  • 应尽可能多地输出中间结果。

    错误。输出中间结果只是在调试程序时才有用,其它时候输出大量中间结果,不但浪费资源,而且给使用者造成麻烦。

  • 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。

    错误。从文件输入数据时,应当使用文件结束符来判断输入的结束,使用计数方法判断输入结束不一定是最佳方式。

  • 程序中的注释是可有可无的。

    错误。程序中的注释是必须的,不是可有可无的。

  • 软件就是程序,编写软件就是编写程序。F

  • 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。F

  • 结构化方法的工作模型是使用螺旋模型进行开发。F,结构化方法可以使用数据模型、功能模型、行为模型进行开发。

  • 原型化开发方法包括生成原型和实现原型两个步骤。F

  • 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。F

  • 软件工具的作用是为了延长软件产品的寿命。F

  • 软件工程过程应该以软件设计为中心,关键是编写程序。F

  • 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。(×)

  • 在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×)

  • 加工小说明是对系统流程图中的加工进行说明。(×)

  • 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×)

  • 需求分析的主要方法有SD法、OOA法及HIPO法等。(×)

  • 分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。(×)

  • 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。 (×)

  • 在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用。(×)

  • 中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使 用事务分析技术得到初始的模块结构图。(×)

  • SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。 (×)

  • 当模块的控制范围是其作用范围的子集时,模块之间的耦合度较低。(×)

  • JACKSON方法是以数据流、数据封闭性准则逐层分解的。(×)

  • 程序设计语言的工程特性包括:可移植性、可重用性、可维护性、局部性和顺序性。(×)

  • FORTRAN、Pascal、C语言、PL/1和汇编语言都是科学工程计算可选用的语言。(×)

  • 提高程序效率的根本途径是选择良好的设计方法、数据结构与算法。(×)

错误部分联系四开始没加入:D

选择

  • 软件工程的主要目标是(C)。

      A) 软件需求  B) 软件设计   C) 风险分析 D) 软件实 现
  • SA法的主要描述手段有(B)。

    A) 系统流程图和模块图
    B) DFD图、数据词典、加工说明
    C) 软件结构图、加工说明
    D) 功能结构图、加工说明
  • 在E-R模型中,包含以下基本成分(C)。

    A) 数据、对象、实体
    B) 控制、联系、对象
    C) 实体、联系、属性
    D) 实体、属性、联系
  • 数据字典是数据流图中所有元素的定义的集合,一般由以下四类条目组成(C)。

       A) 数据说明条目、控制流条目、加工条目、数据存储条目
       B) 数据流条目、数据项条目、文件条目、加工条目
       C) 数据源条目、数据流条目、数据处理条目、数据文件条目
       D) 数据流条目、数据文件条目、数据池条目、加工条目 
  • 从工程管理的角度来看,软件设计分两步完成(D)。

    A) ①系统分析②模块设计                 B) ①详细设计②总体设 计
    C) ①模块设计②详细设计                 D) ①总体设计②详细设 计
  • 源程序的效率与(D)阶段确定的算法的效率直接有关。

    A) 概要设计         B) 总体设计         C) 单元设计         D) 详细设计
  • 渐增式是将模块一个一个地连入系统,每连入一个模块(C)。

    A) 只需要对新连入的模块进行测试
    B) 都不需要再进行测试
    C) 要对新子系统进行测试
    D) 都要进行回归测试
  • 等价分类法的关键是(C)。

    A) 确定等价类的边界条件
    B) 按照用例来确定等价类
    C) 划分等价类
    D) 确定系统中相同和不同的部分
  • 各种软件维护的类型中最重要的是( A)。

     A) 完善性维护     B) 纠错性维护         C) 适应性维护         D) 预防性维护
  • 软件工程管理的对象是(B)。

    A) 软件开发人员                         B) 软件工程项目
    C) 软件开发过程                         D) 软件开发速度
  • 以下对软件工程管理的任务和目标最准确的描述是(D)。

    A) 明确软件开发项目的工作范围、可能遇到的风险、需要的资源
    B) 明确软件开发中要实现的任务和需要经历的里程碑
    C) 明确所需的工作量以及进度安排
    D) 以上所有答案
  • 在软件管理资源要求中,最为重要的、起决定性的资源是以下哪种资源(C)。

    A) 硬件资源                             B) 软件资源
    C) 人力资源                             D) 软件复用性及软件部件库
  • 开发一个软件工程的第一步是(A)。

    A) 可行性研究                             B) 组织开发人员 
    C) 购买开发工具                         D) 开发任务指定
  • 可行性报告中不包括以下哪个方面(C)。

    A) 技术上的可行性                        B) 经济上的可行性 
    C) 人力的可行性                            D) 以上三项
  • 影响软件开发成本估算的因素不包括以下哪项(D)。

    A) 软件人员业务水平                     B) 软件开发规模及复杂度 
    C) 开发所需时间                             D) 开发所需硬件资源
  • 自底向上的估计法的特点是(B)。

    A) 简单、工作量小、误差大 
    B) 精度高,但缺少子任务(模块)间的联系
    C) 估算较精确,但区分类比较困难
    D) 复杂、不可行,一般不采用此种方法
  • 对一个软件工程来说,占总工作量的百分比最大的工作是(D)。

    A) 需求分析                         B) 软件设计 
    C) 编码工作                         D) 测试和调试工作
  • 软件质量度量的方法包括(D)。

    A) 精确度量         B) 全面度量     C) 简易度量         D) 以上所有答案
  • CMM表示(A)。

    A) 软件过程成熟度模型                 B) 软件过程工业化控制
    C) 国际软件质量认证                 D) 软件统一性标准
  • 小组成员完全平等,享有充分民主,通过协商做出技术决策。这种组织方式是:

    民主制程序员组

    传统程序员组

    主程序员组

    现代程序员组

  • 下列属于面向对象开发方法的是:

    Jackson

    Booch

    HIPO

    warnier

  • 软件开发技术一般不包括:

    软件开发方法学

    软件工程环境

    软件工具

    软件质量度量

  • 软件测试方法中的( )属于静态测试方法

    黑盒法
    逻辑覆盖
    错误推测
    人工检测

  • Jackson方法是一种面向( )的设计方法

    数据流

    数据结构

    对象

    控制

  • 软件需求规格说明的内容不包括( )

    算法的详细描述

    软件主要功能

    软件的性能

    用户界面及运行环境

  • 软件生命周期中所花费用最多的阶段是:

    软件编译

    软件测试

    软件维护

    详细设计

  • 面向对象方法学的主要优点不包括:

    稳定性好

    可重用性好

    与人类习惯的思维方法一致

    运行效率

  • 经济可行性研究的范围包括:

    资源有效性

    管理制度

    效益分析

    开发风险


  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Gghost
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信