一、学期初,实验一中的任务4,大家拟定了5个准备从课程学习中找到答案的问题,通过一个学期的学习,相信大家已经有了答案,请根据自己的学习实践回答自己当初提的问题,并提出一个新的问题。
问题1.如何使软件能够更加行之有效地为人类服务呢?作为创新型时代的大学生,我们应该怎样避免自己“灵光一现”的想法随着这门课程的结束而消失呢?
我的回答:我们应该在实践中研究探索有效的技术和方法,开发使用更好的软件工具,团队开发项目,既要有技术措施,又要有组织管理措施。立项时,确定新颖、有意义的项目,结合专业所学,落实项目,即使在软件工程课程结束后,对于有意义有发展的项目我们是不可能抛弃的,我们可以继续开发优化,积极参加各类学科竞赛。
问题2. 当然软件开发过程中的“敏捷流程”离不开第二章提到个人技术与第五章提到的团队和流程。在这学期的软件工程实验中,怎样培养自我的软件工程师技术和素质?如何同团队成员协作共进?“敏捷流程”是否适合我们团队?同时,我自己感觉敏捷流程中,我们需要考虑的很详细,而且有些步骤很难做到。例如,冲刺阶段的“每日立会”对于初学软件工程的我们来说是否适用、是否有效率呢?
我的回答:良好的团队是将优秀的个体良好组织的成果,软件开发只有团队开发才有有高效率,团队的组建和管理至关重要。优秀的团队有助于软件工程师技术和素质的培养,当然,“Practice make perfect.”我们只有在实践中才会不断地成长。通过这学期的学习,对于敏捷开发有了全面的认识,那对于有些步骤,我们可以根据自己的实际情况进行调整,冲刺阶段的“每日立会”对于初学软件工程的我们来说是适用的,并且有效率的,我们可以在集中阶段发现解决问题,对软件开发很重要。
问题3. 在知道用户需要后,如何将软件功能和用户需求进行互相联系呢?在制定出软件的功能后,怎样定位功能的优先级呢? 同时,我们应该怎样平衡商业利益与用户要求呢?
我的回答:软件开的需求分析阶段及其重要,我们要从不同的方面,尽可能全面的挖掘用户需求,利用各种工具,设计功能,并按照四象限进行功能优先级分析。商业利用与用户需求的平衡首先应该不触犯法律以及软件工程师职业道德,然后具体分析,视情况而定。
问题4. 第十章讲到了典型用户和典型场景,我想典型用户需要去细化特征,细化的程度怎么把握呢?当然,典型用户对于软件设计有很大的价值,那么我们应该怎样处理、平衡典型用户与普通用户需求差异?
我的回答:典型用户对于软件开发是比较重要的,在细化他们的特征时,我们紧紧抓住我们要解决的痛点问题,再根据普通用户功能的可扩展性,制定典型用户的功能特征优先级。
问题 5. 第十一章软件设计与实现,此阶段需要对我们分析的需求进行解决,面对现实世界里的实体与属性,软件系统应该怎样交互、表现它们之间的关系呢?在第一章概述中我们知道“软件=程序+软件工程”,毫无疑问,此时应该通过编程来解决问题,然而,“程序=数据结构+算法”,数据结构与算法设计课是我们IT学习者必须掌握的课程,那么我们应该怎样把这两者与软件设计结合起来?把自己已经掌握的理论知识应用到实践中呢?
我的回答:知识是循序渐进,相辅相成的,前者是掌握后者的基础,后者是对前者的深挖。这学期的学习中发现前期基础不扎实,后期知识掌握困难重重。我们只有在掌握了较为全面的理论的知识后,通过实践创造有用的东西,在这个过程中再去加深理解理论的关键信息。
新的问题,通过这学期的团队项目,我感觉有意义,有价值的软件开发项目的确立是首要,作为本科学习阶段的我们来说如何将各个专业课所学的知识同软件工程,现实应用有机的结合,开发出有价值的软件项目?
二、完成课程的实践总结和给你带来的提升,包括以下内容:
- 统计你在软工课程实践中,完成了多少行的代码;
这学期的实践中,大概写了5000行代码吧。
2. 软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
软件作业 | 花费时间(h) |
实验一 软件工程准备 | 10 |
实验二 软件工程个人项目 | 8 |
实验三 软件工程结对项目 | 11 |
实验四 基于软件原型的需求获取 | 10 |
实验五 软件研发团队组建 | 6 |
实验六 团队项目评审与团队项目选题报告 | 10 |
实验七 团队项目的原型设计与开发 | 14 |
实验八 基于原型的团队项目需求调研与分析 | 12 |
实验九 团队项目需求改进与系统设计 | 10 |
实验十 团队项目系统设计改进与详细设计 | 10 |
实验十一 团队项目设计完善与编码测试 | 14 |
实验十二 团队项目用户验收评审 |
8 |
总计 |
123 |
平均每周花费时间 |
6.83 |
3. 哪一次作业让你印象最深刻?为什么?
印象最深的是团队项目原型开发的时候,因为项目比较复杂,实验布置之后有点压力,我们先进行了小组会议,大家都说了说自己对项目的看法以及原型实际要解决的问题。根据大家的意见我们以技术要员为核心划分模块,进行原型设计。原型设计时想着是原型先做出主要功能的模型来,让大家看看,听听大家的意见,所以我们就简单的做了个demo,六个人、三个模块,不懂得地方相互讨论,网上查找,感觉真的是一个团队。
4. 学习和使用的新软件、新工具;
石墨、墨刀、Visio、在线作图工具ProcessOn等
5. 学习和掌握的新语言、新平台;
本学期编程的语言以及安卓开发以前都有学习过,这学期算是复习、巩固的过程吧。本学期的项目开发中,我学习到了很多后端编写的方法和技巧,学会用博客园写博客来帮助自己的学习,利用GitHub管理项目代码。
6.学习和掌握的新方法,以及其他方面的提升。
(1)软件开发中,从需求分析到系统设计,再到编程测试,以及后期的用户反馈的方法技巧,学到了数据流图、E-R图、IPO图的使用及相互转换。同时,也学到了面向对象的软件设计以及软件测试的方法。
(2)作为团队的队长,学到了团队管理的一些经验,作为项目负责人应该及时了解团队成员遇到的问题,合理的划分任务,注重团队的感情、技术建设。
通过这学期的学习,掌握了软件开发的整体方法流程,为以后的学习奠定了很好的基础,这几天做移动开发的期末设计,自己就用到了软件开发中学到的技巧,事半功倍。
三、你认为目前的课程有哪些问题,你有什么更好的建议:
- 你认为本门课程需要在哪里进行改进,具体措施有哪些,包括:时间进度安排,项目难度等均可;
本学期的课程存在的一个问题是理论课与实验课时间不一致,这个问题是教务课程安排的问题。对于项目的难度问题,我自己感觉这次的团队项目难度差异较大,有些项目缺乏实际意义,对于这种问题,老师应该积极管控。
2. 你认为助教/老师哪里做的不足,哪里限制太多等;
也许有些团队建设以及确定项目需要老师和助教团队的帮忙,身处学校的我们,青春年华的我们,有个性,有想法,但也存在许多缺陷。希望老师以及助教团队可以给出一些新颖的项目,关注各个团队的建设情况。
3. 你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个)
个人:每个班级的同学博客至少有2名助教评分,取平均分。
结对:结对两人写明所做工作量比例,每个结对博客至少有2名助教评分,个人成绩=(助教平均分)*2*工作量比例。
团队:团队成员写明所做工作量比例,每个团队博客至少有3名助教评分,个人成绩=(助教平均分)*团队人数*工作量比例。
4. 在结对项目中你是否真正体会到了结对的好处,是否真正严格进行了结对编程,双方的工作量是否相同;
结对编程过程中我自己确实体会到了“1+1>2”的效果,我的伙伴也是属于那种务实,有想法的同学,我们的合作挺愉快的,工作量没有绝对的相等,但我们工作量差距挺小的。
5. 你的团队项目是否成功,如果重来一次你是否还会选择这个团队,为什么成功/失败;
我们团队项目相对来说是成功的,如果重来一次的话,我还是会选择这个团队,我们这个团队项目成功的关键是我们有较强硬的技术措施以及组织管理措施。
6. 总结一下你们团队在做项目时大家的时间安排情况。
我们团队在每次的实验发布之后,先开一下会(课间面对面或者QQ群了),讨论存在的问题,给成员分配任务,提交实验博客前一天询问进展,当然完成这些任务的时间都是空堂、晚自习或者周末。项目编程时,团队成员一般安排在下午或者晚自习时间,写2个小时左右,有时会在中午加1个小时的班。
7. 对下一届软工课实践教学的建议,或者对于开学初的你,对于大一的你,对于开学初的老师,你有什么想建议和告知的呢?对于后来人的期许。
时间匆匆,马上就大四了,三年自己成长了许多,最让自己遗憾的是大一的我,没有把握好那时的时间,做好自己应该做的事。我想对大一的同学说,机会是留给有准备的人的。也许学校不是你想象中的那样好,但你千万不要成为那个你最讨厌的人。请抓住当下,学好理论,做好实践,记得我们是“学生”。
四、你还有什么想说得话