一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
我觉得我对于产品的整体进度把握,团队间的合作交流以及对相关领域的理解达到了我的期待和目标;但是我觉得我对于这些的理解深度和广度还可以再加强,可能是由于上课时间的冲突,可能没有那么多时间去深入地学习这些知识。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
据不完全统计我们的代码量在5000行左右,包括后端java代码(SpringBoot框架),微信小程序代码(wxml,js等),以及原型代码。
2、软工实践的各次作业分别花了多少时间?(做一个列表)
第N次作业 所用时间(分钟) 软件工程实践第一次作业 150 软工实践第二次作业 - 个人项目 2082 软工实践第三次作业 - 结对项目1 1495 软工实践第四次作业 - 团队展示 70 软工实践作业五-结对作业二 1760 第六次作业 - 团队选题报告 200 第七次作业 - 需求分析报告 1460 福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队) 260 Alpha 冲刺 (1/10) 460 Alpha 冲刺 (2/10) 580 Alpha 冲刺 (3/10) 630 福大软工1816 · 团队现场编程实战(抽奖系统) 470 Alpha 冲刺 (4/10) 470 Alpha 冲刺 (5/10) 725 Alpha 冲刺 (6/10) 530 Alpha 冲刺 (7/10) 930 Alpha 冲刺 (8/10) 1430 Alpha 冲刺 (9/10) 1200 Alpha 冲刺 (10/10) 600 福大软工 · 第十一次作业 - Alpha 事后诸葛亮(团队) 570 福大软工 · 第十次作业 - 项目测评(团队) 120 Beta 冲刺(1/7) 940 Beta 冲刺(2/7) 600 Beta 冲刺(3/7) 520 Beta 冲刺(4/7) 420 Beta 冲刺(5/7) 590 Beta 冲刺(6/7) 570 Beta 冲刺(7/7) 675 福大软工 · 第十二次作业 - Beta答辩总结 510 最终作业 - 软件工程实践总结(个人) 200 合计 21217
3、哪一次作业让你印象最深刻?为什么?
就是本次的作业!T-T,这是一次总结,同时也是回顾,不知不觉已经和所有人一起走过了这么多的日日夜夜了,确实很感慨!!尤其是在计算时间时,一次次去翻过去的博客,看到一张张合照和文字,哇!!!瞬间好感慨!!!!
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计大概花了350h在软工时间上;大概两周的时间;每周大概花费了40个小时左右,(计算过后我自己都吓了一跳。) 回答:“对于时间的话,我不会说每周固定几小时,因为我觉得这样有点不灵活(no offense~)。我会根据实际情况来灵活地决定吧。但是我不会忽略这门课的!!” (还是比较符合我的预期的O(∩_∩)O~~!)
5、学习和使用的新软件;
Eclipse,JavaScript,微信web小程序开发
6、学习和使用的新工具;
Eclipse,Github,微信web小程序开发
7、学习和掌握的新语言、新平台;
Eclipse,微信开发平台,SpringBoot框架
8、学习和掌握的新方法;
github搜索 ,google搜索
9、其他方面的提升。
快速分析问题的能力,和小组成员协作的能力。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
记得我们小组有一个成员在前中期的时候因为个人原因而退出了我们的团队,那时候我们的分工已经比较明确了,所以对于他的退出我们不得不再进行分工的分配,再熟悉项目,这的确花费了我们不少的时间去适应,虽然团队里的小伙伴分都没有挑明,但是我能感觉到有一些团队里的小伙伴已经对我们的项目不抱希望,有点丧气了,不过,在我们大家的坚持和互相帮助之下,我们总算度过了难关,最终顺利地完成了我们的项目!!(成就感爆棚!当我们团队进行最终答辩的时候,因为真的之后完完整整经历过了才能体会到成功的不容易!!!流泪了!!!!T-T)
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
虽然会有很多人吐槽软件工程这门课,“硬生生把2学分的课上成了10学分”,会和你们说很苦,很难,很烦!但是我想告诉你们的是,坚持下去吧!你们真的可以收获到很多很多!知识上的!人际处理上的!真的!真的!
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
假设依旧是一个90+人数的大班
我觉得这个得分情况而言, 如果你真的对小组成员没有报希望,那我觉得还是趁早换吧;但是最好的解决方法我觉得还是去直面你所遇到的困难,为什么你想换组,当然,如果项目到达后期了,我个人而言,不建议这时候换组,一是没有必要,因为你对项目已经比较熟悉了,换组意味着要重新去熟悉新的项目,二是更要熟悉不同的团体,更何况你能保证不会再遇到同样的问题呢?哈哈,我觉得还是看个人啦~不要做让自己后悔的事情就好啦!!O(∩_∩)O~~~
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
假设项目工作量适中,不会过于庞大的前提下,我觉得7-8个人左右比较合适。
4)个人/结对/团队作业应该控制在怎样的规模?
个人和结对作业尽量把代码量控制在500行以内,团队作业我觉得可以把工作量控制在三个星期左右的时间。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
我最想感谢的人是我的小组成员伙伴“黄毓明”,不论是java,js上的语法问题,还是对Springboot框架理解上的困难,他都总是能够很细心和耐心地来帮助我,真的如果没有他的话,说不定我早就和助教说我觉得放弃了吧!哈哈O(∩_∩)O(不过好在当初自己坚持下来了鸭~~~~~~~~~)
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
团队发展有以下几个阶段:
萌芽阶段,磨合阶段,规范阶段,创造阶段
萌芽阶段:我和毓明小伙伴首先组队到一起,接下来就是漫漫地招人之路呀~磨合阶段:队员都找齐啦,队长也初步决定好啦~由于大家都是同学,因此也比较熟悉彼此~
规范阶段:根据我们的接触,我们也慢慢设计了许多文档来进行项目更是团队的管理。
创造阶段:通过学习学习学习学习之后,我们慢慢地步上正轨,才有WeEdit产品地最终发布!!
五、怎样证明你学会了软件工程?
- 贴出目前所记录在案的用户使用量情况,如下图所示
- 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
从编写到测试再到发布,我们历经了好几个迭代的过程,中间通过沟通交流也是修修补补,最终展示的也是后续在既有功能版本上的删减版(个人版开发权限为了配合微信小程序发布的审核问题,导致几乎近半数的功能砍掉才得以上线) - 并且通过数据展现软件是可以维护和继续发展的。
在github上可以搜索到我们项目WeEdit的源码,完全开源共享,欢迎下载并提出建议或者issue,谢谢 - 对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
类别 | 具体技能和面试问题 | 现在的回答 |
---|---|---|
语言 | 最拿手的计算机语言之一,代码量多少?(偏web前端,PC/Mobile App) | java 1500行左右 |
语言 | 最拿手的计算机语言之二,代码量多少?(偏后端,数据处理,网站后台,机器学习,等) | 也是java吧! |
软件实现 | (阅读代码的能力,实现,单元测试)你有没有在别人代码的基础上改进,你是怎么读懂别人的代码的,你采取了什么办法来保证你的新功能不会影响原来的功能?你在开中碰到最复杂的bug是什么,你是如何解决的?这个bug出现的原因是什么,你在将来应该怎么去避免bug再出现? | 对于代码的话,我个人觉得应该可以先去网上查找别人的代码,尤其时开源的代码,毕竟站在巨人的肩膀上进行开发不仅能够提高效率,而且更加有意义,更加能够实现创新! |
软件测试 | (测试方法、测试工具、测试实践、代码覆盖率)你如何测试你自己写的代码?你如何测试别人的代码?你掌握了多少种测试工具和方法?你写过测试工具?你如何对一个网站进行压力测试和效能测试?你如何测试一个软件的人机界面(UX/UI)? | 代码性能的测试上使用了JProfiler,可以有一个直观的数据呈现;自己也手动编写过@Test;对于网站的压力与效能测试可以通过第三方平台进行跑跑测试 |
效能分析 | 效能分析,效能改进,你写过的最复杂的代码是什么?你是如何测量和改进它的效能的,用了什么工具,如何分析的? | 由于我们的项目是刚好卡在deadline线上完成的,因此我们的效能改进这部分还没有完成,但是等我们考试完之后,我们也会考虑去进行我们项目的效能改进哒~~ |
需求分析 | (需求分析,典型用户,场景,创新)你做过多少个有实际用户的项目,用户最多有多少?你的项目有什么创新的地方? | 由于微信小程序的特殊性,我们的项目目前就只有软工课程写过在市的运行项目,用户量顶峰也只有个90+吧(还多亏柯老板课上进行的一项测试) |
行业洞察力 | 你最感兴趣的领域是什么?这个领域过去10年经历了哪些创新?你分析过这个领域前10名产品?请分析一下他们的优劣,你要进入这个领域,应该如何创新? | 目前我比较感兴趣的领域还是社交网络这一领域,但是对于过去的领域创新我个人也还在了解当中。 |
项目管理 | 你参与过项目管理么?请描述一下两个当下流行的开发方法在你的项目中的具体应用情况;请问你如何决定项目中各种任务的优先次序,有什么理论来支持你的做法如果你突然发现项目不能按时完成,你作为项目领导,有什么办法? | 目前我还没有机会去管理项目啦,不过通过这学期软件工程课程的学习,我个人觉得github,云计算等平台都是十分好用的开发工具。 |
软件设计 | 你做过架构设计,模块化设计,接口设计么?请说明一下你为何是这样设计,你比较过什么不同的设计方式,你的设计取得了什么结果? | 设计这些是用于方便调用,因为项目本身是一个多人协作的事情,在会出现大多数调用的地方设计成接口,将共享的代码块编写成模块化,就不必重复造轮子,这正是这些必要性的设计存在的意义。 |
质量意识 | (代码复审/代码规范/代码质量)你是怎么做代码复审的,你加入我们团队后,能帮我们提高代码质量么,请具体说怎么提高? | 复审这一块往往需要测试人员的加入,如果加入新的团队,阅读原有注释,进行测试性使用,过程中通过数据查看整体在代码跑的过程中的变化等等,都可以很好的捕捉到原先的疏漏的地方,从而及时的去修修补补,代码的质量可以通过良好的注释习惯与编码风格的整体统一去规范提高。 |
工具/社区 | Software Tools (performance tool, version control, work item, TFS)你在各种开发平台(web,linux,PC,mobile,machine learning)都使用过什么样的工具,自己写过什么工具来改进工作效率?给社区贡过什么工具和代码?Github有分享代码么?你写的技术博客坚持了多久,读者最多的是哪一篇? | IDE换了又换,Java的还是推荐用Idea,功能直接且丰富;花时间去了解一款IDE后,有时候反而可以节省开发过程所使用的时间,因为你可能会忽略其自身强大但你却忽略的功能存在;github上有我目前有成型的项目代码,当然自身硬实力还太嫩,不过就算是自己的小小记录吧;博客写了有一年多吧,作为记录性的查阅以及自我复习的途径方式 |
团队协作 | work with others(协同工作,提供反馈,说服别人)请描述你在项目中何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的意见,改进了自己的方案?你如何说服懒情的同伴加紧工作,实现团队的目标? | 沟通是比较好的方式,我觉得团队里应该直话直说,虽然有时候会顾及到小伙伴的面子,不过对于团队而言,直话直说是比较良好的同沟通方式,能够有效的降低项目的风险! |
理论素养 | 你上过什么数学,计算机或其他理论课,请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题。 | 高等数学、线性代数、矩阵分析、算法与结构、面向对象与程序设计等等,具体学到的就是一种思维方式的培养,思考问题会有一个入口去推进,进行自我知识库的查表操作 |
自我管理 | 全年级你专业排名多少?你从刚入学(大学一年级)到现在的排名有变化么?如何解释你的排名的变化? | 具体排名不好透露啦,只能说在中流的位置吧,我觉得我成绩最差的时候就是刚转到CS的时候,可能是那个时候还比较不熟悉这门新领域吧!不过当我深入学习了之后,现在感觉比较稳定了,成绩也比较稳定啦! |
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[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
七、个性发挥,包括图文、照片和创意等
我们是第三小组,我们的组名叫彳艮彳亍,我们的项目叫WeEdit,我们的口号是:我行你也行!!!
第三组WeEdit宣传视频链接
第三组WeEdit宣传海报链接
小程序搜索WeEdit或者通过扫描以下的二维码,迅速的来体验一下我们的产品吧,虽然功能有点太过简单,但毕竟是整个小组的共同付出,因此我觉得我们所有的组员都是最棒的。