本单元两次作业的架构设计
这一单元有两次作业,第一次是UML类图的架构设计,第二次是对于UML顺序图与状态图的架构设计。因为时间关系,大四毕业匆忙,我非常遗憾没有很好地完成第二次作业,在此我先表达歉意。但是架构设计对于这两次作业而言可谓是举足轻重,对于UML类图而言,我的设计是读取输入然后用一个由HashMap组成的ArrayList去存储这些UML类图的键值对,每一个HashMap对应一个节点,有唯一的Id。对于每一个函数,都遍历这个ArrayList去查找到响应的HashMap,然后执行相关的操作。
对于这一单元作业的架构设计,我将采用以下方法进行分析:
Complexity Metrics(复杂度分析)
这部分我们需要使用的主要是方法和类的复杂度分析。
方法的复杂度分析主要基于循环复杂度的计算。循环复杂度是一种表示程序复杂度的软件度量,由程序流程图中的“基础路径”数量得来。
对于类,有OCavg和WMC两个项目。
Dependency Metrics(依赖度分析)
整体的架构如下图所示:
度量表如下所示:
在四个单元中架构设计及OO方法理解的演进
这四个单元的OO作业各有其侧重点,却层层递进。
- 第一个单元处于熟悉java语言的阶段, 为了让我们理解面向对象的思想, 更多的是通过封装的方式实现高内聚低耦合, 用层次化结构设计降低代码错误的方式。
- 到了第二单元, 有一些设计模式的东西在里面, 通过对生产者消费者模型的理解, 实现了多线程电梯, 理解了多线程结构的设计原则。
- 第三单元, 我体会到的是一个软件的由最初逐步迭代, 最终变的很复杂的过程。 这需要把每一个功能抽象出来,实现软件的可扩展性。
- 最后一个单元UML,是对前面所有单元的综合, 虽然只有两次, 但是前面所用的技能都有体现。
在四个单元中测试理解与实践的演进
在进行作业完成的同时,需要同时对代码进行测试,我由最初的手动调试,想边界测试点,到最后的自主测试处理,产生了很大的进步。主要是从自动生成实例,进行输入测试与比对,到人为生成复杂实例,针对特别功能进行针对性测试,再到最后的完全自动化,使用Junit进行测试,自动检测出相应错误。
自己的课程收获
我感觉自己从对面向对象思想和Java语言什么都不懂的小白,变成了理解Java,熟悉面向对象思想,多线程编程和软件架构设计的编程者。这其中,老师和助教们对我起到了莫大的帮助。相对于助教和老师们的工作,我们做的真的很少了。我通过这门课,对java语言掌握更熟练,对多线程掌握更熟练,学会了软件测试的方法,对设计模式有了一定的了解,对UML的类图,状态图和顺序图有了更深的理解。感谢这门课给我带来的收获!
给课程提三个具体改进建议
先凑齐三点小建议吧:
最后还是要感谢课程组,改写OO这门课,虽然我没有完美地完成所有作业,但是我还是学到了很多,希望这门课越开越好!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。