BUAAOO 第四单元总结
作者:互联网
BUAAOO 第四单元总结
前言
繁杂需求纷至沓来,如何觅得前路?走过了自行进行架构设计、在架构设计的基础上搭建实现的两重境界,最后一单元迎接我们的,是介乎两者之间,基于UML的工作流的了解。
具象的图示带来的,是直接与明晰,还是更多的误读与误解?这一单元的作业,力图通过使我们成为解析器自身,来让我们更好地融入UML的表示逻辑与思路中。
久经岁月的藏宝图。
逐级递进、螺旋上升的三周,拂去了藏宝图上的风尘。
本单元作业的架构设计
层次化、模块化
回望本单元的数次作业,我们不难认识到它真正的需求正是“重建一张图”。事实上,UML中的各种元素,都分别或杂糅地描述了某种节点和边,我们所要做的就是设计有利各项需求的图结构。
如此多的元素如何进行组织?本次作业的实现中,我对元素进行了层次化聚类,对需求进行了模块化隔离。通过活用面向对象的思想与逻辑,重建打散的UML元素之中的条理。
为了接受并构建不同的元素实例,我采用适配器模式进行解析和重建。为了对不同元素分别进行不同的图构造模式,构造了顶层抽象类、多层父类来进一步复用方法。
为适应多种方法与验证逻辑的需要,将各方法模块化实现至各类具体元素中,尽力解耦顶层交互类各方法的逻辑。
四个单元中架构设计及OO方法理解的演进
代码的土木工程师。
第一单元
从一无所知,简单层次结构设计,到裹成一团的类结构,再到活用继承,合理规划的顶层设计。收获是对“好的顶层设计”的实感——好的顶层设计,带来的是对后续需求更改的强适应性,更好的工程迭代弹性,代码的优秀复用性和可扩展性。
第二单元
复杂难辨的需求背后,需要架构的充实支撑。对于访问控制的设计、对于整体结构的模块化设计和组合,使我的电梯体验顺利到几乎无需赘言。设计“高级的桌子”、活用设计模式,代码方能简洁、可靠。
第三单元
由于JML已经在相当程度上给定了数据与行为结构逻辑的限制与要求,本单元的作业所需要我来设计的只有服务于需求的辅助数据结构。牢牢把握需求的范围与本质,合理挑选数据容器,为需求提供最适的解决方案,是搭好的戏台上将戏唱好的重点。
第四单元
本单元使我的层次化理解更上一层楼,通过适配器模式的实践,我进一步认识到了OOP思想的重要性与它的实际指导意义。合理的解耦、模块化设计的经验,正是OOP课程所带给我的。
四个单元中测试理解与实践的演进
第一单元
简单的需求,靠简单的自动化测试方法。本单元的作业引入了构造的自动评测机作为辅助,实际使用过程中发现的自己与他人的覆盖率差距,正是对测试理解尚浅的表征,对问题范围的全部覆盖,是测试考虑的重中之重。
第二单元
多线程的本单元,采用了时域和空间域两个方面针对边界条件、极端条件进行数据设计的思路。对于多线程所带来的时域问题的考虑,使我进一步对“测试范围”有了直观的认识。
第三单元
JML的形式逻辑规格表达,为静态的逻辑验证与语义检查提供了可能。本次作业的测试过程中,对部分关键部分使用JUnit进行了单元测试,规格设计帮助我更好地把握了问题的范围,提供了对于测试Coverage的直观认识。更好地与规格合作,是解决测试问题的一大利好。
第四单元
本单元的测试样例构建,依靠与官方包的方便交互。如何构建工具自动化测试样例生成的流程,是我本单元对测试的重要收获。
课程收获
OO之旅,磕磕绊绊,跟着疾驰前进的课程踽踽前行,作业时很多问题都是初次认识到、学习到,遗憾未能一次至臻完美,但是OO课程带给我的收获却确确实实让我受益匪浅。
在课下许许多多的工程实践中,例如基于面向对象语言Swift的iOS端移动APP开发、基于Node.js、Vue与MongoDB的网站平台搭建中——托OO的福,我都在结构化、模块化、层次化设计等方面颇有受益。
课程改进建议
预习课程
- 适当硬性要求完成以保证预习效果,确保同学们在第一单元作业前已有对JAVA语言基础的充分认识及对OOP思想的基本把握;
- 提供针对具体单元的预习项目,在课程中间同步进行,充分利用博客周的时间。
第一单元
提供优秀架构的作业展示与分析,本单元的作业设计相当有助于对“层次化”的理解和探索,但优秀的工程实践不只来自于课程方法论的讲授与自己的领悟,亦可来源于对他人优秀架构的观察与在此之上的进一步反思。
第三单元
虽然能够启发同学们从工程角度对规格化进行探讨,但是在JML及其相关工具链还不成熟的现状下,本单元作业在部分同学眼中宛如食之无味的照猫画虎,对同学们的工程开发实践帮助会相对小。
课程总体
可以增加测试、设计模式等方面的讲授内容和相对应的实践任务。
课程实验
增加实验反馈。
课程平台
- 使gitlab平台与oo平台进一步同步与协调统一,例如实现助教端push来实时更新指导书,而不是分两套系统管理导致指导书可能出现两边不一样的情形
- 可以对讨论区功能进行进一步强化,例如增加自定标签机制、允许同学对指导书做批注等;
- 对页面展示交互逻辑做优化,例如增加历史提交记录的浏览机能等。
OO大冒险,告一段落,且待在更广阔的天地相遇!
标签:层次化,作业,课程,BUAAOO,测试,设计,第四,单元 来源: https://www.cnblogs.com/TakiP/p/14939165.html