个人作业——软件工程实践总结作业
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1.对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 一眨眼四个月的时间过去了,回顾这几个月,过的既紧张但又不得不说也很充实。在课程前期,希望在这门课中提升自己的个人编码等能力,以及尝试团队共同开发。刚开始对于安卓开发一无所知,并没有相关的开发经验,自己的编程基础也相对较差,到了真正开始进行冲刺的时候显得有些不知所措。慢慢在摸索中懂得了服务端部署,安卓前端的开发,前后端的交互等,熟悉了app开发流程。经过项目的选题、需求分析、原型设计、Alpha版本、Beta版本等一步步地有规划地进行。自己的个人能力得到了提升的同时也觉得自身也存在着很多不足如debug的能力有所欠缺,自身的代码量不足,对于新知识消化得不够快等。尽管还没有完全达到期待,但还是收获了很多。
2.总结这门课程的实践总结和给你带来的提升,包括以下内容:
(1)、统计一下,你在这门软件工程实践中,完成了多少行的代码;
(2)、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 |
时间 |
软件工程实践第一次作业(个人) |
5h |
数独(个人) |
20h |
团队展示(团队) |
10h |
原型设计(结对) |
15h |
项目选题报告(团队) |
20h |
结对第二次作业(结对) |
30h |
项目需求分析(团队) |
30h |
Alpha冲刺 (团队) |
100h |
随堂小测同学录(团队) |
5h |
软件产品案例分析(个人) |
10h |
beta冲刺(团队) |
40h |
软件工程实践总结(个人) |
5h |
(3)、哪一次作业让你印象最深刻?为什么?
- Alpha冲刺让我印象最深刻。因为Alpha冲刺是真正开始着手项目的阶段,也正是在冲刺的过程,才接触了编码层面的项目开发。这个过程是我认为收获最大的一个过程。
(4)、累计花了多少个小时在软工实践上?平均每周花多少个小时?
- 累积多花的时间不好做出精确估计,平均每周花20个小时左右时间。
(5)、学习和使用的新软件;
- Android Studio
- Axure RP
- Visual Studio
- Navicat Premium
- StarUML
(6)、学习和使用的新工具;
- github
- iconfont(阿里巴巴矢量图标库)
(7)、学习和掌握的新语言、新平台;
- 新语言:对于java、C#有了进一步的了解;
- 新平台:博客园,阿里云
(8)、学习和掌握的新方法;
(9)、其他方面的提升。
- 使用github进行团队编程开发
- 解决bug的能力,查阅资料的能力得到一定提升
- 团队合作意识更强了
- 体会到了写博客的重要性,认真地去记录一些自己所学习到的东西真的很重要
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 在初期的开发使用android studio 的过程中,遇到了很多问题,诸如无法启动模拟器,更新升级后依旧无法启动,自己的项目可以运行,但是到了其他人那边却各种报红,大家都一头雾水,后来组内统一了as的版本之后,类似的错误就少了很多。
- 在Alpha冲刺阶段,大家接手自己的任务分配之后,大家都各做各的,由于没有做好沟通,也不太清楚各自的进度,效率并不是很高。于是在Beta冲刺阶段,大家自发的出来一起学习,积极交流的同时也起到了互相监督的作用,所以Beta阶段的效率比Alpha阶段提高了不少。
- git和github的使用得当,对于团队协作编程会有很大帮助。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 选了软工实践这门课,就必须做好要付出很多时间和精力的准备。
- 对于想要通过项目开发来提升自身能力的学弟学妹,软工实践最适合不过了。软工实践会从项目的选题、需求分析、原型设计、Alpha冲刺、Beta冲刺等一步步地进行项目的开发,每个阶段都有明确的任务。
- 在团队组建后的初期,做好团队之间的沟通,明确彼此的分工。在项目开发前期,统一代码规范,拟定每天的计划。着手开发时,落实好每一天的任务,不能把当天任务拖到第二天。
- 建议提前简单了解git和github的使用,对于后期的团队协作编程会有很大帮助。
- 对于中途换队员的问题,我觉得中途换队员还是可以接受的,但是决定互换的队员的方式很重要。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 萌芽阶段:初期一开始的软工课主要是以个人作业和结对编程作业为主,还没有真正开始团队的项目,团队中每个人对其他人的能力和技术也没有很好的认知。所以初期主要在沟通。
- 磨合阶段:在项目选题的时候,每个人都有自己的想法,大家的意见不统一,在经过几次的会议讨论之后最终决定了要做一个日记app,而在网页App和android原生App的选择上,也纠结了很久,经过协商一致决定开发android原生app。这个阶段的几次会议讨论也促进了队内成员相互熟悉。
- 规范阶段:在这个阶段,我们完成了原型设计、软件需求规格说明书,制定了代码规范。经过小组开会讨论,对项目进行规划,根据每个人擅长的地方,对每天要完成的工作进行了任务分配。
- 创造阶段:冲刺阶段,我们团队由于种种原因没有很好的完成的预期的任务,我作为组长必须承担起很大一部分的责任,尽管分配了任务,由于任务分配得不够合理,也没有及时跟进,大家的进度参差不齐,导致效率不高,开发进程缓慢。并没有达到创造这一阶段。
五、怎样证明你学会了软件工程?
1、研发出符合用户需求的软件必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户)
2、通过一系列工具,流程,团队合作,能够在预计的时间内发布“足够好”的软件有项目规划/需求/设计/实现/发布/维护,有定时的进度发布
项目进展 |
时间 |
前期调研与需求分析 |
2017-09-20 |
项目原型设计 |
2017-09-25 |
项目选题报告 |
2017-09-27 |
需求规格说明书 |
2017-10-18 |
Alpha版本发布 |
2017-11-09 |
beta版本发布 |
2017-12-22 |
用户试用与调研 |
2017-12-25 |
项目正式发布与验收 |
2018-01-10 |
3、并且通过数据展现软件是可以维护和继续发展的
我们有着统一的代码规范,数据传输说明,和代码注释等,即使刚接手项目,也能很容易的看懂代码,接着项目继续开发。