• 个人作业——软件工程实践总结&个人技术博客


    这个作业属于哪个课程
    https://edu.cnblogs.com/campus/fzu/2020SpringW/
    这个作业要求在哪里
    https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10836
    这个作业的目标
    经验总结和技术总结
    作业正文
    ....
    其他参考文献
    ....

    一、回望

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

    在开篇博客中我对课程的期待是:获得个人的编程能力以及团队协作能力的提升,还有后端的学习。
    目前为止期待的目标都已达成,在个人作业和结队作业中,我学习了前端的框架和单元测试的内容,第一次尝试和人组队编程,对结队编程有所体会;在团队作业中了解了一个项目从选题到上线的发展过程,对项目的架构有一定认识,同时在团队作业开始前学习了springboot的后端框架得以实践,使用起来更加熟练,还自学了webmagic的爬虫框架,虽然没在作业中用上,但是多学会一点东西总是有益的,通过前后端的交互中扮演协调问题的角色,提高了沟通能力,对以后的工作提供了经验。

    (2)你在第一次作业的个人简历中制定的这门课程结束后,你预期你将增长的能力、技术、技能;和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?

    总结:只达到部分预期目标。
    首先是数据库方面,预期目标中有MySQL的使用和nginx代理和分布式对象存储系统,其中MySQL的使用完成,nginx只学习了一点知识,了解一些皮毛。
    语言部分的java的几种知识学习了部分,JVM和java的类加载机制内容比较庞大,只有简单了解,不足以应对情况。
    开发工具的使用例如idea/eclipse和maven以及git在这课程中多次应用,较为熟练,达到预期目标。
    开发框架springboot和mybatis在这次团队作业中也得以应用,也算是学会了基本操作。

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

    • 统计一下,你在这门软件工程实践中,一共完成了多少行的代码;
      粗略估计在2-3k左右。
    • 软工实践的各次作业分别花了多少时间?(做一个列表)
      因为没有记录,时间太久了记不清楚。
    • 哪一次作业让你印象最深刻?为什么?
      疫情统计的作业让我印象深刻,因为模拟命令行的操作在之前是从未接触过的,同时这也是第一次使用git来上传代码,比较陌生,再加上尚未开学,没有做好做大作业的准备,比较慌乱,以及线上交流问同学问题比较困难,表述难以清晰,综合上述原因导致这次作业花费时长最高,这也是让我对软工实践改观印象的一次作业。
    • 累计花了多少个小时在软工实践上?平均每周花多少个小时?
      可能有80-120小时吧,平均每周8小时。
    • 学习和使用的新软件;
      idea,postman,Jprofiler,axure,墨刀,xmind等
    • 学习和使用的新工具;
      idea,maven,git,postman,Jprofiler,axure,墨刀,xmind等
    • 学习和掌握的新语言、新平台;
      GitHub,springboot框架,webmagic框架,echarts框架
    • 学习和掌握的新方法;
      前后端分离,单元测试
    • 工程能力的提升;
      复杂代码编程能力,项目设计能力,代码重构能力,代码阅读能力
    • 团队合作上的提升;
      对专有名词更加熟悉,不会因为名词的误解而导致沟通失败。
    • 其他方面的提升;
      自学能力的提高

    二、团队总结

    软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?

    你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
    我在团队中担任后端的角色,负了这个角色应该有的责任,我觉得我适合这个角色,但是能力略有不足,不能够独当一面,希望以后能做到。

    1、 如果你是组员,你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
    我觉得组长的分工安排还是比较合理的,就是海口夸的有点多(无奈),以至于我们每次的目标总是比较庞大,实现起来有些难度。好的地方肯定是人员安排上,每个人都做自己擅长的工作,积极性更强。我认为组长的选举就像我们组,由经验比较丰富的、擅长沟通的、最好是自愿的、负责任的人来担当是最好的选择。
    2、 你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
    这学期本来我打算换出去别的组,但是后来错过了自愿换组的填表格时间,所以只能由随机抽取来决定,最后走的人不是我,所以没经历换组,但是我觉得换组是相对没有必要的,因为大三下的课程繁多,课业压力比较大,对比工作环境略有不同,不能直接照搬工作时的方法来给学生,应该有改动后适宜学生的方式来模拟工作的环境,这样更加合理。
    3、 分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?
    (1)萌芽阶段
    团队第一次作业选题时进入萌芽阶段,对需要做什么、怎么做还尚不明确,需要各个组员讨论,同时需要选出一名组长来负责团队管理。
    (2)磨合阶段
    刚开始大家对互相的能力不是非常了解,所以在GitHub实训那次作业中出现了分工不合理的现象,使得进展缓慢。随着合作次数的增加,成员之间的了解更加充分,团队就进入了下一个阶段。
    (3)规范阶段
    从alpha冲刺开始进入了规范阶段,此时大家都对自己的任务很明确,有时间概念,同时每日汇报自己的工作,让其他成员了解进度,文档、博客、会议记录、编程都有相应的人完成,进展顺利。
    (4)创造阶段
    在beta阶段进入创造阶段,此时分工后各成员就没有疑问了,各司其职,没出现大问题。到最后几天前后端交互稍微费点时间,顺便完成用户调研报告,项目就算完成了。

    三、人月神话

    1、怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?。

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

    我们团队通过teambition来实现项目管理,团队合作则是通过组建群聊,在群内发布公告和在线文档的方式来进行的。

    这是alpha阶段的teambition任务部分概览,由于任务数过多,不一一展示
    图片

    这是beta阶段的teambition任务部分概览
    图片

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

    源码保存在GitHub上,有提交记录可以追溯。
    主分支:
    图片
    hxd分支:
    图片
    其他分支不一一罗列。

    将数据持久化到数据库中。
    其中一张表字段属性如下:
    图片
    其他三个模块三张表,三个模块的评论三张表,管理员用户两张表,举报表,敏感词表等。

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

    (1)首先是个人编程,比较有难度的就是疫情统计,一个人实现命令行模拟、写入txt文件、设计类的属性等等,工作量比较大,所以在这次作业中也能体现个人编程的优缺点。
    个人编程的优点就是可以自由把控时间,全部代码由个人完成,不用统一代码规范以及花时间去理解别人写的代码。
    缺点也很明显,如果任务量较大的话花费时间很长,压力比较大,同时由于编程的时间不可预测性导致无法正确预估完成时间,任务发布的前几天得加快进度保证能在deadline之前完成。

    (2)其次是结对编程,完成原型设计和前端界面的图表显示,由于结对同学出现了不可预测的麻烦(电脑进水),导致可工作时间减少,这样需要更加明确的分工和设计才能减少编程时间,在一周内完成网页。由此可以看出,结对编程的优点是两个人分担工作,工作量减少,分工更明确,不用像个人编程一样得完成所有的事情。而缺点就是因为依赖于另一个队友,所以当出现情况时压力就会变大,因为没有多个人可以分担多出来的任务。

    (3)最后时团队编程,团队编程的话总体来说比较顺利,都能有条不紊的完成每次的设计和编码实现,这归功于一个优秀的领导人和团队成员的精密配合。
    一个优秀的leader可以把任务分给能力匹配的组员,这样不会导致大材小用或者让能力不足的人做难度偏大的工作而直接放弃。同时对总体的把控和一些细节的处理需要比较到位,还得协调各个组员之间的问题,扮演非常重要的一个角色。
    然后是团队成员之间的合作,有需要帮助的地方或者对对方代码不理解的地方能够积极提出,发现问题解决问题,不能堆积问题到最后就难以解决。这也是很重要的一部分。

    经验总结:博客的工作看上去简单实际上花费时间很长,需要提早准备,同时不能低估它的工作量。写代码前要先设计,这样才能事半功倍。边写边设计会浪费很多时间,这是经验之学。还有团队合作时代码要尽量简洁易懂,复杂的地方要有适当的注释,方便其他人阅读以及后续修改起来比较方便。对代码的使用要撰写文档,最好使用简洁易懂的语言,加上使用范例,可以避免很多问题的出现。如果同一个端有多名成员时要统一代码规范,这样看上去比较顺眼,同时在修改的时候也更加简单。

    四、建议

    对下一届同学的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?请写下你对后来人的期许。

    建议:一定要留充足的时间来准备课程,因为任务量比较大,最好把其他的预算提前安排或者推迟到大四下学期,不然课程压力太大,整个大三会过得很难受。

    期许:虽然任务很多,但是有意义,可以的话最好用心学好这门课,对整体的编程思维提升挺好的。

    对于软工实践课程,你有哪些建议?

    建议:希望能够减少一些写博客的内容...真的很繁琐。

    对于助教工作,你有哪些建议?

    建议:暂时没什么建议,我认为这学期的助教都做得很好,对同学提出的疑问都有回答,认真负责,如果硬要提建议的话,就是发布作业的时候的表述能够更清晰一些,对于我这种理解能力比较弱的人来说经常会出现歧义,读题也很痛苦。

    对于自己今后,你有哪些建言

    对自己的建言:如果下学期能够闲下来的话,就多上牛客、leetcode刷题,丰富面试经验,提高知识水平,希望能在秋招找到满意的工作。

    五、个人技术总结

    个人技术博客链接:https://www.cnblogs.com/hxd1017/p/13128664.html

  • 相关阅读:
    吴恩达《深度学习》第四门课(3)目标检测(Object detection)
    cnn知识点汇总
    吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究
    吴恩达《深度学习》第四门课(1)卷积神经网络
    解决Eclipse中springBoot中文乱码问题
    SpringBoot返回页面乱码解决
    【Maven】---Linux搭建Nexus3.X私服
    ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
    Winform打包工具SetupFactory 9 的使用
    PostgreSQL
  • 原文地址:https://www.cnblogs.com/hxd1017/p/13121080.html
Copyright © 2020-2023  润新知