OO 第四单元博客作业

yplqing 学生 2024-06-15 20:35:57

OO 第四单元博客作业

本单元所实践的正向建模与开发

实际过程,构思出这是一个两层的模型,上层管理下层的信息交换,然后根据上层需要的功能,下放到下层协作实现。抽象来说,就是整体到细化的过程,UML正是一个有力的工具。上层需要实现查询、借书等7种功能,也就需要有7棵职能分配的“树”,可以在UML中建模,再在代码中实现。

 

本单元作业的架构设计

 

类图如上,省略了下层之间的各种关系,因为在正向建模时不需要过于细化。则最终的代码设计一定是包含UML模型的设计要求而更加细化的,就像JML规格一样,实现方法和过程不一定在建模中体现。

 

在四个单元中架构设计思维的演进

第一单元

此单元针对一般问题场景,即根据问题的特征,设计相应的架构。表达式拥有递归包含的特点,则采取递归下降的架构设计。

第二单元

此单元针对多线程场景,需要基于线程同步与互斥的基本知识,进行架构设计。这里基本知识指的是防止死锁、避免死锁等问题的解决方法,否则无法顺利进行正确的架构设计。

第三单元

此单元针对有限制的架构设计场景。具体来说,要在宏观上保持与规格一致的情况下,尽可能保证实际代码的良好实现,如高性能、低复杂度等。

第四单元

此单元针对正向建模指导代码实现场景。对于复杂的系统性问题,提前正向建模有利于代码实现。

 

在四个单元中测试思维的演进

第一单元

此单元过程复杂,代码复杂,故不采用白箱测试。主要采用黑箱测试(测试各种元素的组合的计算和化简)和小部分压力测试(测试计算过程的性能是否足够)。

第二单元

此单元多线程场景,代码更加复杂,需要使用黑箱测试。

第三单元

此单元有明确的规格要求,适合单元测试;由于有性能要求,也需要压力测试;JML中有些容易忽略的规格,据此可以进行小部分白箱测试。

第四单元

此单元适合黑箱测试,也适合单元测试,因为每个操作其实有不少限制和要求。

 

课程收获

学会了针对具体问题特征来进行相应的架构设计;学会了基于度量来分析自己的程序,从而发现自己没有意识到的某些看似简单的函数复杂度却很高的问题;更加深刻理解了层次化设计的理念,当某个类掌管的数据和方法过多,使用 synchronized 很容易互锁时,代表着这个类跨越层次了,功能冗杂,此时应该将这个类的一部分数据和方法抽象出来,成为新的类;在实现JML要求的规格时,学会了一些琐碎而必要的优化性能的方法;懂得了如何使用UML来正向建模指导代码实现。

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

301

社区成员

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

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