一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1) 在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 软工实践终于结束了,周五答辩完成后给我的第一感觉就是“天亮了“,整个软工实践的是一个很“苦“的过程,占用了许多空闲的时间,以前很多休闲娱乐的时间都让给了软工实践,在项目赶工的时候更甚。不过我并没有因为时间被占用太多而后悔选了实践课,反而认为当初的选择是正确的,因为软工让我的大三上没有虚度。在整个团队中承担了主力编码输出的任务还充当了类似于编码小组长的角色,由于是新手上路,所以需要学习的东西很多,多少个开发与debug的夜晚,很庆幸自己坚持了下来,同时也非常感激陪我一起肝一起战斗的队友。这是一个“痛并快乐着”的过程,只要去做,你比自己想像中的要强。
总体上来讲,经历了大半个学期以来软工的学习,在大部分方面都算是达到了课程开始前的目标和期待。 - 能力获得提高的部分
- 编码能力。整个软工实践敲的代码比过去两年都多,能力确实得到了切实的提高
- 学习能力。从需求出发,能较快的从网上获取需要的知识并在较短的时间内学会应用,这应该是软工实践中学会的最重要的能力
- 了解并经历了软件开发的流程
- 不足的部分
- 没有符合自己当初的预想开发出一个有人用的产品。这个的主要原因在于当时需求分析阶段对于产品的定位不够准确
- 编码仍旧不够规范
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 10000+行
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 耗费时间 |
---|---|
软工展望 | 3小时 |
数独游戏 | 12小时 |
结对原型设计 | 4小时 |
结对部门匹配 | 10小时 |
团队展示 | 1小时 |
选题报告 | 1小时 |
需求规格说明书 | 5小时 |
系统设计 | 5小时 |
UML设计 | 1小时 |
团队小测同学录 | 30小时 |
华为云评测 | 2小时 |
α阶段冲刺 | 50小时 |
β阶段冲刺 | 50小时 |
验收收官冲刺 | 40小时 |
总计 | 214小时 |
3、哪一次作业让你印象最深刻?为什么?
团队小测同学录。因为这是第一次做出一个有实际功能的app,为之后的团队项目开发打下了基础。从未接触过安卓,略懂一点java,连续肝了几天终于完成,完成时收获颇多
。使我有了从0到1的自豪感,这是一个菜鸟的第一步。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计花费214小时,平均每周所花时间20+小时
5、学习和使用的新软件;
- MockPlus原型设计工具
- Android Studio
- exe4j
- Eclipse
- Idea
- navicat
6、学习和使用的新工具
- process on在线作图工具
7、学习和掌握的新语言、新平台;
- Java
- Android
- Tomcat
- Stack Overflow
8、学习和掌握的新方法;
- 单元测试
- uml图的绘制
9、其他方面的提升。
- 学习能力
- 沟通能力
- 搜索能力
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 要对自己充满自信。不要遇到困难就放弃,不要还没开始就放弃,你比自己想像的要强。从整个项目一开始大家就担心可能无法完工,最后一事无成。事实证明,只要努力去做,至少能完成一个还行的东西
- 团队里不能有闲人。只要有人不干活,其它人就得多承担任务,这会让其他人很累很累
- 一个好的团队成员之间总是相互促进。当你看到队员还在奋斗,你就不会想要偷懒。与个人编程不同,团队编程有可以一起讨论问题,一起商量事情的人,一起努力的人。
三、对下一届实践的建议
- 软工实践课还是应该选的,虽然苦点累点,但对个人能力提升很大
- 选择团队慎重,最好团队里面要有一两个大牛,全员小白开荒挑战极大、进度极慢。慎重慎重
- 作为PM的话不要不好意思去督促未完成工作的同学,要提高团队凝聚力
- 身体好不易,且肝且珍惜。平常多做一点,最后熬夜就会少一点
- 关于成员流动的问题。首先,我觉得成员流动这个方案是可行的,但是必须解决如何流动的问题,需要考虑到以下这些因素
- 强制or自愿。这个没什么好选的,强制,自愿的话基本上除了团队矛盾,很少会有主动离队
- 团队如何选出流动的成员,团队自行选择出还是特定要求(贡献度最高?)。也许目前来说在课堂上直接抽签会是比较好的方式(面子问题)
- 如何克服流动的成员与项目不匹配的问题,web开发然后交流到了安卓组等等。避免交换之后出现打酱油的情况
- 可能可以采取类似于nba选秀方式,阿尔法阶段得分比较低的团队优先选人等等(当然一定要考虑双方意愿)
四、分析一下自己所处的团队。
- 萌芽阶段:从初识到彼此开始熟悉,各种想法的交流与碰撞。最终确定出要做的产品
- 磨合阶段:团队的前几次作业,需求规格说明书、架构设计,开始了解彼此的能力和工作方式
- 规范阶段:经历了α阶段与β阶段,从一开始的毫无规划到后期可以对之后每天要实现的功能有了比较明确的计划
- 创造阶段:或许就是现在了吧
五、怎样证明你学会了软件工程?
如果学会软工的标准是以下三个的话,我想我还不算真正学会了软件工程。不过失败也有失败的经验
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
- 在开发过程中,就一直在想我们开发的这个东西到底有什么用。既不是人无我有也不是人有我好,市面上团队管理app众多而且都较为成熟,毫无创新,毫无竞争力。对于当初决定做这个东西到现在还是持否定的态度
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
- 按照软件工程的流程一步步的去开发软件,可以算作是有规划/需求/设计/实现
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
- 目前的结果是我们的软件是很难维护的。没有文档,注释混乱。这个的主要原因是前期进展过慢,后期为了交付重‘量’而不重‘质’,没有专门review的人员
七、个性发挥,包括图文、照片和创意等
仅以此图献给一起经历了软工实践的同学们