软工实践总结&个人技术博客
俱收并蓄,此乃天道
这个作业属于哪个课程 | 2021春软件工程实践|S班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 对软工实践课程进行总结&发表个人博客 |
其他参考文献 | 博客园 |
目录
第一部分:课程回顾与总结
根据课程经历取有意义的标题:具收并蓄,此乃天道
俱收并蓄:唐·韩愈《进学解》:“玉札丹砂,赤箭青芝,牛溲马勃,败鼓之皮,俱收并蓄,待用无遗者,医师之良也。
释义:把各种不同的东西一同吸收进来,保存起来。
引申:在软件工程实践中学到了很多有用的东西,全方位的。
回顾以前提的问题
-
请尝试对自己曾经提出的问题进行解答,并阐明,是如何通过看书,实践,或者讨论弄清楚的
-
问题一:MSF模型定义了成员的角色和要职。疑问就是,成员不一定都是100%的高手,必然出现“短板”,不一定能达到质量目标,用雷达图来比喻就是图形不是正多边形。对于一个畸形的多边形,做出如何的选择才能让面积最大化,也就是目标最优化,这其中必然有取舍,如:牺牲时间,保证质量,但客户等不及;功能不完善,从而限制产品的使用方式,但很快就被市场淘汰......所以,在各种条件的约束下,怎样才做出好产品,满足需求?
解答:我觉得好产品就是要满足公司目标和客户需求,充分与客户沟通、交流,能高效、持久、超预期、低成本地满足需求。编写良好的需求规格说明书,只有这样在有一个良好开始的前提下,做出好产品。
-
问题二: 我觉得这是一个很不常见的问题却又十分重要,因为在我的周围很少人会对写代码进行系统一样的行为,多是把好的idea进行实现,或许已经在脑海里进行了计划但自己不知道。于是,这两个名词,我是第一次听到,我自己都很难想象。但我觉得,大项目或任务是肯定要提前规划的吧?以至于都还没开始进行,脑海里就已经有了宏伟蓝图。所以,计划、规划在我脑海里没什么轻重的概念,那我想形成这种思维,应该如何计划,做什么样的的计划?
解答:在学习了软件工程这门课后,我发现标准是相对而言,纵使是全世界也没有一个统一的标准,因此,在小范围内,如公司、企业、工作室等等就有。即便在个人层面上没有个人的标准,为了能在公司或社会生存,适应大环境是不可避免的。
-
问题三:对我来说创新的时机是一个很麻烦的事,我通常会在需求分析的进行创新。但现实是,一开始的创新或者过早的创新会对工作增加不成比例的难度,实现起来非常难,以至于严重阻塞任务进程。于是乎,放弃了一开始的不切实际的想法,尽量完成任务需求,直到完成。最后发现平平无奇的代码就产生了,然后又想进行创新,发现没地方下脚?或者一插足就立马遇到N多bug,然后工作又回到了原点。最后一种是我感觉最慢的方式,就是边进行工作边创新,毫无疑问问题是环环相扣的。所以,时机是在什么时候最恰当?
解答:学完课程后,所谓“创新”无非就是有实力的前提下进行的多样化设计,没实力没资格谈创新。此外,一谈创新就尽量避免改需求,那样会大大增加工作量,这会挫折团队耐心。
-
问题四:对团队成员进行ABC等级划分并贴上标签的做法,我觉得有没有一种情况是:对A会A+,对C会C-呢?在中间得B因为觉得无所谓,他会变成A或是C,虽然我们可能会说得看他本人。话虽如此,但我得想法是,划分等级和贴标签的出发点是什么?是鼓励员工吗?还是在筛选员工,C淘汰,A和B留下?说到底ABC什么的确确实实会存在,但员工并不像商品那样随意拨动。我觉得程序员在社会中应该是以复数的形式存在,一个人能力如何出众,脑子都有累的时候,一个人是不可能项目开发的,从需求分析到维护都是一个人的话?谁又会进公司呢?既然这种方式各有利弊,那么划分等级对程序员来说是好是坏?
解答:我觉得,所谓“好与坏”并重要,重要的是如何趋利避害,或者说扬长避短。为了项目在期限内完成,就应该让每一个人认真做好自己的工作,发挥最大的效益,而不是用别人的工作来衡量自己的能力水平。
-
问题五:这个模型的名字挺有意思的,于是就仔细了解了一下。从开学第一学期就在稳定阶段:学生开始写代码。可是没有在做需求分析阶段的事。这似乎很矛盾,《面向对象设计与分析》并不是入学的第一门课。假设,是第一门课的话,那么第一个学期内学生是不是都在对代码纸上谈兵呢?但又有人说,学好理论基础对敲代码不是好处更多吗?显然易见,瀑布模型感觉力度不够,于是多次瀑布模型才是大马哈鱼洄游模型。但是,这对普通的软件工程学生来说,我们不是成熟的大马哈鱼,洄游适合我们吗?
解答:现在回首看自己的问题,觉得自己很无知......通过进一步学习,我觉得“洄游”就是很好的过程,发现不足那就回去加强,这也挺好的。
-
-
是否原来的问题还不明白或产生了新的问题?如果有,请分析
在一开始是满脑子的疑惑,主要体现在:在我心中,软件工程就应该是一门实践性很强的学科,而理论只需要夹杂在实践过程中就行,没必要将其抽离出来,单独形成学科。但是我发现在实践过程中,我是在漫无目的地瞎撞!没有了理论的指导,做事没有了章法可循,没有标准的风格,做一样是一个样。后来,学习了理论知识之后,受益颇多。尽管有问题,也能参考指导、标准,将其解决。
在项目的需求/设计/实现/测试/发布5个阶段中,每个阶段收获最大的知识或能力
- 需求阶段:需求最注重分析和沟通能力,和团队协作、交流,划定同一的思想,制定统一的标准,才有利于项目进行。
- 设计阶段:一个好的产品是设计出来的,在这次游戏开发中,我参与了数据库设计和UML图的制作,了解了一个游戏的数据如何保存,如何读取,如何流动等等。
- 实现阶段:在此阶段,我主要负责游戏动画的制作,熟练掌握了Unity许多组件的使用,进一步了解了用unity开发游戏的知识。
- 测试阶段:好的游戏非常看重其“可玩性”,因此此阶段主要从理论知识学会测试的知识并用在了游戏上,所以我参与脚步与动画的交接部分,检查游戏的动画播放是否挂载了正确的脚本,以及动画的切换是否正常等等。
- 发布阶段:完成beta冲刺,发布测试版本,再发布调查问卷,收集玩家的意见,最后再做调整。
结合经历,谈谈自己的理解或心得
- 个人项目:初次见识了很多新奇的东西,如:博客园、github、CSDN,在里面接触到了很多学长、学姐的足迹。在个人作业中学到了更加系统性、规范化的编程,如:代码规范,单元测试,博客撰写等等。
- 结对编程:与搭档一起编程是一件很新奇的事,对我来说。我也学会了协作、沟通的重要性,统一的标准、风格、意见,能快速推进项目进行。
- 团队项目:9个人组成一队完成项目。是一次很真实的体验,每一次开会的心得交流,让组员彼此之间更加了解。不像结对编程那样,只有两个人的声音,团队开会时,每一个人对同一件事都有其自己的见识,所以为了项目的进行,经常性的开会报告是必不可少的。为了完成我们组的目标,我们每个人都学习了新的知识、掌握了新的工具,如用Unity开发游戏,用PS制作素材,用Animation制作动画等等,总之这个过程既充满艰辛,也充满快乐。
第二部分:个人技术总结
技术概括
- 担任“饱满骑士开发组”的美工和策划,主要负责动画设计和制作,因此学习并使用了Unity,PS,SAI 2等工具。