NEW YEAR'S EVE ——软工实践总结

这个作业属于哪个课程 2021春软件工程实践 | W班 (福州大学)
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 总结课程所学
其他参考文献

个人技术博客
CSS之transform介绍与动态LOGO的制作

一、对旧问题的新看法

曾经提出的问题

  1. 开发人员应接手多少测试工作?

实际上项目中的许多测试都是需要开发人员自己实施的。一些例如函数、功能的测试,需要在开发的过程中同时进行,并且可能会影响到后续的开发计划,故必须由熟悉代码的开发人员亲自测试。

  1. 如果当两个人的价值理念与目标期待产生强烈冲突时,这个模式还能顺利进行下去吗?

仅以软工课程中的结对模式来讲,结对的两人既是项目的实施者,也是决策者、企划人。项目的定题与期望目标应由两人共同讨论并确定,如果两人的价值理念与目标期待产生强烈冲突,那也许不适合一起结对,也与结对编程的初衷相悖。

  1. 可不可以说市场分析人士的意见比普通用户的更有建设性?

市场分析人士的意见确实重要,但毕竟只是个体,用户才是最终使用产品的人,且数量庞大,可以给出许多不同的意见。所以,在需求分析阶段,市场分析人士绝不可能取代用户。

  1. 有时一个团队也会同时又产品经理与项目经理,但如果两人的方案产生冲突无法协调,又该怎么做?

产品经理对产品负责,对需求负责;项目经理对项目进度和质量负责。但实际的项目过程中,总会出现这样那样的摩擦。最好的办法还是多交流沟通,多了解对方的工作内容与职责界限。在面临冲突时,按照“重要”与“紧急”等多维度决定出任务的优先级顺序,各做出一点妥协。

  1. 当软件出现性能、架构上的瓶颈,且计划好的交付时间临近,程序要强行在原架构上继续扩展吗?

若软件出现性能、架构上的瓶颈,也许是先前的设计环节出现了疏忽。但若计划好的交付时间临近,重构软件不是一个好的决定。

二、回顾项目的 5 个阶段

需求

我认为需求分析是开发软件的第一步。在开发一款软件前,需要先做好市场调研与评估、了解用户需求。否则,可能投入了大量的人力、财力,却开发出了一款无人问津的软件,造成巨大的成本损失。

设计

经历了该阶段后,我认识到设计是一个很重要的阶段,除了界面原型之外,还包括了数据库、接口等系统设计。当设计完成后,开发团队已经可以看见一个有模有样的软件雏形了。
高质量的设计能为编码实现阶段打好坚实基础。比如,在设计阶段就将接口文档定义清楚,可以节省前后端在接口对接上花费的时间。同时,有些设计,如数据库,则十分重要,一个结构不合理的数据库可能导致后端的混乱。
为了方便编程人员在实现阶段可以反复查看,该阶段的具体设计应以图表、文字等方式详细呈现。

实现

如果前期准备充足的话,实现阶段会较轻松顺利一些。
该阶段主要磨练了我的沟通能力——由于接口多,所以实现中后期都在进行接口对接,以及我的时间管理能力——每天安排一定任务量,为冲刺预留一些缓冲时间,同时还要协调项目开发与其他课程作业的时间安排。

测试

将在学校测试课上学习到的理论知识投入软工项目实践后,我熟悉了白盒测试、黑盒测试、接口测试的测试方法,掌握了部分测试工具的使用。

发布

多宣传,并通过发布调查问卷等方法及时获取用户的反馈。

三、收获与心得

个人项目

个人项目是第一次体验软件开发过程,结合书本知识,通过实践,加深了对“软件=程序+软件工程”这一概念的理解。经历一整个开发过程的软件与从前一拿到题目就闷头写代码得到的程序有很大不同,至少我对于程序架构的把握更清晰,也比较清楚程序的性能和正确性。

结对编程

在熟悉了软件开发流程后,第一次尝试与他人组队一起开发。结对编程所接手的项目比个人项目中的更复杂。在该项目的开发过程中,学会了许多新技能,例如如何在云服务器上搭建环境、部署网站,如何通过Github协作、在Github上发布版本,更是提升了编程能力。在合作方面,相比于一个人独自编程,两人的互动与交流给开发过程带来了许多乐趣,效率也提升不少。

团队项目

如果说个人项目是对软件开发过程的初体验,结对编程是首次尝试与他人合作开发软件,那么团队项目就正好是两者的结合。与结对编程不同,团队项目中的人更多,这也意味着需要进行更多的沟通与协调,开发过程变为了50%的编程+50%的交流,甚至后者的时间会更多些。团队合作的项目较之个人与结对项目又更加复杂了,诸如项目管理、接口设计、接口对接与分阶段冲刺都是新的经历。

posted @ 2021-06-28 15:38  霍格沃茨荣誉学生  阅读(80)  评论(1编辑  收藏  举报