• 最终作业


    一、请回望暑假时的第一次作业,你对于软件工程课程的想象

    1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?

    开篇博客的课程目标和期待

    1. 提高自己的代码能力
    2. 学到新知识,提高自己的专业水平

    已经达到的期待和目标

    1. 代码能力比起开课之前的确有所提升。开课前,自己可能一个月都不会去打上一行代码,大一学的C语言和C++可能只记得"Hello World!"该怎么写了。经过这学期的软工实践,在词频统计的个人作业中,我头一次发现自己对C语言那么地陌生,自己的的确确学过但是完全代码该怎么写。 经过这次的个人作业,我重新捡回了被自己丢弃的C语言,加深了对C语言的学习和认识。在团队项目中,我负责Android前端开发,使用的语言是Java。Java对于我来说是一门陌生的语言,之前从来没学过也没想去学过,因为听说Java又臭又长(人生苦短,我选Python).但是为了完成自己的任务,我不得不硬着头皮开始进行Java的学习,过程当然是痛苦的,但是结果还是非常美妙的。团队项目完成后,我对Java已经有了基本的掌握和了解(当然还算不上精通),能够用Java解决一些不算太复杂的问题,当然还能自己写Android了(这是我最有成就感的一点)。
    2. 学习到了很多的新知识。在词频统计的个人作业中,我懂得了如何进行单元测试,如何进行性能检测;在原型设计的结对作业中,我学会了原型设计工具Adobe XD CC和Axure RP的使用,并且强行提高了自己的审美水平;在UML设计的团队作业中,我学会了类图、用例图、泳道图的画法;在设计抽奖系统的团队作业中,我学会了使用HTML进行网页设计;在Alpha冲刺和Beta冲刺中,我学会了Android Studio的使用,懂得了用Java进行Android开发,更重要的是提高了自己的自学能力,团队协作能力和交流能力。

    存在的不足

    1. 虽然自己的代码能力是得到了很大的提升,但是代码规范还是做得不够好,在写代码的时候经常不注意代码规范,没有养成良好的习惯。
    2. 学到了很多的东西,但都只是学会了基本的运用,比如Android开发,简单界面的开发你自己可以完成,但是遇到更难更复杂的界面设计,自己就完全不知道该怎么做了。自己虽然学的多,但是学到的都不够精通,今后还是继续下功夫钻研。
    3. 最重要的一点就是自己的时间管理做得不够好,简直是血和泪的教训。因为这个熬了不知道多少个夜。因为大部分时间全用来做软工了,很多课上课都没在听,到期末考试才知道后悔我恨呐!!!

    2)总结这门课程的实践总结和给你带来的提升,包括以下内容:

    1、统计一下,你在这门软件工程实践中,完成了多少行的代码

    参照自己的学习进度条,在软工实践中我差不多完成了4200行代码。当然这只是估计,肯定会存在些许误差,但是总的来看应该差不了多少。下面是我在Alpha冲刺和Beta冲刺中完成的代码量,大概在3600行左右。
    image

    2、软工实践的各次作业分别花了多少时间?(做一个列表)

    作业 花费时间
    自我介绍 5
    福大软工1816 · 第一次作业 - 准备 520
    福大软工1816 · 第二次作业 - 个人项目 720
    福大软工1816 · 第三次作业 - 结对项目1 1810
    福大软工1816 · 第四次作业 - 团队展示 150
    福大软工1816 · 第五次作业 - 结对作业2 1580
    福大软工1816 · 第六次作业 - 团队选题报告 160
    福大软工 · 第七次作业 - 需求分析报告 175
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队) 195
    Alpha冲刺 4325
    福大软工1816 · 团队现场编程实战(抽奖系统) 355
    福大软工 · 第十次作业 - 项目测评(团队) 95
    Beta冲刺 2625
    福大软工 · 第十二次作业 - Beta答辩总结 295

    3、哪一次作业让你印象最深刻?为什么?

    让我印象最深刻的暑假做的第一次作业福大软工1816 · 第一次作业 - 准备。我记得那时候自己对软工实践一无所知,唯一了解的还是从学长那里得来的消息,软工实践螺旋爆炸难(现在想想的确是这样)。为了完成那次的作业,我看了许多大佬写的博客,了解了他们从小白到大牛的成长历程,了解了他们是如何学习计算机的,也了解了自己有多咸鱼。看了这些博客我认真地反思了一下自己,好像大一大二的两年完全没有一个计算机专业学生该有的样子。上课写作业然后考试,好像和高中的自己没多大区别,就算说自己是其他专业的学生,好像也没毛病,几个月都不会打一行代码的人可不像是计算机专业的。那次作业给了我深刻的反思,到现在都忘不了那个下午,看完博客的我坐在椅子上想了好久好久。

    4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答

    粗略地算了一下,差不多花了220小时在软工实践上(我怎么觉得比这多多了呢?),平均每周大约花13个小时左右,平均每天差不多两个小时......(我不信我只花了这么点时间!)。当初开篇博客并没有具体说出每周要花费多少时间(还好没立flag)
    image

    5、学习和使用的新软件

    1. 安卓开发学习和使用Android Studio
    2. 原型设计学习和使用Adobe XD CC和Axure RP
      3.第二次结对作业学习和使用IntelliJ IDEA
    3. UML设计学习和使用ProcessOn
    4. 团队代码管理学习和使用GitHub

    6、学习和使用的新工具

    1. 安卓开发学习和使用Android Studio
    2. 原型设计学习和使用Adobe XD CC和Axure RP
      3.第二次结对作业学习和使用IntelliJ IDEA
    3. UML设计学习和使用ProcessOn
    4. 团队代码管理学习和使用GitHub
    5. Visual Studio的性能分析和代码覆盖率

    7、学习和掌握的新语言、新平台

    1. Java,安卓开发全靠它
    2. GitHub,我的新大陆,虽然还是很会用

    8、学习和掌握的新方法

    1. 学会了如何进行Android开发
    2. 学会了原型设计
    3. 学会了Git的使用
    4. 学会了如何进行性能测试
    5. 学会了如何进行单元测试

    9、其他方面的提升

    1. 代码能力得到提升
    2. 专业水平得到提升
    3. 团队协作、交流能力得到提升(但是还不够好)
    4. 自学能力得到提升

    二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析

    经验和总结最多的就是完成团队项目的时候了

    • 经验总结
      在完成任务的时候,我们往往会事先估计一下这次的任务的难度怎么样,工作量是多少,需要多少时间来完成。但是往往在这个时候,我们会犯错。“这个任务听起来也不算难啊,不就是写个接口,传一个json数据再接收json数据嘛”。这样的情况经常会遇见,过于乐观地看待自己的任务,没有真正地认清任务的工作量以及自己的能力。所以在实际完成任务的过程中,我们总是会遇到各种各样的困难,大大延长了自己完成任务的时间。不管是什么样的任务,自己都应该早早地开始着手完成,因为你对这个任务的估计可能不够准确,早一点开始做就能早一点发现问题,也会有足够的时间来解决这些问题。只有提早开始做,提早发现问题和错误,才能顺利完成自己的任务,而不会在deadline之前心态爆炸。

    • 实例分析
      在Alpha冲刺阶段,我的任务是完成登录注册界面和用户回答问题界面。我最先开始设计登录注册界面,那时候可以说是从容不迫,悠哉悠哉,想着自己不就是登陆注册吗,设计两个可编辑文本框再把账号密码传到后端不就行了,多大点事儿啊。回答问题也是一样啊,从后端接收一下用户要回答的问题再把用户的答案发回去不就好了。这么简单的任务真是美滋滋(我是真的傻啊)。但是当我慢慢悠悠慢慢悠悠写了一段时间都,发现怎么登录还要有token,这是什么东西,登录失败还要用http码来判断失败的原因,注册怎么还要短信验证码......各种问题层出不穷,当时进度实际上只完成了一点点。那段时间一直在赶一直在赶,每天肝软工每天熬夜,真的是心态爆炸。现在想想,要是当时能尽快着手完成,就能早点发现自己原来还要那么多东西不懂,早点发现就能早点解决,早点解决就能早点完成,早点完成我就不会拿上课时间肝软工了(到了期末真的是恨呐)。在接到任务的时候,一定一定要尽早开始准备,这样才能有足够的时间来应付你在开发过程中遇到的困难和问题

    三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:

    1)你有什么想建议、告知和期许想要告诉他们呢?

    1. 软工实践的的确确非常锻炼人,可以提高你的代码能力和专业水平。但是在选这门课之前,你要好好考虑一下自己这学期的计划是什么样的,选完软工之后自己的计划会不会发生改变。软工实践会花费你大量的时间在学习新东西、写bug和改bug上。如果你觉得自己可以安排好自己的时间,那么选了软工绝对血赚不亏。如果你没办法合理安排时间来完成软工,那么我的建议还是不要选了。(血和泪的教训啊!我的编译凉了呀!我为什么要在编译课搞软工呢?)
    2. 在完成团队项目的时候,一定要认认真真完成,我觉得收获最大的就是在这个阶段了。你会学到很多很多自己没接触过的新东西,从小白到大牛的路从这里开始。
    3. 保护发际线
    4. 开篇博客不要立下太多flag

    2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?

    我觉得不要,因为一个团队好不容易磨合好了,又突然换了一个人进来,这个刚进来的这段时间肯定对整个团队项目都不熟悉,要花时间了解整个团队的进度以及自己的任务,了解自己应该干什么。这都是需要花费时间的,软工实践本来就耗时间,这样子做不仅整个团队进度被拖后,刚加进来的那个人肯定也会因为不熟悉而无所事事。所以我觉得并没有必要。

    3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?

    8-9个人吧,三个前端、三个后端、一个PM和一个机动人员

    4)个人/结对/团队作业应该控制在怎样的规模?

    个人作业我觉得规模是有那么一点点大(也可能是因为我比较菜),结对作业的话规模刚好,团队作业除了现场编程抽奖系统那个,其他都还好。现场编程就三个多小时,工作量那么大,完全不合理啊亲。

    5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?

    最感谢的人,当然是柯老板还有助教姐姐了。
    郑重感谢我的每一位队友,还有炜哥。要说的话在这都说啦(戳这里)

    四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)

    • 萌芽阶段:一开始PM他们在班群和课堂上说了他们项目的想法,感觉还挺不错的。后来自己向组个队但是人不够,果断投奔PM去了。现在想想还真是个正确的选择,团队每个人都很nice,大家都有着相同的目标。
    • 磨合阶段:一开始大家彼此都不是很熟,所以在开发时遇到问题都只会是自己闷头钻研,有点耽误进度。但是经过一段时间的接触和几次站立式会议之后,大家都开始慢慢地交流了起来。整个团队也慢慢地凝聚了。
    • 规范阶段:我们的后端有规范文档,当时有不少同学都有来向畅畅同学学习规范文档。每个人也都分工明确,能够独立及时地完成自己的任务,在遇到困难时能够及时提出,一起解决。
    • 创造阶段:我觉得我们的团队还没有能够达到创造阶段,虽然每个人都能很好地完成自己的任务,但是如果要进行小组之间的角色转换的话,可能还胜任不了其他位置的工作,需要一段时间的学习才能在各个角色之间灵活转换。

    五、怎样证明你学会了软件工程?

    1)研发出符合用户需求的软件

    我们的团队项目“即食”APP没有发布到应用商店平台上,但是已经向部分同学开放使用。根据后台数据库显示,目前的用户已经超过了一百人。
    image

    2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件

    我们团队的项目有项目规划,有需求分析,也有具体的实现设计。整个流程都是整个团队通力协作一起完成的,大家每个人都尽了自己最大的努力完成了我们的项目--“即食”APP
    需求分析报告
    团队选题报告

    3)并且通过数据展现软件是可以维护和继续发展的。

    Github上的源代码
    分别是前端代码、后端代码和Web端代码
    image
    前端代码的最近一次更新是在9天前,仍然在近些代码的完善和部分问题的修改
    image

    4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。

    认真看完了整篇博客,满心羞愧,本来度过了软工实践以为自己变强了,非常膨胀,没想到还是差了这么多。特别是在Java那块的问题,看完我感觉自己好像没学过Java吧,我都学了些什么?
    image
    硬的问题看的我心态爆炸,软的问题初看还好,但是选完后仔细想了想,自己跟条咸鱼有什么区别。每一题我都知道选什么才是正确的,但是考虑了一下自己的实际情况,好像离正确的选择还差了好大一段距离。看完整篇博客,我觉得按我现在这样子去企业面试,估计没有一家企业会要我(不是估计,而是绝对没有一家会要我)。我现在还是不够强啊~~

    六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?

    参考论文传送门

    这篇论文主要讲的是代码质量分析,大概浏览了一遍论文(菜鸡只能翻译成中文看),发现自己之前写的代码存在许多问题,代码质量都算不上高,甚至还有那么一点点差。例如没有写单元测试的习惯,命名也不够规范。自己在接下来的学习中必须养成时刻检查自己代码规范的习惯,提高自己的代码质量。这样不仅可以让自己的代码看起来赏心悦目,在找bug的时候也会方便很多。说实话这篇论文我只看懂了个大概,大部分内容我都没真没看懂,像衡量组件质量的10个指标看的我头疼,自己看论文的能力还是需要提升啊。对了英语水平也要提升,菜鸡才看中文翻译。

    七、个性发挥,包括图文、照片和创意等

    合照

  • 相关阅读:
    [时间篇TIME]Learn with whole Life 一生的学习
    使用IIS内置压缩功能,增加网站访问速度
    CSS中A链接样式的 "爱恨"原则
    爱情六十三课,定个开放日
    给爱子的信
    在IE中使用高级CSS3选择器
    爱情六十七课,下台阶的学问
    网上常用免费WebServices集合
    美国狗证上的10句话
    爱情六十五课,情爱无智者
  • 原文地址:https://www.cnblogs.com/yaozhengyi/p/10247365.html
Copyright © 2020-2023  润新知