一、学期初,实验一中的任务4,大家拟定了5个准备从课程学习中找到答案的问题,通过一个学期的学习,相信大家已经有了答案,请根据自己的学习实践回答自己当初提的问题,并提出一个新的问题。
<1> 在阅读了第三章 "软件工程师的成长"后了解到了工程师掌握知识的四个阶段:"入门(Introductory)、熟练(Competency)、带头人(Leadership)、大师(Mastery)"但我还是不明白成为一名合格的软件工程师需要具备哪些专业知识和开发经验与要求?
通过一学期的学习,让我认识到成为一个合格的软件工程师应该具备一下6个基本素质,即良好的编码能力、自觉的规范意识和团队精神、认识和运用数据库的能力、较强的写作能力、具有软件工程的概念和求知欲和进取心。
<2> 在P53页中作者提出了"过早的优化是一切罪恶的根源",而且举了一个生动的例子。我对此有不同的看法,在软件工程开发过程中,如果遇到了问题就及时解决,那到最后问题岂不是越越少?为什么这里说过早的优化是不可取的?
通过软件工程的学习,明白了为什么不能过早的优化,如果把这句话改为“不要在不恰当的时机进行优化”可能会更容易理解一点,很多人写代码的时候,一开始就往性能优化的方向进行代码设计,往往容易失去对总体性能指标的把握,在不适宜的地点和时间进行不必要的工作,而忽略了可读性、移植性、安全性、内聚性等真正需要重视的地方。优化是在需求确定的情况下,进行对系统上的升级,精简结构,提高效率。如果过早优化,会限制各模块或是结构的功能,不利于后期扩展。
<3> P27页提出"100%的代码覆盖率并不等同于100%的正确性!",那怎么才可以达到100%的正确性?
通过学习,我明白了为什么"100%的代码覆盖率并不等同于100%的正确性!",100%的代码覆盖率对程序员来说不是什么难事,但需要做到100d%的正确性就很难了,测试是无穷尽的,就像我们在完成项目的时候,单元测试基本没有完全达到过100%,我觉得有时候也没有必要完全达到100%的代码覆盖,因为有些代码区域的覆盖代价得不偿失。
<4>读了第十七章"人,绩效和职业道德"后我对我们怎样才能尽量短的时间里融入到团队、更快的看清自己的定位以及认识到同伴的优劣而提高我们的编程效率?
<5>第十三章"软件测试"中提出了修改BUG和提高代码效率的多种方法,但是怎么来判断一个程序真正没有BUG?大量的测试吗?如果大量的测试没有检测出存在的BUG时,怎么来判断?
对于程序有没有bug需要大量的测试,如果大量的测试没有检测出bug说明测试用例不好。
二、完成课程的实践总结和给你带来的提升,包括以下内容:
1.统计你在软工课程实践中,完成了多少行的代码;
大概有7000行代码。
2.软工实践的各次作业分别花了多少时间?累计花了多少个小时在软工实践上?平均每周花多少个小时?(做一个列表)
软工作业 |
花费时间 |
平均每周花费时间 |
实验一 软件工程准备 |
10 |
7.5 |
实验二 软件工程个人项目 |
9 |
7.5 |
实验三 软件工程结对项目 |
9 |
7.5 |
实验四 基于原型的软件需求获取 |
10 |
6.5 |
实验五 软件研发团队组建 |
5 |
6.5 |
实验六 团队项目评审与团队项目选题报告 |
9 |
6.5 |
实验七 团队作业3—团队项目的原型设计与开发 |
15 |
7.5 |
实验八 团队作业4—基于原型的团队项目需求调研与分析 |
10 |
7.5 |
实验九 团队作业5—团队项目需求改进与系统设计 |
8 |
7.5 |
实验十 团队作业6—团队项目系统设计改进与详细设计 |
9 |
5.5 |
实验十一 团队作业7—团队项目设计完善&编码测试 |
14 |
6.5 |
实验十二 实验十二 团队作业8—团队项目用户验收评审 |
6 |
6.5 |
3.哪一次作业让你印象最深刻?为什么?
最让我印象深刻的是编码测试的那一次,之前没有软件工程的思想,在划分了任务模块后,就各自写自己的模块,在之前没有编码规范,导致代码整合的出现了很多的问题,让我意识到团都合作中,代码规范的重要性。
4.学习和使用的新软件;
墨刀、 process on git等
5.学习和使用的新工具;
github
6.学习和掌握的新语言、新平台;
博客园
7.学习和掌握的新方法(请具体说明什么方法);
软件工程的思想,知道了如何进行用户调研,如何进行编码规范,如何进行软件测试,如何写软件工程规格说明书等等。
8.其他方面的提升(请具体说明 什么提升)。
通过软件工程的思想来思考问题,团队合作的重要性,还有软件项目完成过程中软件文档的重要性。
三、你认为目前的课程有哪些问题,你有什么更好的建议:
1.你认为本门课程需要在哪里进行改进,具体措施有哪些,包括:时间进度安排,项目难度等均可;
建议在项目完成工程中,时间可以稍微延长一点点,因为本身项目的难度比较大,再加上大家的课程也比较多,在完成工程中,总感觉时间比较紧。
2.你认为助教/老师哪里做的不足,哪里限制太多等;
助教老师还有老师都非常的认真负责,及时的指出我们在学习过程的问题。
3.你认为每次项目的评分标准存在哪些问题,你认为的合理评分准则是怎样的(个人/结对/团队算三个)
对于评分标准,我觉得尽力去做到公平,尽管这很难,设置评分就是来衡量一个同学完成的满意度,如果标准不统一,就会出现做的很认真的同学却没有其他同学的得分高,尽管这个得分也不是唯一的标准,但既然有评分就尽量做到公平。还有就是团队项目完成中,应该对完成任务量多的同学的分数应该高一点,完成的工作量多,就应该获得更高的分数,这样更有利于激发大家的积极性。
4.在结对项目中你是否真正体会到了结对的好处,是否真正严格进行了结对编程,双方的工作量是否相同;
在结对项目中体会到结对的好处,一个人的力量总是有限的,两个人就会有更好的想法,遇到问题也可以很快的想到解决方法。当然在工作量上不能做到100%的相同,模块完成的难度不一样,每个人能力也不一样,但基本上是相同的。
5.你的团队项目是否成功,如果重来一次你是否还会选择这个团队,为什么成功/失败;
我们的团队项目非常的成功,我们完成之前预期的所有的功能,并且按时上线,团队之间合作的很愉快,如果再选一次,我还会选择我们的团队。
6.总结一下你们团队在做项目时大家的时间安排情况。
大家的时间基本都一样,在没有课的时候,一起讨论项目中的问题。
7.对下一届软工课实践教学的建议,或者对于开学初的你,对于大一的你,对于开学初的老师,你有什么想建议和告知的呢?对于后来人的期许。
希望学弟学妹们在软件工程的学习工程中,认真负责的去完成每一次作业,去体会软件工程的思想。将会学到很多东西。
四、你还有什么想说的话
感谢这一学期助教老师,老师的默默付出,让我一次次的改正自己的错误,一点点的进步,感谢你们,让我收获了很多。