2020
论述题

 
 
 统一软件过程RUP:用例驱动、以架构为中心的迭代增量开发
 
 
 
 一个用例可能需要多个功能来实现,一个功能也可能被用于多个用例
 
 边界类、控制类、实体类
 
 
顺序图、通信图、定时图、交互概述图
 
 
 
 扩展关系《extend》、包含关系《include》、泛化关系
 
 
2022
1、简答题

 部署的包要和部署环境相匹配、将包分割成若干子包、把子包部署到不同的节点上,完成各自工作
 
边界类:参与者与用例之间(箭头)
 控制类:用例
 实体类:根据业务逻辑进行定义
 
 :代表0个或多个(可以使用n表示)
 0…:代表0个或多个
 0…1:代表0或1
 1…:代表1个或多个
 
 注意还有类Student和类Account之间的聚合关系。不能回答Account类
2、综合分析题

 类Master继承类ClassA:
public class Master extends ClassA{
	private int M_No;
	public Course Select;
	public Study()
	{
	}
}
public ClassA{
	private int AID;
}
public class Course{
	private String No;
}

 包和包的嵌套。一个大包包含3个子包
 
 这里用的是聚合关系,这里聚合关系的图像没有箭头
 
 
 安全性则增加一个登录用例。所有参与者都要连向登录用例
 浏览商品上扩展一个比较性价比用例(语句中说了“可与”,这里使用扩展–《extends》)
 三种支付方式,任何一种都可以:使用扩展–《extends》
 注意还有一个时间参与者(系统定期)
 
 注意系统构件图的画法、接口的画法
 实现要使用实现、依赖要使用虚线加箭头
 
 订票时必须“填写预定信息”,这里“必须”要使用包含关系–《include》
 必须“填写预定信息”,这里“必须”使用包含关系–《include》
 其中“收款”工作可以采用“微信支付”、“现金支付”和“支付宝支付”,这里“可以采用”使用扩展关系–《extend》
 **注意:**要注意《include》和《extend》的指向,它们是不一样的。其中《include》是向外指向;《extend》是向内指向
 
 
 这里包括用例“通知发货单位”、参与者“发货单位”

 
 注意活动图的画法,其中的开始、结束、状态节点(活动节点)、控制节点(菱形)、块节点
 注意中间的这根实线也要画
 
 多对多:外键建立中间表
 1对多:外键放在多的
 1对1:外键放哪都可以
 这里中间表示“库存”

 这里是用泛化关系(三角形加横线)
 
 
 
 激活条或控制焦点符号不能画成长条形状
3、论述题

 建筑工业的“模块化、标准化、工厂化、流水组装”是一种高效、规范的生产模式,也是软件产业值得学习借鉴的地方。软件产业可以将常用的功能模块进行模块化和标准化,以提高软件产品的开发效率和质量***,同时可以采用工厂化的生产管理方式*,形成成熟的软件工程和流水化的开发流程,提高软件产品的生产效率和可靠性。
 
 对模型进行建模的目的是为了更好的理解和管理复杂性
 
 
 用例不只是捕获需求的工具,还能驱动整个开发过程。
 储户对象的用例有:存款、取款、转账、查询余额、打印账单、修改密码
2023
答案来源:

1、简答题、综合分析与设计题
T1

 
 不可分割表明是组合关系
T2

 
 
 系统维护者的功能包括了系统操作者里面的功能,这里使用泛化关系
T3

 
 派生出的具体类:表示的是泛化关系
 这两个具体类又是另一个类Driver的一部分:表示的是聚合关系
T4

 
T5

 
 
T6

public class Master extends ClassA{
	private int M_No;
	public Course Select;
	public Study()
	{
	}
}
public ClassA{
	private int AID;
}
public class Course{
	private String No;
}
T7

 
T8

 
 多对多:外键建立中间表
 1对多:外键放在多的
 1对1:外键放哪都可以
 外键放在多的那个,而且外键始终指向主键
T9

 
 
T10

 
T11

 
T12

 (1)顾客、管理员、工作人员、发货单位(或网站仓库、或其他供应商)
 
 
 
T13

 
 
T14

 
 
T15

 类“ToolBooks”从类“Books”中继承了Name属性、Price属性和getname()方法,以及类Catalog和类Books的聚合关系
T16

 
 注意区分这两题不同
 
 
T17

 
T18

 潜在会员、会员、货管员、经理、系统管理员、供应商系统、财务系统
 
 注:这个用例模型的箭头指向有待确认
T19

 
T20

 普通聚集:部分和整体具有相同的生命周期–整体消失则部分也消失
 共享聚集:整体拥有部分。整体消失则部分未消失
 
T21

接口和构建之间的关系:
实现关系:接口和构件之间用实线连接
 依赖关系:接口和构建之间用虚线表示
 
 注:朋友说上面的销售管理系统去掉,目前有待确认
T22

 构件:结账系统,商品资料库,购物车,商品导览系统
 有依赖关系和实现关系,
 结账系统和商品导览系统
T23

 IncomeOrder与OrderItem之间不该为继承关系,应改为聚合关系
 
T24

 
T25

 
 :代表0个或多个
 0…:代表0个或多个
T26

 
T27

 
T28

 
T29

 
 注:
 
 
 
 
T30

 
T31

 
T32

 
T33

 
 
T34

 
 双向关联关系,用例可以把内部消息通知给参与者,参与者可以把外部消息变更通知给用例
 单向关联关系,箭头指向被拥有者,参与者可以把外部消息变更通知给用例
 单向关联关系,系统可以把内部消息通知给参与者
T35

 
T36

 
T37

 
 
public class ClassA{
	public ClassB theClassB;
	public ClassA(){
	}
}
public class ClassB{
	public ClassB(){
	}
}
T38

 
 
T39

 
T40

T41

 
T42

 
T43

 
 这里去掉3种支付方式
T44

 
T45

 
T46

 
T47

 
T48

 
 
T49

 
 答案待确认
T50

答案还未写

 这个题是上面T50的第(3)问
T51

 
T52


 
 注意:这个T52题和T7题不一样,老师把题给改了
T53

 答案未写
 
 
T54

T55

 答案未写
T56

 答案未写
T57

 求职者和招聘者都是“用户”参与者,这里存在泛化关系
 
T58

 答案未写
T59

 答案未写
T60

 答案未写
T61

 答案未写
2、论述题
T1

 
 **
 先构建部分再构建整体
 多次开发
 软件规模庞大、软件的需求是模糊的、随时间而变化
 后期的维护工作量巨大、维护代价也非常高
 简化了软件的开发和维护
 提高了软件的可重用性
 **
T2

 
 **
 在后期引入变动比在早期引入所需要的代价高2~3个数量级
 维护要花费大量的代价
 目的是要尽早发现错误
 **
T3

 
 **
 软件是程序、数据及其相关文档的完整集合
 软件文档使无形的脑力劳动显示化,规范不同人员的表达方式,减少不必要的信息沟通,提高交流的效率
 软件文档分为研发规范文档和项目文档
 **
T4

 
 **
 高质量的设计将是软件系统长期稳定运行的根本保障,是软件走向成功的关键。
 为了获得高质量软件,必须遵循开发规范,采用恰当的设计方法,正确的开发方法。
 **
T5

 
 提高分析、设计、开发效率
T6

 
 认识问题:以用户的身份站在用户的角度认识问题。获取需求,采用用例建模技术。客户提出其可接受的、系统必须满足的条件或具备的能力
 分析问题:以开发者的身份站在用户的角度分析问题。分析需求,采用用例分析技术。满足客户定义的需求
 解决问题:以开发者的身份站在开发团队的角度分析问题。解决需求,采用面向对象设计。面向对象的设计原则是构造高质量软件的出发点
T7

 
 顺序图:表示交互作用中的时间顺序,但没有表示对象间的关系。用于表示方案。
 通信图:表示对象间的关系,但时间顺序必须从顺序图获得。用于过程的详细设计
T8

 
 都是以图的形式呈现,便于理解
软件结构图:系统中组件之间相互关系和约束的体系结构设计图
 用例模型:系统既定功能的模型,它可作为客户和开发人员之间的契约
T9

 
 采用大量的接口来解耦子系统和外部的耦合,才可以保证子系统的独立性和可替代性,从而提高系统的稳定性
T10

 
 用例图中的用例和参与者,表明了哪个参与者参与了哪个用例的执行。
 用例图是被成为参与者的外部用户所能观察到的系统功能的模型图,主要用于需求捕获,能够对系统提供的服务进行描述
T11

 
 软件设计是将问题分解并模块化,使得解决问题变得容易。软件设计是后续开发步骤及软件维护工作的基础。
如果没有软件设计,只能建立一个不稳定的软件体系结构。应该尽量在软件设计与开发的早期去修改完善发现的错误,否则随着时间的推移,软件也定型了,想要再改错就要付出不可想象的维护代价。
T12

 
 需要制定合理的迭代计划,通过早期的迭代明确用户需求,建立并证明系统核心架构,后期迭代以此架构为基础全面展开。
T13

 
 软件构架设计是降低成本、改进质量、按时按需支付产品的关键因素
 架构设计能够满足系统的性能、可维护性等品质;能够使得不同的利益相关人达成一致的目标,能够有效地管理复杂性
T14

 
 业务模型、用例模型、分析模型、设计模型、进程模型、部署模型、组件模型、测试模型
T15

 
 模块化:按模块划分系统,使得各模块间有良好的的接口
 标准化:软件开发过程中的统一化,包括文档格式的一致、工作流程的一致
 工厂化:用新技术替代传统的技术
 流水组装:软件开发过程中,每个程序员负责自己各自模块的开发,最后对模块进行组装得到整个系统
T16

 
 软件工程中最重要的两个点为技术和设计理论。
 技术是软件工程师需要掌握的技术,如:数据库、数据结构等计算机方面的知识
 设计理论是:开发软件的目标,如:为什么设计此软件、应解决哪些实际问题等等
 有了明确的设计理念才能顺利开展后期的编程开发工作
T17

 MDA,即模型驱动架构 (Model-Driven Architecture),是一种基于模型的软件开发方法论
 
 模型是对系统的一种抽象。
 建模的目的是为了更好地理解和管理系统复杂性,支持系统需求、分析、设计、验证和确认等活动
T18

 
 重用软件架构有助于改善软件质量,还可以提高软件的灵活性和标准化程度
T19

 
 部署图包括节点、模式以及连接它们的中间件。
 主要帮助安装和部署人员掌握系统的硬件物理拓扑结构。
 与其他UML图相比,部署图有助于设计组件系统的硬件拓扑,所以它是系统网络拓扑结构的最终描述
T20

 
 抽象:对事物进行简化、抓住事物本质的过程
分类:对事物进行归纳
分解:为了实现项目的目标,把项目要完成的工作,分解成一个个可控的小任务
复用:是将已有的软件成分用于构造新的软件系统。目的是为了缩减软件开发和维护的花费,是提高软件生产力和质量的一种重要技术
T21

 
 (1)从用户角度描述执行用例的具体步骤,关注系统“做什么”而不是“怎么做”
 (2)需要分析系统如何响应用户请求,可以对用例文档中系统的处理流程进一步细化



















