个人博客链接:
http://www.cnblogs.com/kjzxzzh/p/4074386.html
http://www.cnblogs.com/kjzxzzh/p/4027699.html
虽然这学期我对软工这门课一直抱怨很多,觉得很辛苦而且效果不大。但到现在,做完整个工程后慢慢回想,才意识到其实在这门课中学到了很多,也能理解老师的各种要求。非常感谢老师在这一学期的监督指导。
我的主要工作:
个人作业(单词搜索程序):
这次的程序相对而言我比较满意(就成绩而言),但是其实代码中存在很多问题。比如:没有用好面向对象的技术,导致程序既不像面向过程,也不像面向对象。代码可能自己读起来比较轻松,但是交给另一个人可能就是天书了。
第二个不足的地方是刚开始对自己的信心不足,只想完成最简单的任务(一个单词搜索),慢慢写完后发现自己还是有很多余力来完成高级任务。在这一修改过程中,我发现需求改变对程序来说意味着多么大的灾难,尤其是对一个“泥球”程序。最终导致自己的程序冗余度极高,执行效率很低。
结对编程作业:
这次编程可以说是我最开心的编程经历之一,我和队友张迎春比较熟,他也是一个很好相处、很能包容我的错误的人。在这次作业中,我感受到了结对编程的魅力:我能从交流中更加快速的发现自己的错误,能在对方的监督下使自己的程序风格编的更好,能够在交流中扩展自己的思维等等。这次编程可能是我本学期最满意的一次作业。
M1/M2阶段:
完成程序欢迎界面
这个工作对我来说最大的难点在于我是第一次接触android开发。从零开始学起,在组长帮助下完成了android安装调试和基本的语法结构。这段代码的难度其实不是很大,但由于经验的不足还是花了很长时间。
完成程序主界面设计和实现:
这个部分主要任务是设计ui、获得用户的输入、完成在不同页面之间的通信。这段程序的难度也不是很大,能比较轻松的完成。
设计推荐菜单:
主要任务是使用PageView、网络异步加载图片、连接API获取信息。这部分工作中,前两个在网上都有很多资料,也能比较好的完成。但是连接API文档出现了很多问题。个人根绝这个API不是很好,他的接口说明也不是很清楚,所以程序经常崩溃,花费了大量时间。
在这个过程中,我明白了什么才是一个好的API:有完整的接口说明文档,这样使用起来才能避免错误。
进一步,什么才是一个好的程序块:有完整的接口说明文档,程序块之间独立性较强。只有这样的代码段在一个工程中在能算作是好的代码,当程序进行集合的时候,不会因为调用而产生错误。也不会因为两个人对程序理解的偏差导致程序作废。
M1/M2阶段问题和反思:
1.交流问题。
可以说我们组的成绩非常差,我也认真思考了这个问题。我觉得最大的不足在于我们组交流过少。我们团队的组成比交复杂,包含了6、7班的不同成员,大家的熟知程度很低,所以交流起来不是很方便。更大的错误是我们没有意识到这个问题,我们在m1阶段也没有认真的让队员之间增加默契,只是单纯的分配任务、个人完成任务。缺少必要的交流使我们产生了很多问题:
没有完整详尽的文档,组合大家的代码变得非常困难。
ui是每个人单独设计完成,这样导致我们的程序在初始阶段感觉风格变化很大,像是碎片而不是一个完整的程序。最后经过组长和大家的努力才弥补这个错误。
缺少白盒测试,由于测试人员和程序员之间缺少交流,导致白盒测试这一方面存在缺陷,测试可能不是很完整。
2.文档问题。
最初分配任务的时候没有设计文档,导致大家的程序差别很大。这样的后果是:
自己的程序只能由自己维护,别人根本不懂自己的程序。
功能扩充变的非常复杂。
程序组合很困难。
3.时间分配问题
这个问题是我(和我们团队)在m2阶段最大的问题,在这一阶段,很多大作业都要提交,大家都或多或少的忽略了软工作业,最后导致我们在软工作业提交前时间很紧张。
4.任务分配
这个问题主要也是“抱大腿”的问题。据我了解,至少在我们这门课中所有的团队都存在这一问题。在这次作业中,队长丁辛的任务量非常大,有的人却基本感觉不到这门课的存在。但就我个人而言,我还是很努力的完成了我所有的任务。
之后计划:
我觉得理解和学习软工这门课最好的办法就是实践,当完成一个项目后,可以尝试和不同的人、差别更大的人组成一个团队来完成项目开发。在寒假我也准备和我高中同学来组队,做一些感兴趣的程序。他们都来自于不同的大学,也希望我们能在这个过程中学到更多。