软工总结(然然可爱捏)
作者:互联网
这个作业属于哪个课程 | 2021春软件工程实践|W班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结&个人技术总结 |
其他参考文献 | 《构建之法》 |
第一部分:课程回顾与总结
回答问题
- 提问题的博客链接:软工实践寒假作业(2/2)
- 其实我在提问题的同时就给出了几个问题的回答,那这里就再回答一次。
-
工程师在“需求分析”和“测试”这两方面明显地要花更多时间(多60%以上);但是在具体编码上,工程师比学生要少花1/3的时间。
显然,从学生到职业程序员,并不是更加没完没了地写程序————花在写代码上的时间反而少了许多。书中的这段话,让我觉得不合理,学生到职业程序员花在写代码的时间上真的会少了许多吗?
因为书中的统计数据使用百分比的方式给出,显示相比学生,职业程序员在写代码时间的占比上更少,然后书中给出结论:职业程序员花在写代码上的时间更少。
提出问题的时候,我就认为以百分比的数据而言,不能得出书中的结论,因为总时间是不同的。
经过一个学期的实践,我仍然保留意见,做一个项目,虽然需求分析和测试要花很多时间,但写代码该花的时间还是要花,甚至因为多人协作之间的对接问题,修改需求浪费的编码时间等等原因,花在具体编码上的时间可能还要更多,占比少不能代表时长就少了。 -
针对结对代码,我提出了问题:驾驶员和领航员哪一个需要更高的水平?
当时的我认为领航员需要更高水平,现在我的回答不变。因为领航员需要的指导、检查、纠错的能力本身就要更高水平才能做到。
当然这取决于双方的合作是否合理,如果领航员啥都没干,事情全是驾驶员做完了,那这种表面上的合作肯定不能说是领航员有更高水平了。 -
问题:面对一些外部因素,哪一种开发模式更加稳定。比如当团队中突然有人员变动发生,哪一种开发模式能平稳过渡。或者是开发需求突然有重大变化,哪一种开发模式能迅速转型?
我给出的回答是:主治医师模式和明星模式基本不用担心非核心人物的人员变动,因为主导权掌握在“主治医师”和“明星”手中,只要核心不变,整个团队就能平稳过渡。而爵士乐模式面对突然改变的需求,能迅速转型,因为这种模式对变化的内容能给予有创意的回应。
-
问题:敏捷流程能加强团队交流,但过于频繁的交流(每日立会),甚至是强迫交流,会不会使得开发人员的思维变得混乱?而这种每日立会是否有一些形式主义?在大型团队中进行每日立会,需要所有人都参与吗?如果所有人都必须参与的话,必然会浪费一些人的时间,因为不是所有人都能在同一时间完成手头上的工作,从而参加会议,而工作被打断是一件非常令人恼火的事情。是否可以拆分每日立会,让工作有依赖关系的成员进行高质量的单独小会。
提出问题的时候,我就认为这个问题不是我所能解答的,而是需要通过大量的工作经验才能摸索出一套独特的方法。
虽然经过一个学期的实践,但我还是不能很好的回答这个问题。毕竟是第一次整这个每日立会,还是整的不太明白,很多任务分配还是线上分配来的更快,所以并不能完全体会这种模式的好处。 -
问题:在软件更新中,是应该强制推出新功能让用户适应,即创造用户体验,还是应该保守一些,制作一个开关,让用户选择,或者干脆阉割新功能,以不变应万变?
功能多了,软件显得花里胡哨(QQ)。功能少了,有人抱怨产品被阉割(微信)。给每个功能设置一个开关,又觉得使用麻烦(MIUI),而且,设置开关这件事,其实很微妙,因为大部分人并不知道某些功能是可以关闭的。举个例子:手机QQ的主界面下部一般是三栏:消息、联系人、动态,在某次不聪明的更新之后变成了:消息、联系人、看点、动态。而这个“看点”里面的东西基本是腾讯强推的无聊新闻,正常人基本上一辈子都不会点进去一次,最烦的是“看点”这栏也会有红点提示。在收到这次更新之后,我马上查看设置,发现这个“看点”是可以关闭的,于是我就关了。但是我发现周围很多人虽然从来不点这个东西,甚至抱怨这东西很烦,却不知道有个开关可以关闭。当然这也有腾讯坏心眼的原因在,但即使是熟练使用互联网产品的大学生都难以发觉有这么个开关,那其他年龄段的人肯定更难发现。
当然这个问题很难回答,可以说是众口难调。有的人就是喜欢功能越丰富越好,有的人就是喜欢简单轻便的产品。所以在需求分析阶段要做好用户调研,明确产品面向的人群,才能更好的设计功能。
做中学
- 软件工程这门学问有很多 “知识点”, 这门课强调 “做中学”——在实践中学习知识点。
-
需求阶段
做需求分析的时候,一定要做好用户调研,要从用户的角度想需求,因为产品最后是要面向用户的,做出好的用户画像、用户场景,以此为目的进行需求分析,可以说是事半功倍。
-
设计阶段
第一次把之前上课学到的内容用到了实际项目上,比如UML图,类图,设计模式这些。本来还觉得这些没啥用,都是理论,不好使,但真正用起来还是有很大帮助的。
-
实现阶段
前期工作做得好的话,实现阶段就会更加轻松,如果没做好,陷入一边编写代码一边修改设计规范的漩涡,那实现阶段的效率就很难有保证了。团队的交流也很重要。熟练使用GitHub真的很有用,对于团队协作帮助很大。
-
测试阶段
代码注释还是很重要的,特别是当需要白盒测试的时候,不然写的时候很顺手,测试的时候就有好受的了。
-
发布阶段
这个阶段和我就没什么关系了。
理解或心得
结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。
-
个人项目
GitHub还是非常好用的,之前在eclipse上写java大作业,把代码整乱了,急死了,还好eclipse自带本地代码的历史记录让我给恢复了。
个人项目用的是idea,也经历了乱按ctrl+z把代码搞乱回不去的痛苦,幸亏有了GitHub上的记录,不然我真的上天咯。 -
结对编程
第一次接触原型设计的软件,快速学习的能力还是狠重要的,加上web编程也是第一次,还好队友太强了,拯救我于水火之中。
代码编写方面不要不自量力,分配任务要结合自身能力,而且最好还是要线下一起编程,可以加快速度。 -
团队项目
多人合作还是非常有考验的,毕竟之前从来都是一个人单打独斗,直到GitHub实战才开始对多人协作有了深入认识。团队最好要有一个能一锤定音的人物,在需求分析和设计的过程中遇到大的分歧时能作出判断,有统一的规格编写的时候就会轻松很多。
第二部分:个人技术总结
微信小程序如何上传图片
概述:微信小程序关于上传图片的一些技术要点。
标签:需求,代码,用户,问题,然然,立会,团队,软工,可爱 来源: https://www.cnblogs.com/Elsa1226/p/14944493.html