软件工程实践总结&个人技术博客
软件工程实践总结&个人技术博客
这个作业属于哪个课程 | 2021春软件工程实践S班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业目标 | 软件工程实践总结&个人技术博客 |
其他参考文献 | 博客园 |
之前疑问及现在的思考
《构建之法》4 两人合作
疑问&思考:
阅读《构建之法》第一次知道结对编程,感觉结对编程这种形式对我来很新颖,两个人一起写一个代码工作量直接减少一半欸:),但我觉得也有些局限。首先结对的两个人水平相差怎么样,一个人很牛一个人相对的菜。会不会导致牛人写的时候,另一个人看的时候觉得“哇,牛,这个好,写的好快,性能也好...”。等到这个人写的时候,厉害的人在旁边看的觉得这不行这不对,开始指导最后恨不得自己把键盘鼠标抢过来。那么对于结对编程的人是不是要有一个基本的水平要求?
现在的思考:通过第二次实践体会到了结对编程,但是由于我们和我结对队员水平差不多相处也很熟悉,所以没有遇到太大的困难,但是我还是认为两个队员的水平不能差距过大,无论结对编程的是自己结对还是他人安排。
《构建之法》9 项目经理
疑问&思考:
通过对第九章的阅读了解了PM,同时知道PM需要的能力很多。我在网络上收集了一下PM需要的基本技能:
1.研发/测试 2.运营3.设计4.市场5.职能部门6.其他技能比如word、excel、ppt等基础技能还要有思维、管理、沟通能力7.产品,熟悉高效的产品工具:Auxre、墨刀、Xmind、ProcessON7.多关注各网站和APP。多看行业报告和商业计划书,多看别人的产品。
那么PM是由程序员逐渐去往PM培养成长起来的呢还是一开始的职业目标就向PM方向发展?比如软件工程的大学生发现对于写代码开发不怎么感冒,能不能就轻于写代码开发,而尽早去点亮作为PM的技能树呢?
现在的思考:我觉得可以,这一次的团队作业我就担任了团队的PM,(其实自己想向PM方向发展,所以在团队作业的过程中也特意去学了很多,比如学会制作原型、学会通过制作思维导图去细化工作,与组员商讨分工内容等等,我觉得这些能力可以及早的培养。
《构建之法》13 软件测试
疑问&思考:
书中认为测试人员测试的软件功能100%符合要求,测试人员也都按照SPEC去测试。但是如果用户恨你的软件,那么就说明是测试人员的责任。我想请问的是这里是不是把测试人员的责任看的太大,首先我认同作者的好的测试人员要做易用性测试,去站在用户的角度考虑,但是我也考虑到用户在运用软件发现有问题或者不好的地方,是不是说明这个软件的需求分析之类的做的不够好,而不是去指责测试的不到位。像易用性测试这样的更像是一个附加的测试条件,有点像之前提到的Ad hoc Test。
比如之前的微信,我们很经常会用微信打开别人分享的链接,之后在链接里看到另一篇文章也不错,再打开看看,然后就在微信里面开始循环的浏览信息。这个时候突然有一条微信进来,我要去看看。结果回复完信息之后找不到之前循环浏览的网页了。这是我之前使用微信的一个痛点,但是惊喜的是后来微信增加了一个float window的功能,就解决了这个问题。请问这样的是测试的责任吗?
现在的思考:我觉得更多的是设计人员的不到位,在这一次小组实践中,我们也认识到开发前设计的重要性,设计对结果的影响很大,很多问题不是靠最后测试再去修改的。
《构建之法》3.2 软件工程师的思维误区
“不分主次,想解决所有依赖问题:想马上动手解决所有主要问题和次要问题,而不是根据现有条件找到一个足够好的方案”
从前的疑问&思考:
我们在编写代码的时候确实会遇到一个问题,但是因为代码都是有相关联性的,所以往往会牵扯出一链子的问题。那么这时候难道不是顺着这条思路去改代码吗?什么叫做根据现有条件找到一个足够好的方法呢?
就还是以作者举的小飞的例子,小飞本来要去自习,发现自行车没气去借打气筒,借打气筒要送围巾,就开始织围巾。确实这个结果偏离了最开始的计划,或许最开始小飞发现自行车没气决定走路去自习是不是作者认为的足够好的方法呢?
那么我的问题和思考归结于是不是要评估这个问题所依赖的一链子问题是不是过于复杂?对于不复杂的例子就可以马上动手顺着思路去解决,对于复杂的问题就先放着,看看有没有更快捷的方法?
现在的思考:感觉之前的思考有点走了弯路,其实和作者本意不冲突,根据现有条件找到一个足够好的方案是解决问题的正解。
《构建之法》2 个人技术和流程
疑问&思考:
这部分有涉及到单元测试,正好这次的实践的作业WordCount里也有单元测试的部分,里面对于好的单元测试的标准对于这次实践真的是很实用。但是里面提到单元测试应该是可重复的,用随机数去单元测试不好,又提到也要用随机数出去增加测试真实性,但不是在单元测试中,那请问是在什么时候用随机数去测试呢?
现在的思考:我上网搜索,但是结果都是程序中含有随机数生成器怎么进行单元测试,并没有对于什么时候可以使用随机数去测试的解答。但是也有以外的收获,现在确实很多机器算法启发式算法都又用到随机数的生成,而我在网上搜索到别人的分享,比如说可以用桩对象或者是模拟对象。
新的收获
需求阶段
我在这次团队项目中担任PM,所以在需求分析阶段,我收获到的知识主要和另一个PM大致定义我们产品的需求,一个类似于校园BBS的考研论坛,之后通过上网参考其他知名网站和通过问卷形式获取用户需求。
设计阶段
在设计阶段我的工作是原型设计。整个软工实践我参与了两次原型设计,第一次是在结对编程,实现的原型相对的简陋但是也基本接触了原型设计。在之后的团队作业中,我们团队用了更加专业的AXURE,我也学习了怎么实现更高精度的原型。
实现阶段
我们团队项目的基于Vue的网站,其实第一次接触vue是在极限编程(恐怖真的恐怖,但也是因为有了极限编程那一次,让我之后就开始学习vue,接触axios,学习了很多。
测试阶段
我的测试工作主要是测试前端页面的功能,在测试阶段中发现在不同比例的浏览器窗口大小web界面不能很好的适应,于是在之后的开发中就发布了修改页面自适应的issue。
发布阶段
发布阶段学习到的是将自己的项目部署到云服务器上
理解与心得
这是我当时寒假第一次作业写得新技术规划,主要的技术规划是学习前端。于是这一次软工实践的团队项目我也选择了vue前端开发,现在回首看来确实一步一步的在实现,感觉收获很多。
“很累,但是坚持下来很有收获”
技术博客链接
VUE 项目实现自定义组件 Infinite Scroll 无限滚动加载数据
概述:包含自定义组件的页面无限滚动,可用于论坛等网站,方便用户消费信息流,增加用户体验