### 软件工程知识点解析
#### 一、软件生命周期模型的选择
1. **增量模型的应用**
- **背景**:作为中北大学软件工程期末复习资料中的案例,假设你被任命为一家软件公司的项目负责人,负责管理已被广泛应用的字处理软件新版本的开发工作。公司设定了严格的完成期限,并且已经对外公布。
- **模型选择**:在这种情况下,**增量模型**是较为合适的选择。原因如下:
- **已有原型**:旧版本的字处理软件可以视为一个现成的原型,可以通过收集用户反馈来明确新版本的需求,无需额外建立原型系统。
- **团队经验丰富**:开发团队对该软件领域有丰富的经验,能够高效地利用增量模型进行开发。
- **未来扩展性**:考虑到软件可能会有后续版本的开发,设计一个开放式的体系结构是必要的,以便于未来的改进和扩展。
2. **瀑布模型的适用场景**
- **背景**:另一案例中,需要开发一个简单软件,用于计算浮点数的平方根,结果需要精确到小数点后四位。该软件在完成测试后会被抛弃。
- **模型选择**:在这种情况下,**瀑布模型**是最适合的选择。原因如下:
- **需求明确**:软件功能明确,没有太多不确定性,无需通过原型来探索需求。
- **无需维护**:因为该软件在使用后会被废弃,所以无需考虑维护性和扩展性。
- **算法成熟**:开方算法是非常成熟的,无需通过迭代来完善算法设计。
#### 二、数据流图(DFD)的设计
- **案例背景**:需要设计一个数据流图来表示录入统计计算某班学生成绩的过程。
- **数据结构**:包括学号、各科目分数、总分、平均分、不及格门数等字段。
- **功能需求**:
- 录入全班学生的考试成绩。
- 检查成绩,修正错误,补充遗漏成绩,删除非法成绩。
- 计算总分和平均分。
- 统计不及格科目数量,并标记升级、补考或留级。
- 打印成绩通知单给家长。
- **DFD设计**:
- **外部实体**:学生、教师、教务处。
- **数据流**:学生成绩数据、成绩修正指令、成绩通知单等。
- **处理**:成绩录入、成绩检查、成绩计算、成绩统计、通知单打印。
- **数据存储**:成绩数据库。
#### 三、UML关系类型
- **案例背景**:根据图形描述,识别其中存在的泛化、实现、扩展与依赖关系。
- **关系类型**:
- **泛化**:表示一种继承关系,子类继承父类的属性和行为。
- **实现**:表示类与接口之间的关系,类实现了接口规定的操作。
- **扩展**:表示类之间的扩展关系,一个类可以扩展另一个类的行为。
- **依赖**:表示两个元素之间的一种使用关系,其中一个元素的变化可能会影响另一个元素。
#### 四、软件设计中的耦合与内聚
- **案例背景**:在软件的总体设计阶段,要求在软件设计中做到高内聚、低耦合。以图书管理系统为例。
- **耦合定义**:耦合是对一个软件结构内不同模块之间的相互依赖程度的度量。
- **种类**:数据耦合、标记耦合、控制耦合、公共耦合、内容耦合。
- **目标**:追求尽可能松散的耦合,减少模块间的相互依赖。
- **内聚定义**:内聚是一个模块内部各组成成分之间的紧密程度。
- **种类**:功能内聚、顺序内聚、通信内聚、过程内聚、时间耦合、逻辑内聚、偶然内聚。
- **目标**:追求高内聚,增强模块的独立性和可维护性。
#### 五、状态转换图
- **案例背景**:设计一个描述办公室复印机行为的状态转换图。
- **状态转换**:
- **闲置状态**:未接到复印命令时的状态。
- **复印状态**:接到复印命令后执行复印任务。
- **缺纸状态**:复印过程中缺纸时的状态。
- **卡纸状态**:复印过程中出现卡纸故障时的状态。
#### 六、Jackson方法绘制软件程序结构图
- **案例背景**:设计一个打印表格的程序,表格包含不同的类别(教师/学生)和相应的状态(工龄/年级)。
#### 七、N-S盒图与流程图转换
- **案例背景**:将给定的N-S盒图转换为流程图。
#### 八、软件测试方法
- **案例背景**:一家工厂的采购部每天需要一张订货报表,报表按照零件编号排序,列出所有需要再次订购的零件的信息。
- **测试方法**:
- **数据流图**:绘制数据流图来表示系统的数据流向。
- **软件结构图**:展示系统的整体结构。
- **判定表、判定树**:用来表示复杂的条件组合及其结果。
- **数据字典**:定义数据流图中的数据元素。
- **等价类划分**:将输入域划分为几个等价的类别。
- **边界值分析**:选取刚好等于、略高于或略低于边界的值作为测试用例。
- **白盒测试**:基于代码的测试策略,包括不同的路径覆盖。
2025-05-23 18:24:34
1.1MB
软件工程
1