实时控制软件设计大作业总结
直到今天才着手写这一篇总结,原因有二:
一是因为团队的项目迟迟没有完成。其中的因素有很多,在这里我做一下检讨,作为我们这个组的组长,我没有起到很好的管理团队的作用,导致了队员在项目前期准备的时候没有把这件事放在心上,直到要上交的时候才匆匆赶工。其他的因素就不一一列举了。
二是最近的工作重心放在了另一个项目的开发(UVCCamera,在我的github上面已经提交了),同时也仔细看了一下邹欣老师的《构建之法--现代软件工程》。所以没有抽出时间来写这一篇博客。
这篇文档的主要目的,一个是对我们团队的项目成果做一个总结,一个是对自己在这门课上的收获做一个总结。
一、项目总结
刚开始得知我们的大作业题目的时候,我们几乎都是迷茫的,不知道这个作业到底是要我们做些什么东西,然后我们就匆匆组了队,就这样等着,船到桥头自然直。期间老师讲了很多开发过程中实用的方法,比如makefile语法、单元测试等等,但是由于我们并没有积极去实践,所以很多东西只是一知半解,并不知道为什么会这样。
后来直到要交任务的前几天,我们终于意识到自己什么都还没做,所以像热锅上的蚂蚁。可能我们组的队员本身基础比较薄弱,到这个时候,很多队员还不知道git工具是个什么东西,更别谈用上git工具进行版本控制了。
既然知道自己不会了,那就赶紧学,由于我之前的基础稍微好一点,清楚一些基本的操作,所以我们组特意开了一次会,讲讲git工具应该怎么用,经过一个下午的讨论、讲解,终于我们组的成员都能够使用git工具的简单操作了。同时我们也建立了属于我们小组的organization
之后就是项目的实现方式的讨论了,对于这个实现方式我们讨论了很久,最终决定使用AS软件进行开发。但是结果看来这并不是最好的方式:因为AS软件的教程在网上相对较少,所以在开发遇到困难的时候,我们几乎很难靠自己的探索解决问题。这里出现了分歧,一些同学觉得应该换一种开发方式,起码保证这个项目应该是能继续进行下去的。另一些同学觉得,应该克服眼前的困难,继续通过AS开发。这里我没有做好协调,而是团队就这样自然划分成为了两个小队各自为战。
不过通过这种变通,让原来本来无从下手的同学能够继续研究下去,一些同学不擅长c和c++,在短时间内让他们完成界面是个比较复杂的问题,于是我们将问题先转化为让他们先编写html的网页文件,因为他们有一定的基础,所以很快能够上手去编,然后也能做出一些页面(只不过我们现在还没掌握把这些页面的数据传到后台)。
言归正传,进行项目的综述。
由于AS软件遇到了一些未知的错误,导致页面显示一直没办法实现。所以我们利用java的swing做出了一个咖啡机的模型。具体描述如下:
这是咖啡机的页面:
具有请求加水、加粉、加糖、加杯子、选择咖啡类型、投币退币、取咖啡功能(水温模块现在只能保持水温95摄氏度,有待改进)
在没有达到冲泡咖啡的条件的时候是不能制作咖啡的(绿色代表条件满足,红色代表条件不满足),没有投币的时候也是不能制造咖啡的,每杯咖啡一块钱。(物美价廉?)
点击加水后:加水条件满足
点击加粉后:加粉条件满足
点击加糖后,加糖条件满足
点击加杯后,加杯子条件满足
点击投币,可以进行投币
此时可以选择冲泡浓咖啡、淡咖啡或者是奶茶,会有动态画面和声音来显示咖啡从无到有的过程
浓咖啡:
淡咖啡:
奶茶:
点击取出后,点击退币,可以听到退币的声音,然后币值变为0
这就是这个java项目的整个过程,附上这个java项目的文件目录
这个项目虽然实现的功能很简单,但是在开发的过程中还是遇到不少的困难的。最大的难题就是对于类的功能的确定,哪些东西应该放在一个类里面,应该实现些什么样的功能。还有类和类之间参数的传递,我们也花了一些功夫去研究到底怎样编译器才不会报错。
这个java项目并没有体现所有人的努力,有几个同学花了很多时间去学习html搭建页面,也做出了不错的成果,但是我们现在还没办法把它和java的数据连接起来,所以还没办法使用,但是毋庸置疑,如果没有这门课程的话,他们可能一辈子都不会去接触这方面的编程的。
总之,在这门课程中,大家看到了一些和传统课程不一样的地方。或许我们之中只有一两个以后会继续编程,不过,这堂课程也教会了我们严谨、团队合作。有些事情,如果你不去做,那么永远不会了解这种感受。
二、个人总结
对于我个人而言,我觉得这门课让我受益匪浅。现做一个总结:
1、抽时间读完了邹欣老师的《构建之法--现代软件工程》,让我对软件开发有了更系统的认识,从软件工程的概念到各种软件开发需要使用到的工具,从个人技术和规范到团队合作中的有效方法,对于一个有志于软件开发的新手来说,觉得挺有用的。不过书中很多地方我还不能很好的体会,所以以后的开发过程中,我还会经常翻翻这本书,温故而知新。
2、接触了有用的工具git,并且体会到了其好处,现在我已经在用github管理自己的一些文档和安卓项目了。
3、接触了一些软件开发中的常用方法:makefile语法,markdown语法等等,而且我现在做的一个项目已经涉及到了makefile语法,这无疑会给我的项目带来便利。
另外我也决定用markdown语法去编写我的博客(CSDN博客,可以得积分=。=)
以下是我正在接触的一些东西:
4、协同开发能力,因为我一直是一个人写一些小代码,所以这方面能力会很弱,这门课让我意识到这点,我也会做一些有关的锻炼,比如多在github上参加开源项目。
总之,实时软件控制设计这门课带给我一份有些小痛苦,但是有很有收获的回忆。保持勤奋,保持思考。