个人作业收官

一、回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望,对比现在的你和开学初博客开篇的课程目标和期待。

开学的时候我希望我自己不仅仅能够完成我自己所希望完成的关于安卓前端的工作,还能够和安卓后端的同学一同完成一部分工作,更好的充实我的知识面。我期待着我能够提高自己找到并且解决BUG的能力。 而现在为止,本学期的软件工程实践以及全部结束了,现在看来,安卓实在是一门博大精深的学问,由于本学期的时间十分紧凑,我在我们组承担的任务极其繁杂。导致我无法和安卓后端的同学一同完成任务,所以第一个期待是没有达成。但是第二个目标我确实达成了,初学安卓编程的我在开发时踩了大大小小数不清的坑,我也凭着自己查找和修复BUG的能力从这些坑里成功爬出来了。

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

1、学习和使用的新软件;

我学到了如何使用AndroidStudio、AxurePro、rationalRose、XMind等编程或者图表或者原型设计软件。

2、学习和使用的新工具;

我学到了如何使用Junit、UML图、原型设计、Git等新工具。

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

Java语言,这个也可以算我学习到的新语言吧,因为软件工程课之前我虽然会编写一部分Java程序,但是Java真正独有的特性我却基本没有用过,而软工中我使用了许多闭包或接口等特性。 新的平台有安卓平台,如果GitHub也算新的平台的话也在其中。

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

我没有去一个个类统计,但是整个项目中我大约编写了20个类,每个类的平均代码量在350行左右,算下来应该是有7000行,当然,算上修改的代码的话,我想是能上8000行的。

5、学习和掌握的新方法;

我学习到新方法最重要的莫过于使用AndroidStudio本身安卓终端中报错的定位了,记得我以前编写java程序如果出现了错误,我一般都是看一看出错的类型就赶急赶忙的去一行行的搜索自己代码了。在编写项目代码的时候,代码量的剧增和逻辑的复杂成的大大增加让我完全不能和从前那样了。 在实际开发中,我发现首先应该耐着性子看懂具体报错的英文解释,这可能会很痛苦,毕竟经常看不懂,但是一旦看懂了错误性质再定位到精确的出错位置马上就清晰了许多。

6、其他的提升。

我提高了自己理解他人代码的能力,这也可以算是一种重要的提高吧。

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

在项目伊始,特别是后台的同学尚未动工的时候,对于每一个功能所需要的每个细节能够确定最好确定下来。 例如在我们组的开发中我作为安卓前端本来希望我们的招聘APP能够专门提供一条关于薪酬的填写的接口,我自认为自己在原型之中已经把这个意思传达给了后台编写的同学,结果由于大家被自己的工作压得喘不过起来,他漏掉了这一条。 等我发现的时候,数据库已经固定下来了,难以进行大动作的修改,我也就只能妥协,把薪酬的内容实际上合并到了招聘详情之中。 这种无奈在我们的项目中不止这一个,所以能够商量清楚的就尽量商量好吧,软件重构的成本是最大的。

对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。

对于大一的学弟学妹,我的建议与期待只有一个,那就是在做项目之前请详细的审查自己所做项目的难易以及复杂程度,还要综合考虑到你们组的人数、技术水平。 这看起来也许很难,但是就安卓部分来说,我认为最大的不确定性不在于前端有多难写,而在于网络操作有多少,每当涉及到网络操作,往往就意味着好几个人的工作的协同,这期间出现了问题的定位与解决耗时会超过你们的想象。 所以,你们可以审查自己项目用到了多少的网络操作,这是一个重要的评价指标。

四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?

构建之法提到的几个阶段我们团队都经历过了,最后的“创造”阶段在我看来远不是这学期的我们的水平所能达到的,所以是没有。

五、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:

   [1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.

我参考的是上述的论文,这一篇论文的主要讲的是: 开源软件开发:原型在网上发布,其他程序员可以进行自由地读取、修改。该系统演化速度很快,比传统的封闭项目的速度要快得多。 介绍了开源项目的好处:高品质、高产、高效率,迅速发展,对问题能够更快解决。 很多的软件专家和研究人员提出并讨论了开源的利弊。 Bollinger和他的同事指出: 对于开放的源代码的一个重要要求是,它应该是'严格模块化的,自包含的,自我解释的“,以求得更长远的发展。

事实上我们的团队项目在某种意义上也能够称得上是一个开源软件吧,但是遗憾的是开源的参与者也只有我们几个组员。我们的项目虽然有着诸如系统演化更快等优势,但是由于我们是刚开始接触项目,限于本学期繁杂的课业,代码对应的文档也是有欠缺,这样同真正的开源项目比还是差的有点远。 要认认真真的去写代码文档的话,我相信文档的时间只会多于代码编写时间,这个代价还是值得的,毕竟你的代码是你写的,但是自己的代码自己用的情况很少,我们需要完备的文档支持其他人正常使用自己的代码。

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

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

   必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件

对于我们的项目来说,初期需要招聘者的入驻,然后用户才会越来越多的停留在我们的软件上,但是就我们组成员的资源来看,我们还是没有找到很好的办法度过初期积累阶段,所以这个要求达不到。

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

  有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄

我们在beta版本更加规范了,有自己的进度发布,也没有通过临时熬夜来赶进度,相对来说,我们组的每个人都是又完成自己的任务的,大牛一人代劳的情况在我们组没有发生。

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

   而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目发展的资料

我们的项目的后端接口的代码是比较详细的。安卓前端是我一个人编写的,我们组人手有限,安卓前端需要查找接口BUG,使用接口等任务繁重,我采用的方法是在源码中详细注明了代码的信息,而没有单独成册,这也算是我的工作的缺失吧,比较遗憾。 源码都可以在我们组的Git项目地址中找到,可以使用最新版AndroidStudio编译没有问题。

七、相处一学期不易,课堂和课程上,我们将就此别过。可惜学生匆匆,时光匆匆,认识和了解的同学却很少。另外我年纪渐长,记忆日衰,会遗憾有时候我连个性或名字都没有记住。写一段话,介绍下你自己吧。

我是胡泽善,来自计算机五班,我这个人比较信奉用代码来说话。在我们组开发阶段我和组员们讨论问题也很喜欢贴出代码来说明问题所在,也许这就是典型的IT男的特性,我是发现自己越来越有程序猿的特质,也不知是好是坏。下面图片中箭头指向的那个就是我啦。

原文地址:https://www.cnblogs.com/hzsaiprogram/p/6240237.html