我的交付项目总结
单板串口控制项目是我进入公司的第一个独立交付项目,大体流程:
I 接到需求(3.23日)
总体流程看上去是非常复杂的,至少会有14个步骤,每个步骤实现相应的控制流程,共计约100多类串口命令;测试结果放入Excel中;(流程好复杂…,C#我刚入门半个多月,BBU和单板的操作具体咋搞啊…,先学习一下吧)
2. 一周时间功能开发
3.24-4.2熟悉总体控制流程,将串口命令按照功能划分,放到Excel中,摸索BBU和单板串口的控制方法,根据流程写顺序函数,每个函数实现一个功能,大体写了有20个左右的函数,总体控制架构OK。(学习了Excel的读取方法,POI/OLDB,程序写了这么长,功能是否OK呀,我还没有来的及验证,肯定有很多问题,老大催着交付,赶紧给项目验证下吧)
3. 一周时间紧张调试
4.4-4.9,需求有变动,有些命令变动,程序又要加几个小功能,存储格式有些变化,初步调试,一堆问题,赶紧改吧…(这周,每天晚上工作到10点多,另外一个项目又催的急,只能给他们加班晚上调试修改,两个项目都很急啊….)
4. 一周时间的版本稳定
4.11-4.16,这周这个项目终于问题少了很多,不过有个大问题-存储经常异常,常常丢失数据,本来感觉数据量太大(1M),把存储修改为每12小时存储一个Excel,结果还是有人8小时后就挂死,没办法,千死万想,找了部门的老员工求助,最终将Excel存储数据精简,多余的数据存储在TXT中,最终问题解决;
主程序代码量:1500行+,函数数量30+,调试稳定时间约2周,而且后面零星的需求量多,基本都有修改代码的必要,简直不胜其扰!
这个项目,我的错误太多,需要改进的地方也有很多,我感觉有很多地方可以改进的地方,比如沟通交流、软件构建、需求理解、程序设计等等有太多需要改进的地方,我就先从我最想写的地方写起来吧——软件构建。(另起一篇博客吧。。。)
后记:程序重构
之前的程序使用效果还可以,项目组决定继续开发,适应新的需求,同时提高测试效率(多线程并行处理)
1.功能抽象再提升
之前程序的设计,是根据需求的的功能点实现的,而且对每一个功能点写一个函数,每一个功能点要匹配唯一的指令(配置在EXCEL表格当中),程序功能点众多,导致程序函数有30+个,程序灵活性很差,调整一个功能的顺序,代码得修改,调整一个串口返回值的判决,程序得修改,导致程序跟着需求的变动,随时进行修改,程序健壮性差。
抽象提升:仔细研究发现,串口指令虽然非常多,但是命令的种类很少,基本上可以分为:设置命令、read命令、需要绑定特定参数的命令等,根据命令类型设计程序,给程序对命令的处理提供了很大的灵活性,同时不去理会命令的功能,大大减少了函数的数量,使得代码量和函数数量分别减少70%和60%,最关键的是,修改代码的必要性减少80%;
2.逻辑层和底层的分离
参照MVVM的分层思想,将整个项目的程序分为:逻辑层、物理层、界面控制层,逻辑层实现整个芯片的串口控制逻辑,物理层实现对物理串口的打开、关闭,已经串口的发送和读取的控制,界面控制时间交给用户的接口控制端;
目前该过程正在进行中。。。。。