软工实践总结
软件工程实践总结
一、 个人成长
1、学习和使用的新软件
1)、Rational Rose
Rational Rose是一种面向对象的基于UML的可视化建模工具,在实践课的课堂上由学长演示使用这款软件设计用例图和类图,并且在之后也自己练练手。虽然在这次实践中没有负责这方面的内容,没有深入研究,不过通过图形化的显示关系让我感觉挺有用,之后如果接触会进一步学习。
2)、墨刀
墨刀是一款免费的移动应用原型与线框图工具软件,这款工具是见到另一组同学使用后了解的的。它不仅比之前在结对中使用的原型工具易操作,而且提供的功能模块更多,能够实现多种手机App原型展示,由于是在线可以随时用网络登录,而且可以下载到手机。在我们的项目中它从头到尾都发挥着作用,为我们的开发展示出前进方向,让我们的项目变得更具有条理。
3)、海马玩模拟器
这是一款手机模拟器,比android studio自带的手机模拟器更快,更方便,由于有了它,我在测试代码的时候再也不会坐等长时间然后发牢骚吐槽。
2、学习和使用的新工具
1)、Github
github是我们用来管理项目的工具,它采用分布式版本控制系统,每个人的电脑上都是一个完整的版本库 .git。虽然我们小组并没有像其他小组能够深入学习它掌握它的大部分功能。这次项目中比较常用的github指令只有,git add. ,git commit,git pull,git push origin XXX,还有版本回退的git reset,以及查看日志状态的git log和git status。而发挥比较大作用的就是这款工具能够将每个成员提交上去代码与远程版本库中的代码整合起来。这是一项非常强大的功能,如果没有这种功能,我们整合代码的时候就必须采用人工copy,这不仅效率低,而且人工操作容易出错。而github则帮你把这些事情都做好了,你只要把自己修改的代码commit后再pull,它就会把多个人修改出现冲突的地方一个个列出来,你只要在这些地方解决下冲突就可以了。
2)、markdown
这款是老师推荐的博客园排版用工具,这款工具最大的好处就是能使博客变得更有层次性和条理性。直接使用博客园提供的其他编辑器有时似乎会让内容显示错乱。 不过使用起来有点麻烦,不过也就是了解一些简单的指令吧。
3、学习和掌握的新语言、新平台
1)、新语言:
这次的项目是开发android app,而andorid语言也就java,虽然之前在数据库实践的时候有用过,虽然一般,也算是有一些基础,但也有一些不同,而且断层的周期也比较长。不过重拾起来还是比较快,但编码方面就差强人意,有时候想偷懒想把代码整合成一个接口实现泛型,不过最终发现比较困难,这其中有和队友交流的问题,也有自身在以前面向对象学习薄弱的原因。
2)、新平台: android studio
android studio
android程序开发的强大IDE平台,功能很强大,比以前eclicpse好用,但太占内存,如果不是升级了一下电脑的硬件,还真心跑不动。
4、学习和掌握的新方法;
1)Android找bug:
为什么说是找bug而不是说调试呢?因为我采用的是查询日志的方法,而不是真正的使用android studio里面的调试工具。
2)软件框架
一开始我们小组讨论的时候把框架和架构给搞混了。框架是可复用的“半成品”软件,它实现了软件的一些共性部分,并提供一系列定义良好的可变点以保证灵活性和可扩展性。我们小组原本在android端也找了一个框架,不过发现并不是很适合我们的开发,就全部用自己写的。不过在后台队友有使用框架开发。
3)软件架构
软件架构是有关软件整体结构与组件的抽象描述,这一方面我们小组没有做得很好,所以中间开发过程中出现了许多冲突。这是以后我们需要加强的一块。
二、人月神话--项目中的经验总结
1、增加相同功能的类引发的冲突
在项目我主要负责表层显示的处理逻辑,其中有用到一个类和服务器端的相同,但是原本我们讨论的时候遗漏了,所以我创建了一个类,队友也弄了一个。本来以为定义内容一样没有什么差,但后面android端与服务器端交互时候跪了,而且跪了一个晚上到深夜。花了大量时间才发现我们定义的构造函数的参数顺序不一样,在软件开发前期整合的时候要好好注意用心思,不然到了后期真的是成本提高了许多。
2、连贯的重要性
软件开发如果间歇性突进的话还是会造成一定得问题,譬如alpha版本和beta版本之间的实现我们就间隔一周,之后做beta的时候感觉还得花一些时间适应重新找到感觉。
3、精力与效率的统一
在软工实践的项目冲刺阶段我们基本都在熬夜,而且经常找bug到3点多,这有一方面好处,也有一些坏处,熬夜的时候精力不足,导致我们找错排错的效率也低了许多,有事到了3点多还没有找出的bug,隔天花了半个多小时就搞定了,当然这也是依照情况而定的,对于我们小组熬夜感觉不适合找bug,不过一起编码实现功能的话感觉效率不错。
4、在实践过程中学习提高
对于android开发,我们小组一开始基本上都是零基础,其实原本我们都和大腿商量好了,但结果最终没有抱上。不过这种绝境求生,也让我们有了很大的提升,跌跌撞撞地学,跌跌撞撞地做,虽然最终的成品并不是很好,但是我们的基本功能都搞定了。
5、编码规范
虽然一开始我们有做好编码规范,但后来做的时候在仓促中也逐渐把它丢了,所以后期编码一多,量一大,感觉要看懂就得花点时间。
三、对下一届实践的期许
1、实践还是得从小抓起,现在回首一下自己为什么做项目会感觉如此有难度,很重要一点就是之前安排得太轻松,人不逼就不知道自己有多大潜力。
2、github的使用。可以在前期的c艹就让下一届的种子们练练手。
3、在前期的实践中老师可以给他们一些有建设性的意见,让学弟学妹们的自学提供一些方向。
四、对未来的期许
1、 追求卓越,其实人的内心感受对能力影响很大,不管是由于自身还是外在迫使,一定要让自己坚定地走下去。
2、 多做一些项目,在实践中真正提高自我。
3、 多学习,将学到东西做一些总结归纳,做好知识储备。
五、总结
也许这个结束仅仅是意味着新的开始,在这段历程中我们付出许多,收获也丰硕。做到最后,也没有那种早知道就不选这门课的消极想法了,只有想着让它跑起来,很高兴能和队友们一起攻坚克难,一起投入生命的光点燃漆黑的夜(熬夜呀。。),然后享受着由于激动把控不住音量而被隔壁宿舍投诉的感觉。也谢谢老师助教为我们提供了这么一个机会,虽然内心有点纠结。。。落幕是为了下一次绽放做准备,我们会继续加油的。。。