今昔之感

这个作业属于哪个课程 <2021春软件工程实践|S班>
这个作业要求在哪里 <作业要求>
这个作业的目标 1.回顾学期初的问题
2.总结每个阶段的收获
3.谈谈作业后的心得
4.个人技术博客
其他参考文献

第一部分 课程回顾与总结

1. 回顾问题

1.1 提问题的博客链接

寒假作业二:https://www.cnblogs.com/w-wwh/p/14487190.html

1.2 问题再分析

(1)“足够好”的软件

问题描述:

在课本P15中写着:一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。P17中写着:“足够好”的软件不是期末前两天由两三个同学熬通宵赶出来的急就章,而是经历了一定的软件流程,通过全体团队成员的努力,在一个长期阶段内逐步完成的。

一个软件的好坏应该更主要由什么来评价,评价标准是怎样呢?通过搜集资料发现软件的好坏得到的大多是来自于用户的评价。我的想法:我觉得评价应该注重的是用户评价,看软件的受众是什么,将自己代入受众的角度去体验软件,如果舒适度便捷度等都合理,那么软件应该就挺好的。

问题再分析:
经过了这学期的团队实践,中间经历了多个阶段,我确实明白了:“足够好”的软件不是期末前两天由两三个同学熬通宵赶出来的急就章,而是经历了一定的软件流程,通过全体团队成员的努力,在一个长期阶段内逐步完成的。软件需要循序的完成,在每一步都分析清楚,设计明白,贴合所要的需求,接受用户的反馈,逐步才能得到用户的肯定,成为“足够好”。

(2)注释及可移植性

问题描述:

在课本P74中写着:注释应该只用ASCII字符,不要用中文或其他特殊字符,否则会极大地影响程序的可移植性。

像在于现阶段,我对于很多注释还是采取使用中文的方式,此时的我的认知中并无法体会到这之中的影响。我想知道在之后的工作中是否每个人的注释基本都采用英语,或者是什么样的情况。再对于文中提及的可移植性。注释对于每个函数都有必要添加吗,比如一些工具类的小函数,还是应该怎么选择需要注释的地方。

问题再分析:
在寒假作业二的WordCount编程中,有很多同学是因为中文编码问题导致得了较低的分数。对于注释应当尽量只使用ASCII字符。且从结队作业中,我也从队员身上学到,注释的地方是为了让其他人也能更快地看懂程序,也方便自己之后迅速回忆起代码内容,所以应该在那些不能一眼看懂代码功能的地方加上注释。

(3)代码复审

问题描述:

在课本P79中写着:软件工程中最基本的复审手段,就是同伴复审。

当局者迷,旁观者清。我理解了同伴复审能够看到更多自己看不到的错误或者遗漏,这有利于效率的提高。但就大学里所遇到的来说,我对于别人的代码常常会遇到看不懂的情况,或者代码风格差异较大的情况,我们对于同伴的选择是否优先考虑水平接近,代码风格接近。对于以后进入公司后我想大多应该是团队任务,在那里对于代码复审的情况又是如何呢?

问题再分析:
在经历了团队开发后,这个问题也就迎刃而解了。同伴复审一般是队员间复审代码,而开发的代码规范是在开发任务之前团队就已经统一定好了。在这种情况下,代码风格应该是类似的,复审的时候会有写这份代码的队员在旁边加以解释,也使得复审代码的效率得到提高。

(4)创新思维

问题描述:

在课本第16章“IT行业的创新”中写着:最近几年,我们整个社会对创新都很感兴趣,媒体上充斥着创新型的人才、创新型的学校、创新型的公司、创新型的社会等名词,有些城市还把创新当做城市精神之一,还有城市要 批量生产上千名顶级创新人才。

现在国内对于创新十分重视,由“中国制造”转向“中国创造”。IT行业对于创新思维的要求相对会更高,那么在平常中该如何去提高这种思维方式。我的理解是从需求中出发进行创新,还有别的方法吗?我认为对于创新的诞生,主要还是从需求出发,因为有需求,为了满足这种需求而创造出更便捷的方式。还有就是平常生活中要多关注客观事物的不同性与特殊性。

问题再分析:
我认为的创新思维的培养还是如以上描述无多大变化。“创新”一词在此是指“创造新的”,新的事物大多是从零到壹的过程。要使创造的产品有意义,一定是要贴合需求的,顺应时代发展的。这就需要我们多去观察时代热点,多看看周围的需求。也可从已有事物出发,从缺点出发,破旧立新,这是我在做需求分析时新想到的有关创新的方法。

(5)提高商品竞争力

问题描述:

在课本P373的魔方的创新故事中,果冻从其他地方带来魔方,这是创造了一个原本这个地方没有的事物;小飞复印了魔方口诀表来提高自己的竞争力,大牛通过改变游戏规则来先做到别人不能做到的事,但最后都是因为同学们对魔方的兴趣渐渐失去而失去了市场。

这三位同学的行为也对应了不同的选择:1.去封闭的地方卖魔方,那里的人不知道外面的世界。2.依靠自己别的优势或垄断。3.开发有差异化的新东西,体现独特的价值。对于一个事物大众化的过程中(很多人都能够实现),还有什么方法能够提高它的竞争力。

问题再分析:
在软件测评作业中,我学到了:要提高竞争力需要我们看到自己产品的优缺点,以及有关竞品的优缺点,需要从“我们有而别人没有”、“别人也有但我们更好”等角度出发,让产品的优点完美表现出来,目标客户定是与产品的优点相结合的。对于用户的反馈,应该采取一个积极的态度去接受反馈、及时回应、改善产品,产品的竞争力才能逐步提升。

是否原来的问题还不明白

经历了一学期的软工实践,对于以上的几个问题已基本解决。

是否产生了新的问题

  • 对于产品刚发布时的推广存在较大困难,有没有什么比较有效的方法可以度过这段时期?

2. 每个阶段的收获

2.1 需求阶段

这是我第一次对项目的开发流程进行完整的实施,是一次挑战,但也意味着能学习到很多。在此之前,学习了很多课本上的内容,但是到了真正做需求分析时也是有很多不足。首先是对于需求的收集,问卷应该是印象中最有效的方式了,那时候设计问卷时也讨论着主观题应当尽量少,可以的话把题目答案做成选项供用户选择,结果是收到较多的反馈。在做类图的时候,犯了一个错误就是将类图设计得太过详细,并没有真正分解好各阶段的任务。还有一个是在编写需求规格说明书的时候,将类图放在了用例图之前,这个在做汇报时也被老师指出,用例图分析需求,而类图已经是设计了大概框架,先后顺序一目了然,我想这应该能够一直记着。(在作业中犯错代价是较小的,这能让我们之后不再犯同样的错误,确实收获良多)还有就是需求分析应做得较为完整,否则越往后发现错误再修改时,代价将越大。

2.2 设计阶段

在设计阶段,其他的图都是之前有学过的,印象最深的是数据流图,这在之前是没有接触过的,于是看书、看资料,学会了画第一层、第二层数据流图。再就是对接口的设计了,接口设计传参及返回数据类型都尤为重要,在这次团队作业里,不同同学写的后端会存在一些差异,好在及时沟通解决了问题。也有的接口在做分析时并没有涉及到,这在后面实现时才紧急加上,反而花费了更多的时间。所以对于接口的设计应该前后端面对面做好沟通,前端应对需求需要的接口做好全面的分析,这样才能减少后面阶段的修改。

2.3 实现阶段

实现阶段主要是学习了微信小程序的开发,这是第一次接触微信小程序,但他的部分语法其实和传统的前端语法相差不大,至现在也算是基本能够运用,算是极大的收获。在我们的团队中有设置PM,任务由他来分配调度也使得实现阶段变得稳定。每日的工作及时汇报,PM也会及时催促掉队的队员,这也让项目能够按照计划平稳推进。在开发项目过程中,有人进行组织尤为重要,我们的团队里几乎都是熟人,而熟人之间有利有弊,往往也容易变得懈怠从而拖累进度。我们的PM是别班的同学,任务开展也会较为容易。

2.4 测试阶段

在此之前,似乎很少对于已写的代码做测试。但现在知道了在真正开发产品的过程中,测试阶段必不可少。在结队作业时关于前端页面测试上,我学会了使用前端测试工具录制操作,从而对整个项目进行性能测试。测试微信小程序时,我对于需求设计中的每项功能逐一调试,又在多种手机设备上测试界面,发现对于iPad设备需要作出更多的限制,甚至是独立开发界面样式。

2.5 发布阶段

发布阶段在结队作业时是要将项目部署到服务器上,于是通过答题获取了阿里云的学生机,又从队员身上学习了如何在IDEA里快速部署项目。团队作业则是要发布微信小程序,这就需要将我们的接口域名上传上去,还要交由微信客服进行审核,发布过程不算困难,就是审核可能需要进行不断的修改才能通过。

3. 个人心得

3.1 个人项目

两次寒假作业一开始是给我带来冲击的,因为它的作业内容很详细,开始时是不知所措的,不过经历了一学期的“历练”,现在倒觉得习以为常了,就是每次作业的每项内容都要认真对待。寒假作业也让我思考了一下我的大学生活,目标明确了一点。再就是软件测评作业,学习了对于软件该从哪几个角度测评,对竞品进行分析,也收获了一件好看的“小黑衫”。

3.2 结对编程

结队编程需要非常感谢我的队友星源,我对于事情的安排其实很没有规律,而他做事情很有条理,在他的帮助下,我们也算圆满完成了任务。我也体会到了结队编程重在沟通,应该要共同维护队伍的秩序,坚守原则,每天的任务及时完成,过程及其愉快。队友也教会了我如何使用github工具。

3.3 团队项目

团队项目是和班内同学一起组的,一起商讨后选择了开发微信小程序,这是我们之前都没有接触过的。学习的过程是有趣的,也踩了很多坑。开发过程的难点就是在于布局排版的设置和对于函数的使用。布局与安卓类似,不过会使用更多的flex布局,还有专属于微信的rpx。而函数则与js相通,可以调用许多微信自带的接口函数,方便开发。alpha冲刺和beta冲刺的每日会议是必要的,每个人汇报成果,设置隔日安排,也能让项目按计划进行,团队成员互相监督,算是一种隐性的约束力,也能督促我们进步。

第二部分 个人技术总结

在第一次作业“准备篇”中的学习路线是打算学习好Web前端,在结队作业和团队作业中,我也都是做前端开发,结队作业有很好的锻炼了对于html+css+js的使用,学习了使用bootstrap。而团队作业则是学习微信小程序,也算是新学习了一项技术,能够很好地完成团队布置的开发任务。

技术总结分享与微信开发相关:
微信小程序获取个人信息
概述:
学习原因:在开发微信小程序的时候,我们一般都需要获取当前用户的微信信息,来存储用户的个性化设置,以及提供个性化的服务。
做什么:这里要介绍一下如何获取用户的登录状态及个人信息。
技术难点:在我个人开发过程中发现有许多参考文档是旧的,不能很好地解决问题,于是由此介绍下个人的解决方案。

posted @ 2021-06-28 22:08  夜空晨  阅读(113)  评论(4编辑  收藏  举报