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

软件工程实践总结

一、回望开学初对于软件工程课程的想象,回望博客开篇时对于这门课和这学期的期望

1)对比现在的你和开学初博客开篇的课程目标和期待

似乎完全不一样啊。。。

  • 感觉只有团队写作能力提升了一些,其他基本没变。。。。惭愧,特别是Alpha最后几天,由于时间没安排好每天在活动室通宵赶进度。。。编码能力的话,只能说是对Android 的报错,以及文件组织有了更深刻的理解,提升的不是很多。

  • 对课程的预期,似乎只学到了一个比较完整的软件开发流程。。。尤其让我提前学到了程序员熬夜赶代码的那份辛酸,为了团队再困也得熬下去的那份坚守。。。
  • 本来打算做一个移动端的网站,最后根据牛姐的建议做了Android。。。感觉如入大坑,全程懵逼的我。。。

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

1、学习和使用的新软件

i.编码相关软件


这两个没什么好说的吧😂,虽然之前也是用eclipse来写的C++,但是这学期新学java,也把它算为新学的软件吧。。。

ii.其他软件

从左往右介绍吧。

  • gihub桌面版、图标设计(App图标设计)、思维导图(用过了感觉不好用)、墨刀(原型工具,还不错)
  • 流程图制作软件(神器)、项目管理软件(功能强大,想用好有点复杂)、超级贪食蛇(放松娱乐必备)、MD桌面版
  • 手绘原型工具(有点太随意了。。。不过画风可爱)、还是思维导图(也不好用)、某种魔性的贪食蛇、上外网查文献用的

顺便推荐下这两款贪食蛇,写代码累的时候休闲用(栋哥不要打我😢)

1.“超级贪食蛇” :我能玩一晚上,草莓跟身子是一样大的,后来身体会越来越粗,草莓也越来越大。曾经到后期,身体占了大半个屏幕,结果草莓长在身体里,我怎么吃也吃不到👋(再见脸)。。。很考验技术的!

2.姑且就叫作魔性贪食蛇吧,有许多背景跟皮肤,这里我挑选最魔性的皮肤展示,其他的各位自己去下载来玩,不敢展示,怕打。。。😂(早知道我们就做一款贪食蛇的APP了)

2、学习和使用的新工具

i.JUnit单元测试
感觉挺神奇的,但是自己没好好深入学习,只是学习了一些皮毛。。惭愧
ii.Git
学了git感觉进入全新的世界。下面有句话说得不错。

团队不用git进行协同工作,不光是low,还是幼稚。关于使用git的好处就不赘述了,反正不用git开发软件的人,我认为都是耍流氓。

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

Java,Android都是半路出家的半吊子。。。。

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

根据三次开发过程github(Alpha,Beta,软工小测)的记录显示

  • 课堂小测(Arithmetic)

  • Alpha

  • Beta

Beta上万行是因为我上传了Alpha的项目

总共其实我写了大概也就三千行不到的代码量吧~

5、学习和掌握的新方法

大概就是用博客记录学习的过程。

前几次是老师要求的作业,感觉不太爱用,觉得没什么意思。除了老师助教作业评分要用,平时一点用都没有,感觉这又是一门“形式主义”的课程。但是后来,写得认真了,评论的人多了,渐渐得开始变得有意思起来了。

感觉写博客可能大概也算是栋哥所说的“情怀”中的一种吧,因为我平时也写日记,挺喜欢写作的。但是更多的是比较随性,没有目的性地写作,写日记也很大一部分是出于练字的原因吧,所以写博客这种敲键盘的工作,还是没那么喜欢的。(代码写多了,看到电脑想吐)

6、其他的提升

i.毅力(抗坑爹能力)
(微笑)git的千行报错,App的万次崩溃。让我现在无论碰到什么困难,只要回想起“软工实践”四个字,都会觉得刚刚如绵延五岳一般的困难,突然间就变得像芝麻绿豆一般。。。
ii.吐槽功力

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

事后诸葛亮的分析写得比较官方,在这还是放出有最真实感受的Alpha总结中的过程体会吧。

身为一个团队的项目经理(PM)核心工作并不是写代码,而是要调动组员的积极性,在遇到困难的时候协同解决。但是说得容易做得难,而且是十分的难。

讲真,我特别羡慕跟佩服男神(304陈燊),首先是他的积极性十分的高,而且有过项目经验,对团队一开始就提了许多的要求,让团队成员可以有计划,有步骤地进行开发。小组成员基本都是ACM或者西二的大佬,可谓是人才济济。。。(😂,我竟然拿我们组跟他们比,真是找虐。)

我的总结主要是围绕协同工作,也就是github的使用。真的很重要,提高效率,减少出错,这种废话就不说了~~~(似乎我上面又吐槽了、。。。)

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

看到这个题目,我有点懵逼,到底要对谁啊???

(又开始吐槽了。。。)

那我就随便挑一个来给建议吧,感觉大家都会给学弟学妹们安利,要么是“坑”他们——快来选啊,张栋老师很好啊!能学到很多东西!;要么还是坑他们——别来选啊,整天写博客,事情跟要求还那么多!这些建议我就不多说了。

想给老师一个建议,就是布置博客任务的时候,试下能不能布置几篇学习记录的博客,不一定要是解决什么大困难,解决了前人从未解决的问题。。。可以只是把遇到的问题归为一类,然后在网上找到一些自己试过方法能用的博客,以及一些解决问题解决得比较好的博客,都把他们记到自己的日常学习中来。或者是在stackoverflow上搜到的英文答案,简单地翻译一下,记录下来都是很不错的。

我的队友跟我碰到比如git报错,就百度呀,然后上回能百度到解决方法,这回就不行了,又要翻查半天。碰到stackoverflow这样的英文回答网站,也得看半天,有时候第二次犯错能不能在百度上找到还是问题,所以我觉得把这些记录下来挺重要的

这样可以培养大家的一种博客记录习惯,万一自己写着写着有新的思路,那么新的解决办法就出来了,是不是?

我放一篇我写的学习博客:
11.11光棍节工作心得——github/MVP
献丑😂

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

团队发展一共四个阶段

不知道我的组员会如何写这个,作为PM,我将站在自己的角度看团队

阶段 大致时间 是否完成该阶段 团队特点
萌芽 9.9~10.15 刚开始组队,没开始编码,就偶尔布置团队作业开开会,扯扯淡,分配下任务就解散了。 大家也没有说自己想要担任什么角色,对自己的能力还不清楚。
磨合 10.16~11.20 偶尔为了一些界面的修改而互相吐槽,前端跟后端的断链更是让双方的进度慢了下来。不熟悉软件的开发流程,各种做各自的,但总算有点东西出来
规范 11.21~12.20 Beta没有熬夜,并且根据alpha阶段的经验,大家都各自找到自己适合担任的角色,有条不紊地开发着。熟练地使用git进行代码管理,让团队的效率提升了许多。每日的冲刺会议不再是我(组长)一个人自说自话,大家都有自己的看法跟观点了。每日也会定时上传新功能,新界面。
创造 12.21-以后 如果下学期有什么比赛需要我们重新组队的,我们将把这个团队的最后一阶段完成~

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

我看的是《Open Source Software Development Should Strive for EVEN GREATER CODE MAINTAINABILITY》正好在“福大图书馆”搜到这一篇,就拿来看了。

附上网盘链接:https://pan.baidu.com/s/1nuIO2cp 密码: swxn

论文的题目大意是:开源软件的发展应向更好的代码可维护性努力。

梗概:通过对比开源软件(OSS)与闭源软件(CSS)的可维护性指数(MI:Maintainability Index),分析了它们之间的优劣以及一些软件从CSS变为后来的OSS,MI的变化趋势等。

在文中给了MI的计算方法跟式子中各个量的含义

大致涵义是

  • 代码行数,不包括空白行跟注释行 (LOC)
  • 注释的行数,相对于代码行数的百分比 (PerCM)
  • 某大佬(Halstead)从软件源代码中定义了四个指标:n1(确定操作符的数量)、n2(确定操作数的数量)、N1(整体操作符的数量)、N2(整体操作数的数量)。基于这些他定义了程序的词汇量n(n=n1+n2)和程序的长度N(N=N1+N2)。最后他定义了“册”(Volume),并且V=N*log2(n)....

有人问n1、n2、N1、N2啥?我也不太懂。。。。百度也百度不到。。。。有大佬如果知道的告诉我一声

  • 圈复杂度V(g),由某大佬(McCabe)提出。这个度量用来数控制流图(control flow graph)的独立路径,它的值取决于(if-then-else)分支的数量

看来要测试一款软件的MI,还得去统计这么多东西。。。。自己写的代码,感觉还用不到这么高大上的公式。。。。只能说有个整体的感受。大泥球吧不至于。小泥球倒是不少。

取的名字还是比较规范的

注释还是比较到位的

作为OSS,感觉在一些比较重要的功能(数据库交互)上,我们的MI还是比较高的,基本都有注释。

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

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

   必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
  • 正值期末,没时间跟精力去推广。我个人觉得,我们的“活动助手”这款软件,还是十分有前景的,有可能会成为继“福大助手”、“福大教务通”、“期末考啦(原福大历年卷)”三大APP之后的又一软件。。。

  • 但是,我们技术有限,审美有限。。。功能个别会导致崩溃,界面如果分辨率不够的话,个别会显示不全。。。。但是我觉得我们的idea虽然不算是创意,但也算是从生活中来,到生活中去的~

  • 由于这并不是单个用户就能使用起来的软件,所以打算先找个部门,试着发布一下活动,让大家试试报名,或许大家觉得好用的话,就不会删除了。。。如果可以的话,我希望我们的软件能让学弟们继续开发,完善。哪怕完全不用了,但是我们的理念保留着就好~~

(毕竟代码糟糕。。。没注释跟文档,也不奢求别人能看懂。。。)

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

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

Alpha版本:

  • 比较糟糕,前期大家不用github,自己开发自己的,封闭式测试。做界面的不把界面放出来,做后端的没界面,自己写测试界面。直到要发布的前几天才开始整合各个零碎的界面,并且将后台的信息显示在前端上。。。最后几天大家基本都是写到凌晨4点多。。。虽然很对不起大家,但是一定程度也是大家自己造成的。

  • 团队缺乏经验,不懂一个人开发,报错只顾自己的就好。但是团队开发,各种命名冲突,文件冲突,错误传递等等问题,不是一个人一下子就能解决的。最后几个晚上,改错,改命名都改死掉了,很大一部分原因就是命名规范没遵守。。。唉

Beta版本:

  • 比较好了,大家都知道不能乱起名字了,都开始使用git进行版本控制,按时提交代码,测试代码。一切如期进行,只有到最后,牛姐那边出了点小问题,她说夜间模式由于我们的代码乱写,她不得不重新写个夜间模式,而不能用系统给的。。。于是那一夜我们又熬到快四点,平时就开个会讨论一下就结束。。

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

github链接:AcitivyHepler

  • 源代码还是可以找到的
  • 但是技术文档是没有的。因为比给有考虑过将来要给谁看源代码
  • M层实现功能的时候,是有注释的,V层实现界面是没注释。。。。
  • 代码可也编译通过
  • 暂时没有Task,但是Bug仍然有一些

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

老师肯定记住我了,但是感觉其他人可能记不住我😂。

姑且当作老师也不认识我来介绍吧。

反正写博客嘛,可以写得无拘无束点。从哪开始介绍呢,从感兴趣的点开始吧,姓甚名谁,家住何方已经不重要了。(连我名字都不知道。。。还过来看我介绍干嘛。?)

自我介绍,必然少不了兴趣爱好的介绍。不知道现在该说与软工有关的兴趣还是与软工无关的呢?(软工能有啥兴趣???)那么提起软工,必定少不了代码。我对代码的态度呢,其实是很复杂的。。。大体上来说,我并不喜欢写代码。但是写代码还是有许多种类的。比如我不喜欢像数据结构那种与算法相关的代码,但是对于做这种比较简单的小软件的代码,还是没那么讨厌的(不是喜欢。。。)

都过了两年半了,感觉还是没和代码培养出感情。从最开始的厌恶,到现在的勉强接受。我印象很深刻的是当初做在线题目的时候,我屡次提交都是“WA”,反复尝试好多遍之后才成功,心情不像大家所说的,很有成就感,反而是“**,终于写完,累死我了,还剩下几题?艹,还这么多题”。。。所以注定我不能成为大神,也不能成为大佬。

代码在我心目中一直是作为一个恶心存在,我不喜欢它,但也不厌恶它,更离不开它。

我不喜欢它,因为很多时候,一写就是千行以上,眼睛一盯就是几个小时。报错不说,崩溃不说,一切正常,但是结果不对,又该如何是好。

我不厌恶它,因为有时候看自己写出了点东西,做出一些有趣的玩意儿,完成了一些有意义的工作,验证了一些课本上的算法,又觉得它其实挺有用。

离不开自然不用说了,饭碗就靠它了。

我不会像对情人一般对它说“余生请多指教。”

而是会说“好汉,饶命”。

叽叽歪歪又写了一堆,不知道老师同学们记住我(游客:没记住,你这啥也没说啊!?就听你吐槽了)

没有?😂😂😂,wtf?那说明我们没有缘分。。。😊

posted @ 2016-12-29 14:30  爱拖交作业的小明  阅读(700)  评论(5编辑  收藏  举报