个人作业——软件工程实践总结作业
这个作业属于哪个课程 | 软件工程1916 |
---|---|
这个作业要求在哪里 | 个人作业——软件工程实践总结作业 |
学号 | 221600122 |
这个作业的目标 | 个人软件工程实践总结 |
一、请回望开学初的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
达到期待:确实在课程中体会到了一个比较完整的开发过程,知道了一个项目是怎么开始,实施到结束的。
存在不足:在项目管理中确实还是没有太深的感受,总体来说还是比较混乱的。编程方面,因为课程需要学习一些新的东西,但是在繁忙的课程中,时间还是有些紧了。对于完全没有经验的我,就感觉想努力却不知道要向什么方向。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,完成了多少行的代码;
大概1.5k+行
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业名称 时间/h 第一次作业-准备篇 1 结对第一次—原型设计(文献摘要热词统计) 5 结对第二次—文献摘要热词统计及进阶需求 6 团队作业第一次—团队展示 1 团队作业第二次—项目选题报告 2 团队第三次-项目原型设计 2 团队作业第四次-项目需求分析 8 团队作业第五次—项目系统设计与数据库设计 5 团队作业第六次—团队Github实战训练 4 项目Alpha冲刺(团队) 60 事后诸葛亮(团队) 2 项目Beta冲刺(团队) 40 Beta阶段团队项目互评 2 个人作业——软件工程实践总结作业 1 总计 139 -
哪一次作业让你印象最深刻?为什么?
项目Alpha冲刺(团队),这可以算是项目编码的开始,我们从零开始,做完全不熟悉的安卓,还要连接服务器,同时进行开发。刚开始完全不知道要从什么地方开始搞,摸索花了很长的时间,可能万事开头难,难的部分就印象深刻。
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?
花了大约150h在软工实践上,每周10h+。
-
学习和使用的新软件;
Axure,磨刀,tomcat,navicat,MySQL等。 -
学习和使用的新工具;
Axure,磨刀 -
学习和掌握的新语言、新平台;
JavaEE,服务器端开发
-
学习和掌握的新方法;
测试
-
其他方面的提升。
团队合作,沟通,学习方式
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
沟通是非常重要的,在团队合作中。如果是一个人的项目,设计、进度一切一切都可以自己来安排时间,但是在团队合作中,就需要考虑队友的情况。任务的分配,板块之间的对接,都是团队中需要注意的。
在我们团队项目中,就是因为一开始没有充分的沟通,分配好了任务,但是有一部分的功能模块,互相都以为是自己的部分,就两边都写了,后来发现这些部分做的就是无用的功。这也是因为在项目进行的时候,没有进行充分的沟通,导致的结果。所以在项目过程中,项目的管理沟通是十分重要的。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
一定要有自己擅长的部分,对于大一的同学,有充足的时间来学习一个自己感兴趣的放向。然后在项目选择的时候,尽量选择自己熟悉的方向,平台来开发。如果是课程开始时候,在开始学习一个从未接触过的领域,时间是非常紧张的,可能大部分的时间都要花费在学习技术上面。这就违背了这门课的目的。
关于换队员,作为课程的一部分还是合理的。但是在换队员的实际情况中,还是有些事情可能不那么“公平”。只有一小部分人是作为被换走的,可能对个人影响最大的是被换走的队员,但是对团队的影响肯定比不上被换走的队友的影响。也就是说其他的人能体会到项目实际存在这种情况,但是感受最深的是被换走的队友。作为课程,只有一小部分人会有很深的感受,这个是不是可以有别的方式解决呢。当然课程这么短也不可能让每个人都能真实的体会到这个过程,解决方法我也没有想到更好的,所以换当然可以换,方式可能需要改变。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
创造阶段还没有到达,经历了部分发展阶段,萌芽、磨合、规范这些阶段。从刚开始分功不明确,到后面任务安排清晰明了;从刚开始协调困难,到后面制订了同一标准。这些都是项目中肯定要经历的。
五、怎样证明你学会了软件工程?
1)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
2)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
学会了用github来存储管理代码,还可以控制版本