第一部分 - 每周例行报告
一、本周psp
二、进度条
三、累计图
1.饼状图
2.博客字数累计柱状图
3.代码行数累计柱状图
4.代码累计折线图
5.博客字数累计折线图
第二部分
自我介绍
- 苗威,现就读于东北师范大学研究生计算机技术专业。本科毕业于长春理工大学网络工程专业。对于我自己来说,从小很早就开始接触到计算机,因此对计算机一直就有很强的兴趣。初中高中就自己尝试学习编写代码,实现简单功能。但又因为升学压力,忙于中考和高考,对于计算机的学习也仅仅停留在希望学习之上。因为自己从小对计算机很感兴趣,高中非常痴迷自己拆装机器,研究有意思的软件,并且长时间逛各大论坛,贴吧,社区了解有关计算机的知识。但又知道自己这些仅仅只是皮毛而已,所以一直就想大学考取计算机相关专业进行系统有效的学习。
一. 回想一下你曾经对计算机专业的畅想
1.当初你是如何做出选择计算机专业的决定的?
2.你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?
3.你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?
- 1.就像我对自己的自我介绍一样,因为自己从小就对计算机抱有强烈的兴趣,所以初高中开始就多次尝试自己学习计算机的专业知识。但由于学业压力,对于计算机也只能保持在兴趣的阶段,并没有实质的学习。小学的时候接触到游戏很自然的对于计算机就产生很大的兴趣,我的兴趣爱好十分广泛,所以在接触到这个新鲜事物的时候很自然的想去多了解它。初中的时候,让我印象很深刻的就是周周都会买很多计算机相关的杂志报纸。例如大众软件,网友世界,计算机爱好者,电脑报等等。在这些杂志报纸的内容之中,不但让我对于计算机有了初步的认识也让我在那时候就坚定了自己将来要从事计算机的相关工作。刚上高中的时候,对于台式整机的拆装,攒机非常感兴趣。我还清楚的记得当时第一次自己拆机的时候,因为心急在通电状态直接拔掉了独立网卡,让主板直接冒了烟。但这反而让我更想多的了解计算机。出于这种强烈的兴趣,多个假期都在电脑配件店帮忙,打工。希望学到更多有关计算机的知识。所以大学的时候选择计算机专业是我自己的强烈意愿,非计算机不学的态度而选择的计算机。同时家人也十分支持我学习这门专业。
- 2.总体来说的话,本科计算机的课程让我一度感觉到很迷茫。因为我对计算机一直都抱有强大的热情,所以我对进入大学学习计算机有着强烈的意愿和期望。但是真正进入大学之后,首先接触的就是c++的专业课。在学习一个月时间左右,我感觉到非常迷茫。因为我没想到大学对于计算机的教学几乎全是围绕代码的编写。同时没办法避免的是,计算机的太多地方都要与数学有关。这对于刚进入大学的我来说感觉异常不解。因为对于计算机来说,我当时最感兴趣的就是拆装机或者折腾一些很有趣的软件,优化系统这些。但是大学的课程几乎全是围绕代码和数学。这让我迷茫了很长时间。加上我之前看的很多很多的杂志报纸根本不会提到代码编程等,所以这种先入为主的观念让我认为计算机的课程学习不应该是本科教学的样子。大一上学期结束的寒假,我和我一个从事计算机行业很多年的家人谈了很久,他的话让我对计算机学习有了真正的认识。其实我并不是不喜欢编写代码,只是没想到本科计算机的学习会这么单调。和我之前的想法出入太大,我才会感觉不适。从那之后,我开始对计算机又重新拾起了热情,从最基础的开始,从提高自己的编码能力开始。
- 3.就像我之前所说的,计算机是我最喜欢的领域。无论是我的兴趣还是我以后希望从事的工作,我一直都坚定不移的认为是计算机。但是因为当时初入大学的时候,几乎全是代码的东西和我之前的想法出入很大,所以编码能力的确是我的弱势。可能我不是特别擅长这个领域,但我希望工作学习让我开始变得擅长。这既是我的目标也是为了完成我一直的愿望。
二. 考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
- 在大学本科期间,尝试过很多途径来提高我的计算机专业能力。尝试过参加ACM比赛,尝试过自己编写简单的游戏,尝试过自己搭建服务器等等。但是大多都是对照的教程一步一步来,自己完全独立的却很少。在本科四年的期间,通过课程的学习对计算机的基础知识掌握了一些,但也知识皮毛而已。对C++,JAVA,PHP,JavaScript,MySQL都了解一些但又都不精通。现在想尽快掌握java和python。对于计算机网络,算法设计,计算机组成原理等这些基础专业学科也只是了解一二,掌握的并不牢固。所以一直觉得自己离一个全完合格的计算机从业人员还有很大很大的差距。尤其在编码上,由于没有很多经历,所以代码能力也是我想尽快弥补的。希望在研究生的三年期间,把自己的代码能力可能提高到至少拿得出手。
三. 每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?针对你的选择,你给自己的本学期的规划是什么?
- 1.对于选择,我更想选择工程项目,但是因为自己的内心,其实又不想一整天坐在电脑前编写代码,我觉得这不是我的强项,也不是我所期待的。但是既然选择想要进入网络公司,编码能力又必定不可或缺,所以在我大学期间就坚定了还是要不断提高自己的代码能力。我想设计出高效实用的东西,让计算机变得更实用,更高效。可能我的优势在于了解的东西相对来说多一些,眼界比较开阔一些。因为经常浏览各大国内外社区论坛,订阅各种rss,毕竟我自己的兴趣就在计算机上,所以很喜欢看有关计算机的各种东西。喜欢自己折腾有趣的软件,折腾一些插件脚本,折腾很多计算机稀奇古怪有趣的东西。大学期间又接触到吾爱破解论坛,又开始对脱壳破解,逆向等有很大兴趣。但是其实这些也仅仅是了解。认真审视自己发现自己掌握的东西全部都是皮毛而已,太过肤浅。所以自己的差距还是非常非常大。我感兴趣的东西非常多,都花费时间精力去了解去折腾,但又不特别精通。这就导致我的代码能力没有锻炼得像其他同学那么强。
- 2.本学期我对自己规划就是,认真的学习python,掌握spring。同时开始学习机器学习,深度学习的相关基础知识。在锻炼自己的代码能力的同时,学习领域内的基础知识。
四. 你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上?
- 我希望可以通过软件工程这门课来锻炼我的代码能力,补足我最薄弱的地方。为以后找到自己心仪的并且期盼已久的计算机工作做最好的准备。我打算在这门课程中每周分出十小时左右的时间。
第三部分 -《构建之法》读后之感
- 拜读完构建之法之后,对我的第一个感觉就是了解到了软件工程的重要性与结构性。如同工程的建设,它需要一个合适的计划,得心应手的工具,以及个人的能力与技术,同时还需要相互的合作等很多要求。不是简简单单的就可以完成的任务。这本书之中引用了很多生动形象的例子,让我可以更好的理解有些生涩难懂的概念定义。这对我学习软件工程带来了很多的帮助。之前我也读过一些软件工程的书籍,大多都是概念太多,解释的有很难懂。而这本书让我对软件工程的学习又有了新的认识。
- 问答环节
1.代码复审的形式有哪些?复审的目的又是什么?
在我自己读这本书之前,我一直认为代码复审只需要自己审查一遍就好。书中要求代码复审包括:自我复审,同伴复审,团队复审。复审的目的在于
(1)最基础的找出代码的错误。
(2)发现逻辑错误。在自己编写代码的时候,可能会遇到虽然代码可以正常的运行,但是其实代码本身存在着逻辑错误的问题。
(3)发现算法错误。因为不同的算法会有不同的优化程度,所以复审对于算法的检查也是必要的。
(4)发现潜在的错误,和回归性的错误。
(5)发现可能需要改进的地方。
(6)教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码同时熟悉和应用领域相关的实际知识。
提问:同伴或者团队复审的时候,是否花费的时间精力的代价会难以估计,是否有更有效的方法?
2.用户体验有哪些重要的要素,评价的标准又是什么?
用户的体验评价标准可以参考费茨法则(Fitts law)、Nielsen启发式评估十条原则以及其他经验。原则包括
(1) 尽快提供可感触的反馈系统状态
(2) 系统界面符合用户的现实惯例(Familiarity,Avoid Surprise)
(3)用户有控制权
(4) 一致性和标准化
(5)适合各种类型的用户
(6)帮助用户识别、诊断并修复错误
(7)有必要的提示和帮助文档
提问:考虑到实际情况,帮助文档是否在大多用户眼中很难去自己学习。能否有更好的办法让用户更好的使用软件,从而获得更好的体验。
3.提问:书中在敏捷流程中提到不要和管理层谈流程,他们只关心结果。因为我还没有工作经验,对于这个问题有些不解。如果和管理层完全不谈流程,如果在工作量巨大的情况之下,那么怎么才能保证结果按时完成?这时是否迫切的需要和管理层进行交流?
4.提问:书中在msf敏捷开发模式中提到更强调与用户的交流,因为项目的商业价值要用户说的算。我非常同意这个看法,因为用户才是项目的最终目标。但是在实际情况中,经常会出现用户的想法和设计人员的想法相冲突的情况。在这种状况下,要怎么权衡自己和用户的感受。如果一味的坚持采用用户的想法,是不是会挡住创新的路?
5.提问:在进行测试的时候,提到微软的bug bash活动。我认为这个活动确实可以开阔思路,让测试更加完整。但在实际情况中,如同书中所说,容易遇到滥竽充数的情况。结合实际的成本问题,这种活动展开的意义是不是就变得很小?能否跳过这个阶段?
第四部分 - 采访往届学生
- 采访本课程往届同学(含外校和毕业生). 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下。
1.当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
我们做的是类似于俄罗斯方块的小游戏。作为一个休闲游戏,当时用户大概是百人左右。现在具体的人数已经不好统计了
2.这个项目能否给我们团队继续开发,源代码/文档还有么?
当时的团队里应该还有人保存着,如果想要继续开发完善应该也是可以的。不过我们这仅仅是一个小项目,对你的帮助可能也很有限。
3.项目开发有什么经验和教训
做一个完整的项目,首先要找好产品的定位,面向的主要用户,做好调查。之后要协调好团队内部的工作,保证每个人各司其职。这样不仅能够提高效率,也能让项目的质量完成的尽量好。教训就是一开始节奏太慢,导致团队内部的工作不同步,造成时间上的浪费。加上当时开发的经验太少,有些眼高手低,后期测试出错的地方很多。修改了很长时间才完成这个小项目。
4.对学好软件工程有什么建议
首先要管理好自己投入这门课程的时间,在完成项目的同时要不断的学习。当然了,基础知识也要掌握牢固,不然会对项目的开发造成影响。其次就是在学习理论知识的同时不能忘记要投入大量时间实实在在的操作。这样才能真正学好这门课程。
第五部分 - 评价作品
1.五子棋游戏:http://www.cnblogs.com/wanghaiting/p/6115462.html
这个作品是一个相对来说比较简单的五子棋游戏,可以进行两人对战,并且具有保存和提示的功能。
这款游戏是一款简单,方便,大家都熟知的。作为一个棋牌类的小游戏,该有的功能它都具备。但是交互方式是通过wasd键盘来操作,就显得有些不够方便。同时,作为一款五子棋游戏,这款作品的棋盘有些小,考虑到五子棋的游戏特性,棋盘是肯定不够用的。值得称赞的是,它具备了提醒的功能,更加完善了用户的体验。
2.题库系统:http://www.cnblogs.com/linjinzhou/p/6117458.html
这个作品是为了给临近期末考试的学生帮助他们来背题做题。同时支持自行录入题目,这样让软件更加灵活,方便学生的复习。
我把这款作品拿来说的目的就是,它作为一个作品,该有的功能都可以实现。期末时候题库确实可以为学生的复习带来很大的便利。但是同时,他的界面过于简单。导致操作逻辑虽然不难,但是步骤却很多,导致不方便用户的操作。作为项目的编写人员,也同时要考虑到用户的操作和体验。
3.旅游app:http://www.cnblogs.com/FadedWhite/p/6106932.html
这个作品是为了方便人们出行旅游而设计的移动端app。它不仅可以同步旅游景区的最新信息,同时也可以在app上直接预定酒店,机票等。极大方便了人们旅游出行的需求。同时为了用户的个人隐私也做出了相应的保护。
最后作为点评,我把这个相对成熟的项目放在最后来说。相对于第一款作品,它的交互方式符合用户的操作习惯。相对于第二个作品来说,它的操作界面明显更好。同时作为一个手机app,它希望实现的基本功能都可以实现。同时它的整体界面,也和目前主流的手机app相符。定位准确,设计符合用户操作习惯才能让一款项目可以有真正的实用价值。