软工实践个人总结
一、基本情况
(1.1)请回望第一次作业,你对于软件工程课程的想象
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 我在第一次作业中写到本学期有令人痛苦的软工实践(特别是柯老板班),希望经历软工实践不会那么抵触代码,也希望能够和团队一起把项目做好。本学期的软工课程带给我的收获还是挺多的,最开始令我觉得超级难的个人编程作业真的让我感觉头大,我从未用python这门语言写过代码,当然是非常不熟悉。从毫无头绪到和身边的同学交流讨论,一点点完成任务(虽然没有全部完成),我认为这是一个成长的过程,思维得到了锻炼,同时也练习了这门语言。
- 结对编程让我初步地学习了一些小程序的知识,并从0学习原型设计,配合队友修改、优化、充实界面,Photoshop和墨刀等工具的使用变得得心应手,为让原型的表现力更明显也发现了许多宝藏网页(视频转gif、智能抠图等)。团队协作时,团队照片的后期让我再次锻炼了图像的处理能力,原型设计的协作绘制虽觉得不满意,但也不失为一次锻炼。
- 团队项目的进行让我学习了视频数据收集、标注,现场编程让我看课学习的auto.js得到了应用。另外,制作ppt、写博客等琐碎任务也注入了我对这门课的态度。总的来说,学习到了很多东西,图像处理、审美能力得到锻炼。团队协助是一个内聚的过程,组员聚集写代码、工作给我带来了很多感动,这些是符合期待的。起初的编码目标(受到队友的“照顾”)仅在个人编程得到了锻炼,感觉还是有些抵触代码,这是不足之处,主要原因还是在于自己不够积极主动地面对困难,畏畏缩缩地害怕写bug只会导致自己的编码能力止步不前,今后还需努力克服。
(1.2)总结这门课程的实践总结和给你带来的提升:
-
非测试组
-
在软工实践课程当中我编写了_400_行代码。
-
软工实践的各次作业分别花费的时间:
# 作业 花费时间(分钟) 1-2 个人编程作业 1365 3 结对编程作业 2340 4 团队介绍与选题报告 530 5 团队需求分析报告 460 6 团队项目之现场编程 510 7-13 Alpha冲刺(含总结) 1650 14-19 Beta冲刺(含总结) 1020
-
-
讲述令你印象最深刻一次作业?为什么这次作业令你影响深刻?
-
令我印象最深的一次作业是个人编程作业。在这里我描述一下我的心路历程,刚看到个人编程作业我是迷茫且懵逼的,需求太多了我没有办法产生一个系统的思路去解决这个问题,另外作业要求的覆盖率、词云图、性能分析、编写单元测试、异常处理这些东西我是真的没搞过,也是真的不会。加之本身就带有的对写代码的抵触情绪,愣是荒废了编程作业的前几天。
-
当我看到身边的同学渐渐都开始研究、学习怎么解决这个问题,并且把自己对于某个功能点独到的方法拿出来分享时发觉不是只有我一个人不会。我确实不太会用python,但是希望用这个人性化且便捷的语言来解决这个作业。从一开始的在CSDN上搜索学习敏感词检测的算法到将其修改应用到现有的需求中,首先实现了正确的敏感词的检测。经同学点拨使用python拼音库不仅能够实现带谐音字的敏感词识别,还能一并解决繁体字(感觉大受震撼,同学们太牛了),我觉得我又行了。实现最基本的功能,再将特殊的功能一点一点实现,但是由于前期需求的分解和解决思路设计不明确且有些方法不可行导致debug花费很多时间(明白了要想写出好的代码前期的设计工作尤为重要)。
-
总之,个人编程作业我更熟悉了python语言,学习了如何用pycharm做性能分析,如何写单元测试、异常处理等,还花了大把时间写博客,当完成个人编程作业的那一刻我突然觉得好像也不是想象的那么不可完成,我也没想过这些完全没做过的东西最后都能完成,感觉很有成就感,因此这次作业令我印象深刻。
-
-
在软件工程课程上花费的时间(预计花费时间参考:同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答)
累计时间 | 实际周均时间 | 预计周均时间 |
---|---|---|
132(h) | 6.9(h) | 6(h) |
-
介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的作用?
-
Adobe Photoshop。真真确实是一款强力的图像处理软件,以前只是学习了有什么功能,但很少上手操作。软工实践真的有很多机会用到这个软件,涉及到原型设计的素材图、团队照片后期修图、视频的拼图需要、功能展示图绘制、艺术字体抠图等部分,拼图、抠图、画素材各种操作都在软工实践得到了锻炼,真的嘎嘎有用。
-
墨刀、摹客网页版。这两款原型设计工具是我本学期才接触到的,从小程序的原型设计到团队作业的原型分别依赖墨刀、摹客两款原型设计工具,两款给我的感觉正好是优缺点互补,墨刀绘图、添加事件交互操作都非常方便,唯一不好在于得氪金才能协作,摹客则相反。它们的作用就是让我以比较良好的体验完成了原型设计工作(特别是墨刀)。
-
auto.js。这真是以前没听说过的东西,应现场编程要求学习了二十多节网课,也算积累了知识。作用就发挥在了现场编程上,虽然短时间的学习没有让我有足够时间实践,但积累到的知识还是在团队的现场编程中发挥了点作用。挺想用它试试
签今日校园的,无奈自己的手机是iOS系统。 -
小程序前端知识。结对编程时上网课学习了部分前端的布局、框架,作用的话就当是积累了点知识吧。
-
python。这个应该不算学习到的新技术,提到它的原因主要是先前学习过但缺乏应用,个人编程使用到了之前没有使用过的包,这真的是个非常人性化的语言,可调用的东西也很多,我觉得个人编程作业就是一个很好的体现,相比使用c++的同学,用python写的代码确实比较短,今后使用到这门语言的机会应该会有很多。
-
单元测试、异常处理、覆盖率测试。编写单元测试能够有效地测试所写代码的功能,异常处理则能够针对代码中出现的异常情况做出提示和处理,这些都是必学的东西,不仅是应用到个人编程作业,也可用于今后发现代码问题,有利于debug。另外,如果不是个人编程我不知道原来pycharm专业版自带有测试覆盖率的功能,我只能说pycharm yyds。
-
-
其他方面的提升。
-
制作ppt、文字能力。ppt的模板选择、文字图片的排版、文字内容的打磨都有所提升。
-
博客排版、撰写能力。在软工课前很少使用博客园,真的是因为写了很多次博客对Markdown格式也更加熟悉,博客撰写效率相比学期初有明显提升。
-
一些道理。首先是做事应该有所规划,在本学期软工作业的完成过程中我经常拖着作业直到deadline驱动我去完成作业,这一点让我感觉很不好,熬夜写作业挺难受的(头发掉的是真多)。其次是对于自身能力有准确认识,制定切合实际的目标,我们的团队项目由于工作量过大难以在短期内做完,这使得我们的项目完成度不好。接着是关于团队沟通的问题,团队前期缺乏沟通多少影响了项目的推进效率,后续加强沟通工作也变得更加高效,这表明沟通能够有效地了解更多需求和细节,高效自然是必然结果。最后,虽然在这门课我有很多做的不够好的地方,最起码也为软工熬过夜、努力过。
-
心性的磨炼。从个人编程提出一大堆我不懂的要求开始,到一无所知的原型设计、小程序,再到团队项目的数据收集、标注等,我也经常真挺羡慕周六早上躺在床上不用去上软工课、不用答辩也不用疯狂交博客的舍友,我只能用我学到了蛮多东西的来安慰一下自己,突然就升华了。
-
二、总结与收获
非测试组:个人或结对或团队项目实践中的经验总结+实例/例证结合的分析。
-
个人编程作业。总的来说总算用python写了个东西,另外学习了pycharm的覆盖率测试、针对代码的功能块编写单元测试来检验敏感词检测的功能是否有问题,学习了异常处理的写法,由于可视化需要,也用python绘制了统计图。另外,python的包是真牛逼,敏感词检测使用拼音包能够囊括多个功能点(原先以为繁体字、谐音字得用什么特殊高级的方法),此处是收到同学思路的启发,因此得出经验:python的包是个待挖掘的宝藏,在需求之上确实很有研究的必要(没准可以调用很简单的方法解决难题)。
-
结对编程作业。结对编程作业让我对原型设计深有感触。前期综合资料比对各种原型设计工具的优缺点选择了墨刀,并在设计前讲工具使用方法的网课刷完,上手真的非常快,确实磨刀不误砍柴工。另外,由于原型设计用到的图片、gif等都是前端需要的,前期做原型设计没有边做边整理素材导致了后续又花多余的时间集齐素材。还有一点是制作原型需要依赖的工具,除了Photoshop辅助之外,制作原型过程中为追求动态效果搜集了gif动图,但自己没法一帧一帧将动图抠出,在搜索过程中发现了在线gif抠图工具省去了不少麻烦。为使博客中有gif动图展示原型,又在网上发现了视频转gif的在线工具,这波发现的宝藏网站算是积累经验了吧。
-
团队项目实践。我觉得有两个问题,一是目标过高,团队项目工作量太大了,短期内无法很好地完成,起初我们小组认为在github上找到些开源代码就能保证我们的项目在本学期完成,但事实并非如此,我们没有估计到各种考试、大作业,也未考虑到学习新技术需要花费大量时间,从这个问题就能说明了制定目标还需从实际出发。二是缺乏沟通,初期乃至中期小组内的沟通都仅仅停留在开会上,并且开会大多数时候是简单分工,不做详细的分配,直到alpha冲刺结束我们的项目还是没有做出一个可用的东西,原因肯定不乏组内互相沟通需求、进度。在后期beta冲刺,我们做出了改变,小组聚集起来共同交流工作,让我最直观的感受是效率和先前完全不一样,现场交流服务器做到哪、前端什么bug没有de出来、答辩ppt有什么地方需要修改等,所有事情都变得事半功倍。所以,团队的项目一定不可缺少沟通交流。