个人作业——软件工程实践总结&个人技术博客
这个作业属于哪个课程 | 软件工程实践 |
---|---|
这个作业要求在哪里 | 作业要求在这里 |
这个作业的目标 | 总结这个学期的软件过程的学习 |
作业正文 | 如下 |
其他参考文献 | 无 |
一、回望
-
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
在学期初我希望通过本门课程加强团队协作能力,这个目标完成了,通过项目的实践和Github的使用,多人协作编程的能力显著提高,还获得了需求分析,系统设计,框架学习方面的提升,但是在 复杂系统编程和编程软件的使用上还有明显的不足
-
你在第一次作业的个人简历中制定的这门课程结束后,你预期你将增长的能力、技术、技能;和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
学期初,我制定了对Python语言的学习,包括对语法的学习,Python语言的应用,实际开发的研究。但是最终没有达到预期值,只学习了基础的语法。
- 请总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,一共完成了多少行的代码;
一共写了5K+的代码
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 花费的时间 |
---|---|
准备篇 | 6h |
热盛篇——疫情统计 | 10h |
结对第一次——疫情可视化(原型设计) | 7h |
团队作业第一次——种子队伍选拔和团队展示 | 2h |
结对第二次——疫情可视化的实现 | 18h |
团队第二次——团队Github实战训练 | 9d |
团队第三次——项目需求分析 | 6h |
团队第四次——项目系统设计和数据库设计 | 10h |
个人作业——软件评测 | 5h |
团队第五次——alpha冲刺 | 35h |
团队第六次——beta冲刺 | 30h |
-
哪一次作业让你印象最深刻?为什么?
印象最深刻的一次作业是团队Github实战训练,原因是当时限时一天,我们组员之间的编译器不相同,有的用eclipse,有的用IDEA,最后只有我和另外一个同学可以用eclipse打开,在最后的时间疯狂的修改bug,实战训练算是比较失败,但是也让我对协作开发有深刻的印象。
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计137小时,平均每周花10个小时
-
学习和使用的新软件;
IDEA:编写Java程序的好帮手
Github DeskTop:用来进行项目管理 -
学习和使用的新工具;
Typora,Hbuilderx:用来编写markdown文件
Xmind:用来绘制思维导图
Axure,墨刀:用来进行原型的制作。 -
学习和掌握的新语言、新平台;
新语言:javaEE(最广泛的Web编程语言)
新平台:Git(用来进行项目管理,多人合作编程) -
学习和掌握的新方法;
单元测试:利用Junit4测试,在代码push之前检验有无bug
团队协作编程:GitHub的使用使多人协作编程很轻松
接口的设计:一旦接口确定下来了,编码功能就能够很快的进行
原型设计:设计出原型让用户对软件是什么样的有一个初步的认识 -
工程能力的提升;
代码阅读能力:在多人合作中能快速的读懂别人的代码时一项重要的能力
团队协作能力:经过一个学期的实践,和别人沟通问题的时候能够更快速的抓住要点
项目设计能力:绘制了系统设计说明书需要的UML图,数据流图,对项目的设计更加了解 -
团队合作上的提升;
沟通的更加快速准确,github的使用使团队合作的效率显著提升
二、团队总结
-
如果你是组员,你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
我是组员,组长的分工是将工作分为前端和后端,文档的编写大家一起来,具体的任务由组员自行领取,对于我们这种熟人组成的小组是比较好的,基础比较差的不会拖累项目的进度,技术高的成员可以去解决难的部分,组长的选取是组内自由选举产生的,我觉得很好
-
你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
我没由亲身经历换组,对换组持支持的态度,模拟一下实际开发时可能遇到的情况,可能是我们组员之间的工作联系并不紧密,换走的组员也并没有承担关键的任务,换组的影响不是很大,感受除了交流有些不便也没有什么了
-
分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建之法》第17章 人、绩效和职业道德)
我觉得没有到达“创造”阶段,我们小组的成果算是基本完成了功能,可能是定的目标太大,并没有余力做特别的新功能,和市面上同类产品单就功能论也不出彩。
三、人月神话
-
怎样证明你学会了软件工程?
我们小组的项目是有项目规划/需求/设计/实现/发布/,在项目开始前,做了需求分析,并做了原型来展示项目预期的结果的界面,开始后先进行设计,系统设计和数据库设计,然后alpha冲刺和beta冲刺都有看板记录总的的任务数、项目的进度和每个人的贡献,大家一起同理合作,有计划的每天完成一些任务,最后做出成果,接口的设计有文档的保留,代码的注释也比较充分,并用看板记录了bug的出现和解决,软件是可维护和发展的
-
写下属于你自己的人月神话
-
系统设计需要一个有丰富经验的人来掌控。
系统设计的时候主要是我和另一个同学负责数据流图和各种UML图,类的属性和类与类之间的关系都是我们两个拍脑袋想出来的,最后在编写文档的时候发现错误百出,几乎相当于之前没写过。我和他在设计的时候也有很多的不同意见,花了很多时间交流也没有拿出一个完美的结果。
-
一个时间规划和进度控制表很重要。
在系统设计和数据库设计的时候由于没有对进度作出具体的规定,在最后两天才全员上阵写说明书,时间很紧,成果也不如人意,alpha冲刺和beta冲刺的时候有看板管理加上每日的进度报告,时间上比较从容,软件的质量也比较高。
-
系统设计中最重要的是概念的完整性。
前面提到了由于没有一个架构师来掌握系统设计,我们的系统设计不够完整,比如我们的成就和等级,在设计的时候就想到了,却没有在用户类设置相应的属性,编写其他方法的时候也没有考虑这个功能,导致写成就和等级的时候要重构其他的代码。
-
四、建议
- 对下一届同学的建议
这门课的一环接着一环,任务紧凑,千万不要懈怠,跟着往前走,有机会就尝试学习新的技术,当你成功的讲其从网络上的知识变成自己手下的代码时,那种成就感是无以复加的,等到学期结束,你会发现自己全方位的提高了,不止专业技能的提高,还能让你对软件行业有一个基本的了解。
- 对于软工实践课程,你有哪些建议?
可以在alpha冲刺结束后,模拟甲方提一些意见,希望早点提供一些常用软件的使用方法和便捷插件
- 对于助教工作,你有哪些建议?
助教可以多分享一下自己的经历和经验,
- 对于自己今后,你有哪些建言?
多去尝试一些新的事物,走出自己的舒适圈,挑战自己接手一些困难的任务。
五、个人技术总结
个人技术总结
概述:hibernate实现级联删除。