zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    LeetCode 623. Add One Row to Tree
    LeetCode 894. All Possible Full Binary Trees
    LeetCode 988. Smallest String Starting From Leaf
    LeetCode 979. Distribute Coins in Binary Tree
    LeetCode 814. Binary Tree Pruning
    LeetCode 951. Flip Equivalent Binary Trees
    LeetCode 426. Convert Binary Search Tree to Sorted Doubly Linked List
    LeetCode 889. Construct Binary Tree from Preorder and Postorder Traversal
    LeetCode 687. Longest Univalue Path
    LeetCode 428. Serialize and Deserialize N-ary Tree
  • 原文地址:https://www.cnblogs.com/chengchenc/p/13308639.html
Copyright © 2011-2022 走看看