个人作业——软件工程实践总结作业
作业信息
课程名称:软件工程1916|W(福州大学)
作业要求:个人作业——软件工程实践总结作业
学号:221600225
团队名称:葫芦娃队
作业目标:个人软件工程实践总结
一、请回望开学初的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
有利的一面:在实践锻炼方面,本次软件工程实践,确实令我的计算机专业的能力提高不少,相比以前学习的课程,这个课程让我受益匪浅。在一开始的两个人搭伙的编程作业中,我和另一个伙伴一起解决了,从分析问题,想出解决的思路,最后再将我们的思路转化为代码,这一系列过程,是我解决问题的和debug的能力有所增强。在后面的团队作业和github实训的时候,我都是进行后端开发的工作,同时文档的编写我也有参与,这一整个流程是我的专业能力的大大增强。同时,我还了解到完整的开发一个项目的流程大致是什么样的,如何在一个team里面合作工作。在增强专业能力方面,本次课程完全达到了甚至是超越了我的期待。
缺陷的一面:本次课程上用到技术与企业需要的技术还是有一些脱节。就比如我们组这次是用unity2D做一个小游戏。但是现在市面上大多数的游戏都是3D游戏,同时开发的时候还会用到各种引擎。所以本次课程所用到的技术和企业需要的技术还是有较大差别的。
综述,本次课程有效的提高了我的专业能力,达到了我的期待,但是在增强就业竞争力方面仍然有所欠缺,这一项上没有达到我期待。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1.统计一下,你在这门软件工程实践中,完成了多少行的代码;
结对,git实训,团队作业。大概6k。
2.软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 投入时间
- | - |
第一次作业——准备篇 | 2
结对第一次作业(原型设计) | 14
结对第二次—文献摘要热词统计及进阶需求 | 20
团队作业第一次—团队展示 | 3
团队作业第二次—项目选题报告 | 16
团队作业第三次——项目原型设计 | 12
项目需求分析 | 14
项目系统设计和数据库设计 | 20
团队作业第六次—团队Github实战训练 | 20
项目Alpha冲刺(团队) | 120
事后诸葛亮 | 4
项目Beta冲刺(团队) | 120
Beta阶段团队项目互评 | 5
个人作业——软件工程实践总结作业 | 4
总计 | 374
3.哪一次作业让你印象最深刻?为什么
alpha冲刺阶段。因为这是一个真正的开发阶段,在这个阶段会出现各种各样的问题,非常考验能力,并且在解决问题之后,能力也会得到极高的提升。
4.累计花了多少个小时在软工实践上?平均每周花多少个小时?
把讨论,查资料,写代码等时间加起来,大概有480把。平均每招大概42小时吧。
5.学习和使用的新软件;
原型软件:墨刀
编辑软件:IDEA,unity2D
数据库软件:navicat,mysql
测试软件:loadRunner,unity test
6.学习和掌握的新语言、新平台;
代码管理工具:GitHub
项目管理工具:teambition
7.学习和掌握的新方法;
1,爬虫 2,测试 3,untiy2D
#8.其他方面的提升。
团队合作,沟通技巧,工作适应能力
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析-----
在团队开发时,沟通协调非常重要,甚至比代码能力更加重要。如果一个团队有良好的沟通渠道,那么这个团队设计的软件功能基本上是非常齐全,并且开发的进度也非常快。在这次开发中我就深有体会,在项目初始阶段,分析项目需求的时候,每个人都献言建策,自己所想到的,认为要可以有的功能提出来。然后在后期开发的过程中,我们就是开着前期所构想的功能去开发的,这使得我们开发的目标一直是非常的明确。当然,如果成员提出的功能开发过于困难或是过于鸡肋,在经过讨论后我们也会把这个功能删除掉。然后就是开发过程的及时沟通。有一次在开发一个功能时,一个成员已经开发完毕,但是他们上传到git,也没有在群里告知。后面另一个成员也进行了开发,这就进行了重复开发,浪费了资源。还有在开发过程中,如果及时将遇到的问题提出来,这样不仅可以提高解决问题的速度,也可以提醒其他人避免犯此类错误。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
对于下一届的实践建议:1.最好有一个判断某位同学是否在团队实践中划水的机制。2.不能允许拿自己已经开发差不多的项目,或者自己正在开发的项目作为软工实践的项目,这对其他从零开发的团队不公平。3.软工实践这个课程不应该只有一次,在每次新学一门语言之后都可以安排一个软工实践或者类似软工实践这种模式的课程。而不是学了C++写个图书馆管理系统,学了JAVA之后又写一次,我觉得这样子的课程安排并没有多大的效果。
对于开学初的我:我只想说,我应该早点判断计算机是不是我的兴趣点,如果是,就好好学,好好钻研,如果不是就去寻找自己的兴趣点,然后好好钻研它。
关于要不要中途换队员这个问题:我目前是持反对意见的。对于老师提出的两个观点我有不同的看法。一般在企业中,项目应该分为四个阶段,概念阶段,规划阶段,实施阶段以及完成阶段。那么,企业如果换人的话,应该是在规划阶段之前就换人。其次,一般在企业中,项目开始的时候,项目成员都会签署协议,如果在这期间成员主动离职,那么他将背负高额的违约金。如果是成员被离职了,那么企业将付出非常大的成本,如果不是出现不可调和矛盾,一般情况下没人这么做。所以我觉得,在实际中,并没不存在实施阶段和完成阶段的换人。因此我觉得在β阶段换组没有实际的意义,如果要换,应该在α阶段之前换人,等到β阶段再换人是不可取的。当然,由于我还没有在企业中开发过,所以对于实际的情况可能掌握的不太准确,不太全面。如果实际情况确实如老师所讲的那样,希望老师可以举出两三个具体事例,这样既可以让我们明白老师执行换组这个操作的初衷,也可以提高我们对这个操作的认可度,同时我们也能提前了解实际情况,对于我们今后走入社会也有一定的帮助。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我认为我们团队经历了萌芽阶段,磨合阶段,最终达到了规范阶段,但是没有达到创造阶段。
五、怎样证明你学会了软件工程
我觉得现在如果我拿到了一个项目,我首先会全面的考虑客户需求,做一个需求分析,并且同客户交换意见。做完需求分析之后,先用墨刀做出原型设计,向客户征求意见。然后再做项目规划并选择合适的开发模型,把各个组员分工弄好,同时发布在类似teambition的项目合作软件上,这样可以清楚地看的每个组员的任务完成情况和每个阶段项目的开发情况,便于控制和调整。在完成一个每一个模块之后,都进行相应的测试,及时发现并修正bug。等到软件开发并测试完毕之后,把各个文档规范的写好,最后再发布软件,交付客户。
我从一个一开始拿到项目便埋头写代码,到后面可以基本上摸清整个软件开发流程,并且切切实实地执行了流程,我觉得这就是我学会了软件工程的证明。