目录
引言
六、统一建模语言
6.1UML发展趋势图
6.2UML的组成
6.3UML中的图
6.3.1用例图
6.3.2类图和对象图
6.3.3顺序图和协作图
6.3.4状态图
6.3.5活动图
6.3.6组件图
6.3.7部署图
七、面向对象分析与建模
7.1面向对象分析方法
7.1.1 面向对象分析的基本过程
八、面向对象设计
8.1设计原理中的模块独立
8.2对象设计中计算环形复杂度
8.3对象设计原则中实践项目包设计
九、面向对象编程
十、软件测试
10.1软件测试的准则
10.2软件测试的方法
十一、软件部署
十二、参考答案
12.1第六章参考答案
12.1.1练练手
12.1.2动动脑
12.2第七章参考答案
12.2.1练练手
12.2.2动动脑
12.3第八章参考答案
12.3.1练练手
12.3.2动动脑
12.4第九章参考答案
12.4.1练练手
12.4.2动动脑
12.5第十章参考答案
12.5.1练练手
12.5.2动动脑
12.6第十一章参考答案
12.6.1练练手
12.6.2动动脑
尊敬的读者:
您好!在此次博客中,我将分享一些有关软件工程导论的重要观点和理论。这些内容均摘自清华出版社出版的《软件工程导论》一书。在此,我郑重声明,本次分享的目的是为了传播和普及软件工程领域的知识,绝非抄袭或剽窃。以下为本书的相关信息,以兹证明:
书名:《软件工程导论》
编著:吴艳 曹平
出版社:清华大学出版社
出版日期:2021.2(2022.7重印)
希望本次分享能够为您带来收获,并激发您对软件工程领域更深入的研究。再次感谢您的关注与支持!
敬请期待后续内容,我们将一同探索软件工程的奥秘。
顺祝商祺!
续前文:
软件工程导论学习笔记——(2)项目启动阶段(含三四五章课后题答案):
软件工程导论学习笔记——(1)基础知识(含一二章课后题答案):
统一建模语言(Unified Modeling Language,UML)是非专利的第三代建模和规划语言。UML是一种用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的、制品的开发方法。
UML是通用的可视化标准建模语言,由构造块、公共机制、架构三部分组成。
UML图大致可分为静态图和动态图两种。
一个用例图定义一组用例实例,并确定了与用例实例进行交互的参与者。用例图描述外部执行者所理解的系统功能,是系统的“蓝图”,表明了开发者和用户对软件需求规格达成共识。用例图通常在需求分析阶段进行建模。
用例图的元素主要有:
类图和对象图揭示了系统的结构。类图描述类和类之间的静态关系,它不仅显示信息的结构,还描述了系统的行为。
对象图是类图的一个实例,常用于表示复杂的类图的一个实例。
类图包括3个部分:
属性和服务都具有3种访问权限:public(用“+”表示)、private(用“-”表示)、protected(用“#”表示)。
类之间的关系包括:
对象图和类图一样反应系统的静态过程,但它是从实际的或原型化的情景表达的。对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是实际的类。
这两种图都是交互图,表示各组对象如何进行协作的模型,通常用来表示和说明一个用例的行为。顺序图和协作图本质上没有不同,只是排版方式不同,顺序图强调对象交互行为的时间顺序,协作图则强调对象之间的协作关系。
1)顺序图
顺序图描述对象之间动态的交互关系,将交互关系表示为一张二维图,着重体现对象间消息传递的时间顺序。顺序图可以直观地表示出对象的生存期,在生存期内,对象可以对输入消息做出响应,也可以发送消息。
顺序图中的主要因素包括:
2)协作图
协作图是顺序图的同构图,描述合作的对象间的交互关系和链接关系,侧重体现交互对象间的连接关系。协作图由对象和消息组成,具体的图标表示与顺序图中的相同。
状态图描述对象状态和事件之间的关系,通常用来描述单个对象的行为,不适合表述包括若干协作的对象行为,通常不需要对每个类编制状态图,只有那些重要的交互行为的类,如在业务流程、控制对象、用户界面的设计方面适合用状态图描述。
状态图的元素包括以下4方面内容。
活动图用来表示系统中各种活动的次序,既可用来描述用例的工作流程,也可用来描述类中某个方法的操作行为,活动图依据对象状态的变化捕获动作与动作的结果。活动图是由状态图变化而来的,也包括初始状态、终止状态、中间活动状态等。
活动图的元素包括以下4方面内容。
活动图可分为基本活动图和带速道的活动图。基本活动图描述系统发生了什么,带泳道的活动图更进一步描述活动由哪个类完成。
组件图是面向对象系统的物理方面进行建模的图之一,可以有效地显示组件以及它
们之间的逻辑关系」组件图可对源代码、可执行体、物理数据库进行建模。
组件图中通常包括以下3个元素。
部署图也称为施图,是面向对象系统的物理方面建模的之一。组件图用于说明构件之间的逻辑关系,部署图则在此基础上更进一步描述系统硬件的物理拓扑结构,以及在此结构上执行的软件部署图常用于帮助理解分布式系统,可以使系统的安装、部署更简单,主要元素包括节点和连接、接口和构件。
利用面向对象方法开发软件,通常使用UML中的各类图在软件的各个开发阶段进行建模。
面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。面向对象分析过程从分析陈述用户需求的文件开始,主要完成以下3个任务。
从解决问题的描述角度划分,面向对象建模得到的模型主要有3个:
理论上,面向对象的分析过程主要包括:寻找类与对象、识别结构(类与类之间的关系)、识别主题、定义属性、建立动态模型、建立功能模型、定义服务,直至最终完成对象模型。
1)对象模型:
面向对象分析的首要工作是建立问题域的对象模型。
建立对象模型的典型步骤主要有以下3个:
2)动态模型
对于仅存储静态数据的系统(例如数据库)来说,动态模型并没有什么意义。但是,开
发交互式系统时,动态模型却起着很重要的作用。
建立动态模型可以分成4个步骤进行。
(脚本是指系统在某一个执行期间出现的一系列事件)。
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。
划分模块的一个准则是“高内聚,低耦合”。
耦合是对一个软件结构内不同模块之间互联程度的度量,在软件设计中应该追求尽可能松散耦合系统。
项目包的设计实际是软件系统的高层软件结构的设计,也要体现分层设计思想。
略
为了能设计出有效的测试方案,软件工程师必须深入理解并正确运用指导软件测试的基本准则。
常规的测试方法主要按以下3个角度进行划分。
1.按是否查看程序内部结构划分 | 1)黑盒测试 | (1)功能测试 |
(2)性能测试 | ||
2)白盒测试 | ||
3)灰盒测试 | ||
2.按是否运行程序划分 | 1)静态测试 | |
2)动态测试 | ||
3.按阶段划分 | 1)单元测试 | (单元测试主要使用白盒测试技术(不能单独使用)) |
2)集成测试 | ||
3)确认测试 | ||
4)系统测试 | ||
5)验收测试 | ||
6)回归测试 |
白盒测试把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。
白盒测试法是按着程序内部的逻辑测试程序,检测程序中的主要执行通路是否能按预定要求正确工作,因此,白盒技术又称结构测试。
白盒测试主要的测试方法:
黑盒测试也称功能测试,它通过测试检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照软件需求规格说明书的规定正常使用,程序是否能适当地接受输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试主要的测试方法:
11.1软件部署的步骤
软件部署的步骤分为:发布、安装、激活、停用、更新、改写、卸载和退役。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
B | C | D | B | D | B | A | D | B | FBCE |
(1)某图书公司欲开发一个基于Web的书籍销售系统,为顾客(Customer)提供在线购买书籍(Books)的功能,同时对公司书籍的库存及销售情况进行管理。
系统的主要功能描述如下:
1)首次使用系统,顾客需要在系统中注册(Register detail)。顾客填写注册信息表要求的信息,包括姓名(name)、收货地址(address)、电子邮箱(email)等,系统生成一个注册码。
2)注册成功的顾客可以登录系统在线购买书籍(Buy books)。购买时可以浏览书籍信息,包括书名(title)、作者(author)、内容简介(introduction)等。如果某种书籍的库存量为0,那么顾客无法查询到该书籍的信息。顾客选择所需购买的书籍及购买数量(quantities) ,若购买数量超过库存量,提示库存不足;若购买数量小于库存量,系统将显示验证界面,要求顾客输入注册码。注册码验证正确后,自动生成订单(Order),否则, 提示验证错误。如果顾客需要,可以选择打印订单(Printorder)。
3)派送人员(Dispatcher)每天早晨从系统中获取当日的派送列表信息(Produce picklist),按照收货地址派送顾客订购的书籍。
4)用于销售的书籍由公司的采购人员(Buyer)进行采购(Reorderbooks)。采购人员每天从系统中获取库存量低于再次订购量的书籍信息,对这些书籍进行再次购买,以保证充足的库存量。新书籍到货时,采购人员向在线销售目录(Catalog)中添加新的书籍信息(Addbooks)。
5)采购人员根据销售情况,对销量较低的书籍设置折扣或促销活动(Promote books)。
6)当新书籍到货时,仓库管理员(Warehouseman)接收书籍,更新库存(Update stock)。
要求:根据描述,画出书籍销售系统的类图和用例图。
【解答】
书籍系统用例图
书籍销售系统类图(只有类名,属性和方法读者根据描述和用例图添加)
(2)现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡 (CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。
下图是某支付系统的简略类图。请在空白处填上适当的代码。
import java.util. ArrayList;
import java.util.List;
interface PaymentMethod {
public (1) ;
}// Cash、DebitCard和Item实现略,Item中getPrice( )获取当前物品对象的价格
abstract class Card (2) {
private final String name, num;
public Card(String name, String num)
{
this.name = name; this.num = num;
}@Oveiride
public String toString ( ) {
return String.format(“%s card[name = %s, num = %s]”Type (), name, num);
}@Override
public void pay(int cents) {
System.out.println(“Payed " + cents + “ cents using “ + toString( ));
uteTransaction(cents);
}
protected abstract String getType( );
protected abstract void executeTransaction(int cents);
}class CreditCard (3) {
public CreditCard(String name, String num) { (4) ; }
@Override
protected String getType( ) { return "CREDIT"; }
@Override
protected void executeTransaction(int cents) {
System.out.println(cents + " paid using Credit Card. "’);
}
}class Bill {//包含所有购买商品的账单
private List<Item> items = new ArrayList<Item>();
public void add(Item item)
{ items.add(item); }
public int getTotalPrice( )
{/*计算所有 item 的总价格,代码略*/ }
public void pay(PaymentMethod paymentMethod){//用指定的支付方式完成支付
(5) (getTotalPrice( ));
}
}public class PaymentSystem {
public void pay( ) {
Bill bill = new Bill( );
Item item1 = new Item("1234",10);
Item item2 = new Item( "5678",40);
bill.add(item1);
bill.add(item2); //将物品添加到账单中
bill.pay(new CreditCard("LI SI", "98765432101")); //信用卡支付
}
public static void Main(String[ ] args) {
(6) = new PaymentSystem( );
payment.pay( );
}
}
【解答】
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
D | C | B | B | C | B | C | B | D | C |
11 | 12 | 13 | 14 | 15 | |||||
A | A | D | A | B |
(1)完成《机票预订系统》的管理员功能模型的建模。
【解答】
(2)根据给出的格式,完成《机票预订系统》需求规格说明书的编写。
【解答】
请参见《机票预订系统需求规格说明书》模板
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
B | D | D | B | B | A | BA | B | D | C |
11 | 12 | 13 | 14 | 15 | |||||
B | B | C | A | C | D | A | B | A | C |
【解答】
以订票用例为例。
(2)完成“机票预订系统”所有的对象设计。
【解答】
注册会员
登录系统
退票
查询航班订单
说明:课堂内不能完成的,可以在设计周内完成。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
D | C | A | B | A | A | D | C | A | D |
11 | 12 | 13 | 14 | 15 | |||||
C | D | A | B | D |
【解答】
请参考教材中视频。
【略】
请参考教材实现代码。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
D | AC | A | C | A | C | C | C | A | A |
11 | 12 | 13 | 14 | 15 | |||||
A | D | A | B | C |
(1).使用黑盒测试方法为注册会员用例设计测试用例。
【解答】
以用户名为例
输入条件 | 有效等价类 | 无效等价类 |
用户名字符个数 | 6~10(1) | 0(2)<6(3)>10(4) |
用户名字符组成 | 字母(5)数字(6)下划线(7) | 非字母数字下划线(8) |
第一个字符 | 字母(9) | 非字母(10) |
测试用例设计
软件/项目名称 | 机票预订系统 | 软件版本 | 1.0 | |||||
功能模块名称 | user类之Register() | 编制人 | 小徐 | |||||
测试用例ID | Book_user_Register | 测试用例名称 | Register_01 | |||||
用例入库者 | 小徐 | 入库时间 | XXX | |||||
用例更新者 | 小徐 | 更新时间 | XXX | |||||
测试功能点 | 旅客注册 | |||||||
测试目的 | 测试用户名可能出现的各种逻辑 | |||||||
测试类型 | 单元测试 | |||||||
预置条件 | 在数据库中保存信息 | 特殊规程说明 | 有充足的提示 | |||||
参考信息 | 《机票预订系统需求规格说明书》 | |||||||
序号 | 操作描述 | 输入测试数据 | 预期结果 | 实际结果 | 返回状态 | |||
Test1 | 输入用户名 | abcd_12 | 注册成功 | 注册成功 | 登录界面 | |||
Test2 | 输入用户名 | 空 | 空,重新输入 | 注册失败 | 注册界面 | |||
Test3 | 输入用户名 | ab_12 | 短,重新输入 | 注册失败 | 注册界面 | |||
Test4 | 输入用户名 | abcdef_1245 | 长,重新输入 | 注册失败 | 注册界面 | |||
Test5 | 输入用户名 | 12_abcd | 数字开头重新输入 | 注册失败 | 注册界面 | |||
Test6 | 输入用户名 | abcd&12 | 非法字符重新输入 | 注册失败 | 注册界面 | |||
测试人 | 小李 | 开发人员 | 小李 | 负责人 | 项目经理 | |||
(2)使用基本路径测试法为订票算法设计测试用例。
【解答】
订票状态图
测试用例设计
路径编号 | 起始状态 | 事件或条件 | 输入 | 结束状态 |
a | V1 | find(air),检索航班成功 | 输入检索条件 | V2 |
b | V1 | !find(air),检索航班失败 | 输入检索条件 | V1 |
c | V2 | 点击“订票”按钮 | 鼠标操作 | V3 |
d | V3 | !login(user),登录失败 | 输入用户名和密码 | V3 |
e | V3 | login(user),登录成功 | 输入用户名和密码 | V4 |
f | V4 | 错误的信息 | 填写订票信息 | V4 |
g | V4 | 正确的信息 | 填写订票信息 | V5 |
h | V5 | 订票成功 | 付款 | V6 |
i | V5 | 订票失败 | 不付款 | V7 |
j | V5 | 再次订票 | 鼠标操作 | V1 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
D | A | B | C | C | A | C | B | B | A |
【解答】
按照11.2软件部署计划做参考。
【解答】
以下图为参考
本文发布于:2024-01-30 05:56:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656538719710.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |