软件工程实践总结
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 开篇博客对课程目标和期待
- 提高代码水平,增加代码量
- 获得项目开发经验,学到新技能
- 达到的期待和目标
- 在项目开发过程中打了挺多代码,自己的代码水平确实获得了挺大的提升
- 在与团队的协作中,了解了一个项目完整的开发流程是怎么样的,积累了一定的项目开发经验;在负责自己的任务部分中,学习了很多新的技能,接触了很多好用的工具个框架,获得了web前端界面开发的经验
-
存在的不足
由于第一次做项目,缺乏经验,没有合理的安排好自己的时间。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
根据学习进度表:
第N周 | 新增代码(行)| 累计代码(行) | 主要工作
---|---|---|---|---|---|---
1 | 500 | 500 | 单元测试的编写
2 | 0 | 500 | Axure原型设计工具的使用
3 | 500 | 1000 | c++算法设计编写能力,Debug调试能力
4 | 200 | 1200 | 学习网页设计(html)
5 | 200 | 1400 | 学习网页设计(css)
6 | 200 | 1600 | 学习网页设计(JavaScript)
7 | 300 | 1900 | web端界面开发
8 | 200 | 2100 | ECharts网页生成图表学习
9 | 200 | 2300 | bootstrap框架学习使用
10 | 200 | 2500 | 学习使用larave框架
11 | 100 | 2600 | 安装laravel框架配置环境
12| 100 | 2700 | web端界面开发
差不多写了2700行左右的代码量
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业名 | 花费时间(分钟) |
---|---|
第一次作业 | 120 |
个人项目 | 960 |
结对项目1 | 580 |
团队风采展示 | 120 |
结对作业2 | 1620 |
团队选题报告 | 720 |
团队课堂UML设计 | 405 |
团队需求分析报告 | 915 |
Alpha冲刺 | 2385 |
团队现场编程 | 180 |
团队项目评测 | 215 |
Beta冲刺 | 1405 |
最终展示 | 120 |
3、哪一次作业让你印象最深刻?为什么?
第一次的课程作业让我印象挺深刻的,那是自己第一次写博客,根据作业的问题,看了大佬们的博客,好好反思了自己的专业水平,对这门课的畅想,对新学期的期望,还有对自己以后的专业安排,立了很多的flag,反思了很多,也收获了很多。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
问:你打算平均每周拿出多少个小时用在这门课上? 答:花的时间自然是需要多少花多少,认真做好自己的任务,做不好就多花点时间慢慢做,没时间就牺牲掉自己的娱乐休息时间
这学期下来,累计花了120个小时在这门课上,平均每周花8个小时左右
5、学习和使用的新软件;
- 原型开发工具:Axure
- 代码管理:Github
- 在线文档编辑:石墨文档
- 前端开发编辑器:Atom
- 安卓开发:Android Studio
- 博客md格式撰写:有道云笔记
6、学习和使用的新工具;
- 原型开发工具:Axure
- 代码管理:Github
- 在线文档编辑:石墨文档
- 前端开发编辑器:Atom
- 安卓开发:Android Studio
- UML设计:ProcessOn
- 前端bootstrap框架
- 前端Echarts框架
7、学习和掌握的新语言、新平台;
- html,css,javascript
- web开发平台
- 安卓开发平台
- web前端框架
8、学习和掌握的新方法;
- GitHub的使用
- 原型设计
- uml设计画图
- web前端开发
9、其他方面的提升。
- 代码能力得到提升
- 计算机专业水平得到提升
- 项目团队协作、交流能力得到提升
- 自学能力得到提升
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
-
经验总结:
经过这次实践,我觉得学习能力非常重要,不管是学习上还是今后的工作,我们遇到的问题很多会是我们用已有的知识解决不了的东西,所以这个时候只能在有限时间内马上学习,增加自己的知识储备,提升自己的能力从而来应付问题。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
-
有时间多学习一些语言和专业技能
在大一大二比较有时间的时候,多学习一些语言和平时课上不会教的技能,比如java、html、php等今后可能会用的到语言,不要到时候临时磨枪上场赶软工,会发现时间很不够用,有时不得不牺牲其它课程的时间在软工上面。
-
找个好的团队很重要
你会因为自己的队友都很优秀很努力,自己就不敢懈怠
-
认真做好软工实践,你会学到很多
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
- 我觉得不需要,大家都想认真完成任务的话,中途换队友很伤害一个团队的团结度和凝聚力。
3)假设依旧是一个90+人数的大班,身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
- 一个组10个以内吧,比较好分工,能保证每个人都有任务做。
4)个人/结对/团队作业应该控制在怎样的规模?
- 我觉得课外的作业规模都还行,加加班还是能完成的,现场编程那次的作业量有点大,时间只限制在课上几个小时的话有点困难
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
- 感谢我的队友们,感谢每个帮助过我的人!
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
-
萌芽阶段:这一阶段大概对应着我们从组队开始到第三次alpha冲刺时的情况,在这个阶段队员们都在学习相关的技术,对项目实现可能碰到的问题还没有一个非常清晰的认识。
-
磨合阶段:这一阶段对应我们团队现场编程及之后的两次alpha编程,团队现场编程将我们团队当时存在的问题暴露了出来,这也是组内成员提出疑问最多的一个阶段,不过很庆幸团队成员直接能够相互理解,对项目的疑问也能通过当面交流指定解决方法,从而度过了团队的磨合阶段。
-
规范阶段:从第六次alpha冲刺开始,我认为我们团队进入了规范阶段,我们在这时已经完成了项目的接口文档撰写、代码规范的约定、版本控制规则的制订,与此同时大家对项目所期望达成的目标有了清楚的认识,对自己负责的部分应该达成怎样的效果也了然于心。
-
创造阶段:我们的团队在beta冲刺阶段一定程度上触及了创造阶段,在beta阶段我们相比alpha阶段添加了4个全新的功能点,每个队员在明确了自己的任务后项目便开始了“并行开发”.
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
- 在项目开始时我们就发布了一份有100人回答的问卷,明确了用户的需求,并以此为依据开发我们的软件
- 截至截图时,根据后台的数据库记录一共有141人/次 使用了我们的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
-
这次实践中我们团队的代码完全托管在github organization上,每个人在上传代码前都需要遵循约定撰写commit信息
-
团队的merge network图:
-
前端:
- 后端:
- 前端commit情况:
- commit信息(部分)
- 后端commit情况:
3)并且通过数据展现软件是可以维护和继续发展的。
- 团队的接口文档、技术文档等都是放在石墨文档上组内共享的:
- 组内有详细的技术文档
- 组内的代码规范
- 组内的代码管理
4)对着这个检查表http://xinz.cnblogs.com/p/3852177.html检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
- 这些问题大体都回答不上来,关于技术问题,由于自己没有哪门技术是非常深入系统学习过的,所有会的语言还都是简单入门,要做东西时还得边查阅资料边做,以后去面试前应该还要再系统学习下所要从事的方向。