第一次做业的架构设计我以为作的不够好
UML图以下
在MyUmlInteraction中创建了一个UmlGraph, 经过对UmlGraph的查询进行interaction。
在UmlGraph中定义了如下数据
其中ClassInformation这个是对于接口和类这两种UmlElement的抽象, 包含了java
- 全部的父类
- 全部的属性
- 全部的方法
- 关联的全部类
- 实现的全部接口
全部的查询都是先经过ID或者name找到相应的ClassInformation对象, 而后再其中进行查询。
在创建UML图的时候, 我用了三轮的parse, 针对不一样的UmlElement我写了对应的parse方法。- 在第一轮parse里, 我读入了UML_CLASS和UML_INTERFACE
- 在第二轮parse里, 我读入了UML_ATTRIBUTE, OPERATION, ASSOCIATIONEND, GENERALIZATION, INTERFACE_REALIZATION这些element
- 在第三轮中, 我读入了UML_PARAMETER和UML_ASSOCIATION
在第二次做业中, 我对于整个工程进行了代码重构
UML结构图如上图所示, 在每个UML图中一共有三个子图, 分别为python
- classGraph 类图
2.sequenceGraph 顺序图
3.stateGraph 状态图
在对于UMLGRAPH的查询中, 把功能分摊到每个类中去, 实现高内聚, 低耦合, 每种图之间不要有耦合关系。设计模式
classGraph基本是把第一次的全部内容搬了过来, 除了添加了一些check的规则外没有太多改动。数据结构
sequenceGraph用来存储状态图, 核心数据结构为SequenceModel, 每个model里面包含和许多SIngleLifeLine和UMLMEssage
在seuqcenGraph中提供了id to model和name to mode两种查询方式。多线程
stateGraph和sequenceGraph的设计方式相似, 每个stateGraph中有许多个StateMachineModel, 每个model里有许多state。
state中存储了状态的转移。架构
四个单元, 对于OO的理解各不相同并发
4.最后一个单元UML,是对前面全部单元的综合, 虽然只有两次, 可是前面所用的技能都有体现。ide
最开始的测试方式是经过idea自带的交互窗口进行测试。
以后学会了用命令行, 编译程序, 而后从txt里面读入数据, 进行测试。
到了多线程电梯单元, 和JML单元, 我经过python生成一些测试数据进行压力测试, 和输出对比。
后来逐渐开始使用JUNIT进行测试。工具
经过课程, 我有如下几点收货测试
- 学会java语言, 了解封装继承多态的方法。
- 学会各类工具, 好比IDEA, checkStyle, metrics, jprofiler
- 学会了软件测试, 使用jUNIT 和本身写评测机生成数据来测试的方法。
- 对于架构设计和软件的重构方法有了必定的了解。(里氏替换原则, 接口抽离原则, 高内聚低耦合原则)
- 对于多线程并发有了深入的认识。
- 使用JML建模语言对于软件进行规格设计, 和形式验证
- 使用UML对于架构进行设计
有如下三点建议