软件工程期末复习整理
- 软件工程大纲以及阅读说明
- 用例图
- 用例图例题1
- 用例文档
- 用例文档例题1
- 用例文档例题2
- 活动图
- 活动图例题1
- 活动图例题2
- 活动图例题3
- 类图
- 类图中的关系
- 类图例题1
- 类图例题2
- 顺序图
- 顺序图例题1
- 顺序图 例题2
- 顺序图例题3
- 顺序图--分析类
- 顺序图例题4
- 顺序图例题5
- 状态图
- 状态图基本元素
- 状态图例题1
- 根据类图写伪代码
- 详细设计——判定表
- 判定表例题1
- 软件测试
- 软件测试的目标、准则
- 测试方法
- 静态测试工具-PMD
- 动态测试之白盒测试
- 黑盒测试
- 等价类法例题1:
- 等价类法例题2
- 等价类法例题3
- 边界类例题
- 软件工程概述部分
- 类图中的关系详(重点)
- 关联
- 聚集
- 依赖
- 泛化
- 实现
- 概要设计部分
软件工程大纲以及阅读说明
其基本大纲如下:
本篇博客主要针对于【软件工程】学科的期末复习。
以我们学校为主,针对性列出相应的考察题型。
【首先】,先抓大头工作,针对各种大题大致掌握,就可以获得基础分数。其中,必考大题,包括①用例图(易)、②用例文档(易)、③活动图(易)、④类图(中)、⑤顺序图(中)、⑥状态图(有点难对我)、⑦等价类测试法(易)、⑧判定表(易)、⑨甘特图(易)、⑩根据类图写代码(中)。
【其次】,就是对于其他小细节,包括对于填空、选择的复习等。但是第一遍也是先抓住头部工作。
如上图,软件工程的大纲,大体包括,软件工程概述和面向对象的软件开发方法。在【软件工程概述】部分,需要记忆一些相关性的内容(复习这部分时可以根据目录跳转到这个部分即可)。在【面向对象的软件开发方法】中,我们主体去根据需求分析、概要设计、详细设计、编码实现、测试这几个部分依次复习即可。
用例图
用例图例题1
1.某石油公司拟开发一款加油APP,APP中用户核心需求如下:
用户使用本APP,需要先注册,登录后才可使用如下功能。
用户可申请电子油卡,可为该电子油卡充值,充值如符合活动条件,石油公司会赠予用户电子劵,电子券分为两种,一种非油电子券,一种油类电子券。
用户可使用电子油卡为加油支付费用,系统会自动扣除油类电子券抵加油费用(比如消费300元,有油类电子券15元,只需从电子有卡扣除285元)
用户可查看消费记录,可对消费记录使用APP自行开具电子发票。
根据需求描述,画出APP中用户核心需求用例图。
用例文档
用例文档例题1
用例文档例题2
针对支付加油用例,书写用例文档,条目应包括:用例名称、参与者、简要说明、前(后)置条件、基本(及可选和异常)事件流。
由加油站工作人员使用油枪为用户加油;加完油后,用户使用APP支付费用;用户需登录后才能进行支付加油费用操作。
支付过程大致如下,APP根据手机定位可知用户在哪个加油站加油,用户在APP中选择所用油枪的油枪号,并使用电子油卡进行支付。如果有油类电子券,APP会先消费油类电子券里最快过期的一张,再从用户油卡除剩余费用。
可能出现电子油卡余额不足的情况。
可能出现电子油卡支付密码不正确的情况。
活动图
活动图例题1
1、对系统业务工作流程建模
签订销售合同,然后进行核对。
如果发现错误,则终止履约。
如果没有错误,则要核对货物清单确定是否有货,同时核对付款单确定对方是否已经付款,只有这两项都完成,才可以发货。
如果无货或对方尚未付款,则终止履约。
活动图例题2
播放用例
基本事件流
1、用户对选择的歌曲点击播放;
2、系统连接歌词库并同时连接乐曲库对应mp3;(并发进行)
3、播放。
可选事件流
1、连接歌词库失败,显示连接失败,结束播放;
2、连接乐曲库失败,显示连接失败,结束播放。
活动图例题3
2.某公司的“图书采购申请”业务描述如下:
(1)申请人制作购书申请单,然后交给项目经理进行审查。
(2)项目经理审查是否所有书籍都需要购买,如果有不需要购买的书籍,则通知申请人修改申请;如果所购书籍金额超过2000元,则需要部门经理审批,否则直接提交采购部门;
(3)部门经理批准后提交采购部门进行采购,如果不批准则通知申请人修改申请;
(4)申请人查看项目经理或部门经理所给通知,如果取消申请,则对申请进行作废;如果继续申请,则修改申请,并交给项目经理进行审查;
(5)采购部门根据申请单进行采购。
请根据上述业务描述画出活动图。
类图
类图中的关系
类图:强调对象之间的彼此关系,是描述类与类之间的静态关系,类图是一种静态模型,同时是其他UML图的基础。
类图中的关系:
0..1
表示:0到1个对象
0..*或 *
表示 0到多个对象
①关联
②聚集
聚集关系中分为两种。
一种是聚合,一种是组合。
组合关系相对聚合关系更强一些。
③泛化
UML中的泛化关系其实就是我们通常所说的继承关系。
表示如下:
④依赖
依赖关系可以理解为其实就是一种比较弱的关联关系。
关于依赖关系,其实可以理解为一种使用关系。比如说 动物依赖于水。
具体的定义是,两个类之间是没有关系的,但是一个类的实现需要另一个类的协助,所以产生了依赖关系。
依赖关系是单向的。
具体表示为:
⑤实现
(可能在题目中比较少用到)
对于这几种关系,为了深入理解,可能考到的类似的选择题:
类图例题1
现代人的生活离不开银行及其ATM柜员机,客户会在银行开设多个业务,通过柜员机刷卡,(包括跨行ATM)进行交易来办理取款入账和转账等多种交易业务,请用类图刻画上述银行业务的静态逻辑结构。
类图例题2
某学校图书馆计划开发一个图书管理系统,该系统的主要功能性需求如下:
a):该图书馆系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一标识其存在的编号,图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。提供的服务包括:查询图书编号、查询个人信息和预定图书等。
b)当借阅者需要借阅图书、归还图书时需要通过图书管理员进行,即借阅者不直接于系统交互,而是通过图书管理员充当借阅者的代理和系统交互。
c)系统管理员主要负责系统的管理维护工作,包括对图书数目、借阅者的添加、删除和修改,并且能够查询借阅者、图书和图书管理员的信息。
d)可以通过图书的名称或图书的编号对图书进行查找。
请画出相对应的类图。
顺序图
顺序图例题1
顺序图
1.教师录入学生成绩顺序图
顺序图 例题2
2.储蓄系统的事件顺序图
第一,储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;
第二,业务员查收存款,审核存款与存款单金额吻合;
第三,存款单生效;
第四,储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;
第五,业务员审核存款,验证储户身份,确定储户存款金额>=取款金额;
第六,审核通过,取款单生效;
第七,系统打印利息清单,业务员把本金和利息返回用户。
顺序图例题3
3.根据用例文档构造借书类图以及借书成功顺序图
用例名称:借书
用例描述:图书管理员登记读者借书的信息。
参与者(执行者):读者(管理员代理读者)
基本事件流
1.借书界面提示输入读者注册号以及所借图书书号;
2.图书管理员输入有关信息并提交
3.系统根据业务规则a,审核借书的合法性。如果合法执行4,否则执行异常事件流3.1.1;
4.系统生成借书信息(不存储),并显示给图书管理员;
5.图书管理员检查借书记录,如果无误,提交给系统,执行6。如果有误,执行5.1.1;
6.系统保存借书记录,该记录有唯一借书记录号。修改书的状态为"借出"状态,并将完整借书记录显示给图书管理员,提示借书成功。
分支事件流:无
异常过程
3.1.1 系统显示提示信息,提示用户不能借书原因,用例结束。
5.1.1 不做任何操作,用例结束。
业务规则
(可有可无)
a.根据读者注册号审核读者是否有借书资格;根据书号查询对应书目是不是本图书馆的书,及该书是否在库
扩展点:无
借书记录=借书记录号+书目号+读者ID +借书日期+管理员ID+是否归还(还书用例里可分析出该项)
类图:
顺序图:
顺序图–分析类
关于分析类:
顺序图例题4
根据下述“录入学员信息”成功的过程描述,绘制设计阶段“录入学员信息”顺序图。
录入过程:
(1)招生工作人员在录入界面EnterStudentPage对象中输入身份证号idCard和姓名name,点击录入按钮;
(2)EnterStudentPage对象发送消息doGet(idCard,name)给StudentMagController对象;
(3)StudentMagController对象发送消息enterStudent(idCard,name)给StudentService,进行学员信息的录入;
(4)StudentService对象调用自身方法createRemainder(idCard,name)生成学员的完整信息stu,并发送消息addStudent(stu)给DBMgr对象,实现stu信息存入数据库,DBMgr对象将操作成功结果“yes”返回给StudentService对象;
(5)StudentService对象将stu返回给StudentMagController对象;
(6)StudentMagController对象将stu传递并指向EnterStudentPage界面对象;
(7)EnterStudentPage对象调用自身方法display显示stu信息到界面,并提示录入成功。
顺序图例题5
使用分析类构造“预定图书”成功场景的顺序图并写出每个类的属性和方法。
预定成功顺序图:
预定失败顺序图:
状态图
状态图基本元素
状态图
状态图中的基本元素
状态图例题1
1.寻找主要的状态
飞机票有以下4种状态:无预订、部分预订、预订完、预订关闭。
(1)在刚确定飞行计划时,显然没有任何预订,且在顾客预订机票之前都将处于“无预订”状态。
(2)对于订座而言,有“部分预订”和“预订完”两种状态。
(3)当航班快要起飞时,要“预订关闭”。
(4)航班调度员可以取消航班飞行计划
2.寻找外部事件
(1)预订():顾客预订机票。
(2)退订():顾客退票。
(3)关闭():机票管理员关闭订票系统。
(4)取消航班():飞机调度人员取消飞行计划。
根据类图写伪代码
根据给出的类图,写出类People、Student、Boy的伪代码。
interface People //People接口
{public abstract void sleep(){} //抽象类public abstract void drink(){} //抽象类
}class Student implements People
{
private:Computer computer; //关联关系int age;
public:void breathe(oxygen); //依赖关系的体现void sleep(); //实现People接口void drink();
}class Boy extends Student //继承于Student类
{public void dringkBeer();
}
详细设计——判定表
判定表例题1
假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。
当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元。
对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。
软件测试
软件测试的目标、准则
这部分内容了解即可。
测试目标:
测试准则:
测试方法
测试方法,分为静态测试和动态测试。
我们要基本了解静态测试。在应对考试时,动态测试要着重复习。
静态测试工具-PMD
动态测试之白盒测试
其中,重点掌握逻辑覆盖法。
①语句覆盖
即程序中每一条可执行语句至少被执行依次。
判定覆盖(分支覆盖)
分支覆盖
或者下面这样:
(总之,就是必须覆盖所有的分支。aTaFbTb必须都有。用例需要全部覆盖。且不限用例个数,但尽可能用最少的用例完成覆盖。)
条件覆盖
黑盒测试
常用的黑盒测试法,是等价类法、边界值分析法。
等价类法
等价类法例题1:
等价类法例题2
等价类法例题3
设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月-2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2月表示月。
划分等价类:
测试用例:
边界类例题
这道题考试考了!
我做这道题并没有测试用例举全,只是举了边界和超出边界的。
!!!
软件工程概述部分
类图中的关系详(重点)
关联
关联表示两个类的对象之间存在的某张意义上的联系。长期的,稳定的。
①普通关联 eg.用户与订单
②自反关联——同类不同对象关联
例如在一个部门中,上级部门和下级部门之间的关联。
③限定关联——利用限定词把一对多关系简化成一对一关系
④关联类
为了说明关联的性质可能需要一些附加信息。这些信息放到关联的任一方都不合适。
可以引入一个关联类来记录这些信息
关联类与一般的类一样,也有属性、操作和关联。
总:关联关系也可以是单向关联,也可以是双向关联。
表现在代码实现中,一个对象会作为另一个对象的属性是关联关系。
聚集
聚集是关联的一种特殊情况。聚集表示类与类之间的关系是整体与部分的关系。
聚集分为:聚合和组合。
①聚合:
如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为聚合,也叫共享聚集。
一般聚集和聚合图示符号:在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。
设计中 :人的集合作为课题组的一个属性
课题组集合作为“人”类的一个属性
②组合
如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合。
例如:记录员工基本信息。员工的地址包含多类信息:email,住所,电话等。
为了处理方便,员工与地址,抽象为两个类,为一对多。
代码区别:
依赖
依赖关系描述两个类之间的使用关系:
两个类之间是没有关系的,
但是一个类的实现需要另一个类的协助,这就产生了依赖。
例如:
关于关联关系和依赖关系:
泛化
关于抽象类:
实现
概要设计部分