个人作业--软件工程实践总结
个人作业——软件工程实践总结
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 对于android来说,算是入门了,了解了一个软件的开发流程且实实在在的进行了一次团队协作,是一次不错的经历。
- 开始觉得github的使用真的挺繁琐的,会遇到各种怪问题的,用久了感觉是一个不错的代码管理软件,学会了解决各种有关github的方法,在此感谢一下西瓜学长的教程。
- 在做软工的过程中,用到了挺多以前没接触过的软件,对于这些软件的使用并不精通,但有了一定的了解。
- 软工实践之前对于软件开发的前后端不是很理解,感觉是一个很神奇的东西,在团队合作的过程中有实现和后端服务器的对接,算是对软件开发的前后端有了一定的理解。
- 不足:自己的代码能力还是有所欠缺的。写代码的过程会遇到软件的各种问题,花费了比较多的时间。解决问题的能力也有所欠缺,不过相比以前,还是有所提升的。自己的能力距离开发出一个实用的软件还是存在一定的距离的,还需继续学习。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 这门课的编码主要是在数独作业,结对作业和团队作业中,完成的编码大概1000行左右。
2、软工实践的各次作业分别花了多少时间?(做一个列表)
各次作业 | 大概耗时(小时) |
软工实践第一次作业 | 3 |
数独作业 | 21 |
结对作业一 | 15 |
结对作业二 | 20 |
团队选题报告 | 2 |
个人技术博客 | 2 |
需求规格说明书 | 3 |
团队作业--预测立,他山之石 | 2 |
团队作业--系统设计 | 3 |
团队作业--UML设计 | 4 |
团队作业--同学录 | 4 |
软件案例分析 | 4 |
alpha阶段 | 56 |
beta冲刺 | 28 |
软工实践总结 | 4 |
合计 | 171 |
3、哪一次作业让你印象最深刻?为什么?
- 软工团队第一次集体编程吧。感觉团队在一起编程气氛很好,会比较方便交流和讨论,效率比较高。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
- alpha和beta阶段比较赶的时候,每天4小时,每周大概28小时左右花在软工实践上。加上前面所有的个人作业大概累计170小时左右花在软工实践上。
5、学习和使用的新软件;
- 主要学习和使用的新软件有visual studio2017,eclipse,墨刀,Power Designer,android studio,Xmind。
6、学习和使用的新工具;
- 主要学习和使用的新工具有github,android studio,博客园,markdown编辑器。
7、学习和掌握的新语言、新平台;
- 学习和掌握的新语言主要是java,在此过程中主要是对android studio和github以及博客园的使用。
8、学习和掌握的新方法;
- 通过本次软工实践,主要是了解了关于开发软件的流程以及团队开发的过程,是一次很好的经验。软件开发和写代码还是有很大区别的。在开发过程中不像平时写代码那样随意了,会去注意一些规范性的问题。还有github代码管理平台的使用以及博客园的使用。
9、其他方面的提升。
- 解决问题的能力:一直觉得自己解决问题的能力不是很强,感觉软工真的很考验个人解决问题的能力,在做的过程中会遇到各种各样的奇葩问题,遇到问题会通过各种方法去解决,解决问题的能力有所提升。
- 团队合作和交流能力:团队合作的时间还是比较长的,有时候会遇到一些意见分歧,会和其他队员一起商量着去解决。
- 写代码方面的提升:会更注重一些代码规范以及事先想一下代码的整体逻辑和构思。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 团队分工很重要,有时候感觉我们组的分工有点笼统,不够细化,尽量做到人尽其用,在冲刺开始前要制定好计划。
- 前期的原型设计和需求说明很重要,一定要做好,并且每个成员都要对此很熟悉,前期的文档和需求没做好,后面会出现诸多问题。
- 学会自己解决问题,这个能力真的很重要。
- 编码时提前想好逻辑和框架,这样不容易乱。
- 多和其他成员交流,不懂的问题要及时交流。
- 团队要有文档规范和代码规范,每个组员应严格遵循这一规范,这样可以比较快的看懂其他人写的代码。
- 开发过程中不只是编码,可能你解决bug的时间比编码时间还长,学会自己解决bug。
在团队开发过程中,遇到很多问题,会去自己解决android和有关github的问题以及其他问题。每次出现问题都会去各种搜索,各种查找,最后解决问题。在这过程中自己对于某些问题的解决会更加明确。这也是一种提升吧。。。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 是一次很好的经历,如果学弟学妹们希望锻炼一下自己的编程能力,是一个很不错的选择;
- 做软工会花费比较长的时间,要协调好自己的时间;
- 不要怕没有经验做不好,学会尝试,可以学到很多;
- 做软工的过程中会用到各种软件,学会利用各种工具;
- 软工实践是大学为数不多的团队合作的课程,可以提前体验一下公司中团队开发的过程。
- 组队的时候尽量组里有一两个大佬,这样效率会比较高;
- 很锻炼解决问题的能力。
对于要不要中途换队员,我觉得可以考虑换。(beta阶段冲刺的时间长一点效果可能会更好)。模拟一下公司换人的制度还是很好的,可以锻炼一下个人以及团队的合作能力以及个人的应变能力。
最后,希望学弟学妹能做的很好,享受软件开发这个过程。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 萌芽阶段:在这一阶段,组内交流不是特别多,提出的意见也不多,基本是各自准备软件开发的知识,适应团队开发的环境,对于软件的了解和具体要做什么不是特别清晰。
- 磨合阶段:组内交流增加,对于自己做的软件比较了解和熟悉了,每个人基本可以独立编程,然后合并。出现的问题会及时讨论解决,团队的目标比较明确,合作起来有了一定的默契。
- 规范阶段:各个成员都已经习惯这种编程模式,各个成员的任务相对来说比较明确,对于编码方式和工作流程比较熟悉,很明确自己要做什么,并且要按照组内的方式来进行编码,遇到一些问题时,有时可以自己拿注意,不用一直讨论。每个人按时交付任务,气氛较好,效率比较高。
- 创造阶段:具体不知道有没有达到创造阶段,但每个成员都很积极的去完成自己的任务,但每个人的能力有限,做出的效果可能没有想象中的那么好,但都在尽力做好。团队合作最后阶段基本每个人专心做自己的任务,交流倒了少了许多,可能默契达到了一定的程度(hhh)。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
所做的软件组内成员在试用,也推荐给同学和其他认识的使用,目前功能还不是很完善,相较于市面上的其他的日程管理软件还是有一定差距的。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
对于所做的软件前期的准备还是很充分的,人员的划分,在哪些时间必须完成哪些任务,需求分析的设计,数据库的设计等等。冲刺阶段团队基本每天都会commit代码到github中,代码迭代过程还是很紧凑的。每天都会出去集体编程,每个人都会尽力去完成自己的任务,不存在划水状态。每个人每天都会发一份进度报告和明日计划给组长,以便于组长对于项目进度的掌控。
3)并且通过数据展现软件是可以维护和继续发展的。
在github上上传了关于所做软件的源代码,代码规范以及需求说明等,以便于后续的维护和完善。
七、个性发挥,包括图文、照片和创意等
软工即将结束,还是很享受这种团队合作,集体编程的感觉的。在此过程中也有很大的收获。在此感谢队友,助教,老师的辛勤努力和付出。
照片留念(感受一下集体编程的氛围):