Learning By Doing(获小黄衫感言)

 Learning By Doing(获小黄衫感言)

一、背景

从进入到计算机科学与技术专业时,就常常听到过其他老师提及《软件工程》这门课,比如在学习matlab和算法这两门课的任课老师就经常问我们上过《软件工程》这门课没有?还提及如果我们上过《软件工程》的话后续的其他课程会轻松很多。当时我就好奇,什么样的课程能让任课老师也赞不绝口,念念不忘。终于在这个2020上学期接触到了这门“神奇”的课程。任课老师还是我们熟悉彭琛老师,瞬间觉得这门课,将会给予我们许多收获和启示。

二、《软件工程》课程学习的感受

 由于受新冠疫情的影响,课程前大部分学习是通过网上在线课堂+慕课视频课程的方式进行,虽然是线上教学,但由于老师的认真负责和详细计划,课程的学习比较顺利。老师的授课计划十分合理,教学深度循序渐进,课程知识逐渐扩大。同时老师布置的预习作业及课后作业都加深了我们对《软件工程》这门课的认知,巩固了我们的所学知识。

  通过这门课,我们不仅熟悉了当今软件开发的实际步骤,还了解了软件开发中不同领域的不同知识。大大扩展了我们的软件眼光,这不仅对我们以前所学的计算机知识进行归纳,也为我们后续在计算机领域的学习有所帮助。最重要的是这门课程教会了我们几个问题:如何去开发一个软件以及什么样的软件是好的,优质的,满足用户需求的,我们又该如何去确保我们开发的软件是优质的。就我这个学期的学习来看,我对软件工程的定义就是软件开发工程化,用工程化的思想去进行软件开发。先做一个工程一样,开始前需要准备什么?开始后的每一步该如何去做?如何确保这个工程的优质?以及工程结尾是如何去进行验收?这些思想都可以用到软件开发的过程中去。而通过这个学期的学习,老师也给予了我们完成这些步骤相应的技术和操作。我们在跟着老师计划来,一步一步慢慢的自己完成一次完整的软件开发过程。就像小黄衫上面写的“learning by doing”。

    总之,《软件工程》这门课,的的确确让我们学到了很多新的,有用的东西。也为我们后续的学习垫上一课闪亮的“垫脚石”。

三、团队开发感想及个人回顾

   这次的项目开发,是比较紧的,一方面是受新冠疫情影响,组员间的线下交流略有不便,线上交流有无法像线下交流那样清晰,方便。所以线下交流的时间较紧。另一方面又由于是我们的第一次真真正正的按软件工程开发流程来,所以难免会感到陌生,开发效率不高。当然学习新的软件开发中所需的技术也是比较费时的。
   不过,好在我们开发组鸽子开发组的组员之间齐心合力,共克难关。遇到一个问题解决一个问题,组长负责,组员配合。加上老师的指导,整个软件开发过程还是能比较顺利进行下去的。
   对我个人而言,此次项目开发是一次宝贵的经验,同时我也意识到自己的一些不足,由于我只对数据库处理这方面比较熟悉,所以我在项目中主要负责数据库这块,但其他组员对我的帮助也是巨大的。我还需拓展我自己的知识面,增加我的技术储备才行。

四、项目开发中遇到的问题及解决方法

最主要的一个问题:数据存储方式及项目成本控制!

  问题描述: 接触过网盘方面的人应该明白一点,大容量的数据云端存储是极其昂贵的,国内现在主流的大众网盘就只有百度网盘这一家,早些年间网盘软件还是比较多的,比如360网盘,迅雷网盘等等,但也由于成本问题及其他因素相继倒闭。百度网盘的存储方式及其简单,百度公司在国内阳泉等地建立数据中心,将用户上传的文件传输到数据中心进行存储保存,用户需要下载时在从百度数据中心进行下载。当然,百度也在逐渐升级技术,比如文件分块存储,CDN缓冲技术等,但每年高昂的设备维护成本及其他费用都是影响网盘廉价化的因素。所以使用过百度网盘的人都会明白,百度网盘使用限速等方式来刺激用户充值会员以获取利益。详细的网盘成本分析可以参考B站up主“回形针PaperClip”的一期视频,

                    链接如下:https://www.bilibili.com/video/BV1Ex411f7r4?from=search&seid=4366441015421592955

问题分析:如果我们也采用百度网盘的数据存储方式显然是不可能的,光是硬件的成本就让我们望尘莫及。由此我们需要寻找新的,廉价的数据存储方式!

                 当然这种数据存储方式也必须是可靠的。

解决方法:1:数据的分块存储,类似于百度网盘,我们也将数据进行切块,分别存储。

                  2:嬬羊毛,国内现在有几家大公司免费提供了远端服务器服务,比如码云,阿里云,腾讯云等,我们可以借用他们的服务器端来做我们的存储端,将用户数据分块存放在他们的服务器下,这样就解决成本问题,使用这种方法成本几乎没有。

                 3:可靠性与安全性:由于码云,阿里云等自带的安全保护机制及可靠存储,我们基本不用对此进行考虑。

                   如何使用云服务器搭建个人网盘资料参考:https://yq.aliyun.com/articles/692607


五、项目开发的心路历程

     开始时的迷茫:在开始项目定项时,我们就显得很迷茫,该进行何种项目的开发,当时主要有两种意见:一是火车购票系统,二是图书管理系统,原因是贴近实际,符合我们的开发能力,也有过经验。刚好当时出了个“pan download事件”(事件详情:https://blog.csdn.net/loongggdroid/article/details/105570597),我们组长水哥就提议开发一个私人网盘项目,并且水哥详细的介绍了此类软件所要用到的技术以及可行性。最后我们考虑到前两个项目已经比较多了,并且私人网盘也的确看起来十分诱人。所以都赞同了水哥开发网盘的想法。

   开发前期的焦虑:虽然一致决定进行网盘系统的开发,但毕竟是第一次接触到网盘系统,所以有很多新的东西需要去学习,而且受新冠疫情影响,组员分隔天南海北,所以沟通难免不便,所以在项目开发前期组内难免存在焦虑的情绪。

   开发中期的平静:随着学习程度的加深,我们对网盘系统越来越了解,焦虑情绪逐渐消失,每个人 都负责的完成自己所需要承担的责任。项目逐渐走上正轨。

   开发后期的急迫:尽管每个人都很努力的完成各自的任务,但也由于某些原因项目的进展比预期要慢一点,每个人不得不加快自己的工作进度,以在预定的时间内达到预期的目标,所以后期显得有些仓促。

  结束后的欣喜:我们在预计时间内交付了项目,虽然未达到预期的客户端要求,只实现了 web端的实现,但第一次按照软件工程开发流程来开发项目,并且基本达到了预期目标,我们还是感到欣喜。

六、获得小黄衫的感受

    惊喜,兴奋,激动,开心……欣喜溢于言表,想把她给裱起来 。比中六合彩还要 高兴,感觉这一个学期的努力没有白费。这不仅是件黄色的衣服,这也是老师对我们的肯定,也是业界前辈对我们后辈的鼓励。每一次成功都是努力的累计,这个学期的 软件工程不仅大大的拓展了我们的软件开发眼界,也为我们以后的软件开发有极大帮助,特别是拜读了邹欣老师的《构建之法》后,越发感觉自己在计算机领域的渺小,在读书中每个小故事时,都能感受到邹欣老师的风趣以及深沉,每个小故事都蕴含着一个软件开发知识。当然彭琛老师的教导也十分重要,每一节课我们都能学习到一项新的软件开发技术或知识,在跟着老师的步骤来实践,进一步的加深了我们对这门课的印象与理解。鸽子开发组中的每位成员的努力,每天每一步的累计。正是这些因素凝聚成了这件小黄衫。这件小黄衫代表着许许多多的东西,这不是简简单单的布料,而是一种象征 。她象征着《软件工程》在 软件开发中的重要地位,象征着团队在项目开发中的重要性,象征着教师对学生的关爱,也象征着计算机领域中软件开发将生生不息,这是一种传承,也是一种力量。继续learning by ding and build to win。

七、《软件工程》的进一步学习

  • 增加自己的知识储备
  • 拜读完《构建之法》
  • 整理这个学期的学习资料
  • 尝试更换自己在项目中的角色
  • 收集其他软件工程的资料

八、致谢

   感谢彭琛老师在这个学期对我们的辛苦教导

   感谢邹欣老师,周筠老师背后的构建之法教学团队

   感谢每位助教同学对我们每次作业的认真审查

   感谢我的 小组“鸽子开发组”的每一位成员在项目开发中所付出的努力

   感谢每一位在软件工程中对我有所帮助的人

 

参考文献:https://www.cnblogs.com/orzyt/p/5944256.html

原文地址:https://www.cnblogs.com/chengchenc/p/13308639.html