结束亦是开始
这个作业属于哪个课程 | 2021春软件工程实践W班(福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 个人总结 |
其他参考文献 | 《构建之法》 |
课程回顾与总结
提出问题的博客链接
回答以前的问题
- 第一题:对于主治医生模式和明星模式的理解
对于这个问题,我在寒假作业二中的理解并不是很清楚。如不明白主治医生模式和明星模式的区别。现在我的理解是:虽然主治医生模式和明星模式中都提到一个人的能力强于团队其他人,但是主治医生模式强调的是团队之间的配合,主治医生这一角色就像是一个领导,总领着团队的方向前进。其他人的工作是支持和配合主治医生的工作,两种角色是互相支持帮助,缺一不可的。而在明星模式中,强调的是个人的能力和贡献很突出,甚至盖过了其他人的总和,那么这种模式的弊端就很明显了,就是个人和团队的配合不够,容易造成一个人单打独斗的局面,其他人在摸鱼划水,完全依赖于明星。而当明星陨落时,团队中没有人可以顶上去,项目就夭折了,这种模式的出路就是向主治医生模式靠拢,把不仅仅要使自己光芒放出来,还要带领着团队前进,如果能力不一致,那么从简单做起,逐步缩小差距,使得团队的配合与协作能力提高。
- 第二题:关于成功的创新者是否是先行者的问题
是否创新者提出一个优秀的想法并实现后,那么就是它就是一个成功的创新者呢?似乎并不是,许多例子都告诉我们不是第一个就是最成功的。我的观点是:一个创新的产品能否成功应该是市场的决定,消费者用钱投票的结果,可以反映产品是否满足大部分客户的需求,当市场上出现了一个创新的产品,可能会让消费者眼前一新,但是当陆续出现大量模仿者时,消费者就会犹豫了,判断哪个产品更好,更满足我的要求或者更吸引我。因此模仿者这时候可能在原有的基础上更进一步或者细节上更优秀,那么消费者就被抢走了。因此一个成功的创新者不仅仅在于提出那么一个优秀的想法,而是在市场竞争中如何一直保持自己的优势,那么就需要不断的保持创新能力和严谨的态度。
- 第三题:关于软件行业的竞争有”赢者通吃”的规律的理解
我之前的理解是“所谓赢者的意思就是占据了大部分市场份额,当你占据了大部分市场份额就说明你拥有了话语权”。现在我的理解和之前的一样。而且这种现象似乎不止存在于软件行业,大部分的包含市场竞争的行业都包含着这种残酷的规律。
- 第四题:在团队开发某项目时,如何合理分工使得开发的效率最大化?
这一问题是在寒假作业一中提出的,在团队项目实践中,我们团队的分工是先细化成多个模块或者功能点,保证每个模块的工作量基本一致,然后采取组内自愿选择的原则,先到先得进行挑选。当然这是项目开始前的分工,并不是一成不变的,而是动态变化的,因为可能进行过程中发现一些模块工作量比预想的要多或少,或者增加新的需求,会进行局部的再分配。这种模式的好处就是大家的都有事情做,工作量也不会有太大的差距,当然部分能力强的会负责比较难啃的地方,这样保证了项目的进度和效率不会太低。
- 第五题:在需求分析时,如何做到详尽到位,当需求发生变化时,如何快速进行调整?
在这次的项目实践过程中,我们团队对项目最终成果进行了用户调研,获取用户的反馈信息中,大部分用户对我们项目的评价是功能完善,能够很好的满足大学生群体的需求。因此可以说,我们团队的需求分析是比较到位。要做到这一点,可能也是得益于我们大学生的身份,我们既是开发人员,也是目标受众。因此要站在目标受众的角度去考虑,还要贴近现实,不要凭空想象,或者想着加些花里胡哨但不实用的元素。当开发过程中,需求发生变化了怎么办,一个就是要评估需求变化造成的影响,可以对变化设置一个优先级,比如对受众的使用影响程度和当前项目的需要改动的程度,对使用影响程度较大排在较靠前的位置,对使用程度影响小且改动大则排在靠后的位置。有选择地进行调整或者舍弃。
每个阶段的收获
需求阶段
在需求阶段我负责的主要工作是参与原型设计的讨论和协同进行原型开发。在这一阶段,我的最大的收获就是对原型设计工具的使用更加的熟练,之前在结对作业一中有用到原型设计工具,但是只是简单的接触,在这一阶段,我才学会如图层的设置,多个模块的组合和分散等等功能,使得原型设计过程中更加的便捷。
设计阶段
在设计阶段我的主要工作是参与小组讨论和对前一阶段原型缺漏部分进行补充和改进。因此收获比较的少,主要还是原型设计工具的熟练程度更进一步。
实现阶段
在项目实现阶段,即alpha冲刺和beta冲刺阶段,我的主要工作是小程序前台的前端开发和web后台的前端开发。在这两次的冲刺中使用到的技术和框架都是我之前没有接触到的,因此开发前都会提前看一些资料学习一下,而且总会很紧张,怕自己的能力达不到项目开发的要求,但是后来才意识到,这不就是实践的目的吗?在做中学。在alpha冲刺中主要是学习了小程序的开发,vant组件的使用,巩固了web知识,学习了如何阅读官方文档,增长了一次很好的项目经历。而在beta冲刺,我学到了如何配置vue-cli,学习了vue-cli的使用和elementUI的使用。
测试阶段
测试阶段一般是伴随着实现阶段进行的。这次开发过程中,我的测试工作主要在与后端的接口交互实现的过程中进行的。测试工作做得完整到位,可以减少后期的修修补补的工作量,可以发现许多在实现阶段没有注意或者忽视的问题。将这些问题很直观的暴露在你面前。测试也很需要团队的沟通协作能力。在对问题不知道原因或者如何处理,可以请求其他团队成员,或许他们已经遇到过并解决了。
发布阶段
可惜的是我们团队的项目最终因为微信小程序规则的限制,涉及信息发布平台的小程序不能发布为个人项目,没能发布出来。因此,如果有做小程序的项目,一定要提前准备发布的工作。最后我们采用了体验版进行用户体验调查,获取了许多用户反馈信息,通过这些信息,我们可以了解到我们小程序的优势和不足,再对小程序进行优化整改,使得更贴近于用户的需求。
理解与心得
个人项目
个人项目也就是WordCount,这个作业的实现逻辑并不是很复杂,通过面向百度编程,学习网上知识,就可以实现所要的功能。但是我在这次作业中没有得到助教测试的20分,主要原因在于不重视测试的工作,测试工作做得不到位,当然也有不熟悉测试工作原因,但是在助教多次提醒的情况下,还是没有完成,那就是自己的问题了。性能优化部分也是第一次接触,进行的比较困难,花费甚至比实现功能更多的时间。
结对编程
结对编程作业主要有两项,一个是原型设计,一个是部分功能的具体实现。这两次作业也是边做边学,学会了原型如何开发,学会了git分支还有如何进行版本回退,JSP框架及servlet的使用,echart模型的使用。开发过程中,和队友的协作配合也是比较愉快的,两个人都从一开始的不知所措到慢慢上手,经常会进行功能实现的探讨或者如何解决bug的交流。当渐渐配合默契的时候,确实会感觉比个人编程会更有效率。
团队项目
团队项目是软工实践的重头戏,总体时间安排跨越了将近三个月。从中我得出的结论是:一个好的团队一定是每个人都是保持积极向上的面貌,愿意学习新的知识和技术,愿意和团队进行不断的技术分享和交流。我认为我们的团队基本的做到了这几点,是一个很优秀的团队。在项目开发的中后期,团队成员之间的沟通就变得很重要了,界面风格的统一,前后端的交互,接口实现,测试,都需要沟通。
个人技术总结
技术博客
概述:项目开发过程中,我主要是负责小程序前端开发,主要工作是界面样式的设计和接口调用的实现。因为我负责的那部分界面逻辑较为简单,因此没有特别困难的技术难点。我就将一些开发过程中碰到的某些坑写一下。主要是:小程序父子控件bindtap事件冲突问题,如何让view填满剩余可用的高度。