天天看点

【软件工程】提问回顾与个人总结

内容说明

项目 内容
这个作业属于哪个课程 罗杰
这个作业的要求在哪里 提问回顾与个人总结

之前提问的博客链接

【软件工程】第一次阅读作业

对之前提出问题的解答

  1. 使用概率是百万分之一的需求,是否需要去实现它?

    学期初的这个问题,我是认为是不需要去实现的,老师在博客评论中反问我有哪些可以不用去实现的例子,我想了好久,也查了一些资料,可确实是举不出十分具有说服力的工业中的例子,可是我还是不愿放弃自己的想法,也许在日后不断的实践过程中一切就明了了吧。

  2. 敏捷开发的流程

    在课程的实践中逐渐了解了敏捷开发的基本流程。首次发布,需求改动,快速迭代,再次发布。开发流程需要跟上时代的快节奏,但是在快速迭代过程中也应重视后续的可扩展性,这样才能实现真正的敏捷。

  3. TDD

    通过看书和学长的解答了解了关于TDD的基本知识。

  4. 没有风险就是最大的风险

    学期初我对这句话的理解是:

    在项目中可能会遇到各种各样的风险,很多情况下PM都是在尽可能的减少这些风险的存在,但是这些风险有时候也代表了一些机遇。这里的“没有风险”其实并不是真正的不存在风险,我认为有两层意思:
    1. 项目人员没有风险意识,所以才会说没有风险,这种没有意识到风险的风险才是一个项目中最大的风险。
    2. 对于已知的风险,我们是可以去应对的,但是对于未知的风险(也就是没有风险的状态),我们是无法做准备的,所以这才是最大的风险。
    实践过程中,遇到过网站被黑客攻击的情况,之前我们并没有想到过项目可能会有什么风险因素,经过这次的经历,我们开始开始去重视软件中的风险问题,安全稳健的软件项目是十分重要且必要的。
  5. 结对编程
    看完书上对结对编程的介绍,我发现其实在之前的编程实践中自己有践行过这种方案的,现在也是十分认同这种方式。书上给的结对编程的方式是领航员和驾驶员模型,在网上查看的结对编程和书上的观点也基本一致,这里我想问的是:
    1. 结对编程一定要两个人保持这样的方式工作,直到项目完成吗?是否可以在大多数关键代码上实行这种方式,而在简单的部分采用分开编码,从而提高编码效率,这里分开编码只是意味着不同的电脑,还要会保证及时的面对面交流的。
    结对编程可以很大程度上减少BUG的数量,并且将编程这一过程变得相对轻松,简单,在确定了详细设计之后,可以很大程度上提高编程的速度和效率,但是,结对编程也确实是需要两人的默契配合,起初的磨合阶段其实效率还是比较低的,并且对于过于简单的程序编写,不如两人分开的效率高。总的来说结对编程还是有其独特的优势的,值得体验和学习。

在实践中不同阶段的学习与总结

需求阶段

需求阶段是项目的起始阶段,也是项目的意义所在,所以是十分关键的。首先是根据已有的初步想法,去做大量而全面的用户调查,分析调查结果,得出具体需求,并且将不同的需求分优先级,这样在后续的实现过程中会有的放矢。

设计阶段

设计是根据需求做进一步的实现,将现实的问题转换为可代码实现的方法。在这次的团队项目中,感觉我们的设计就有些不足,导致后续开发的时候可能面临推到重来的情况,有些棘手。

敏捷开发强调不要过分细化设计,因为后续还会进行迭代,可是它并不是不重视设计,我们都是初次开发,感觉对设计的度把握的不太好,导致设计不够充分,后续发现问题的时候,想改也面临很大的工作量。工程上的度需要在不断的实践中去总结和把握。

实现阶段

实现主要是按照设计去写代码,不过在具体实现之前,还需解决在实现中可能面临的技术难题,所有问题都解决了,便可以进行快速的代码实现了。良好的代码风格是十分重要的,其次也要满足一定的代码规范。

测试阶段

测试阶段和实现阶段可以交互进行,及时进行测试会减少开发人员后续修改的成本。测试需要全面,是保证项目质量的最后一道关卡,至关重要。

发布阶段

当项目的一个版本的开发结束后,就将面临这发布,发布阶段需要做好宣传工作,刚开始发布的一段时间是项目的紧张阶段,因为会面临用户提出的各种问题,需要能及时的进行修改、更新、再发布。

维护阶段

维护阶段主要根据用户的反馈,进行部分的更新,以及数据库和服务器的维护。

理解和心得

实践是检验真理的唯一标准。

  1. 在本次团队项目中,我担任的是辅助开发人员的角色,主要是打杂的工作,核心技术难点都是团队中另两个伙伴攻克的,整体上来说还算顺利,在这里先感谢一下大家。
  2. 这次团队合作过程中,我发现核心开发人员还是十分重要的,开发工作需要有个能力强的带领着其他开发人员去做,在宏观上对开发任务有较好的把握,了解开发任务的难易,以及相关技术难点,不知道称之为开发中的PM是否合适😄。
  3. (接着2)在这次体验中,我有一个想法不知道是否合适:团队人员组成中, 需要PM,但是在开发组中还需要有一个总体的规划人员,这个角色也许并不需要十分明确的指定是谁,但是感觉一定要有这么一个站出来的人来统筹规划,去更细致的划分任务,做技术难点分析,去组织开发人员之间的沟通交流,但这也对这个人的能力做出了较高的要求,如果有机会,还是想去试验一下这样的模式。

总的来说,开发人员除了良好的技术能力之外,还需要较好的沟通和表达能力,良好的沟通总是能够带来意想不到的效果。最后,感谢团队成员一个学期的努力,感谢课程组助教和老师们,祝软工课越来越好。