【软件工程】期末重点

Source

1)增量模型的特点?

分批次把产品提交给用户

2)快速原型和瀑布模型的特点?

一次把所有满足所有需求的产品提交给用户

3)螺旋模型的特点?

每个阶段都增加了风险分析过程的快速原型模型

4)软件生命周期的8个阶段?

软件定义时期:问题定义、可行性研究、需求分析

软件开发时期:总体设计、详细设计、编码和测试单元(实现)、综合测试

软件维护时期:运行维护

八个阶段所对应于的文档:除了需求分析是需求规格说明书,运行维护是评价设计文档,其它的均为“某个阶段+报告”

5)可行性研究的目的?

不是解决问题而是确定问题是否值得去解决

6)可行性研究的三个方面?

1、技术可行性

2、经济可行性

3、操作可行性

7)规格说明书的作用?

描述用户的全面的需求(属于需求分析阶段的报告,前面阶段的报告只能作为后面阶段的依据)

8)什么是1:1的联系,什么是1:n的联系?

1:1   一个部门只有一个经理,一个经理只在一个部门任职

1:n   1个老师教多门课程,每门课程只有一个老师来教

9)E-R图中的各个符号所代表的含义?

矩形:实体

圆角矩形:属性

菱形:关系

10)耦合(越低越好,不同模块之间的互联程度)

数据耦合是低耦合,好;控制耦合、内容耦合(最高)是高耦合,不好;

  1. 内聚(越高越好,同一个模块间的紧密程度)

功能(内聚):10 >顺序:9 >通信:7 >过程:5 >时间:3 >逻辑:1  >偶然:0

  1. 深度、宽度、扇入、扇出的计算?P101
  2. 面向数据流的设计方法?(把信息流映射成为软件结构)

信息流分为:1、交换流2、事务流(以事务为中心)

  1. 什么是结构程序设计?

尽可能少的使用GO TO 语句的程序设计方法

  1. 人机界面的设计质量,直接影响用户对软件的评价,从而影响软件产品的竞争力和寿命,所以要对它足够重视
  2. 设计人机界面会遇到的四个问题?
  1. 系统响应时间
  2. 用户帮助设施
  3. 出错信息处理
  4. 命令交互
  1. Jackson方法的三个步骤?
  1. 确定输入输出数据结构
  2. 分析输入数据结构和输出数据结构中有对应关系的数据单元
  3. 数据结构图导出程序结构图
  4. 列出所有操作和条件,并把它分配到程序结构图的适当位置
  5. 伪码表示程序
  1. 测试的目标和定义?
  1. 测试是为了发现程序中的错误而执行程序的过程
  2. 好的测试方案是极其可能发现迄今为止未发现过的错误的测试方案(将来时)
  3. 成功的测试是发现了迄今为止未发现的错误的测试(完成时)
  1. 白盒测试包含什么?
  1. 逻辑覆盖
  2. 控制结构测试
  1. 逻辑覆盖包含了哪些覆盖?(语句、判定、条件考大题要会)
  1. 语句覆盖(最弱)
  2. 判定覆盖
  3. 条件覆盖(相对强)
  4. 判定/条件覆盖
  5. 条件组合覆盖......
  1. 黑盒测试的三种方法?
  1. 等价划分
  2. 边界值分析
  3. 错误推测
  1. 白盒测试和黑盒测试的区别?

白盒测试:测的是程序内部原理结构(开发者角度)

黑盒测试:测的是用户功能(用户角度)

  1. 调试和测试目标的区别?

调试的目标:找出软件错误的原因并改正

测试的目标:找出错误,但是不改正

  1. 调试途径有哪三个?
  1. 蛮干法(最差)
  2. 回溯法
  3. 原因排除法
  1. 软件维护的定义?

软件维护就是在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程

  1. 面向对象方法学的出发点和基本原则?

尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程

  1. 面向对象的设计方法和传统的设计方法相比较有什么不同?

使用现实世界的概念抽象地思考问题从而自然地解决问题

  1. 分清楚类和实例的概念?

类:工人、护士、医生

实例:具体到某个人,张三、李四....

  1. 什么是封装?

封装就是信息隐藏,通过封装对外界隐藏了对象的实现细节

  1. 有哪三种模型?
  1. 对象模型(最基本最重要)
  2. 动态模型
  3. 功能模型
  1. UML的图与模型的对应建立关系?
  1. UML的类图----->对象模型
  2. 状态图------->动态模型
  3. 数据流图/例图------->功能模型
  1. 优秀软件设计的一个重要特点是容易维护
  2. 生命周期方法学中:

把设计划分成:1、总体设计2、详细设计

面向对象设计:1、系统设计2、对象设计

36)软件项目成功的关键:高素质的人员

37)三个程序员组的特点?

民主制程序员组的特点:(适合组内都是经验丰富的程序员)

  1. 小组成员完全平等,可以协商做出技术决策。
  2. 小组规模小
  3. 采用非正式的组织方式(名义组长)
  4. 积极性高,但是缺乏领导和权威

主程序员组的特点:(有很多方面不切实际)

  1. 专业化,每个人只完成受过专业训练的工作
  2. 层次化:能力强的程序员指挥每名组员工作,并由其全面负责

现代程序员组的特点:

  1. 把主程序员分为技术负责人和行政负责人
  2. 大型项目组采取分小组、多层次方式
  3. 分散决策提高成员积极性
  1. 估算软件规模分为哪两类?
  1. 代码行技术
  2. 功能点技术

题型:

单选题(20个)

判断题(10个)

简答题(4个)

设计题(4个)参考练习