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

一、请回望暑假时的第一次作业,你对于软件工程课程的想象

1.1 对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?

1.1.1 专业能力和就业竞争力

达成:

  • 软工里面我主要做的是Android方面的开发,采用java语言。对于Android的基础,网络请求,网页抓取和分析都掌握的比较透彻,Android技术应该可以说是从初学者进入到了中级玩家了!

  • Android编程的同时也有注意到代码规范,有了一个比较良好的编码习惯。

不足:

  • 对于就业竞争力,这块应该是属于不足的。公司里如果需要Android程序员,应该都要求掌握一些框架,如RxJava,Retrofit,Volley。这些是我们组编程的时候没有考虑到的事情,当然,这也将成为我接下来的学习目标。

  • 在冲刺阶段,边学边做的同时,也不断了解到了只有书中的知识,虽然已经能够完成项目的需求,但是中间可能会有许多的坑,造成了代码的混乱、缺少易读性,如线程的调度,网络请求的处理。

1.1.2课程的期望

  • 期望:开篇博客中说需要经常看日出,通宵熬夜。结果:一学期下来,真正熬夜的也就只有两三天,其他时候只要白天多花时间,其实软功还是不用经常看日出的,哈哈哈!
  • 期望:开发出的软件要能够有一定的实际意义。 结果:本次软工时间中开发的软件叫做 “ Star Dust ”,可以给一些有需求的人作为记录心理倾诉的一种新的方式,还会根据不同的人推荐符合个人浏览的文章。总体来说还是和一开始的期望差不多的,达成(Ps:不然怎么会对这个项目这么起劲呢!)
  • 期望:软工实践每天半小时,每周210分钟。结果:软工的冲刺阶段,特别是 Alpha 阶段的时候,有好几天连续下来都是一天都要 7~8 小时,甚至有几次一天都在做这个(估计 15 小时左右吧)。远远超过预期!当然收获也是远远超过预期的!

1.2总结这门课程的实践总结和给你带来的提升,包括以下内容:

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

总代码量为:19009 行,Github统计。

说明:除了正常的代码,我们团队内部还写了一个练手的项目 “TeamDiaryTest”,一个非常简陋的日记本。结对编程的第二次作业的贡献没有那么多。

2、软工实践的各次作业分别花了多少时间?(做一个列表

3、哪一次作业让你印象最深刻?为什么?

当然是团队作业了!理由也挺简单的,在自己对Android极度感兴趣的同时,又有来自团队的压力,让我感觉自己学习技术的进度飞快!超越课自己的预期!

软工的冲刺期间与队里的同伴也有过一些争吵,现在想想真的是没多大的必要啊,还好不算闹崩了。
同时也知道了自身的不足,下一个阶段的学习有了一定的方向!

4、累计花了多少个小时在软工实践上?平均每周花多少个小时?

这个还真没有注意,冲刺阶段的话一天估摸着有7~8小时吧,紧急的情况下有过十七八小时一天的情况。沉迷于软工,没法统计时间。

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

  • ProcessON(画图)
  • Xmind(思维导图)
  • Git (版本控制)
  • 墨刀、Mockplus(原型设计)
  • 滴答清单(任务管理软件)
  • TeamBition(团队协作版本任务管理)

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

  • Github(一个代码托管平台),也尅在这搜索开源代码
  • StackOverFlow

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

  • java (Android方向)
  • 博客

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

思维方法不知道算不算,重新拾起了以前玩耍的任务管理软件,感觉变得有条理了。对于不懂或者有疑问的一定要尽快和队伍的同伴问清楚

9、其他方面的提升。

学完软工感觉整个人都变好了。

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

Android 开发方面的一点总结(团队)

  • 对于Android开发,使用一些经典又常用的框架,虽然Android自身就有一些方法能够处理,用第三方会让代码更加简洁,干净。

如:本次StarDust项目中的一些网络请求的线程切换,都是用Android自带的Handler机制,代码混乱,修改起来也慢。如果用RxJava框架的话逻辑会更清楚,代码也比较容易恢复!

三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?

对开学的我: 大学或许不能让你满意,软工也是如此。投入才会有产出,Learning By Doing,Learning By Thinking.

对大一的我: 好好锻炼身体,平时早睡早起,生活乐滋滋。爆肝熬夜的时候才有身体资本,精神资本!

建议:软工实践能够带给你任何东西,只要你肯付出,坚持的去学习,在软工实践的过程中你就能很好的掌握一门技术。当然,如果只是划划水,那么软工实践也不会带给你太多的东西。

对学弟学妹:听到下一届软工必修心理平衡了好多 好好学习,天天向上,不会来问学长哈,如果有需要欢迎底部留言,私聊。(Android,java)

引用一小句栋哥说的话(记了个大概意思):只要是个智力正常的人,学个android,语言什么的都是非常轻松的,也就一两个月的事情。

当时在课上听到栋哥说这段话的时候,我正惊叹我们团队的@小钊,学Android的速度真是太快了。软工结束我都感觉没和他差了有多少(暑假和上学期自学过一点Android但是断断续续的),听完栋哥一席话,瞬间释然,其实就是自己自学的时候花的时间太散了,而且对一个小技术还死磕,一直看书,这些对于技术的提升来说是一大阻碍,但是对于长久的思维、理论方面我觉得是非常有帮助的。

 下届要不要中途换队员?

我是没有被换出去的经历,但是对于团队来说换与不换其实不应该说的这么绝对。

我认为可以的话可以考虑给某些队伍一些特权,比如说,A队伍完成软件的情况比较好,alpha阶段功能都实现了一大堆了,然后他们都不想换队友,那么这时候就可以尊重他们的意愿。如果A队伍完成的情况不是很理想,那么就需要强制换人!

ps:大概就这样了……

四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)

√ 萌芽阶段
√ 磨合阶段
√ 规范阶段
√ 创造阶段

盗用我们团队PM的一点东西。

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

2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
​ 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄

我选择通过这点阐述。

软工前:

  • 软件直接动手写
  • 不想写的东西直接砍掉
  • 来不及了就熬夜
  • 过了时间就不弄了

软工后:

  • 完整的项目流程应该是 :

    虽然有些步骤看似不是很重要,但是这些“小东西”,却能让一个软件的流程更加清晰,在实现的过程中让程序员们有一定的共识

  • 不能实现的功能并不是不能实现,更不能砍掉,现在砍了,以后真实客户的需求能砍吗?当然不行,所以硬着头皮,搜着谷歌,也要做出来。

  • 平时就要有轻重缓急,不能把重要的功能堆到最后,甚至可以把核心功能先实现,最后再实现难点功能。

  • 就算超过了时间,也要把这个软件维护下去,谁让是自己填的坑呢!

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

参考论文文献:

[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.

[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605

[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87

七、个性发挥,包括图文、照片和创意等

玩了一个小软件,用我们项目名StarDust做了一堆小动图。哈哈哈哈哈

posted @ 2017-12-27 14:31  豆腐抹上墙  阅读(324)  评论(6编辑  收藏  举报