高级软件工程实践总结作业
一、请回望第一次作业,你对于高级软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
我希望自己能通过这门课,学习更多关于软件工程的知识,比如需求分析、设计模式、开发方法等等,本科虽然也有开设这门课,但学得比较粗浅,另一方面自己总想抱别人大腿,所以很多知识并未真正运用其中,也并未真正知其所以然。每周我打算拿出十个小时用在这门课上,当然我会根据当周的作业量和难度进行相应调整,以达到自己期待的学习目标。
- 在开篇的博客中我的期待内容如上,对当前的所学所练所得,基本都达到了自己的期待和目标,而且还有一些其它的收获。从开题报告到需求分析,自己动手设计原型,从一头雾水到后面的赶超进度、成员之间从陌生到熟悉彼此。团队在慢慢进步,而自己作为团队的一员也在不断成长。项目应用了上课学习的五个设计模式,老师提出修改建议后,也确实发现自己应用的不是很流畅,有些模式应用起来也比较生硬。遗憾大概就是对设计模式的应用能力不强,虽然每次作业都能完成,但真正在实际运用中还有所欠缺,在以后的开发实践中,会继续去学习和应用来增强。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门高级软件工程实践中,完成了多少行的代码;
- 大概有八千多行
2、高级软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间 | 作业 | 花费时间 |
---|---|---|---|
高级软件工程第一次作业(准备) | 2h | 测试随笔 | 5h |
团队展示(团队) | 3h | 事后诸葛亮(团队) | 7h |
项目选题报告(团队) | 6h | Beta冲刺预备 | 7h |
项目需求分析(团队) | 5h | Beta冲刺Day1 | 5h |
项目Alpha冲刺Day1 | 12h | Beta冲刺Day2 | 8h |
项目Alpha冲刺Day2 | 10h | Beta冲刺Day3 | 6h |
项目Alpha冲刺Day3 | 7h | Beta冲刺Day4 | 6h |
项目Alpha冲刺Day4 | 9h | Beta冲刺Day5 | 6h |
项目Alpha冲刺Day5 | 10h | Beta冲刺Day6 | 9h |
项目Alpha冲刺Day6 | 8h | Beta冲刺Day7 | 10h |
项目Alpha冲刺Day7 | 9h | Beta冲刺总结随笔 | 6h |
项目Alpha冲刺Day8 | 7h | 用户使用调查报告 | 3h |
项目Alpha冲刺Day9 | 8h | 高级软件工程实践总结 | 5h |
项目Alpha冲刺Day10 | 5h | 第一次作业 | 1h |
项目Alpha冲刺Day11 | 6h | 第二次作业 | 6h |
项目Alpha冲刺Day12 | 10h | 第三次作业 | 5h |
Alpha冲刺总结随笔 | 5h | 第四次作业 | 5h |
第五次作业 | 6h |
3、哪一次作业让你印象最深刻?为什么?
- Alpha阶段结束后的 事后诸葛亮(团队)那次作业让我印象最深刻。在Alpha阶段开始时,我们还在为搭建框架而头痛,每次的会议都有很多问题和困难,本以为Alpha阶段的目标可能要达不到了,没想到最后真的完成了项目的大多基本功能点,大家一起回顾整个冲刺阶段,发现了一些看似很简单的环节,却是重要需要去耗费精力的,比如测试。另外这次讨论也发现了系统的一些BUG,我们在整理这些问题的时候,也为Beta阶段提供了一些思路。Alpha阶段结束后,整个团队更有凝聚力,大家从这一阶段学到了很多,同时也彼此欣赏成员之间优秀的一面,比如某人演讲能力很突出,有人ppt做的很精美、有人文档写得很好,有人编码能力很优秀。
4、累计花了多少个小时在高级软工实践上?平均每周花多少个小时?
- 总共累计200小时左右,Alpha冲刺+Beta冲刺阶段大概持续了三周的时间,平均每周大约花了67h
5、学习和使用的新软件
- 原型制作:Axure RP
- 开发工具:MyEclipse
- 数据库:MySQL
6、学习和使用的新工具
- MyEclipse 单元测试
- startUML
7、学习和掌握的新语言、新平台
- javaScript
- 版本管理Github
8、学习和掌握的新方法
- SSH框架:Struts+Spring+Hibernate
- BootStrap前端框架
- 设计模式
9、其他方面的提升。
- 团队之间最重要的就是沟通,通过这次实践,让我明白沟通是解决矛盾最有效的途径,学会沟通、经常沟通能从别人身上了解新知识,学习新方法,同时还能了解团队其他成员的进度与遇到的困难,提高效率。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
-
善用新软件,提高开发效率。很多人在接触一些新平台或软件时觉得很陌生操作很复杂,就会懒得学,比如我们这次使用的Github,刚开始成员中都不懂怎么操作,还得去看视频资料学习,但到了冲刺阶段,就明显感受到这个平台的便利之处,解决冲突,代码共享,Alpha冲刺的前期基本都完不成当天的计划,但到了熟悉之后,进度开始赶超且效率也在提高。
-
学会沟通,及时解决问题。刚开始组队时,成员之间可能都不大熟悉,也不清楚每个人的擅长之处,学会去主动交流,敢去交流,不要觉得自己能力弱,这个问题很简单,不敢问之类的,及时解决自己的问题,后面才能及时跟上。我们团队在刚开始时,有的人还不太熟悉,很多东西没学过,但他会经常提出自己的疑问,及时去解决,虽然之前没接触过开发,但后面也渐渐跟了上来。
-
今日事,今日毕。不要总想着今天完不成就拖动明天,明天也是会有新的任务的,可能还会有一些计划之外的事情在等着你,拖延只会让工作堆积起来,今天堆到明天,然后堆到大后天......永远都在赶,及时完成任务,提高效率,才能不慌不忙。
-
提高团队积极性。开发不是一个人的工作,不要只沉浸在自己的世界,要与团队接轨,团队的气氛会影响每个人。如果一个团队松松散散没有凝聚力,就没有活力,队员也提不起干劲;团队活跃,每个人都参与进来,就会有一种归属感。如果一开始团队就比较散,可以找个时间团建一波,比如一起吃饭,队员之间就会熟悉起来。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?
-
在开始接触这门课时,大概都会从上一届那听说这门课作业很多,自己体验了一个学期,作业相较其它课程的确会多一些,付出多那么相对你获得的也会多。从组队到选题到需求分析、详细设计,以及Alpha冲刺阶段、Beta冲刺阶段,到最后项目验收,整个项目开发流程完整走一遍,你可以从中了解并参与不同阶段的任务,找出自己感兴趣的点,比如测试、比如需求分析,以后也可以朝着这个方向去更深层学习。不仅仅是锻炼自己的开发能力,还可以锻炼你沟通能力、团队协作能力。
-
可以多逛逛博客,与同行交流,看技术大佬的贴子,多去学习,提升自己。
-
培养自学能力,学会自己找资料来解决问题。
-
借用开篇中L博客所说的一句话来送给大家 “踏踏实实做好今天的事,炼好自己的内功,注重经验的积累和总结,等待一个能让你量变引发质变的机会”
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
-
《构建之法》中说团队的发展有四个阶段:萌芽阶段、磨合阶段、规范阶段、创造阶段
-
我们团队大概经历了萌芽阶段、磨合阶段、规范阶段三个阶段。
-
首先萌芽期阶段。团队成员确定之时,每个人都刚开始适应这个团队、角色、一些日常流程、虽然每个人都会去琢磨这个项目任务、对结构提出不少看法,但注意力并没有集中在解决问题上,遇到一些问题,也并不会立马提出讨论,成员之间还存在一些距离感。很多时候依靠组长来决定任务的分配工作。
-
磨合阶段。主要在团队需求分析阶段到Alpha冲刺阶段的前期这一时期。在项目之前,有些成员已经是在公司有实际项目经验的人,而有成员之前并没接触过软件开发,在遇到问题有争议时,我们一般会让有经验的成员提出她的想法和一些可行性措施,然后进行讨论。到Alpha冲刺阶段的后期,成员之间更加熟悉,之前不熟悉开发的同学也渐渐熟悉整个流程。
-
规范阶段。随着项目的开展,我们每天都会抽出中午或晚上时间讨论当天或明日的安排,并对各自负责的部分说明进度和遇到的困难,然后一起讨论解决的方案。 通过聆听、讨论,成员互相之间更加了解,认识到并欣赏各自的能力和经验,建立起更加流畅的工作模式。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
- 我们软件虽然没有发布至外网,但我们开放了局域网的网址,供我们使用同一校园网的同学使用,并征集了他们的建议和意见。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
我们团队在开发过程中经过了选题、需求分析、原型设计、详细设计代码实现、用户测试到最后项目,每个冲刺阶段有定时发布进度,所有人都参与到项目当中:
- 选题报告:https://www.cnblogs.com/youberight/p/9900706.html
- 需求分析:https://www.cnblogs.com/youberight/p/9941637.html
- Alpha冲刺:https://www.cnblogs.com/youberight/p/10033785.html
- Beta冲刺:https://www.cnblogs.com/youberight/p/10091200.html
- 测试报告:https://www.cnblogs.com/youberight/p/10091091.html