软件工程期末考试参考题及答案

  • 格式:docx
  • 大小:38.40 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程期末考试参考题及答案

1. 考试题目:软件需求工程

考试要求:根据给定的需求文档,完成以下题目。

题目一:

根据给定的需求文档,设计一个在线购物系统。请根据以下要求完成系统设计:

(1)使用UML类图绘制系统的类结构;

(2)使用UML时序图描述用户登录和浏览商品的流程;

(3)使用UML活动图描述用户下订单的流程。

答案:

(1)类图如下所示:

[在这里插入UML类图图片]

(2)时序图如下所示:

[在这里插入UML时序图图片]

(3)活动图如下所示:

[在这里插入UML活动图图片]

题目二:

根据给定的需求文档,设计一个在线学习系统。请根据以下要求完成系统设计:

(1)使用UML用例图描述系统的功能需求;

(2)使用UML活动图描述学生完成在线学习的流程;

(3)使用UML状态图描述学生的学习状态变化。

答案:

(1)用例图如下所示:

[在这里插入UML用例图图片]

(2)活动图如下所示:

[在这里插入UML活动图图片]

(3)状态图如下所示:

[在这里插入UML状态图图片]

2. 考试题目:软件设计模式

考试要求:根据给定的题目,选择并解答以下问题。

题目一:

分析以下代码,判断其使用了哪种设计模式,并阐述该设计模式的作用和优势。

```java

public interface Car {

void drive();

}

public class Sedan implements Car {

@Override

public void drive() {

System.out.println("Driving a sedan car."); }

}

public class SUV implements Car {

@Override

public void drive() {

System.out.println("Driving an SUV car."); }

}

public class CarFactory {

public Car createCar(String type) {

if (type.equals("sedan")) {

return new Sedan();

} else if (type.equals("suv")) {

return new SUV();

} else {

throw new IllegalArgumentException("Invalid car type: " + type);

}

}

}

```

答案:

该代码使用了工厂模式。工厂模式的作用是将对象的创建和使用分离,客户端只需通过工厂类来创建对象,而不需要直接依赖具体类。这样做的优势是提供了更好的可扩展性和灵活性,当需要添加新的车型时,只需要扩展Car接口和对应的实现类,并修改CarFactory类以支持新的车型即可。

题目二:

对于以下情景,请选择适合的设计模式,并说明理由。

某个软件系统中,需要对不同类型的文件进行解析和处理,包括Excel、Word和PDF文件。系统需要支持动态扩展,以便将来能够方便地加入更多类型的文件解析器。

答案:

适合使用策略模式。策略模式能够将各类算法封装成独立的策略类,客户端通过选择策略类进行文件解析和处理。对于不同类型的文件,

可以针对每种类型设计一个具体的策略类。这样做的好处是,系统具

有较高的扩展性,可以方便地添加新的文件类型的解析器策略。同时,也符合开闭原则,对扩展开放,对修改关闭。

3. 考试题目:软件测试与质量保证

考试要求:根据题目要求,回答以下问题。

题目一:

给定以下测试用例,使用黑盒测试方法设计测试数据,覆盖尽可能

多的测试场景。

```java

public boolean isValidEmail(String email) {

if (email == null) {

return false;

}

int atIndex = email.indexOf("@");

int dotIndex = stIndexOf(".");

if (atIndex <= 0 || dotIndex <= atIndex || dotIndex >= email.length() - 1) {

return false;

}

return true;

}

```

答案:

下面是设计的测试用例及相应的测试数据:

1. email为null,期望结果为false。

2. email中不包含"@",期望结果为false。

3. email中包含多个"@",期望结果为false。

4. email中不包含".",期望结果为false。

5. email中最后一个"."在"@"之前,期望结果为false。

6. email中最后一个"."在邮件地址的末尾,期望结果为false。

7. email的格式正确,期望结果为true。

题目二:

通过代码复审,列举至少三个常见的代码缺陷,并说明其影响以及修复方法。

答案:

常见的代码缺陷包括: