福大软工 · 最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 经过这次软工实践,确实积累了很多经验,学到了许多知识,各类软件的用法,明白了app开发的主要流程以及开发过程的注意事项;不足的是,项目没有完成,个人的积累还不够多。
2)总结这门课程的实践总结和给你带来的提升
- 1、统计一下,你在这门软件工程实践中,完成了多少行的代码
代码量大概在1000行左右
- 2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 耗时(小时) |
---|---|
作业一 | 0.5 |
作业二 | 5 |
结对作业一 | 3 |
结对作业二 | 6 |
团队作业一 | 0.2 |
选题报告 | 2 |
需求分析报告 | 1.5 |
项目UML设计 | 3 |
团队现场编程 | 4 |
项目评测 | 3.5 |
Alpha冲刺 | 10 |
Beta冲刺 | 12 |
- 3、哪一次作业让你印象最深刻?为什么?
我觉得团队现场编程令我印象最深刻。现场团队编程不仅考验个人的编程能力,还考验团队的协作能力,整个过程就是一个项目开发的缩影。
- 4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计花了有50+小时的时间在软工实践上,平均每周(从开学到17周)花3~4个小时。
(5)针对上述问题(2)、(3)、(4),你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上,以达成你的期待以及你在(2)或(3)或(4)上的目标?
我希望能够在这门课上吸收新的知识,补充自己的不足,积累经验;目前还不了解这门课的内容以及规划,不好确定分配多少时间,要根据开学了解之后再进行决定。
- 5、学习和使用的新软件
Axure,starUML,Git
- 6、学习和使用的新工具
FormFactory,Gephi,Android Studio
- 7、学习和掌握的新语言、新平台
安卓平台,serverlet平台
- 8、学习和掌握的新方法
在github上面查找资料,
- 9、其他方面的提升
相较之前,我能够更好地与人沟通交流
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
沟通是解决问题的最佳途径,能力不足可以去提升,一旦沟通不到位,能力好对项目也只是杯水车薪。就比如我们团队,前期就是没有怎么沟通,大家各自埋头苦干,互相之间没有沟通过,就造成后面对接时的问题百出,不是版本不对,就是需求数据与返回数据牛头不对马嘴,等于又在重新来一遍。所以说,事前的沟通真的很重要,直接关系到项目的能否成功的完成。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
软工实践很有意思,一定要好好体验体验(坏笑)
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
假设依旧是一个90+人数的大班
建议是不要啦,新加入的队员对项目的一知半解,要花时间去理清思路,老队员要是删库跑路,对整个团队无疑是雪上加霜
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
我觉得8个人的团队就能够应付大部分的问题了
4)个人/结对/团队作业应该控制在怎样的规模?
个人结对团队的比例应该在2:3:5左右
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
当然是乐忠豪同学啦。想对他说“跪谢大佬带我飞”
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我觉得我们团队经历了萌芽,磨合,规范,半创造阶段。从最初开始的大家并不相互熟悉,到协作,到共同规范项目的细节,再到最后我们能够为实现共同的目标而努力,但是为什么是半创造阶段呢,因为我觉得我们并没有做到高度自治。
五、怎样证明你学会了软件工程?
工程师能力自我评价表
类别 | 具体技能和面试问题 | 现在的回答(大三) |
---|---|---|
语言 | 最拿手的计算机语言之一,代码量多少? | C++,9000行 |
语言 | 最拿手的计算机语言之二,代码量多少? | python,2000行 |
软件实现 | 你有没有在别人代码的基础上改进 | 有 |
你是怎么读懂别人的代码的 | 用已学的知识结合注释来看别人代码 | |
你采取了什么方法来保证新功能不会影响原来的功能 | 规范接口,版本等细节 | |
你在开发中遇到的最复杂的bug是什么,你是如何解决的?这个bug出现的原因是什么,你在将来应该怎么避免bug再出现? | 无法回答 | |
软件测试 | 你如何测试自己写的代码 | 使用VS自带的测试工具配合数据集 |
你如何测试别人写的代码 | 使用VS自带的测试工具配合数据集 | |
你掌握了多少种测试工具和方法 | 一种 | |
你写过测试工具吗 | 没有 | |
你如何对一个网站进行压力测试和效能测试 | 未接触过 | |
你如何测试一个软件的人机界面(UX/UI) | 在使用过程中测试 | |
效能分析 | 你写过的最复杂的代码是什么 | 感觉没写过什么很复杂的代码 |
你是如何测量和改进它的效能的,用了什么工具,如何分析的 | 用VS的分析工具,分析程序的耗时情况,再针对最长耗时的部分进行代码,算法,数据结构优化 | |
需求分析 | 你做过多少个有实际用户的项目,用户最多有多少,你的项目有什么创新的地方 | 无 |
行业洞察力 | 你最感兴趣的领域是什么 | 人工智能 |
这个领域过去十年经历了哪些创新 | 未去了解过 | |
你分析过这个领域前十的产品吗?请分析一下它们的优劣 | 未分析过 | |
你要进入这个领域应该如何创新 | 能够做出一款AI | |
项目管理 | 你参与过项目管理吗 | 未参与过 |
软件设计 | 你做过构架设计,模块化设计,接口设计吗? | 没有 |
质量意识 | 你是怎么做代码复审的 | 按照代码规范以及有无gub来复审 |
工具/社区 | 你在各种开发平台都使用过什么开发工具 | VS,eclipse,pychar |
自己写过什么工具来改进工作效率 | 无 | |
给社区贡献过什么工具和代码,github有分享代码吗 | 无 | |
你的技术博客坚持了多久,读者最多的是哪一篇 | 没有坚持很久,博客读者很少 | |
团队协作 | 请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的一件,改进了自己的方案 | 口头描述两个办法的优劣 |
你如何说服懒惰的同伴赶紧工作,实现团队目标 | 不断提醒 | |
理论素养 | 你上过什么数学,计算机或其他理论课 | 高数,离散数学,概率论,算法等等 |
请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题 | 应用概率论的知识在机器学习的分类器中 | |
自我管理 | 全年级你专业排名多少? | 35/55 |
你刚入学带现在的排名有变化吗? | 退步了 | |
如何解释你的排名的变化 | 投入学习的时间减少了 |
说实话,这个表格我写写停停,做了好久,因为感觉己的现状惨不忍睹,啥都不会,有点担忧自己的前途。希望以此为警醒,好好努力!
总结
软工实践学到了很多东西,也算是以后项目的一个缩影吧,其中的经验教训到以后还是很适用的,希望自己越来越棒,也希望下届(下下届,下下下届,...)的软工实践越来越好!