2017202110104-高级软件工程2017第8次作业—个人总结

一、请参考第一次作业,当初你对课程的承诺和期望都兑现了吗?

第一次作业中,我对课程的承诺和期望是:

我希望通过这门课程能够对软件开发的整个过程有一个全面的认识。在这门课上,我打算周一至周五每天拿出一个小时左右(因为课程比较多),周末拿出一天时间,合计15个小时左右。既然有勇气选这门课,我愿意付出更多时间和精力。

现在再来看之前写下的承诺和期望,9周前的我对于这门课还是想的有些“简单”。在短短的9周时间里我参与完成了三个项目,不仅对软件开发的整个过程有了全面的认识,而且实打实的提高了自己的编程能力、沟通与协作能力,学习到许多新工具的使用。与其他课程相比,我在这门课上花费的时间和精力是最多的,在完成结对项目和团队项目时,由于时间比较紧,课余时间基本都投入到了项目实践中。当然现在对过去惊心动魄的九周进行回顾,我会说所有的努力都是值得的。


二、总结这门课程的实践给你带来的提升,包括

1.学习和使用的新软件

  • SourceTree:git图形化客户端,使用起来非常直观方便,节省了很多时间。

2.学习和使用的新工具

  • Github:这次使用github来管理个人项目和团队项目,对于我来说是新的体验,也因此了解到项目版本控制的重要性和github强大的功能。
  • Junit、EclEmma插件:学会使用Junit对代码进行单元测试,使用EclEmma插件查看代码覆盖率。
  • 博客园、markdown文本编辑:学会使用Markdown来编辑博文,并发布到博客园上。

3.学习和掌握的新语言、新平台

  • Javascript/Html:在结对项目中我们选择进行web开发,之前对html和javascript语言有过一些了解但是用的不多,这次重新回顾并且学习到新的用法,提高了熟练程度。
  • Springboot框架:结对项目中进行web开发时,有开发经验的同学推荐我们使用springboot框架作为开发框架,由于时间紧任务重,整个学习过程比较艰难但是最后也取得了不错的效果。
  • bmob后端云平台:团队项目中使用bmob平台作为后端,bmob提供了强大的后端功能,这省去了大量的服务器端编程工作,并且数据操作简单易学。

4.统计一下,你在这门软件工程实践中,完成了多少行的代码

  • 个人项目、结对项目、团队项目加起来大概有2500行左右。

5.学习和掌握的新方法

  • PSP:学会使用PSP表格对软件工程的各个阶段所需时间进行估计,并与实际花费时间进行比较。记得在个人项目中,我对自己在各个阶段的时间估计与最后的实际花费时间相差比较大,实际的开发过程远没有想象的顺利,编程时遇到的问题比较多,相应花费的时间就很长,最后在具体编码阶段实际所用时间几乎是计划时间的两倍,我也从中学习到在今后的实践中要更加合理的安排时间,以免影响整个项目的进度。
  • 结对编程:第一次接触结对编程这种形式,在这之前我完全没有“驾驶员”和“领航员”的概念,经过课堂上的学习和课下读书,我们在实践过程中不断变换“驾驶员”和“领航员”的角色,达到了事半功倍的效果,有时自己完全没有注意到的错误partner会及时指出,我们也可以随时沟通和讨论,保证项目的顺利进行。
  • 敏捷流程:在团队项目中我们用到了敏捷开发流程,绘制燃尽图和看板图,把已经完成的任务、正在进行的任务以及还未完成的任务做成任务卡片。并且小组在冲刺过程中每天都要开会讨论,总结当日的工作和遇到的问题。

6.其他的提升

  • 编程能力:首先我的动手能力得到了很大的提升,之前我一直跟人说自己编程能力很弱,没有什么项目开发经验,但是这两句话在某种意义上说只是一个“挡箭牌”,在某些时候给自己一点心理安慰,其实如果没有练习的过程,编程能力只能在原地打转。在这门课中我的编程能力得到了很大的锻炼,也找回了一点自信,今后也一定会多动手编程,努力提升自己。
  • 语言表达能力:无论是结对项目还是团队项目,我不再是孤军奋战,这也意味着要和partner、队友进行及时的沟通,还有发表博客,也要做到让所有人能够读明白你要讲什么,因此本门课也让我的语言表达能力得到了一定的提升。
  • 团队协作能力:在团队项目中我与队友们进行了很好的合作,任务分配明确,期间遇到什么问题大家也会互相帮助。

三、写下属于自己的人月神话——项目实践中的经验总结+实例/例证结合的分析。

  • 个人项目:在个人项目中我采取了任务分解的方法,虽然只有短短几天时间,但是我还是把整个过程分成几个阶段,逐步地增加功能,这样的话每个阶段心中都有明确的目标,完成后也会更加有动力。本来我以为自己完成不了添加括号的功能,后来通过努力竟然按时完成了,这也让我非常开心。因为这次的效果不错,在今后的实践中,我可能还是会采取这样的方法。另外,个人项目的编程过程中我出现了很多非常低级的错误,这是由于基础不扎实、编程不熟练造成的,我把出现的比较典型的错误记录了下来,对自己也是一个提醒。
  • 结对项目:结对项目的时间比较紧张,十一长假期间我和partner都没有回家,在实验室学习web开发的相关知识,但是还是觉得只学到了一些皮毛,最后完成的项目有很大提升的空间。我从partner身上也学到了很多东西,他的代码封装性就做的很好,并且对代码的质量和软件的架构方面也考虑的比较多。
  • 团队项目:在做团队项目中我印象非常深刻的是,我们本来打算用自己的电脑搭服务器,部署在tomcat上,然后自己写通信协议,以此作为后端平台。但是花了两天的时间服务器还是搭不起来,这样前端写的程序是否正确也无法验证,整个项目的进度缓慢,当时的时间又比较紧,我们都很着急。后来我的一个同学向我推荐使用bmob后端云,我上网查看了资料发现bmob学习起来比较容易,就试着实现了登录和注册的功能,然后与队友讨论后决定放弃自己搭建服务器,使用bmob作为后端。我想说的是其实我们项目在开始之初就考虑过使用bmob,但是觉得这是一个完全陌生的东西需要从0学起就没了下文,也没有查阅相关的资料。事实证明在项目准备阶段应该认真评估各种方法的成本,选择更合适的架构,或者在完全不知道能否实现成功的时候有一个备用方案,否则中间出现问题就很有可能抓瞎。

四、分析一下自己所处的团队。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?

  • 萌芽阶段:我们的团队成员之间都比较熟悉,提出项目时每个人都想了一些idea,经过讨论大家对校内二手交易app这个项目都很赞同。
  • 磨合阶段:我们每个人对app开发的经验不同,刚开始时几乎每天都在一起编程,不断磨合进度。
  • 规范阶段:经过一段时间的磨合,每个人都明确了自己的任务,只需在每日会议上总结和提出问题。
  • 创造阶段:由于不熟悉开发环境且时间紧迫,我们团队可能还未达到创造阶段。

五、在今后的教学中,老师们还将根据同学们的基础、期望达到的目标,在教学内容和作业量上做更多的调整,争取为大家提供一个更加个性化的学习过程。你对课程设计(授课内容、方式、作业内容)有什么建议吗?另外,作为学长的你,对后面的学弟学妹们有什么建议?

  • 首先我觉得对教学内容和作业量做出调整是很有必要的,因为这个课程只有9周的时间,如果做三个项目的话时间还是有点紧,虽然这次我们都按时完成了,但是我觉得如果给我们更多的时间,项目完成的质量会更高。希望老师能在作业量上做出调整,并且根据学生的不同需求来分配任务。另外,希望老师在课堂中加入项目相关的内容,因为时间真的是很紧,大家一心想完成项目,如果课上只讲一些理论知识的话大家都不太感兴趣,希望讲授的内容可以和实践结合起来。
  • 作为“过来人”,我希望学弟学妹们能勇于挑战自我,对于我来说,一直在证明着“deadline是第一生产力”,努力在deadline之前完成任务的过程中会有意想不到的收获。

六、助教老师为课程的顺利开展做了很多工作,与老师们的交流也让大家获益匪浅。你对助教老师的工作可以提一些意见和建议吗?

助教老师非常认真负责,我们每个人的作业他都会仔细检查,在这里非常感谢他的辛苦工作(另外我把课程的微信群置顶了,几乎每天助教老师都会在微信群里发布课程的相关信息,每次手机一震我就心中一颤:D)。希望助教老师可以为分数较低的一项做出说明或者提出改进的意见,以便我们之后能够做的更好。

posted @ 2017-11-13 15:53  Cyannn  阅读(201)  评论(1编辑  收藏  举报