作业参考:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10111
回顾0
所属团队:构建之法
团队链接:https://www.cnblogs.com/goujianzhifa/
团队项目:别吃错咯
项目链接:https://www.cnblogs.com/goujianzhifa/p/11641717.html
在本学期学到的新软件新工具是用Git Bash对代码进行版本控制,并在完成作业期间学习了Python语言,提高了对JetBrains PyCharm Community Edition 2019.2.2 x64开发平台使用的熟练程度。
回顾1
(1)回想一下你曾经对计算机专业的畅想
当初因为计算机专业比较容易就业,所以选择了学习计算机专业,经过这一学期的学习,我意识到并不是计算机专业好就业,而是专业性很好的人才才会找到比较好的工作,所以我还要继续努力,学好专业知识。在过去几年的学习中,我所学的课程都是计算机专业的基础课程,但现在看来这些课程对于以后的工作是远远不够的,所以我要在研究生期间学习更加前沿的专业知识,为以后的工作为好准备。经过这一学期的学习,我依然很喜欢计算机这个专业,但是也意识到自己并不擅长这一领域。
(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
在成为研究生之前,我了解了c语言,Java语言的语法、数据结构等其他计算机专业的基础知识、能够做一些简单的程序设计并实现程序,但是对于成为一个合格的研究生远远不够,我还要学习python语言、机器学习,还要看一些与研究方向相关的论文,努力提高自己。
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?针对你的选择,你给自己的本学期的规划是什么?
经过一学期的学习,我更加清楚的认识到了自己的不足,实践经验太少,动手能力不好,所以我的选择依然是认真做好学术研究,在这个基础上进行一定的社会实践。我接下来的学习中,我要多看一些论文,然后多进行实践练习,多学多练。
(4)你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上?
经过一个学期,我的期待还是通过学习这门课,可以对程序开发有一个系统的认识,可以了解程序开发中的一些流程和各个步骤需要完成哪些工作,以及在团队中如果与同事合作。我打算平均每周拿出12小时左右用在这门课上,实测结果每周用了7.3小时。
回顾2
1.5个问题
问题一:有没有什么标准可以判断一个软件是“足够好”了呢?
经过一学期的学习,我的想法是没有一个具体的标准可以衡量软件“足够好”,只是要在时间,成本等各种因素的权衡下争取做出符合用户要求和预期的软件,因为软件做出来是要人使用的,所以用户的满意程度可以很大程度上反应出一个软件到底好不好,是不是“足够好”。
问题二:一个程序中有绝对互相独立的层次吗?
程序中的各个模块都是相互依赖的,否则它们就不会出现在一个程序中。一般情况下,单元测试中的模块可以直接引用其他的模块,并期待其他的模块能返回正确的结果。
问题三:一定要成为领域的专家,才能创新吗?
我认为并不是,这两者的因果关系可以是相互的,一个领域的专家当然可以在其领域有所创新,但创新不只是专家拥有的权利和能力,只要肯努力,普通人一样有这样的机会。
问题四:为什么可以经常发布可用的软件,间隔能短则短呢?
这是敏捷开发的原则之一,这样可以增加用户可选择的范围,用户可以选择是否更新,看到喜欢的功能就可以下个新版本。
问题五:对于一个软件,到底是创新更重要,还是扎实的技术基础更重要?
经过一个学期的学习,我认为还是扎实的技术基础更重要,因为软件的一个重要特性是可用性,如果没有扎实的技术基础,那么基础功能都实现不了,又何谈性能或创新呢?
2.请根据本学期的学习、收获、困惑,再提出5个问题,可以是读后不理解的,或者读后反对的。有求有观点、有证据或分析。体验一下,这5个问题,是不是更有深度了
问题一:在第2章中提到软件设计原则中的开闭原则(OCP),为什么说遵循OCP的代价是昂贵的?
问题二:在第3章中职业发展-考级之路中提到的几个职业资格考试,对于现在的就业形势和需求来说需要参加吗?对于其他没有参加考证的人优势大吗?
问题三:第11章中有一句话“ 写好代码后,小飞对照设计文档和代码指南进行自我复审,重构代码。”这里的代码重构指的是什么不太清楚,是编程实现一个程序之后又重新设计一次代码结构吗?这样做的意义是什么?
问题四:第13章中写到“集成测试原则上是当一个模块稳定的时候开始的,不是越早越好”,那么这个合适的时机到底是怎样把握呢?
问题五:在第15章中,对于复杂项目的会诊主要有以下几种处理方式:Must、More Info、No、Like,那么选择哪种处理方式的标准是什么?
3.回忆整个学期,你有什么话想对后来的学弟学妹们说。
回忆整个学期,对于这门课程,最主要的就是老师课下布置的作业,我主要从两个方面说一下对学弟学妹的建议。第一,对于个人作业。由于我的专业基础不好,所以在刚开始做作业的时候很吃力,有很多问题是从前没有接触过的,就像对代码的版本控制,使用TDD测试框架进行单元测试等等,面对一些自己新接触的事物时就要积极地学习,这个学习并不局限于自学,默默地查资料,更有效的办法是去“麻烦”同学和老师们,这样的效率对于我们一周的作业周期来说是更加有优势的,听大佬们一席话会让我们少走一些弯路。但是也不建议遇到问题就直接选择求组,而是要先自己研究,实在遇到自己能力范围之外的困难时去求助,然后再结合自己的研究和大佬的指点,收获会很大。第二,对于团队作业。本学期中团队作业占据了课程很大的一部分,我的观点是即使自己的能力不够,即使要选择“抱大腿”,但也一定要有在团队中的价值,要做一些力所能及的事情,要充分配合大家的工作,不要拖大家后腿。由于本人的能力水平有限,所以建议暂时也只能是这些了。
4.如果重新来过一次,你打算做哪些(技术上,而不是态度上的)改变--基于希望得到什么样的更好结果,你才希望这样改变的;更重要的是,你根据什么估计这些改变会有预期的结果。
如果重来一次,我希望我可以学习一下视频剪辑,可以为团队做出更好的课堂展示视频。
5.终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布及成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。
感谢杨老师和助教老师。首先杨老师是一位认真负责并且有着很高学术素养的老师,每次上课都会很积极地跟着您的思路,下课后总是收获满满。其次,助教老师每周批改我们的作业也辛苦啦,也感谢助教老师给我们提出的指点和建议。
总结
1.代码总量,平均每周代码量。
代码总量:528 平均每周:48
2.博客字数总量,平均每周字数。
总量:13323 平均每周:1211
3.根据PSP,平均每周在本课程中所用时间(是的,请再回答一次)多少小时。
平均每周:7.3小时
4.进度条总结: 遍历每周知识点,以周为单位做如下表格。
起止时间 | 提交PSP例行报告时总结的知识点 | 现在回顾该周收获的知识点 |
2019.09.05-2019.09.12 | PSP、敏捷开发 |
本周主要阅读了《构建之法》,收获了一些软件工程的 基本概念以及回答了一些博客问题 |
2019.09.12-2019.09.19 | PSP、Git | 本周做了词频统计项目,学会了使用Git进行版本控制 |
2019.09.19-2019.09.26 | 单元测试、PSP | 本周结对编程完成四则运算,还对词频统计项目进行了单元测试 |
2019.09.26-2019.10.02 | PSP | 本周主要进行了团队作业的选题,并开始每周例会 |
2019.10.02-2019.10.10 | PSP | 本周主要确定了团队作业的选题,并进行程序开发 |
2019.10.10-2019.10.17 | PSP | 本周为Alpha阶段第二周,主要是团队成员进行程序开发 |
2019.10.17-2019.10.24 | PSP | 本周为Alpha发布,主要收集用户使用体验,并召开事后诸葛会议 |
2019.10.24-2019.10.31 | PSP | 本周为Beta阶段第一周,主要查阅解决程序中闪屏问题的方法 |
2019.10.31-2019.11.07 | PSP | 本周为Beta阶段第二周,主要设法解决程序中闪屏问题 |
2019.11.07-2019.11.14 | PSP、事后诸葛会议 | 本周为Beta发布,主要收集用户使用体验,并召开事后诸葛会议 |
2019.11.14-2019.11.21 | PSP | 本周为final阶段,主要根据之前的用户反馈对程序进行完善 |
- 时间分配堆积柱状图。如图所示,给出每周的时间分配,数据来源是每周的PSP。