博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

个人作业收官——软件工程实践总结

Posted on 2016-12-31 21:14  yuaoi  阅读(247)  评论(2编辑  收藏  举报

软工实践最后一次写总结了,好像写了很多次的样子,不过这次有点不一样。这篇总结写在2016年的最后一天,也让我不禁思考自己这一年来到底有没有努力,是不是进步了。

一、在实践中的成长

课程目标的实现

对实践项目完成后学习到的能力的预期:第一个是自己的代码能力,算是第一次Android项目开发吧,学过java,希望这次好好努力学点东西。第二个是组织能力,作为组长,希望做到分工合理,调动大家一起学习进步。第三个是团队协作能力,有困难大家一起解决,一起克服。

对项目课程的期望:希望从这门课得到实践上的提升,希望多得到老师的指导,也希望队员们一起加油,密切合作,共同完成目标。

对项目的愿景规划:希望我们的项目会是一个有实际用途能够被广泛使用为大众提供帮助的应用,并且能够得到推广,是一个值得我们长期维护下去的应用。

2016-9-7我写下了这个课程目标。将近四个月过去,对比现在的自己总结来说,我对这个目标的完成情况有这几点:

  1. 代码水平上,算是入门了Android了,对Android开发的基本架构有了一定了解。
  2. 作为队长和PM,我已经意识到在团队中这个角色起的重要作用,不仅要凝聚队员,协调分工,还要懂得统筹计划,决策定主意。我离一名好队长还有距离,如果还有这样的机会,我会加倍努力的。
  3. 团队协作方面,队伍遇到问题时每个队友都很积极,一起解决。不管是接口对接时遇到了问题两部分的负责人一起讨论解决,还是提交前遇到了bug大家围在一起讨论修复,我觉得团队一直有着良好的团队合作精神。
  4. 项目方面,一起买我觉得是一个有意义的并且实用的点子,能为人们生活中的需求提供帮助,继续开发下去一定会是一个很好的应用。

我的提升

1、学习和使用的新软件

  • Android Studio:敲代码,就决定是你了~(●´ω`●)ノ

  • process on:一个在线作图平台,UML图,流程图各种图,甚至原型设计也可以(`・ω・´)

  • leangoo:给他任务卡片,每天拖动到到完成里,简洁美观的燃尽图这么容易就生成了

  • Typora:就是我正在写博客用的这个,写博客必备,各种排版右键都有~

  • 墨刀:画原型,挺不错的

2、学习和使用的新工具

  • git:团队写代码必备,虽然很难用_(:з」∠)__

  • 博客:记一下自己学的东西,说不定需要的时候就用上了

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

android

4、完成了多少行的代码

代码量好像比较少,1000行左右

5、学习和掌握的新方法

  • Junit单元测试:老师教的方法,以前不知道单元测试,这个算是入门吧
  • 结对编程:个人能力和协作能力同步提升的好方法

6、其他的提升

  • 解决问题的能力:遇到困难时,通过更多的渠道获取帮助,根据困难找方法,一个不行就试另一个,在这个过程中得到积累学习。
  • 写文档的能力:写了不少文档了,特别是Beta版本中。用了md以后,喜欢上了这种排版格式,不仅美观,格式也清楚。希望以后能多写博客随笔,一点点积累才会成长。

二、我的人月神话

项目实践中的经验总结

  • 初期计划是一定要的,作为队长更要在这方面下功夫,在开始前就先讨论好计划,最好细化到每天的分工,并做好耗时估计。这份计划要包括分工,测试安排,日程安排,接口文档等。做好计划,才不会手忙脚乱。
  • 有时候并没有预期那么顺利,在某个节点卡壳了,要根据实际修改计划,合理调度人员才能更快解决困难。
  • 遇到困难解决不了可以请教有经验的人,老师或者同学,有时候比自己到处查资料解决得更有效率。
  • 文档很重要,比如接口文档是双方并行编程的前提,能为对接省去不少麻烦;再比如总结文档,开始新阶段的工作时,看看上个阶段的总结,一定可以得到改进的灵感,为新目标打好基础。
  • 分工的合理性不仅影响团队的进度,合理的分工还会减少每个人的负担。
  • 每天的总结是有必要的,对个人可以记录进度和自己遇到的问题,对团队,方便进度汇总,适当调整安排。
  • git要好好学啊,感觉用好了git对版本控制啥的很有帮助。(想起使用git的血泪史(ノT_T)ノ┴—┴)

实例/例证结合的分析

我在alpha版本写一个向服务器发起网络请求的接口时,遇到一个问题困扰了我好久:子线程获取了http请求返回的信息后,不知道怎么传给主线程。然后那两天各种查资料、翻书,试了好多方法都不行。最后终于决定把这个问题写到冲刺随笔里寻求帮助,结果用了老师提供的方法迎刃而解,这个故事告诉我们,遇到问题多问有经验的人啊_(:з」∠)__

三、对学弟学妹的建议

  • 不要抱着混的态度选这门课啦,因为毕竟这是一个难得的机会,认真对待,一定有所收获的。
  • 不要因为没经验而怕自己做不好,因为每一件事都是从无到有,试一试,可能没有想象中那么难。
  • 多学习使用一些开发常用的工具,你的工作效率会有很大提升。
  • 多看别人的博客,借鉴经验,学到就是赚到~
  • 然后多写博客啦,感觉是个很不错的习惯。
  • 大三上可能很累,所以要分配好时间,和队友要协调好。

四、团队分析

《构建之法》中提到的关于团队合作的四个阶段,结合我的团队分析如下

  • 萌芽

这一阶段的特征是成员交流较少,个人提出的分歧意见较少,互相不了解,期望也不尽相同。这也是我们团队开始阶段的特点,大家虽然是同学,但是对各自的能力还是不知底细,所以大家没啥明确的目标,各做各的,缺乏交流。

  • 磨合

alpha阶段,多次有这样的问题:后端修改了接口文档,但是只告诉了m端的负责人,没有让团队各成员知悉,导致后来对接出现了分歧,造成不少麻烦。这时候的我们没有成型的文档规范和保证消息传达的机制。虽然起步了,但是步伐还是稍显笨拙。

  • 规范

到了beta版本,分工更明确了,大家各尽其责,遇到问题除了通知相关人员,还知会pm,方便调整计划。我负责管理大家的需求的协调,版本控制也更得心应手了。同时队员更能遵循预期的计划和规范,算是步入正轨,有了规范。

  • 创造

当beta版本结束,大家为共同努力的结果而欣喜的时候,我认为这个团队不仅更有凝聚力了,在未来随着推动这个项目的改进,大家会有更多奇思妙想,更多创造的。

五、阅读笔记

参考文献

Code quality analysis in open source software development

表示英文文献看不懂啊TAT,谈谈老师提到的几个问题吧

  • 我的代码是不是大泥球?

刚开始编码是并没有意识到代码的复用的重要性,写一个接口,总是用一堆重复写过的代码,后来意识到,将一些通用模块封装将减少很多麻烦。总的来说,自己写的代码质量不是很高吧,可能是半个泥球(○’ω’○)

  • 衡量代码质量的方法
  1. 从两个方面评估代码质量:外部质量,从用户、使用者角度去衡量; 内部质量,从员工、开发者角度去衡量。
  2. 外部质量包括正确性 、易用性 、高效率 、适应性 、精确性 、完整性。
  3. 内部质量包括可维护性、灵活性、可移植性 、可读性 、可测试性。

六、怎样证明我学会了软件工程

  • 研发出符合用户需求的软件

目前一起买这个app只是用于身边同学的尝试的使用,目前还缺乏广泛推广的条件,需要开发更全面的功能来喜迎更多用户。

  • 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件

整个开发流程下来,在老师的安排下,我们虽然是第一次做软工的时间项目,但是按部就班,做了不少准备,通过团队协作,利用各种工具,实现了beta版本的最终上线,达到了预期目标。所以我们团队达到了这个指标

  • 并且通过数据展现软件是可以维护和继续发展的

一起买项目从2016-10-14在coding.net创建到2016-12-21最后一次beta提交,总计有225个到master分支的commits,每个队员分别有79,49,43,23,18,13commit。项目统计

从alpha版本到beta版本,通过git协同的方式实现软件源码和文档的共享,同步,归并,版本控制。

七、自我介绍

我是计算机4班的鲍亮。我觉得多经历才能成长,刚开始考虑选这门课的时候很担心自己会搞砸,拖队友后腿,到了莫名其妙当上队长,我意识到自己的责任。从alpha版本到beta版本,一路以来的辛苦也好,喜悦也好都历历在目。我会记住这个不容易的过程的。只有更努力付出才对得起共同奋斗的人。很高兴自己上过软工实践这门课,未来继续加油。

八、留念

新年快乐,team Nobug~