zoukankan      html  css  js  c++  java
  • 软件工程实践总结

    这个作业属于哪个课程 2021春软件工程实践|W班(福州大学)
    这个作业要求在哪里 作业要求
    这个作业的目标 回顾与总结实践历程
    其他参考文献 《构建之法》

    课程回顾与总结

    回顾问题

    以前提问题的博客链接

    软工实践寒假作业(1/2)
    软工实践寒假作业(2/2)

    • 问题1

      1.团队内工作如何保证各个模块的进度一致,效率高,并且对于出现的问题交流要如何进行高效的交流?

      在实践的过程中:我越来越觉得交流是非常重要的,然后线下开会交流大于线下口头交流大于网上开会交流大于使用文字交流。一定要多做交流,定期明确汇报进度,否则就会导致管理人进行项目管理的时候的判断出现偏差,导致对于进度判断出现错误,而没有明确的发现项目存在的问题。所以每天的站立式会议我觉得很有必要。这是通过实践得出的结论。

    • 问题2

      2.多久就要对一个项目进行评估,决定是否要转变开发的方法和团队合作的模式,又如何进行一个无痛的转变?

      我认为项目每推进一个阶段就要进行一个评估,如果有问题就应该马上解决。对于团队合作的模式,我认为应该先队组内队员的水平进行评估,这个非常重要,然后对于能多久完成任务也要做分析,以此来决定要使用哪一种合作模式。对于时间较为充裕,队员水平较高的,就应该使用比较宽松的合作模式,没有那么追赶进度,而对于时间较为紧张的,就应该使用比较push的合作模式,规定每日要完成多少任务量,强制给一个指标的合作模式。然后不同部分的开发有不同的管理者,管理者通过每日分析进度,决定放松还是收紧,进行一个微调,我认为这是一个成本比较低的方法。

    • 问题3

      3.大部分测试方法的编写都是根据之前测试的结果和需求,有没有能够增强”前瞻性“的方法?

      经过一个学期我明白了白盒测试是在编码完成后才能编写的,黑盒测试则是在需求发布之后就能够设计和编写。目前主流就是使用这两种方法进行大部分的测试。测试的意义在于每个阶段都进行测试,保证代码和产品的质量。所以我认为测试对于前瞻性的需求事实上没有那么重。主要是充当一个审计和改进的工具。这个主要是通过上课和亲自编写测试弄清楚的。

    • 问题4

      4.怎么控制做减法的度才能使大多数人满意,可能这需要去了解用户需求,绘制用户肖像,但是往往只有软件发出之后才能真正获得反馈,所以是保持中庸还是剑走偏锋?

      由于我们的软件就是一个轻量化的项目管理软件,我们尝试对传统的项目管理软件做了减法,在设计的时候想了很多也设计了很多,但实际上开发完毕,效果并没有我们想象中那么好,还是要实际给用户体验之后再返工才能把握住度,所以我认为在尽量早的阶段就要有一个能够体验的成品,然后给用户体验后收集意见再返工,这是比较好的方法。如果没有这个条件的话我认为可以先保持中庸的设计,留出修改的余地,再逐渐去贴合用户的需求。

    • 问题5

      5.如何评估一个问题是值得投入时间去优化的呢?而又有什么问题是解决了就好的了?

      我认为这和项目的进度有关,如果项目进度很赶,那所有的问题都是解决了就好的,如果项目不是很赶,那所有问题都有优化的空间,所以实际上做的时候根本不需要判断这种问题。这是实际上遇到的情况,但是如果非要对项目中遇到的问题做出取舍的话,我认为越前期的遇到的问题就越值得优化,比如在设计和需求方面如果有优化的空间就值得投入时间去优化,然后会在后期编码测试时获益。而在后面遇到的问题有可能是由于前期的问题堆积下来产生的问题,往往解决就需要大量时间,优化更是难上加难,所以我认为这种问题是解决就好的。

    做中学

    • 需求
      在进行需求的时候一定要明确产品的目的,一定要先定位好目标用户再进行设计,我认为这很重要,如果一开始没有定位好目标用户,到后面可能就不得不推翻之前的设计,进行无意义的返工。所以我认为进行市场调研和研究一下同类型产品很重要,我们的项目就是进行了认真的市场调研和同类型产品的调研之后才定下的。对于进行用户需求分析的时候,最好能够尽量的具体,对于使用场景使用时间使用频率都应该有所考虑,然后就是最好能在需求设计的时候就确定好软件的大概规模和复杂性,对于后续的进度管理比较有帮助。
    • 设计
      主要很有收获的地方是进行数据库设计和划分模块,学会了怎么进行规范的数据库设计,通过规范的数据库设计可以为后续开发减少很多工作量,并且避免了很多问题,收益匪浅。然后就是模块划分粒度的大小,合适的模块大小粒度不仅利于分配工作,而且能对开发产生帮助。整个项目的结构也更加清晰明确,维护起来也更加方便。
    • 实现
      主要是学习了springboot的后端编写,编写了可拓展复用的异常处理机制和权限管理部分,并且减少了队友的工作量。对于业务逻辑的处理也更加熟悉,接口文档的编写也收获了很多,没有用swagger自动生成文档而是亲自编写接口文档,使得前端更容易理解。然后收获最大的是从队友那里学会了怎么写规范的注释和进行团队合作的方法。后端合理的团队合作方式和代码审核,对于项目进度的推进有很大的帮助。
    • 测试
      学会了各种测试工具的使用方法,编写了很多单元测试,对于各种测试方法的流程和思路都有一个大概的掌握,并且可以分析测试的结果得出问题的来源,根据测试来对代码进行优化或者修正错误,对于springboot的测试方法也有一个基本的了解。
    • 发布
      主要是学会了日志管理,将后端发布到服务器后根据前端返回的问题查找相应事件日志,然后找出问题来源并且找到对应的负责人商量如何解决。还有就是将后端打包发布到服务器的自动化流程和版本管理。linux的使用和一些小技巧。

    理解与心得

    个人项目

    一定不能急着写代码,要先做好需求分析和项目结构的规划。

    主要学会了怎么以规范的代码风格的进行编程,如何向别人讲解代码。

    PSP表格的存在是有意义的,帮助我分析了我以为的时间和实际使用的时间,能够找出我哪一方有所不足,能够有方向性的去改进。

    在设计阶段就应该考虑所有坑,不应该边写边想,尽量在设计阶段考虑到大部分情况能够避免很多返工。

    没有思路的时候可以适当的参考一些博客,一个人死磕半天往往没有结果。

    结对编程

    在进行原型设计的时候,由于是之前完全没有接触过原型设计,所以是边学边做的,我认为快速学习的能力很重要,应该在之后尝试性地训练,以便之后遇到相似的情况不会手足无措。

    在进行结对编程的时候,进行工作的分配就很重要,合理的工作分配能够快速推进进度,不合理的工作分配则会拖慢进度。然后两人负责的部分尽量是少关联,以减少交流成本,在对接的时候尽量使用口头交流,线下共同编程,能有效提升消息传递的效率。

    团队项目

    规范的注释和进行团队合作的方法。后端合理的团队合作方式和代码审核,对于项目进度的推进有很大的帮助。

    然后队长分配任务的时候应该先调研开发的水平和难度,因人而异,不应该出现一碗水端平的情况。

    通过对每一个部分分配一个负责人的形式能够很好的提高沟通的效率。

    个人技术总结

    博客地址

    基于自定义注解的简单方法权限管理

    概述

    通过拦截器和自定义注解实现简单权限管理

  • 相关阅读:
    cut的使用
    linux三剑客之一 sed
    uniq指令
    CF940A Points on the line 思维
    2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 01背包变形题
    CF922A Cloning Toys
    牛客网 Wannafly挑战赛 C 列一列 简单题 (题目有点坑)
    牛客网 Wannafly挑战赛 A 找一找 思考题
    B. Tea Queue codeforces Round.37.div2 队列
    线段树+离散化 poj 2528 Mayor's posters
  • 原文地址:https://www.cnblogs.com/aaagx/p/14933195.html
Copyright © 2011-2022 走看看