• 软工实践个人总结


    一、基本情况

    (1.1)请回望第一次作业,你对于软件工程课程的想象

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

    • 我在软工开局写下的是“主动掌握有利于这门课的 相关技能后,并主动将相关技能投入到实际工程中,加以巩固相关技能,通过任务驱动方式了解到 更多相关方面的内容,如果除去平常的作业练习和课程复习尽量做到每周拿出 10个小时用于学习相关方面的技能。”,我应该是完成了目标(把手按在良心上)。

    • 首先在本学期强化了自学能力,在结对编程作业时我涉及此前仅仅写过Main函数的C#语言,主动学习相关技能,利用C#和Java、C++的相似性极速速通语法,抓紧时间上手古老但比Java Swing好用的Winform,快速接触爬虫相关知识虽然爬取公开的内容不要求深度,但是起码得学下好用的框架和包吧,总得为后续的面向百度编程奠定坚实的基础,在本学期的相应实践中均将所学技能投入到实际工程中(因为都是现学现用的不存在不投入使用这种说法)。

    • 很遗憾的是学到的东西偏少,虽然在学习爬虫的过程中接触了非常多又好用的包(或者说是模块),例如Selenium模拟浏览器可以爬下一些无法通过爬取接口的内容,又或者是trafilatura直接提取网页有效信息,虽然仍然存在无效信息,但对于手动使用正则表达式且网页设计样式不一的网页来说极大简化了获取有效信息,但是和我预期想要的内容不是很一致,例如在结对编程中很无奈由于缺乏对Winform的深入学习制作较为粗糙,无法通过加上动画特效等视觉效果,所以我想本学期的不足是学习深度不足,有接触到Unity但也仅仅是学了一下尝试了一下发现制作较Winform复杂便直接放弃,因为开发的周期比我预想的长可能会让我完不成作业被迫“转行”,也还有不足的地方是没能提前规划好,这部分尤其在爬虫上充分暴露,前期缺乏合理规划,中期临时醒悟过来在不断改进中优化编写好的“框架”,后期在“框架”的辅助下得以加速,但很可惜的是前期久,后期过于匆忙也导致最终的目标未能达到最初设想的高度。

    (1.2)总结这门课程的实践总结和给你带来的提升:

    • 非测试组

      • 在软工实践课程当中我编写了8159行代码。

      • 软工实践的各次作业分别花费的时间:

        # 作业 花费时间(分钟)
        1-2 个人编程作业 2625
        3 结对编程作业 12170
        4 团队介绍与选题报告 410
        5 团队需求分析报告 230
        6 团队项目之现场编程 180
        7-13 Alpha冲刺(含总结) 3240
        14-19 Beta冲刺(含总结) 1880
      • 讲述令你印象最深刻一次作业?为什么这次作业令你影响深刻?

        • 应该是团队作业,因为我每天看着那些个网站我都巴不得直接提供给我数据库得了,在团队作业整个流程中让我开了眼界,真是巴不得有现成的数据管理软件提供给我我直接来条SELECT * FROM获取数据,尤其是各个政府网站样式不一非常艰难分析数据,我遇到的困难和在此期间的经历令我对这次作业印象深刻。
        • 首先是网站的爬取问题,例如在某省政府网站爬取过程中,该网站响应速度较慢,稍微我给它来一下,我就直接“国家饭”了,还好组长先Postman来了一下,发现接口不能爬取立马放弃爬取(ZyYYDS!!!)转向爬取省级非文件库爬取,当时应该是中后期比较着急所以忘记提前使用爬虫机器人协议查看能否抓取,尽管初期经验反映应该都是能够被抓取到的,但按理还是得“按流程办事”。
        • 其次各省的不同网站编码不一带来的困扰也是令人头痛的,乱码使得我一度以为这是个加密的东西好家伙加密能加密成“人事人才”,初期没有尝试解码的时候我真的以为这是个特殊的加密方式而且某省的爬取是第一个“下手”的,当时真的想着完蛋了估计后续都要碰到这种情况,直到尝试重新用GBK编码方式打开后才发现乱码被修复了,后续碰到了更多类型的编码方式。
        • 再者各省数据命名规范性,这一点我一直想吐槽某个直辖市,json格式数据键的命名采用特殊方式需要解码,而且json里面包含的数据的内容不一致,有可能这个接口请求后返回的数据有这部分数据,有可能就没有,普遍来说确实是几乎都不太规范,大小写穿插混用非驼峰,中文拼音英文混用,好在前期写的代码规范性比较好改动较少就能适应不同的方式。
        • 接着自然是代码长度让我对此次作业印象比较深刻,虽然只有短短2310行但实际上是由于初期“框架”写得好加上中期不断优化到后期适应性极强,使得几乎改动不用太多就可以直接套用。
        • 最后还是和小组一起爬(各种意义上的爬),这种团队直接合作的每个夜晚让我印象深刻,真的就像Beta总结答辩上所提到的到后期我们几乎每个人都在爬,尤其是组长ZY宿舍两台电脑都挂着爬,问为啥不通过挂载服务器(我只能说经费不足服务器性能没准还不如个人电脑好用)。
      • 在软件工程课程上花费的时间(预计花费时间参考:同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答)

        累计时间 实际周均时间 预计周均时间
        346(h) 26.6(h) 10(h)
      • 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的作用?

        • Typora、processOn:太顶了, 我是在组长和东哥的推荐下发现这两款神奇的软件非常好用,前者用于编写Markdown文档比直接在博客园后台编写简便,后者用于画各种UML图,重点在于这两款软件免费能白嫖,读书人的事情怎么能叫白嫖呢?叫零元购!

        • Selenium:模拟浏览器获取数据强,但还是有一定的局限性,但这点局限性并不妨碍到它的强大之处,在我前期苦闷于分析网页数据困难的时候给我来了一记助攻,主要是用Selenium搭配lxml用于分析网页非常好用。

        • Winform:虽然比较古老,但是比Swing好用是真的,主要表现在可以不用在运行后再根据页面具体情况衡量布局,支持在非运行状态下衡量布局,搭配上Visual Studio更是愈发强大,Visual Studio帮助Winform自动生成控件代码添加事件仅仅需要通过双击会自动生成,当然只是搭建控件和事件间的桥梁,具体事件内容还是需要开发者自行编写但是仅仅自动生成以及搭建桥梁就值得称赞,可惜的是貌似微软都宣布放弃对Winform的更新,可能是它太古老该被历史淘汰了,新的技术迭代压过了它的名头,在结对作业中我选择了Winform为我节省了大把时间。

        • Visual Studio:作为宇宙第一IDE,在本次结对作业中需要Winform,Visual Studio自然是不二的选择,自动生成控件代码,帮我节省了大把时间,尤其是Visual Studio的代码规范非常符合我,会自动将运算符和变量隔开。

        • C#:类似Java,主要是结对作业需要用到Winform,Winform需要C#,C#又支持Winform闭环了。

        • vscode:属实是没想到,我配置了一堆的环境开发还是直接用大型IDE,例如Python使用Pycharm,C#使用Visual Studio,Java用IDEA,虽然我给它整了一堆的插件但是实际在上面跑C/C++的多,不过vscode可以自行调整主题,改变代码颜色舒适尤其是GitHub Theme加上Material Icon Theme,个人觉得美观感非常强!上个图

          花里胡哨的颜色搭配文件图标为开发叠加Buff,当然这个工具是给我支持Git可视化使用的,并不是拿来好看的,支持Git可视化不再需要记住那些git bash命令。

      • 其他方面的提升。

        • 其他方面是作为一个组员,能够感受到团队间协作以及如何和团队内其他成员及时沟通,及时沟通非常重要尤其是在我们需要展示的内容上未沟通时有点小分歧,直到沟通后分歧被解决了进度也加快了。

    二、总结与收获

    非测试组:

    • 那我再谈一下结对作业吧,个人的收获是在前期不能着急写代码,注重设计才是关键,例如在结对作业前期的代码编写过程几乎是灵感来了,立即动手写一下,效果勉强还行,但是中期维护的时候俨然变成了一座“屎山”非常难以修改,前期在编写本地对战页面几乎都是靠着灵感于是代码也没规范化,命名倒是还行,中期要利用本地对战页面直接重现网络对战页面的时候碰到了难点,主要是我自己都看不懂我的代码在做什么了,没有注释这是因为前期太着急了,生怕来不及完成快马加鞭,中期试图借用界面设计代码的时候出了非常多问题,索性就全部重构了,重构的时候注重代码设计,从各种变量到各种可能事件都预先罗列,从控件布局尤其是卡牌在结对作业中我采用按钮控件,按钮控件在Winform中可能存在部分问题,需要不断调整它的自带属性,例如在按钮上显示的图片比例和原生图片比例严重不协调也是需要考虑到的,总之在中期的时候先设计好代码规范后再重新来进度飞快,甚至一个晚上实现了页面重构前期白干活了,所以思来想去就是务必注重设计!
    • 再结合下团队作业谈一下,团队作业中大量包的使用其实都来源于互联网,先前我并非知道这些包的存在,但当我开发遇到问题时面向搜索引擎编程总是能够很好解决问题,于是我的收获是需要查阅大量资料,尤其是trafilatura这个能够直接解析页面有效数据我是通过查阅大量资料,通过各种关键词“能否直接获取网页数据”,“如何过滤无效文本”,“能够直接获得有效文本”等来筛选,最终查找到了目标包,但是官方资料非常少,也需要通过各种查阅查找论坛里面有无人使用过,了解他们是如何使用这个模块的,对于Selenium这些官方资料比较多且论坛帖子比较多,查阅倒是挺简单的,所以查阅资料也是非常有用得。

    三、致谢

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

      还是感谢一下自己吧,在各个作业期间都没有放弃,能够坚持下去挺好的,遇到困难能够面向百度和面向大佬编程,想说的话大概是早点睡觉,早点起床学习,我爱睡觉身体好好,求求你别再做深夜战神了,保持好心态。

  • 相关阅读:
    label语句
    node.js入门(五)认识express和express-static中间件文件静态管理
    node.js(四)小结
    node.js入门(三)http数据解析
    node.js入门(二)文件系统
    node.js入门(一)搭建一个简单的服务
    微信小程序input安卓获取不了全英文的值
    微信小程序爬坑---textarea使用wx:if、wx:else、hidden的问题
    mysql补集合计算
    在Tomcat中配置基于springside的项目
  • 原文地址:https://www.cnblogs.com/pekkasuper/p/15717629.html
Copyright © 2020-2023  润新知