软件工程实践总结
这个作业属于哪个课程 | 2021春软件工程实践S班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 回顾自己列出的5到10个问题:尝试解答、继续分析、提出新问题。5个阶段中,每个阶段收获最大的知识或能力是什么。结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。 |
其他参考文献 | 百度,谷歌,知乎 |
课程回顾与总结
问题分析
阅读构建之法后提出五个新问题
问题一:第十二章用户体验怎么排除掉无效的用户体验
收集用户体验有许多途径,比如说在软件中添加填写用户体验的问卷,而在本次软件工程中,使用频率最多的应该是使用qq问卷进行调查。但是收集结果的时候发现,许多问卷填写的结果是无效的,即不是填写人在体验过软件后认真填写的。如何识别出这些无效的问卷对于认识到软件的真实反馈有着十分重要的意义。我认为解决措施之一是设施一个特殊的选项,并安插在问题列表的随机位置上,比如设置倒数第五个位置上的问题为:您是否使用过该软件?如果选择是否很有可能该问卷就是无效问卷。
问题二:在人数较少的情况下如何进行团队角色的分工
一个团队至少需要开发,pm,测试,但是本次软工实践我在的小组比较特殊,有一位成员几乎不参与团队中的任何事宜,相当于比其他团队少了一人,然后剩下的人在技术上也比较薄弱,只有一两个技术好的。所以通过第九章产品经理知道最好让懂技术的做pm。但如果按书上说的pm不做开发,那样的话开发过程中会遇到很多技术问题,所以我们团队让一个技术好的人既做pm又做了开发。虽然会辛苦这位同学,但对于团队来说同时又会获得更好的效果。
问题三:怎样快速获得用户的需求
直接向用户发出提问,但提问次数过多,可能会遭起厌烦,所以还是要先做好功课,要将问题精炼化,通俗易懂的表达给客户
问题四:pm在团队讨论时如何调动气氛
在阿尔法或贝塔线上会议时,大部分时间都是pm在说话,其他人好像没有积极地参与,我认为首先要让大家对项目有信心,然后可以对每个人在开会上的积极度进行量化统计,结果计算至贡献度中
问题五:如果中途想改开发模型怎么办
本次实践我们团队用的模型是瀑布模型,但是我们并不是完全按照瀑布模型走的,而是在阿尔法阶段先做出主要功能并进行测试,再在贝塔阶段做出次要功能并进行测试。所以我认为在原模型的基础上可以进行适当的调整。
各阶段收获
- 需求 知道了作为一名用户对于软件的期望
- 设计 主要对uml和数据库的设计进行了设计,了解了怎么从一个基础的想法构思到将这些构思变成实际的东西
- 实现 通过学习到的新技术来实现想法构思,基本上是边做边学,现学现用
- 测试 测试能够发现非常多在开发时被忽视的问题,对于提高软件的可用性和稳定性有着重大的意义
- 发布 可以在发布后收集用户的反馈
心得体会
个人项目
通过个人作业,我意识到其实编码的遗忘率是很高的,寒假有项作业要求我们用java,但是上学期刚学的内容到这学期就忘得差不多了,还要回过头重新学习。之前一直都没有写博客的习惯,所以通过这门课程我了解到可以通过写博客,来记录自己学过的知识。
评测软件让我知道了作为一名用户,他所希望的软件是什么样的
结对作业
之前一个人的作业做下来,总觉得主观性太强,没有他人实时的反馈,万一自己做错了那个步骤也难以发现。而且对时间的把控也不准确,使用的方法大多是以前积累下来的。但是一个人做也有好处,就是可以更快地提升自学的能力,不依靠他人独自完成项目。
这次结对给我最大的感受就是我可以得到客观的反馈,思考问题的方法变得多样,可能在解决问题时会从一个从未考虑过的角度入手,不但开阔了思路,也认识到自己的不足之处。虽然有时会遇见意见不合的情况,但通过阐述双方的看法,可以从中更加客观地认识到问题的本质。
第二点就是分工合作减轻了负担,一个人的任务只专注于较少的几个方向,提高了专精程度,达到一加一大于二的效果。当然有时分工并不是一方做一种任务另一方完全不做,而是划分主次,比如A做任务一,B做任务二,A负责任务一的主要工作,同时可以让B做任务一的一些次要部分。这样有利于工作效率的提升,以及对提升任务的完整性。此外如果有问题可以更快得到解答,不用在一个问题上停留太久的时间而耽误了项目的进度。
这次结对作业,我学会了使用成熟的框架做一个网页,之前一直是自己用纯html,css写,费时费力,而且很花时间,组件虽然可扩展性差,但是一般能够满足我们的需求还有学习了npm包管理,用node进行网络通讯,以及最最重要的前后端分离技术。我也发现前端前期会出现难以调试自己请求的情况,尤其是后端没有开启服务的情况,
所以前端前期进度缓慢。在路由跳转以及异步处理的问题上我花了大量时间,虽然最后都解决了,但是了解到自己掌握的不够透彻,今后会加强学习
团队作业
团队合作,让我学会了不少知识,学习了后端go语言开发,使用的ide是goland,学习了Gin框架,用来配置路由,接收从前端传来的json或url数据,在数据库方面用了gorm框架,通过gorm的语法可迅速建立起数据库结构,并且提供了api支持对数据库的操作。学习了postman的使用,通过模拟前端的请求来测试接口是否可用。go的语法较为简单,容易上手,知道了文件类型service,model,router,api之间的关系,学习了单元测试sqlmock的使用,但是单元测试的用法还没有完全掌握。此外还加深了对数据库表关系的理解,了解了怎么从数据整理到建立数据库的结构。
个人技术总结
技术概述
使用gin框架完成基础的数据解析与绑定功能,以及列举出一些比较容易踩的坑。主要内容包括:json数据解析与绑定,表单数据解析与绑定,url数据解析与绑定