BUAA OO U4 单元总结

曾立宏_73066204 2025-06-15 21:19:09

1、正向建模与开发

正向建模指的是从需求分析到设计,再到实现的正向流程。流程:需求分析->系统建模->架构设计->编码实现->测试与部署,优势是提高系统设计的可追溯性、早期发现设计缺陷、促进团队沟通和理解、支持系统演化和维护、提高开发效率和质量。虽然课程组提倡我们本单元采取先建模再实现的方法,但是由于缺乏经验,一开始的设计充满了缺陷和不足,导致实际上还是先实现再根据代码建模的流程。但是,通过这样的经历,我体会到了要设计一个完善的架构是不容易的,需要对场景需求和实现都有足够深刻的了解。

2、架构设计

类图

img

状态图

img

顺序图

img

根据提供的三张UML图(类图、序列图和状态图),对该系统的架构设计进行总结,并分析UML模型设计与最终代码设计之间的追踪关系。

架构设计总结

核心组件与职责划分:
LibrarySystem : 系统的核心控制器,负责协调整个图书馆系统的运作。管理图书、用户和预约的集合,并提供了大量的操作方法来处理借阅、归还、预约、图书管理等各种业务逻辑。
Book (图书): 表示图书馆中的一本图书,拥有唯一的标识(bookId)、当前状态(bookState)和追踪记录(trace)。负责管理自身的状态和基本信息。
User (用户): 表示图书馆的用户,拥有用户ID、姓名,并记录了用户当前借阅的书籍、在阅览室阅读的书籍以及用户的预约信息。负责管理用户的个人借阅和预约状态。
Appointment (预约): 表示用户的预约记录,包含用户ID、图书ISBN和预约日期等信息。负责管理预约的详细信息。

代码设计和UML模型设计之间的追踪关系

由于最后采用了根据代码进行建模的工作流程,因此UML模型和代码之间是严格对应的。

3、大模型辅助正向建模

在使用大模型辅助建模的过程中,为了让大模型生成符合要求的输出,我采用了以下步骤:
1、角色设定
通过让大模型扮演专家角色如“架构师”,可以让大模型有比较大的概率生成质量更高的输出。
2、明确需求
通过明确告知大模型自己的需求,可以有效避免大模型生成无关的输出
3、提供上下文信息
通过提供充足的背景信息,大模型可以更好地完成建模工作
4、迭代
目前大模型依然无法一次性给出符合要求的输出,因此需要进行多次的迭代与追问,帮大模型查缺补漏,最后才能得到满足要求的输出。

4、架构设计思维和测试思维的演进

第一单元:

本单元需要对表达式进行递归下降解析,也是我第一次接触到面向对象编程,和面向过程编程不同,关注的是如何通过不同对象之间的交互来完成任务。在本单元中,我体会到了层次化和模块化设计的思想。测试方面,我通过自己构造一些边界条件和正常数据来进行测试。

第二单元:

本单元需要完成多线程电梯系统的设计,虽然我并没有很好地掌握多线程架构的设计,但是对其有了初步的了解,是未来需要努力的方向。测试方面,借用了同学提供的评测机

第三单元:

本单元需要根据规格来来完成代码编写,让我接触到了”契约式编程“的思想,由于测试点对性能有所要求,因此需要在规格的约束下寻找性能和复杂度之间的平衡点,也让我体会到了”实现和接口分离“的精髓。测试方面,JML规格提供了完整的约束条件,我学习到了如何基于规格来进行测试。

第四单元:

本单元需要先建模再设计,建模让我对整体架构有了更多的把握,这使得程序开发的流程更加规范,可以避免开发过程中一些偏离目标的情况。测试方面,我第一次尝试编写程序自动化随机生成测试数据,通过对大量场景下的测试可以更好地发现程序中存在的问题。

5、课程收获

经过一个学期的 OO课,我对于面向对象思维有了更深刻的体会,Java由一窍不通到最为熟悉的编程语言,也学会了很多有用的工具如 git、uml等。

...全文
11 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

272

社区成员

发帖
与我相关
我的任务
社区描述
2025年北航面向对象设计与构造
学习 高校
社区管理员
  • Alkaid_Zhong
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧