福大软工 · 最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
在这课程中,我确实学到了很多,在对软件的开发模式、流程,以及团队的理解上,有了很大进步;但是同时,也发现了自己的不足,对新框架的理解速度,以及找BUG的速度,颇为慢速,因为在实践过程中,因为这两点,我吃了不少苦头。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
软工实践分个人、结对、团队的实践
在个人和结对作业中,我总共写了400行左右的完成代码,在团队作业中,最后也大概提交了400行代码。在完成的量上,前后两次差不多,但是质量上有很大区别,在个人和结对中,沟通的很便利,即使不按事先订好的规则写代码,也可以被对方使用,但是在团队中,编码的规范就很重要,事先的交流以及每次改动的交流,都需要记录。
2)软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 时间 |
---|---|
第一次作业·准备 | 2h |
词频计数 | 25h |
结对作业1 | 10h |
团队1 | 2h |
结对2 | 20h |
作业6 | 4h |
7.需求分析 | 4h |
第八次作业(课堂实战)- 项目UML设计(团队) | 10h |
α冲刺 | 60h |
现场编程 | 10h |
事后诸葛亮 | 4h |
β冲刺 | 30h |
12次作业,答辩总结 | 4h |
3)哪一次作业让你印象最深刻?为什么?
那肯定是α冲刺了,最后完成的那一刻,真的心情愉悦!
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计花了205h,平均每周13h
学习和使用的新软件;
- 现场编程重新学习了Eclipce For JavaEE的使用
- 开发使用了Android Studio工具
- UML设计使用了StarUML工具和ProcessOn
- 结对作业使用了Python
- 当然还有我们的产品:记忆罐头!
学习和使用的新工具;
- 现场编程重新学习了Eclipce For JavaEE的使用
- 开发使用了Android Studio工具
- UML设计使用了StarUML工具和ProcessOn
- 结对作业使用了Python
- 个人项目中Visual Studio中的性能分析、代码覆盖率也学习使用了部分新工具的功能
学习和掌握的新语言、新平台;
- 更加熟悉的使用java语言开发
- 对Python的基础使用有一定的掌握
- 在web平台上完成我们的现场编程项目,对web端有更深的认识
- Android平台开发有一个新的认识
学习和掌握的新方法;
- 在个人项目中知道了单元测试的意义和方法
- 在个人项目中学习了代码覆盖率的概念
- 在个人项目中对代码进行性能分析对开发中优化代码有一个比较新的认识
- 结对项目中学习了一定的Python爬虫知识
- 在团队开发中学习了Android开发知识
- 在团队开发中掌握了Android中如何debug
其他方面的提升
1、博客的美观程度
2、和队友相处的方法
3、老油条的程度(滑稽)
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
一个人十个月开发的完的项目,十个人一个月是做不完的
印象很深刻的是,在团队作业前期,在网上查找备忘录的模板,找到一份功能十分完善且给出源码的模板,当时团队欢欣鼓舞,因为那份软件是一个人历时1个月就做出了的成品且质量奇高,我们就认为备忘录很好做,但是直到现在,我们的软件仍然在一定程度上比不过人家的备忘录,得到感悟:人员的增多不一定代表速度和质量都会提升。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
1、编程基础要扎实
2、结对和团队尽量找熟人少的
3、博客要记得提前交
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?假设依旧是一个90+人数的大班
肯定要的,实在呆不下去,反而破坏团队
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
下个学期的实践是必修,所以一个班大概150人左右,我认为可以分成5人十组、10人十组,这样可以满足不同的需求
4)个人/结对/团队作业应该控制在怎样的规模?
本学期的规模就可以了
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
很多人都想感谢,团队的胡绪佩、胡青元是主心骨,他们的帮助对我最大了。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
萌芽阶段:刚刚确定项目的时候
磨合阶段:α冲刺前期
规范阶段:α冲刺后期以及β冲刺前期
创造阶段:我们的备忘录应该勉强算我们创造的吧
五、怎样证明你学会了软件工程?
研发出符合用户需求的软件
- 我们的产品在开发前做过一次市场调研问卷调查(样本容量:线上93+线下110=203份),并完成了我们的记忆罐头商业企划书。其中包括用户对我们产品功能的反馈饼状图,我们产品功能十分符合用户需求。
需求展示
- 在完成产品后我们邀请了86位用户进行内测试用我们的记忆罐头,并且收集了用户反馈问卷。
体验指数展示
期待指数展示
通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
我们团队在软件工程实践课程的机会之下,通过团队合作完成了产品记忆罐头!分别在Alpha版本阶段完成产品的初始版本,Beta版本完善产品进行一定的bug修复,最终版本已经迭代13次完成产品的1.1.3版本,产品下载链接。
并且通过数据展现软件是可以维护和继续发展的。
现软件的可维护性和是否可继续发展通过上面的用户反馈问卷截图便能看出。
体验指数展示
期待指数展示
用户需求期待指数超过4分的比例在70%以上,证明我们的产品是可维护和可持续发展的。并且产品具有十分可观的盈利方式和前景,对不同手机(三星、华为、Oppo)应用市场的在线付费壁纸做了一个简单的调研:
三星付费壁纸
华为付费壁纸
Oppo付费壁纸
盈利点
可以看出,我们的核心创新点锁屏壁纸展示如果能够达到美观、友好的前提下,还能展示出用户的备忘内容,那么便完全可以借助于付费壁纸已经广为人知的免推广的天然优势!!!在每种壁纸单价较为廉价的模式下,提高用户购买欲,相信可以很快的抢占付费壁纸的一块市场,这样也为后续的开发提供了条件和盈利希望。当然,这一切都需要在能够解决生成美观壁纸展示备忘的这一难点的前提下。也正所谓难点即卖点!
对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[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
个性发挥,包括图文、照片和创意等
我在团队中的部分是做备忘录的编辑以及读取,(自我安慰一下:这个部分算是所有备忘录的核心功能)其实现在有一个BUG关于我们的备忘录,但是我的队友都没有发现,因为恰巧BUG出现的部分是我负责的部分,其实我很早就发现了,但是我发现!我不会改!嘻嘻嘻嘻嘻嘻嘻