个人作业——软件工程实践总结作业

这个作业属于哪个课程 软件工程1916|W
这个作业要求在哪里 个人作业——软件工程实践总结作业
学号 131601207
这个作业的目标 软件工程实践总结
其他参考文献 [1]邹欣.构建之法[M]

作业正文

一、请回望暑假时的第一次作业,你对于软件工程课程的想象

1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
开篇博客中,我对课程的目标和期待如下:

培养分析和解决实际问题的能力,提高编程能力,了解如何团队分工合作开发项目,培养团队合作的意识

对比目前的所学所练所得,我基本达到了自己的期待和目标,培养了自己分析和解决实际问题的能力,编程能力得到了提高,了解到了如何团队分工合作开发项目,培养了团队合作的意识,但在项目管理方面还是存在着一些不足,主要是因为自己在整个团队作业阶段主要还是担任一个“被管理者”的角色,服从团队队长的安排,较少直接参与团队的管理。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1. 统计一下,你在这门软件工程实践中,完成了多少行的代码

阶段 代码行
结对编程 537行
团队作业 2643行

2. 软工实践的各次作业分别花了多少时间?

作业名称 时间(h)
第一次作业-准备篇 3
结对第一次—原型设计(文献摘要热词统计) 15
结对第二次—文献摘要热词统计及进阶需求 10
团队作业第一次—团队展示 2
团队作业第二次—项目选题报告 12
团队第三次-项目原型设计 13
团队作业第四次-项目需求分析 11
团队作业第五次—项目系统设计与数据库设计 6
团队作业第六次—团队Github实战训练 15
项目Alpha冲刺(团队) 28
事后诸葛亮(团队) 3
项目Beta冲刺(团队) 32
Beta阶段团队项目互评 2
个人作业——软件工程实践总结作业 3
总计 155

3. 哪一次作业让你印象最深刻?为什么?
项目Beta冲刺(团队)作业让我印象深刻,因为在这个阶段开始前,我们团队中和我一起负责前端的同学被交换走了,因此在这个阶段我的任务量变大,花费的时间和精力也更多。但是在这个过程中,我也收获了许多,通过大量时间的投入,我对于前端框架Vue的掌握更加充分,编程能力在短时间内得到了较大的提升。
4. 累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计花了超过170个小时在软工实践上,平均每周花超过13个小时
5. 学习和使用的新软件
墨刀、WebStorm
6. 学习和使用的新工具
Github、ProcessOn、StackEdit
7. 学习和掌握的新语言、新平台
Vue.js前端框架、jsoup
8. 学习和掌握的新方法
单元测试
9. 其他方面的提升。
学习能力的提高、团队合作能力的提高、项目开发能力的提高


二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析

  1. 在项目开发的过程中,团队之间的沟通非常重要,比如我们团队在Alpha阶段初期,由于团队成员之间的沟通不足,导致前后端开发人员在对于需求的理解上出现了一些偏差。
  2. 在项目开始前,对于任务的细化安排非常重要,比如我们团队在Beta阶段对于任务的安排比较细致,每位成员都知道自己每天需要完成的任务,使得整个开发过程都比较顺利。

三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?

对下一届实践的建议:既然软工实践是一门必修课,与其抗拒这门课,不如学会接受,在实践的过程中提高自己的学习能力,加深自己对于软件项目开发的理解,尤其是对于缺乏项目经历的同学。
对于开学初的我:提高效率,把握时间
对于大一的你:好好学习,争取保研,不要以为上了大学就可以放松了。
对于后来人的期许:希望后来人可以以更大的热情投入到这门课中,并在这门课中有所收获,开发出高质量的软件产品。
下一届要不要中途换队员:要中途换队员,因为人员的变动确实是软件项目开发过程中会遇到的问题,但是希望换队员可以是团队之间交流后的结果,交换能力和开发方向相近的同学,而不是简单的随机抽签。


四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)

《构建之法》上说团队的发展有四个阶段,分别是萌芽阶段、磨合阶段、规范阶段、创造阶段,我的团队经历了前三个阶段,可能还没有达到“创造”阶段
萌芽阶段:从团队展示到项目原型设计阶段,我认为我们团队是处在萌芽阶段,团队成员之间刚刚互相认识,依赖于团队领导的指导。
磨合阶段:从项目需求分析开始到Alpha阶段结束,我认为我们的团队是处在磨合阶段,大家都在积极的适应队友,一起克服遇到的困难。
规范阶段:在Beta冲刺阶段,我认为我们的团队就进入了规范阶段,团队的成员们对自身的角色,职责都非常了解。


五、怎样证明你学会了软件工程?

1)研发出符合用户需求的软件必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
软件经过了同学们的试用,并且获得了较好的反馈。
部分用户展示:
个人作业——软件工程实践总结作业
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
团队在整个项目开发的整个过程中都有详细的规划和任务分工,确保项目能够在预计的时间内发布,并且保证每个人都参与到项目的开发中。
部分项目计划安排截图:
个人作业——软件工程实践总结作业

3)并且通过数据展现软件是可以维护和继续发展的。而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
项目Github地址:

  1. 前端:https://github.com/codingkai001/yunping
  2. 后端:https://github.com/hlxing/cloud-evaluation

接口文档地址:http://evaluation.huanglexing.com/swagger-ui.html#/


六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:

阅读的论文文献:Code quality analysis in open source software development
本文中作者提出Eric Raymond在其论文'The Cathedral & the Bazaar'中提出的关于开源过程的两个基本原则,'release early and release often'(早发布,经常发布)和'given enough eyeballs all bugs are shallow'(给予足够多的眼球,所有的错误都是肤浅的),我觉得确实非常形象地表达出了开源的好处,这也让我意识到以后要多将自己的代码开源,与他人分享交流,这样才可以不断地提高自己的代码质量。
参考论文文献:

[1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.

[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605

[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87


七、个性发挥,包括图文、照片和创意等

感谢我们整个团队的成员,感谢你们给予我的帮助,也感谢老师和助教们一整个学期的辛苦付出。
最后附上团队合照一张:
个人作业——软件工程实践总结作业