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)需要分析系统如何响应用户请求,可以对用例文档中系统的处理流程进一步细化