提问回顾与个人总结

项目 内容
这个作业属于哪个课程 班级博客
这个作业的要求在哪里 作业要求
我在这个课程的目标是 熟悉敏捷开发,提升多人协作技能
这个作业在哪个具体方面帮助我实现目标 回顾学期开始时的问题及个人总结

以前提问题的博客

https://www.cnblogs.com/yorkyer/p/12397931.html

对曾经提出的问题进行解答

  1. 作者拿飞机的安全来类比软件的安全。是否对于任何软件都需要像对待飞机安全一样来考虑安全性?我觉得飞机上的软件与面向普通消费者的软件所需的安全程度是不一样的。那么具体区别是什么呢?实践中如何评估软件已经达到所需的安全性了呢?

    在经历了前端开发和后端开发后,我发现这两者所需的安全并不相同。前端更侧重用户使用的流畅性,后端更侧重功能逻辑的正确性。总之,评估软件是否达到所需的安全性需要根据软件的使用场景与需求来确定。

  2. 作者对于缩进、行宽等给出了最好的方式。我觉得对于一些风格进行规范是必要的,但是现在的IDE可以存储自己的偏好,或者利用.editorconfigure等工具来对提交至仓库的代码进行自动化处理,这种情况下还有必要对一些细枝末节进行规范吗?

    在实践中,我发现自己在编码过程中可以有自己的喜好,但是对于公共仓库需要一定的规范,这样利于维护仓库。

  3. 作者主要提及了结对编程的好处,把结对编程看作是越野赛车中的驾驶与领航员,驾驶飞机的驾驶与副驾驶。但是,驾驶技能与编程技能并不属于同一类技能,一个偏向于注意力与判断力,另一个偏向于思维活动。另外,结对编程会损耗责任的清晰划分吗?

    在亲自实践了结对编程之后,我觉得这样做有利有弊。也许因为远程合作的影响,我觉得结对编程虽然提升了代码质量,但是降低了编程效率。

  4. 作者认为优秀的软件团队不会发布有已知缺陷的软件。但是这不是全部事实,有些软件确实是带bug发布的。比如每次windows的更新一定会有bug。如果发布时间已到,而bug的影响人群较少,我们是否可以在权衡之下先发布,再改bug呢?

    迫于时间,我们的产品确实是带bug发布的,当然这个bug并不影响核心功能。我觉得,对于大型软件,问题不是消除bug,而是管控bug在一定程度从而使其对客户的影响可控。

  5. 作者指出的这个迷思非常有趣。那么这里的好的具体定义是什么呢?仅仅是直觉上觉得好吗?

    比如作者指出的键盘的案例,认为这个想法好的根据是更有效率,但是评价的标准是否还应加入学习成本及普及成本呢?

    经过一学期的实践,我认为评价的标准必须要考虑现实因素,如学习成本、普及成本等,这些是软件落地必须考虑的问题,除非只是进行概念验证或理论实验等。

在实践中学习的知识点

  1. 需求:除了基于团队的观察,还需要对用户进行调查问卷,以及查阅行业白皮书等来明确需求。
  2. 设计:一个好的设计可以为后续工作带来极大的方便。
  3. 实现:在选择实现的技术栈时除了考虑开发者的熟悉程度,还应考虑不同技术栈对应用的适合程度以及技术栈的灵活性等。
  4. 测试:测试是软件开发的一部分。
  5. 发布:需要在尽可能多的渠道发布,这样会增大用户数量。
  6. 维护:合适的日志系统会带来系统维护的简化。

心得

这学期的软件工程是自己第一次与他人协作开发一个的软件。尽管全程在线交流,但整体合作比较顺畅,最终完成了软件如期发布的任务。在这个过程中,自己亲自实践了软件需求分析、软件架构设计、软件UI/UX设计、软件实现、软件测试、软件发布、软件维护等软件开发流程,并提升了与不同软件分工人员的沟通能力,收获不少。

最后,感谢团队成员的辛苦付出,也感谢老师和助教的付出!

你可能感兴趣的:(提问回顾与个人总结)