TakiP

导航

BUAAOO 第四单元总结

BUAAOO 第四单元总结

前言

繁杂需求纷至沓来,如何觅得前路?走过了自行进行架构设计、在架构设计的基础上搭建实现的两重境界,最后一单元迎接我们的,是介乎两者之间,基于UML的工作流的了解。

具象的图示带来的,是直接与明晰,还是更多的误读与误解?这一单元的作业,力图通过使我们成为解析器自身,来让我们更好地融入UML的表示逻辑与思路中。

久经岁月的藏宝图。

逐级递进、螺旋上升的三周,拂去了藏宝图上的风尘。


本单元作业的架构设计

层次化、模块化

回望本单元的数次作业,我们不难认识到它真正的需求正是“重建一张图”。事实上,UML中的各种元素,都分别或杂糅地描述了某种节点和边,我们所要做的就是设计有利各项需求的图结构。

如此多的元素如何进行组织?本次作业的实现中,我对元素进行了层次化聚类,对需求进行了模块化隔离。通过活用面向对象的思想与逻辑,重建打散的UML元素之中的条理。

image

为了接受并构建不同的元素实例,我采用适配器模式进行解析和重建。为了对不同元素分别进行不同的图构造模式,构造了顶层抽象类、多层父类来进一步复用方法。

为适应多种方法与验证逻辑的需要,将各方法模块化实现至各类具体元素中,尽力解耦顶层交互类各方法的逻辑。

四个单元中架构设计及OO方法理解的演进

代码的土木工程师。

第一单元

从一无所知,简单层次结构设计,到裹成一团的类结构,再到活用继承,合理规划的顶层设计。收获是对“好的顶层设计”的实感——好的顶层设计,带来的是对后续需求更改的强适应性更好的工程迭代弹性代码的优秀复用性和可扩展性

第二单元

复杂难辨的需求背后,需要架构的充实支撑。对于访问控制的设计、对于整体结构的模块化设计和组合,使我的电梯体验顺利到几乎无需赘言。设计“高级的桌子”、活用设计模式,代码方能简洁、可靠。

第三单元

由于JML已经在相当程度上给定了数据与行为结构逻辑的限制与要求,本单元的作业所需要我来设计的只有服务于需求的辅助数据结构。牢牢把握需求的范围与本质,合理挑选数据容器,为需求提供最适的解决方案,是搭好的戏台上将戏唱好的重点。

第四单元

本单元使我的层次化理解更上一层楼,通过适配器模式的实践,我进一步认识到了OOP思想的重要性与它的实际指导意义。合理的解耦、模块化设计的经验,正是OOP课程所带给我的。

四个单元中测试理解与实践的演进

第一单元

简单的需求,靠简单的自动化测试方法。本单元的作业引入了构造的自动评测机作为辅助,实际使用过程中发现的自己与他人的覆盖率差距,正是对测试理解尚浅的表征,对问题范围的全部覆盖,是测试考虑的重中之重。

第二单元

多线程的本单元,采用了时域和空间域两个方面针对边界条件、极端条件进行数据设计的思路。对于多线程所带来的时域问题的考虑,使我进一步对“测试范围”有了直观的认识。

第三单元

JML的形式逻辑规格表达,为静态的逻辑验证与语义检查提供了可能。本次作业的测试过程中,对部分关键部分使用JUnit进行了单元测试,规格设计帮助我更好地把握了问题的范围,提供了对于测试Coverage的直观认识。更好地与规格合作,是解决测试问题的一大利好。

第四单元

本单元的测试样例构建,依靠与官方包的方便交互。如何构建工具自动化测试样例生成的流程,是我本单元对测试的重要收获。

课程收获

OO之旅,磕磕绊绊,跟着疾驰前进的课程踽踽前行,作业时很多问题都是初次认识到、学习到,遗憾未能一次至臻完美,但是OO课程带给我的收获却确确实实让我受益匪浅。
在课下许许多多的工程实践中,例如基于面向对象语言Swift的iOS端移动APP开发、基于Node.js、Vue与MongoDB的网站平台搭建中——托OO的福,我都在结构化、模块化、层次化设计等方面颇有受益。

课程改进建议

预习课程
  • 适当硬性要求完成以保证预习效果,确保同学们在第一单元作业前已有对JAVA语言基础的充分认识及对OOP思想的基本把握;
  • 提供针对具体单元的预习项目,在课程中间同步进行,充分利用博客周的时间。
第一单元

提供优秀架构的作业展示与分析,本单元的作业设计相当有助于对“层次化”的理解和探索,但优秀的工程实践不只来自于课程方法论的讲授与自己的领悟,亦可来源于对他人优秀架构的观察与在此之上的进一步反思。

第三单元

虽然能够启发同学们从工程角度对规格化进行探讨,但是在JML及其相关工具链还不成熟的现状下,本单元作业在部分同学眼中宛如食之无味的照猫画虎,对同学们的工程开发实践帮助会相对小。

课程总体

可以增加测试、设计模式等方面的讲授内容和相对应的实践任务。

课程实验

增加实验反馈。

课程平台
  • 使gitlab平台与oo平台进一步同步与协调统一,例如实现助教端push来实时更新指导书,而不是分两套系统管理导致指导书可能出现两边不一样的情形
  • 可以对讨论区功能进行进一步强化,例如增加自定标签机制、允许同学对指导书做批注等;
  • 对页面展示交互逻辑做优化,例如增加历史提交记录的浏览机能等。

OO大冒险,告一段落,且待在更广阔的天地相遇!

posted on 2021-06-26 20:57  KumaXX  阅读(68)  评论(2编辑  收藏  举报