一、回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
“增加开发经验,熟悉软件工程的各种开发思想,了解团队开发的流程。”
在这门课程中,我学习了新的编程语言,实践了课内学到的各种软件体系结构以及设计模式,将团队开发的流程系统性的走了一遍,基本上达到了我当初的预期目标
但身为组长还做得不够好,项目后期才认识到的最初的预期规划有所欠缺,影响项目的总体完成度
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 软工实践的各次作业分别花了多少时间?(做一个列表)
- 累计花了多少个小时在软工实践上?平均每周花多少个小时?
作业名 | 新增代码 | 删除代码 | 耗时(分钟) | 备注 |
---|---|---|---|---|
第一次作业-准备篇 | 0 | 0 | 60 | |
结对第一次—原型设计(文献摘要热词统计) | 0 | 0 | 180 | |
结对第二次—文献摘要热词统计 | 738 ++ | 199 -- | 300 | |
结对第二次—文献摘要热词统计进阶需求 | 7,089 ++ | 1,144 -- | 1300 | 1,2 |
团队Github实战训练 | 2,279 ++ | 476 -- | 600 | |
团队作业 | 7320 ++ | 653 -- | 10980 | 3,4,*5 |
总结 | 17426 ++ | 2472 -- | 13420 | 平均每周17.2小时 |
*备注
1. 有些被迭代掉的代码只是注释掉,并未删除 因此代码数量较实际更多
2. 需求一直改,最开始的实现方法不适应更改后的需求,花费了大量时间重构代码
3. 由于Unity项目文件特殊性,这里只统计脚本代码
4. 之前从未接触过游戏的编写以及服务端的实现,仅有基础的C#编程知识以及基本计算机网络原理作为依托,游戏制作几乎是从0开始学起,学习占用了大量时间
5. 由于游戏接近全部原创,未采用现成的实现框架,以及游戏逻辑的实现无从参考,游戏UI设计,人物形象无现成的素材,玩法为依托现有玩法进行创新,只好身兼数职,身为主程的同时,兼任策划,并负责美工部分.其中在学习工具,语言,框架的使用,代码的编写,优化占用了大量时间的同时,UI设计,素材加工也耗费了大量精力,基本上要实现一个功能就得去搜索大量现成素材作为基础,并在这些基础上进行二次加工,统一风格,调整大小, 若碰到找不到合适的就得利用Photoshop工具从0构建
- 哪一次作业让你印象最深刻?为什么?
结对第二次—文献摘要热词统计 因为需求一直变,本来好几次都做完了,突然接到改需求,又得开始写 - 学习和使用的新软件&工具;
pycharm,Unity - 学习和掌握的新语言、新平台;
Python - 学习和掌握的新方法;
单例模式,观察者模式 - 其他方面的提升。
对于团队的协调及管理
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
团队协作开发不同于个人开发,开发文档对于团队的开发十分重要.
在团队Github实战训练中,先设计出了一个项目的类图以及活动图(受制于时间限制以及项目规模较小并未完成接口文档),这样每个人都能知道自己应该实现的接口以及软件的大致工作流程与架构.只需要每个人负责好自己的代码,最后整合,测试的过程并不困难.在前期架构规划的帮助以及队友们的通力协作下,最后我们组在该次的作业中取得了不错的成绩
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
建议:找志同道合的一起做项目(dalao),以及作为正儿八经的菜鸡我提一句,做游戏坑很大,(dalao除外)
换队员的问题:我认为看项目而定,我们这次被换掉的是做官网的主程,做官网的有五个人,影响不大.万一换走了我们做游戏的主程我们项目基本上就不用做了.Unity会的同学不多,学习需要的时间不少,而且只有真正从内心新欢开发游戏的才会做得下去,换人是随机的,如果被抽中的人内心对做游戏毫无兴趣,这个项目万万是做不好的.因此,身为游戏项目团队的成员,我不赞成换队员.而对于网站项目来说,换队员可以模拟工作上人员变动? 但是,队长是万万不能被换走的!!!!!!因为身为队长往往对项目立项,走势起到了至关重要的把控作用,换了领头羊这个项目可能会偏离预定的轨道,与最初的目标不符.
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
萌芽阶段
最开始组队的时候,大家第一次从玩家的身份转为游戏开发人员,有很多创意及想法想要实现,但每个人想法,出发点不同,统一意见花费了不少时间磨合阶段
之前大家都是个人开发,没有团队开发的经验,对于文档的重要性认识有些不足,大家都是各自做各自的,到整合的时候问题不断.除此之外大家对于新框架/工具的使用还未掌握,往往要先花费大量时间学习才能开始逐步摸索使用,项目进度缓慢规范阶段
在经历了github实训后大家对前期规划及文档说明的重要性得到了充分的认识,并且在经历了一个较为成功的团队协作流程后,大家对与团队的协作流程更加清楚,开发效率得到提高.除此之外,新工具/框架的学习也基本告一段落,项目的进度也得以开始大幅提升创造阶段
创造阶段我们目前还有一点距离。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
游戏官网已经上线: 卡战三国官方网站 在此能够获取最新游戏客户端及进行注册账号等操作
用户数:11
用户评价良好:
用户试用调查报告
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
项目规划,需求部分
架构设计图
类图
系统架构图
进度规划图
项目设计部分
原始项目素材都有保存:
且为PSD文件
原型设计经过多次迭代,修改 且都有存档:
初版
二版
三版:
四版:
五版:
六板:
终板:
按进度规划提交
4.21 内部A版规定时间点
5.4 内部B版规定时间点
5.26 Beta冲刺预定开启测试时间点
团队协作(游戏端):
仓库创建于4月初
基本上每天都有进度
注:项目前期都在进行学习工具,语言,框架,游戏素材收集,制作,整理,进展较慢,后期使用愈发熟练,项目进展突飞猛进这是厚积薄发的结果绝不是对项目进行赶工,突击
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
请在随笔中用数据证明上述内容或侧重选择之一。
项目存放于 github 私人仓库中
部分文档截图:
注:文档可从团队博客历次随笔中下载
每次提交记录有详细说明:
如:
用户测试反馈及Bug修复进度表:
拥有游戏策划数值调整工具,方便后期调整:
只需调整表格内容就可以做到 英雄/装备/魔法卡片的 添加/删除/数值修改 以及调整游戏商城中售卖的物品,价格
执行策划工具:
英雄列表便会动态调整:
英雄数值便会动态调整:
商城列表便会动态调整:
物品售价便会动态调整:
游戏正常运行的保证
官网截图:
运行截图:
其他组测试报告:
那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告
“为了交项目干杯”对“那周余嘉熊掌将得队”、“男上加男,强人所男”的Beta产品测试报告
均能正常运行且无除显示之外的恶性BUG
注:为了交项目干杯反馈的卡顿复现失败,不排除是该团队电脑因素
七、个性发挥,包括图文、照片和创意等
团队LOGO:
网站五人组LOGO:
游戏版权页面:
彩蛋:50W行的"新增"代码
注(Unity 自带项目文件)