福大软工 · 最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 哪些方面达到了你的期待和目标
- 这学期主要学习了一下人工智能的有关知识,主要包括在TensorFlow和pytorch下实现CRNN的学习,以及在其他实践课学习到的一些知识。
- 相比于上学期,自己的编码能力确实上升了一点点,也感受到了浓厚的软工团队氛围。
- 哪些方面还存在哪些不足
- 可能是由于缺乏沟通,在软工后期不是很清楚团队的需求,导致与团队脱节,没有在最后的时刻尽自己的努力去帮助队友完成beta版本(虽然他们依旧完成的很好!),感到很可惜。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
由于柯老师在平时就有让我们统计代码的习惯,就直接贴上去了。
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 500 | 500 | 12 | 12 | 单元测试的编写 |
2 | 200 | 700 | 16 | 28 | Axure原型设计工具的使用、Python的文件读写 |
3 | 500 | 1200 | 20 | 48 | Python爬虫的编写、词云图的绘制和Python的文件读写、CRNN的复现 |
4 | 300 | 1500 | 20 | 68 | 尝试使用Pytorch深度学习框架 |
5 | 400 | 1900 | 14 | 82 | 绘制思维导图、利用Qt构建Linux可视化界面 |
6 | 100 | 2000 | 8 | 90 | 学习tenserflow框架 |
7 | 300 | 2300 | 20 | 110 | 学习tenserflow框架、复习CRNN |
8 | 400 | 2700 | 20 | 110 | 学习Threejs框架以及webgl的相关知识,完成图形学实践 |
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间/分钟 |
---|---|
第一次作业 | 120 |
个人项目 | 1100 |
结对项目1 | 580 |
团队风采展示 | 120 |
结对作业2 | 1350 |
团队选题报告 | 100 |
团队课堂UML设计 | 300 |
团队需求分析报告 | 400 |
Alpha冲刺 | 1200 |
团队现场编程 | 480 |
团队项目评测 | 280 |
Beta冲刺 | 100 |
最终展示 | 100 |
3、哪一次作业让你印象最深刻?为什么?
不用说,肯定是Alpha冲刺啦!又不禁想起当时一起在院楼一起编码,一起吃饭,一起解决问题的日子。为了实现当初吹的牛逼,只能加班加点地肝。但是自己也收获了很多。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
真的是花12学分的时间去做一个只有2学分的课程。平均下来一周应该有7个小时了。
希望能够有趣一点吧。平均每周10个小时我觉得可以达成目标
好像也不至于这么夸张诶...
5、学习和使用的新软件
- 原型开发工具:Axure
- 编写python的IDE:pycharm
- 绘制思维导图的工具: Xmind
6、学习和使用的新工具
- 原型开发工具:Axure
- 绘制思维导图的工具: Xmind
- 界面生成工具:QT
7、学习和掌握的新语言、新平台
- 深度学习框架pytorch和TensorFlow
- python
- CRNN模型
8、学习和掌握的新方法
- 使用CRNN识别照片中的文字
- 调整CRNN网络参数
- 学习CRNN模型的训练
9、其他方面的提升
- 团队合作能力的提高
- 抗压能力的增强
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 个人能力很关键,这个能力贯穿了软工的个人作业、结对作业和团队作业。这不仅会影响自己编码的时间,还会影响到团队的项目提交以及实现。
- 沟通也格外重要。由于自己的性格问题,和与其他团队成员宿舍的距离问题,导致了我在Beta版本时期与团队脱节。我以后将格外注意这个问题,希望其他人也能注意到。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
虽然是花12学分的时间去做一个2学分的事情,但是项目完成后的成就感是其他课程所不能替代的。
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?假设依旧是一个90+人数的大班
这么有意思的想法,肯定要去实现呀!
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
我觉得6-7个人足矣。
4)个人/结对/团队作业应该控制在怎样的规模?
我觉得应该把结对和团队作业的规模再扩大一点,把个人作业的难度缩小一点。毕竟这个课程更加看重团队合作的能力和工程的实现。可以要求团队作业的实现更加规范化和文档化。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
我很感谢董钧昊同学,在我忙于其他实践的时候,能够帮助我实现软件的相应功能和完成有一些我该完成的事情。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
-
萌芽阶段:这一阶段大概对应着我们从组队开始到冲刺时的情况,在这个阶段队员们都在学习相关的技术,虽然自己曾经用CRNN实现过对商店名的识别,对项目实现可能碰到的问题还没有一个非常清晰的认识。
-
磨合阶段:这一阶段对应我们团队现场编程及之后的两次alpha编程,团队现场编程将我们团队当时存在的问题暴露了出来,这也是组内成员提出疑问最多的一个阶段,不过很庆幸团队成员直接能够相互理解,对项目的疑问也能通过当面交流指定解决方法,从而度过了团队的磨合阶段。
-
规范阶段:从第六次alpha冲刺开始,我认为我们团队进入了规范阶段,我们在这时已经完成了项目的接口文档撰写、代码规范的约定、版本控制规则的制订,与此同时大家对项目所期望达成的目标有了清楚的认识,对自己负责的部分应该达成怎样的效果也了然于心。
-
创造阶段:我们的团队在beta冲刺阶段一定程度上触及了创造阶段,在beta阶段我们相比alpha阶段添加了4个全新的功能点,每个队员在明确了自己的任务后项目便开始了“并行开发”。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
由于服务器受限(贵的服务器买不起,差的服务器算法跑不了,所以只能把服务器搭在本地),所以没有什么用户,也不知道符不符合。但是我们几个用着挺开心的。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
我们团队有使用燃尽图记录团队所需完成的任务和已完成的任务。
使用Github上传代码
成果展示
3)并且通过数据展现软件是可以维护和继续发展的
很可惜这个似乎我们组并没有考虑到这一点。
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
这些问题大体都回答不上来,关于技术问题,由于自己没有哪门技术是非常深入系统学习过的,所有会的语言还都是简单入门,要做东西时还得边查阅资料边做,以后去面试前应该还要再系统学习下所要从事的方向。
七、个性发挥,包括图文、照片和创意等
我爱柯老师(破音)!献上柯老师最爱的水饺!