• 个人作业———软工实践课程总结


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/2020SpringW
    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10836
    这个作业的目标 对软件工程实践课程的总结
    作业正文 https://www.cnblogs.com/aahorse/p/13118206.html
    其他参考文献 《构建之法》


    一、回望

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

    在软件工程专业的能力方面,我希望可以参与一个产品通过软件工程的方法从零到上线的完整过程,到现在课程结束,我到了。从选题、原型设计、需求分析、系统设计、数据库设计、Alpha 冲刺、Beta 冲刺,我们一步一步运用软件工程的方法,把产品做了出来。经过这门课程,我也终于明白,成为一名优秀的软件工程师,不只要有编码能力还要有设计能力、合作能力。


    在技能方面,我希望可以拥有初级程序员的开发水平,到现在课程结束,我也做到了。我学习了一门新的编程语言 Kotlin。参考 GitHub 上面优秀的开源项目,我把目前流行的 MVVM 架构模式应用到了我们的项目当中。为了丰富产品的功能,我接入高地地图、百度人工智能两个开发平台。最重要的一点,在编码的过程中,设计能力、开发能力、合作能力等必要的技能都得到了充分的锻炼。


    不足的地方:维护产品的能力没有得到锻炼。在工作当中,除了开发新的功能,还需要在发现 BUG 时,维护旧的代码,而我们的课程实践是从零开始到项目的实现,似乎并没有涉及到这一方面。其实,老师和助教在注意这个问题,参考北航的同学,将每届实践课程的优秀项目传承下去,这个问题就有解了。即使一些小组依然是从零开始构建项目,但是只要有一些小组在选题的时候,选择了接手祖传项目进行维护和拓展,每个人依然可以从这些小组的博客、答辩当中学到一些经验和教训。


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

    我预期可以通过软工实践锻炼和提升工程能力,经过多次的作业还有两次冲刺,对于工程能力的提升甚至超出了我的预期。但是并没有按照当初制定定的学习路线发展。我当初的想法是转向后端精通 Java,但是在组建团队之后,团队内缺少 Android 端的开发选手,我不得不兼顾团队的需要,把学习方向改向了 Android。尽管后来我没有继续制定 Android 的学习路线,但是我依然给自己制定了目标:开发一个完整的项目,学习构建完整项目需要用到的技能。因为没有构建完整项目的经验,所以在前期,我在 GitHub 上面 clone 了两个优秀的开源项目,并且认真分析了里面的源代码,在后续的开发当中也严格遵循了这些开源项目的设计思想。目前,我们所构建的项目符合我们的预期。


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

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

      不考虑自动生成的代码,为了完成这个项目,累计代码超过 2w 行。


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

      作业 时间
      博客搭建 12h
      个人作业————疫情统计 40h
      结对作业————原型设计 25h
      结对作业————编程 30h
      团队作业————选题 10h
      团队作业————GitHub 实训 13h
      团队作业————需求分析 30h
      团队作业————系统设计与数据库设计 10h
      个人作业————IM SDK 评测 25h
      团队作业————Alpha 冲刺 60h
      团队作业————Beta 冲刺 72h
      个人作业————课程总结 8h

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

      GitHub 实训作业,第一次深深地体会到了程序员这个行业的“恶意”,996 顶不住啊!


    • 累计花了多少个小时在软工实践上?平均每周花多少个小时?

      据不完全统计,超过了 330 小时的工作时间(摸鱼时间没有在统计当中)。平均每个星期花费 16 小时。


    • 学习和使用的新软件

      因为在实践课之前已经对开发工具进行过摸索,没有学习新的软件。


    • 学习和使用的新工具

      新工具有:MVVM 结构全家桶、Retrofit、EventBus 等若干第三方开发工具。


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

      入门了一门新的语言:Kotlin。使用博客园进行博客撰写。


    • 学习和掌握的新方法

      ① 了解并尝试进行单元测试。

      ② 使用性能分析工具对程序进行性能分析。

      ③ 使用内存泄漏工具对应用进行测试。

      ④ 在线文档的灵活应用。

      ⑤ 开设和撰写博客。


    • 工程能力的提升

      ① 需求分析能力:能够在生活发现用户需求,并形成需求文档。

      ② 原型设计能力:能够设计出表达需求的原型,方便理解和沟通。

      ③ 系统设计能力:能够运用 UML 对需求进行建模。

      ④ 开发能力:能够根据文档,实现编程。

      ⑤ 项目管理能力:能够合理规划项目,对任务进行细分,合理安排执行时间。

      ⑥ 沟通能力:能够快速表达自己的想法,并认真听取他人的观点。

      ⑥ 协作能力:能够和团队进行高效的合作。


    • 团队合作上的提升

      很幸运我们可以组建一个高效的团队,能够把任务进行合理的分配、高质量地完成。


    • 其他方面的提升

      抗压能力。最大的体会是:行百里者半九十。因为各种因素,Beta 冲刺是顶着巨大的压力完成的,这些压力来自家庭、来自个人、还有团队成员的影响。


    二、团队总结

    我认为我们的团队还处在磨合阶段,就像《构建之法》中所举的例子————“你应该信任我,我的代码没有问题”,在合作的过程当中,我们远远不能放心把工作交到一个人手中,对于每一个模块的代码、每一个接口都会自己去重新测试一遍,这是很浪费精力的,对于团队的合作非常的不利。我在团队当中负责 Android 端的开发,我认为团队的分工有两个不合理的地方,一个是前端的工作过重,前端由 3 个人分别负责 Web 前台、Web 后台、Android 端的开发,这个问题在 Beta 冲刺当中变得非常的严重,在最后,只能以牺牲功能、减少自动化测试的方式完成项目。另外一个是没有调动技术薄弱的同学的积极性,团队的主要工作集中在了几个人身上。


    三、人月神话

    1、证明我学会了软件工程。

    我们通过软件工程的方法指导,在预期的时间内发布了一个完整的、可维护、可拓展的软件。我们的项目紧跟着老师的作业安排,从选题开始,到设计原型,到需求分析到后面的每一个阶段,都有详细的工作安排、有完整的工作文档做记录,并且代码严格遵守编程规范,有详细的迁入记录。


    2、我的人月神话。

    接口文档是前端和后端交流的唯一窗口,在项目启动的时候,我们就强调,后端开发人员在开发接口的同时也要编写好接口文档,甚至安排了专人负责接口文档的维护。但是随着开发的进行,接口爆炸性增加,并且 Beta 阶段还对接口做出了修改,问题还是出现了。后端因为怕麻烦,并没有维护好接口文档,导致前端每调用一个接口,都要事先进行测试,甚至还要再去咨询后端的开发人员,这就直接导致前端进度变慢,为了如期完成项目,砍掉了附加功能。如果可以重来,我有更好的解决办法:改用 Postman 进行接口管理,在 Postman 中建立一个团队项目,后端每开发一个接口,都在 Postman 中进行测试,前端在调用的时候,可以直接查看 Postman 中对应的接口,就可以很清楚的指导接口的地址、参数、返回值等信息。


    四、建议

    1、对下一届软件工程实践班同学的建议。

    在选题的时候就应该明白,这门课程不仅仅是打代码,更重要的是《构建之法》的落实和应用。


    2、对软工实践课程的建议。

    项目选题增加一种方式————接手课程的祖传代码进行维护和拓展。


    3、对助教工作的建议。

    助教在设计和布置作业的同时,可以增加方向指导性的内容(例如:个人作业————疫情统计,助教所做的工作)。这样子更有利于同学们找到方向,将时间放到学习有用的知识上。


    4、对自己今后的建议。

    保持清醒,及时学习,及时反思,及时总结。


    五、个人技术博客

    EventBus的使用说明:https://www.cnblogs.com/aahorse/p/13124717.html

  • 相关阅读:
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    OpenSAML 使用引导 IV: 安全特性
    Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
    微服务架构集大成者—Spring Cloud (转载)
    Spring Cloud Eureka 服务注册列表显示 IP 配置问题
    使用 Notification API 开启浏览器桌面提醒
    SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能
    配置 Nginx 的目录浏览功能
    关于 Nginx 配置 WebSocket 400 问题
    Migrate from ASP.NET Core 2.0 to 2.1
  • 原文地址:https://www.cnblogs.com/aahorse/p/13118206.html
Copyright © 2020-2023  润新知