这个作业属于哪个课程 | 2020春福大软工实践W班 |
---|---|
这个作业要求在哪里 | 个人作业——软件工程实践总结&个人技术博客 |
这个作业的目标 | 个人总结、团队总结、建议 |
作业正文 | 个人作业——软件工程实践总结&个人技术博客 |
其他参考文献 | 《构建之法》 |
Part1:回望
1、对比开篇博客你对课程目标和期待与目前的所学所练所得
- 达到的期待和目标
首先是团队合作方面。在软工实践课程之前我没有参与项目开发的经验,对于自己将在团队中完成任务也不是很有自信,当时也希望自己能够在团队中不拖后腿;在几个月后的现在,我成功地与同一小组的大家一起做出了成果。虽然我在其中的贡献比不上其他技术更好的同学,但这毫无疑问是我很宝贵的经历、体验。
其次是技术学习方面。在软工实践课程中我们小组前端使用的是vue框架,这也是我在学期开始时为自己定下的需要学习的目标之一。在项目开发的过程中,包括alpha阶段和beta阶段中间的空隙时间,我去学习了vue框架相关的使用,并且在项目中加以运用和实践。相信自己在这方面的水平比起最初是有提升的。
- 仍旧存在的不足
在技术学习方面依旧存在不足。在第一次作业中我写到希望自己可以“掌握JavaScript及相关框架的运用”,但现在我认为自己还没能达到这个目标。在项目开发的过程中我虽然有去学习JS相关,但在项目中实践起来依旧遇到问题,无法熟练地使用,也无法快速地解决BUG,最终靠自己通过JS实现的部分也只是项目中一些比较简单的功能。
2、对比当前所学所得,你达到了当时的预期值吗?
我觉得自己没有达到当时的预期。对比起制定计划的时候,我现在的能力是有进步的(正如我在上方“达到的期待和目标”中所总结的那样);但是对比起计划中所预期的那样,我现在的能力仍旧是不足的。
原因可以简单总结为当初预期过高和实际精力不足。现在回顾当时第一次作业的博客,再一次浏览当时老师们和助教们的评论,发现自己当时的计划确实是不够完善,有些“太过贪心”,想要学习的东西太多,现在想想应当再有所取舍一些,例如框架之类的学习(至少在当时所计划的时间内)最好先专注于其中一种的学习,其他的可以简单涉猎;其次,由于我自身的基础不是非常好,在课程中仅仅是为了完成项目开发中的任务就会耗费比较多的精力,而自己当时制定计划时并没有太顾及到这方面的问题,事实上在进入alpha阶段、beta阶段的冲刺阶段时就没有过多的空余时间用于项目所需技术之外的再多的学习了,其他的时间例如两次冲刺阶段中间的间隙也都用来学习项目所需技术即vue框架,对比起当时设想的目标确实相差许多。
由此也充分感受到了每一门技术都是蕴含了很多知识的,哪怕只是其中某个分支,细挖下去也会有很多的需要学习的东西。面对技术学习需要抱有敬畏之心,不能认为自己短时间内通过简单的学习就可以征服它们。
3、请总结这门课程的实践总结和给你带来的提升
- 在这门软件工程实践各次作业中完成的代码行数与花费时间
作业名称 | 内容简介 | 代码行数 | 花费时间/h |
---|---|---|---|
寒假作业(1/2) | 绘制学习路线 | - | 6.5 |
寒假作业(2/2) | 初次使用Github,疫情统计 | 315 | 28.3 |
结对第一次作业 | 疫情统计可视化(原型) | 370 | 24.8 |
团队第一次——展示 | 团队展示 | - | 1 |
结对第二次作业 | 疫情统计可视化的实现 | 650 | 25 |
团队第二次——Github实战 | 口罩预约应用 | 400 | 13.5 |
团队第三次——需求分析 | 原型设计 | - | 6.5 |
团队第四次——系统与数据库设计 | 编写系统设计说明书 | - | 10 |
个人作业——软件测评 | 腾讯IM测评 | - | 11 |
团队第五次——alpha冲刺 | 完成部分前端页面 | 750 | 22 |
团队第六次——beta冲刺 | 补充前端页面+部分js | 720 | 18 |
个人作业——软工实践总结&个人技术博客 | 个人总结 | - | 4 |
合计 | 3205 | 170.6 |
累计花了约170小时在软工实践上,平均每周花8~9小时左右。
- 哪一次作业让你印象最深刻?为什么?
现在回想起来每次作业都历历在目。印象最深刻的还是第一次团队实战,口罩预约系统,虽然知道有团队实战的安排,但没想到任务要求的完成度这么高,实在有些突然,没有什么心理准备。而且那次是我第一次在实践中接触vue框架的使用,只会对着队友的代码在其他并列的页面上照猫画虎,很多核心的东西自己那时候其实都还搞不懂,好在队友是比较有经验的。那一天的安排也很紧,从早到晚几乎除了吃饭之外一直在电脑前坐着,直到小组提交了作业才总算放松下来。
- 学习和使用的新软件&新工具
XMind ZEN。这是我在第一次作业中用来绘制路线图等等的软件,很好用,在后来的作业中我也经常使用它来描述设计思路、代码结构等,在其他的课程上也有所使用。
VS code。这是我在寒假第二次作业的时候才开始使用的,相见恨晚。
MockingBot。也就是墨刀。当时在完成原型设计的作业时我还下载过Axure RP,但是对比之后觉得对自己来说还是墨刀更为上手,最终就选择了墨刀。在之后的团队项目开发中我也是和队友们使用了墨刀来进行原型设计。
StarUML。是在软件工程理论课中认识它的,用来绘制各种图很方便。
PyCharm。这个是我在完成结对作业的可视化中考虑实现echarts的方法之一,但是最终没有选择使用它,后来的团队开发中我属于前端小组,也没有机会与它再打交道,于是它现在就躺在我的电脑里。
- 学习和掌握的新语言&新平台
echarts。这是我在结对作业即疫情可视化中用来绘制各种图的,很强大。
vue框架。在团队项目开发中我们小组在前端采用的就是vue框架,为此学习了相关的操作和使用。
Github。这学期第一次接触Github平台相关,最开始上手的时候还是遇到了蛮多困难的,也曾经在微信群里求助过助教。现在觉得很好用。
博客园。之前在其他专业的同学那里有看到过他们开通的博客园,这学期自己也开始使用了。感觉是一个很不错的学习交流平台。
- 工程能力与团队合作上的提升
在工程能力方面,我感觉自己与开始学习这门课程之前相比,有了不少这方面的意识。不得不承认自己之前写代码大多都是能完成作业布置的任务就完事了,虽然有遵守基本的代码规范,但复用性很差,无用的代码部分也有。现在有了在团队中共同作业的经验,变得十分明白制定代码规范、代码和文档的复用性的重要程度。除此之外,通过编写代码去实现功能固然是十分重要,但这不是工程中的全部,还有需求分析、原型设计等等的环节,这都是我在这门课程中更深一步认识到的。
在团队合作方面,我第一次在一个人数较大的团队中完成开发任务,与大家一起努力的感觉很好,有种共同拼搏的动力在里面,遇到了困难也会向小组内的队友询问如何解决,比起之前自己一个人寻找解决办法要有效率的多。在团队中也会更鲜明地认识到自己与其他技术更好的队友的差别,为了不给团队拖后腿,也变得比自己一个人的时候更加有学习动力,督促自己。
Part2:团队总结
我在团队中是前端小组的成员之一,我完成了该角色的任务,我认为我适合该角色。
1、你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
我觉得我的组长分工安排合理。最开始我们小组的活跃人员就比较平均地分为了三名前端和三名后端,是比较平衡的人员分配,在前端后端也分别有小组长一样的存在,带领两个小组进行项目的开发。我们的项目中的很多页面都是并列、互不影响的,这对于任务的分配来说也比较便利。
对于组长的选举,我认为相较于技术能力强,有责任心、有组织能力、善于沟通这类品质对于一名组长来说是更加重要的,所以我会建议在组长选举时更加强调这方面。
2、你这学期经历过换组吗?你对换组有哪些看法?
我没有经历过换组。我觉得在这门课程中设计“换组”这个环节来模拟实际工作中可能遇到的人员替换之类的情况的出发点是好的,毕竟将来大家都有可能在工作中遇到这样的情况。在汇报答辩上我看到有因为换来的新成员而取得进步的小组,但同时也一定存在着对换组比较挣扎的同学,尤其是那些碰巧技术不相通、不得不被迫去学习自己将来也许并不打算发展的新技术的成员。已经是大三下学期了,大家为软工实践都花费了很多的时间和精力,比起从零开始学习新技术,我想大家都会更希望通过这次实践机会对自己理想中想要掌握的技术加一步学习和精进。
3、分析一下自己所处的团队
萌芽阶段。在刚结成团队的时候我们就处于萌芽阶段。大家都很有礼貌,交流并不多。最初组长有向大家询问过各自意愿的角色和职责,大家当时的想法其实都比较模糊,结果在团队实战的时候直接抛弃了当时所填的,按照实际情况进行了快速的分组,事实证明团队实战时的分组才是最贴合每个人能力的,大家也因此慢慢适应了起来,之后的项目开发也沿用了当时的分组。
磨合阶段。正如上面所说,我认为在那次实战前后我们团队就进入了磨合阶段,实战是大家第一次进行合作上的沟通交流,真正意义上的开始了解各位队友。在实战阶段也出现过一些问题,比如任务的分配还不够细致,比如对队友的能力水平还不够了解,这些都需要慢慢克服。
规范阶段。在开始准备项目的时候,即进行需求分析、系统设计、数据库设计、制定代码规范的时候,我感觉到团队慢慢走上了规范的道路,大家在讨论组里一起进行讨论,对于自己分配到的任务都比较明确,也都用心去完成。在之后的开发中也是一样,大家都努力完成自己的任务,互相帮助。
创造阶段。我认为我们团队达到了创造阶段,有着明确的共同目标,用积极的态度解决不同意见,不会因此产生矛盾,角色和职责也会根据实际需求进行转换,例如本为后端小组的组长也会帮助前端完成群组聊天的功能,大家的精力都专注在完成项目上。
Part3:人月神话
1、团队方面
- 研发出符合用户需求的软件
项目链接:http://47.99.132.18/login
默认账号:[email protected] 密码123456(也可以自己注册)
用户调查报告:点此浏览
我们的项目在开发完成之后进行了公开,获得了一批体验用户,也通过问卷调查来收集用户的感想,其中有半数用户认为自己在将来的工作中有使用我们的产品的可能,有34%的用户认为我们的产品帮助很大,一定会使用。所以我们的产品不会是用户不愿意使用、没有用户使用的软件。
- 在预计的时间内发布 “足够好” 的软件
1、我们的团队有进行项目的发布。
在上方已经提供了我们的项目链接与可使用的账号,并且也进行了用户调查。
2、我们的团队有定时的进度发布。
我们团队通过teambition来进行任务的分配,完成之后给对应任务打勾,冲刺阶段每日在博客更新当日的任务燃尽图,也可通过数字直观地反映任务总数和已完成的任务数。
3、我们的团队有项目规划,包括需求分析、系统设计、数据库设计等等。
系统设计说明书:Github链接
数据库设计说明书:Github链接
数据库设计ER图:Github链接
类图:Github链接
4、我们的团队有进行项目的实现。
alpha冲刺阶段博客汇总:博客链接
beta冲刺阶段博客汇总:博客链接
里面都可显示出我们的项目不是通过临时熬夜、胡乱拼凑出来的软件,而是成员们一步一步共同完成实现的成果。
- 软件是可以维护和继续发展的
我们的项目在实现过程中都是通过Github平台的,有明确的记录,方便查看。相关的设计文档、设计说明书、设计图等也都有保存(上方已有链接)。
源代码中也都有关于具体功能的注释(对具体代码进行了折叠)。
同时也发布了代码规范:博客链接
2、个人方面
因为团队方面的在之前的内容里都提过比较多了,在这个部分想更多地写一下自己在个人作业与结对作业中得到的经验。最大的体会还是要重视每一次作业,尽早地开始行动。
又一次回想起了第二次寒假作业因为太晚开始而来不及追赶DDL的时候,在那时我就得到了经验教训,自己能力不足就需要花费更多的时间,在之后的结对作业与团队实践中也没有忘记这一点,至少自己需要早些开始准备。
当时自己因为没能顺利完成作业而倍感沮丧,做好了接受严厉批评的心理准备,但老师却是对我加以鼓励,让我大受感动,也更加坚定了动力TAT
在之后两次的结对作业里,我都吸取教训,比较早就和队友开始商量,各自去学习,最终也在结对作业交上了比较好的成果,让我感觉信心倍增,之前的经验得到了实践。
不仅如此,在这几次作业中,我时常感受到点子是会随着进度的推进而越来越多的,无论是作业本身的内容还是博客的撰写,会忽然之间想要再添加一些东西,会不断地发现可以更加完善的部分,而如果是在最低要求都无法完成的时候,这些灵光一现的主意也就没有了得以实现的机会,这无论对于作业的完成度还是自身的锻炼都是一种很可惜的浪费。为了不错过这些,尽早开始每一次的任务、每一次的学习也是很好的一个选择。
Part4:对下一届同学的建议
1、对于软工实践课程
软工实践是很实用的一门课,从老师平时在理论课的授课中也可以感觉得到里面所教授的东西都是在将来的实际工作中时常接触的,正因为这样,在软工实践的项目开发中所得到的经历、所积累的经验都是非常宝贵的,尤其是像我这样平时几乎没有参与项目的经验、是第一次参与到团队开发中的人,一定要珍惜。
也许大家都很关注技术本身,但是在这门课中,技术固然重要,但绝对不是全部,在学习过程中会了解到其他同样重要的细节,所以在学习过程中不能只关注技术而忽略其他。甚至连自己的博客园的美观程度这种看起来很小的事情也是会有很大的影响的,更不用说是在自己的团队中为项目设计各种细节。
2、对于助教工作
看得出来助教们都是既有能力又有热情的人,时常展现出愿意解答疑问、愿意与同学们进行技术分享和学习交流的态度,这让作为学弟妹的我们觉得很感动、很受鼓舞。希望下一届的同学们可以更加主动地“大力开发”助教“资源”,不要羞于向助教们提问,遇到困难可以多多交流。
3、对于自己今后
在之前的内容中也有提到,我在设计自己当初的学习路线图时内容太多,这是我现在未能达成预期的原因之一,基于此想给下一届的同学们的建议是:早日确定好自己未来要发展的方向,提前做一些初步的了解,有所选择,有所取舍,毕竟实际上是那么多的精力用来学习太多技术的,能够在学习过程中熟练掌握其中一样就已经是比较大的收获了。
其他的建议,包括尽早开始每一次的作业,在上方也都有所阐述,这里不再重复。
Part5:个人技术总结
个人技术总结:博客链接
概述:vue监控某个组件的显示与隐藏,介绍了通过路由判断和通过按钮点击对组件进行显示与隐藏的方法。