BUAA_OO_Unit4 UML建模

王增煦-22373137 2024-06-12 10:46:13

BUAA_OO_Unit4 UML建模

正向建模与开发

  • 正向建模与开发是一种软件开发方法,即先设计模型并实施代码,然后进行测试。这种方法的基本步骤包括需求分析、设计、实现、测试

  • 在本单元图书管理系统中,我先对图书馆、各类图书、预约处、借阅处、图书漂流角等场所及用户建类,并用starUml绘制类图,通过分析用户需求及图书管理系统运行逻辑,绘制出用例图模拟各类间如何协作以满足需求,最终按照模型完成代码,并进一步细化完善代码,使建模与编写代码相辅相成并非孤立

  • 正向建模与开发的优势包括可以更好地控制整个开发过程,从而确保软件设计符合需求,并且可以提高系统的质量和稳定性。与传统的逆向建模(即基于现有代码进行修改和维护)相比,正向建模与开发更注重整体设计和构建过程,更适用于新项目和需求清晰的项目。

架构设计

UML类图

类图包括Library AppointmentOffice等图书管理部门,User用户以及构成书架的Books、 单独类型书集合OneTypeBook、和单独一本书Book

img

UML状态图

记录了借阅图书的状态,包括正式书 OFFICIAL、捐赠书(非正式书)NEW_DONATE 和借阅过一次的书 BORROWED_DONATE

img

工作流程

各种用户请求以及开馆闭馆由Library读入并根据请求类型进行分配到对应的图书管理部门,借阅、还书分配到BrOffice,预约、续借、取书分配到AppointmentOffice,图书漂流分配到BdCorner,开馆闭馆的整理流程则在Library中进行对各部门的书籍、日期等进行更新。

架构设计思维的演进

在第一单元的表达式化简中,在第一次作业的递归下降模板的搭建后,后续的迭代过程中,由于可扩展性不强,每个类中都要或多或少进行修改、拓展,以满足新的需求,并且为了满足新功能增加大量方法,耦合性大大增加,虽然最后能满足需求,但是结构比较混乱(甚至自己要看很久才能回忆起来工作流程)。然后在电梯调度单元中,我学到了多线程的知识,以及生产者-消费者模式(也复习了工厂模式等常见模型),此时我对架构设计有了进一步的理解,并尝试运用到自己的作业当中。在第四单元构建图书管理系统,不像从前看到题目迫不及待着手完成代码,细钻牛角尖着手单一方法,而是放眼全局,分析需求设计架构,构建全局代码,再逐一设计完成各个需求。并且在本单元的编写代码过程中,明显感觉到自己有意向“高内聚、低耦合”靠拢,通过底层类向外实现调用接口,而非将自己暴露在外任凭修改和使用,这样单个类中的内部结构复杂,但是将其封装起来,使用时却又清晰明了

测试思维的演进

第一单元的测试通过搭建测评机,大量构造数据对拍测试正确性;第二单元多线程由于其不可复现性,需要对同一测试点进行多次测试;三单元中的Junit测试则注重生成数据的覆盖性;第四单元需要考虑一些极端情况(例如信用积分上限时的加减分操作等)。

本学期的我只在第一单元尝试自己学习并搭建了测评机,以及第三单元中的junit单元测试,其他均白嫖测评机,感觉一学期的oo学习让我的建模以及代码能力有了不小的提升,但是测试能力还有待学习提升,对自己这方面还有遗憾。

课程收获

从java面向对象的基本知识和多线程,到jml规格化语言和uml建模,理论知识学到了很多,编程能力也从大一完成二三百行代码就沾沾自喜到如今能独自完成一个管理系统(一定的工程能力),设计架构不再是一团糟,面向对象的理念也已深入我的思维。

一学期的OO课程给我带来了很大的挑战和收获,虽然它的学分没有OS高,但是每周的绝大部分时间都花在了OO上,从接到作业时分析需求,浏览学长博客精华学习相关知识,设计架构编写代码,一眼望不到头的debug,到最终提交满屏的AC,整个过程真的是痛并快乐着。
虽然很多次强测依然出现bug,但是回想前几次作业时惶恐不能按时完成,最终也还算顺利的通过了全部十二次作业,还是深感欣慰。

OO课程虽然结束了,但是它的设计思想我想会一直伴随着我,而过程中的这种不断探索、不断完善的致学态度是伴随我们求学路上最宝贵的财富。

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

301

社区成员

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

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