承前启后
| 这个作业属于哪个课程 | 2021春软件工程实践|W班 (福州大学) |
|---|---|
| 这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
| 这个作业的目标 | 回顾学习,总结收获 |
| 其他参考文献 | 《构建之法》 |
课程回顾与总结
回顾与解答
问题博客
解答
关于需求分析
项目会十分复杂,参与人数众多,一定会存在信息差,最终导致开发结果的偏差。
解答:经过团队项目开发,我认为这个问题是可解决但是不可避免的。软件的开发周期包括需求分析,系统设计,软件实现,测试及维护等多个环节,每个环节中会产生大量文档。在团队开发中,有时会不可避免地产生“软件开发需要些这么多文档吗?我是在进行软件开发吗?”的疑惑,但是撰写文档能为下一阶段做好方向和指导,每一个环节之间的过渡都需要交接,这在文本和交流上都有体现。所谓下层建筑决定上层高度,只有打好基建,才能搭建客户满意的建筑。同时,因为,开发流程环节较多,参与人数庞大,软件理想与现实细微的偏差不可避免,但可以减少损失,最大程度提高客户的满意度。
关于PSP
PSP表格的各项较为笼统,难以预估准确时间。
解答:PSP的作用是基于软件开发流程的日程表,想要高效益地使用它,需要积攒开发经验。我在初次使用PSP表格后,发现代码复审和测试环节,比预想要花费更多时间;相反,具体编码实际并不需要花费很长时间。在第二次使用表格时,便会将三者时间进行调整,表格时间安排应该符合自身能力,当开发经历越多,对自身能力便会越了解,设计的PSP表格也会更加符合实际情况。
关于创新
在创新迷思中提到,很多故事书里的聪明人忽然灵光乍现的故事。但在软件方面,皮特·德鲁克讽刺:“我们上课的同学也想了不少宏大的创新思想,但是课程最后什么也没做成,剩下的就是一个空的构想。”
解答:创新的基础在于积累,丰富的见识,成熟的技术,体系的理论。当你拥有成熟的技术,你的开发才具有多条可选路径,才会在实现的基础上考虑优化。基础越扎实,开发的扩展性越强,例如前端的三大框架,虽然在细节语言上会有编译的差距,但它们的基础都建立在HTML,CSS,JS语言上,所以大部分公司面试倾向于询问面试者底层技术。当你的经验越来越丰富,也会积攒更多个人的开发心得,或许某一天在开发一个小功能时,灵光一现,另辟蹊径,而你自身能力,也会成为你实现它的基石。
关于测试
一百个人心中有一百个哈姆雷特,用户在使用功能时的输入可谓是千差万别,那是否测试人员需要进行成千上万次测试?
解答:是的,测试的数据基本在千条以上。在软件开发过程中,软件首先会经过开发人员简单的功能测试,之后交由测试人员进行黑盒测试,测试人员会编写测试单元,进行自动化测试,调高测试数量,也会通过大量请求达成压力测试;同时,测试人员会手动测试一些特殊情况,这需要测试人员富有想象力,假设软件可能面临的突发情况,解决它来提高软件的健壮性。
关于绩效管理
如何公正地给团队成员论功劳
解答:在问题博客中,我认同按“完成任务维度+团队贡献维度”的二维评价体系,现今,我也保持这个想法。团队的氛围可以直接影响开发效率,PM和组长在分配任务的同时,对团队的沟通也是应当负有间接责任,有付出就有功劳,不能单纯按照开发工作量来衡量。同时,团体开发中,分工必须明确,时间安排应该详尽,这虽然可能会带来大量文书工作,但可以更好组织协调团队开发进度。
阶段收获
需求
以用户的视角进行设计,分析用户需求,设计用户场景,对项目的功能进行设计与审查,并绘制了精美的原型。我们团队以教育扶贫为起点,探索用户使用软件的潜在需求,增加功能来提高用户满意度。当然一个人的建议是有限的,需要广纳他人的建议,可以采用问卷调查,汇报的方式来获得他人的意见反馈,完善项目中不合理的部分。
设计
主要任务是完成系统及数据库设计,初步确定团队分工和开发计划。使用的技术包括但不限于UML,ER等图表。这是首次将在UML课上学习的知识应用,根据需求分析,进行类图,活动图,顺序图,流程图,功能图等绘制,明确功能的实现流程,为编程实现做好基础。这之中对于我最重要的是接口文档,它是前后端沟通交流的工具,后端根据原型预设会需要使用的接口,编写接口文档方便前端在对接阶段的工作开展。实际上,它对于后端来说,等于工作清单,罗列需要开发的接口,对于前后端分离的项目,写好接口文档是非常重要。
实现
实现阶段的主要任务是完成软件的实体开发。我负责的是前端,工作难点在界面规划和接口对接。开发时,第一次明白界面布局,使用逻辑都是非常重要,并且没有一定经验积累很难做好。页面中的一个按钮,放在哪里?这个界面的排版是什么样的?我都需要修改很久,因为之前并没有培养自己规划界面的能力,加上原型设计不太完善,在画界面时浪费了很多时间,之后,在使用PC端,移动端的软件时,都会有意识观察界面,观察优秀界面的布局设计,以前从来不会关注的细节,现在在我眼里都变得令人佩服,这点小变化其实很有意思。
测试
测试阶段一是为了检验软件的功能,二是为了提升软件的健壮性。我身为开发人员,在软件开发时,就会经常进行功能测试,但千人眼里有千个哈姆雷特,用户的使用是不会按照常理进行,我们便采用黑盒测试,进行大量测试用例测试,大量数据请求进行压力测试。之后也有请同专业的学生进行体验,发现BUG,在发布前尽快修改完善。
发布
发布阶段,我们团队将项目部署在服务器上,这样就可以通过网址进行访问。发布并不困难,困难在之后项目的运营维护,虽然本次项目未正真投入使用,不需要进行后续的改进,但我们团队在发布后,有推广并进行调查问卷,接纳建言,修改一些小BUG。
理解与心得
个人项目
理解:本次项目题目为WordCount,考查题目分析及基础编程能力,是课程中的热身项目。
心得:测试需要摩多摩多,审题要仔细。项目本身要求负责,并且有很多含糊的地方,在对题目一知半解的情况下,编写完代码,简单测试过后就提交。实际测试后,发现编程有漏条件,特殊情况未处理的问题。
结对编程
理解:项目作业分为两次,第一次进行题目分析和原型设计,第二次进行软件实现。采用两人开发模式,课题中逐步加入团队合作。
心得:在开发中一定要耐心,扛得住压力。在项目开发的后期,由于自身的急躁和焦虑,在开发难点上耗费很多时间,事后回过头反思,其实自己再沉着一点,就能更快地解决问题。同时,因为是第一次实现前后端分离,最大的收获是前后端对接技术,耗费时间最多,收获最大。
团队项目
理解:大型团队开发项目,完整的软件开发流程,重点在于团队合作。
心得:团队开发流程中的每一步要尽量确认好,因为在前期阶段出现的问题,会被成倍放大出现在后期阶段,并且由于开发关联对象较多,调整往往存在很大问题。团队的交流对于软件的质量也很重要,大型开发项目中,前后端对接,工作安排,进度协调都需要组员内频繁交流,才能实现高效开发。

浙公网安备 33010602011771号