2017秋软工

2017秋软件工程 - 第一次作业

Part 1

0. 自我介绍
  • 王磊,东北师范大学,信息科学与技术学院,2017级计算机技术专业研究生一年级。
1. 回想一下你曾经对计算机专业的畅想
  • 回想高考结束的那个夏天,整个人的兴趣爱好很明显,对于大学本科志愿的专业选择,仅仅保留在金融学以及计算机科学,这两个选择之中任意一个专业都符合我的兴趣方向,由于填报专业顺序的问题,最终选择是计算机专业。
  • 关于大学本科四年所学课程,既有自己期待的方向,也有遗憾没有设置课程的部分。对于计算机专业基础技能的学习,本科各种课程已经可以很好的满足所需,但所有课程教学不说停留在课程表层,至少可以说是没有深度,想要将一门专业技术学好还是需要自己课外的努力的。例如,本科第一门计算机编程语言的学习就是最基础的C语言了,但是书本上的东西看的再多仅仅是停留在表面,对于本科的我们来说,缺少实践绝对是阻碍未来发展的主要问题,一学期课程下来大部分同学可能连编程软件都没有打开过;相比来说的遗憾部分就是没有设置网络安全类似专业,毕竟当时年轻气盛还是比较喜欢黑客(手动滑稽),权当做一个小遗憾吧。
  • 既然我选择了计算机专业,那一定代表着我很喜欢这个领域,并且希望能在本领域中继续发展下去,不论是做科研还是做其他类型工作,难道会有比兴趣爱好恰好正是自己从事的工作更幸福的事情么?但是喜欢并不是擅长,也许再过十年二十年也不敢说自己擅长计算机领域,计算机技术更新迭代速度是难以想象的,选择这个领域必然是一个不断学习的过程,我会抱着谦虚的态度不断学习,向着所谓的“擅长”努力靠近。
2. 考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
  • 由于本科四年一直在ACM集训队中,主攻方向也是各类算法以及数据结构,偏向ACM比赛方向,收获的是比同级人更多的代码量以及算法等相关知识的掌握;四年的学习以及两年的比赛经验,让我拥有快速学习并实践的能力,以及团队合作的能力。
    从事ACM相关的工作的弊端是,并没有将精力投入到项目开发等方面,并且对现阶段火热的Python语言、Swift语言没有进行学习,研究生三年会将主要精力投入到项目开发方向,并且强化独立解决问题的能力。
3. 每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。对照以上你阅读的前人们的经历,你的选择是什么?在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?针对你的选择,你给自己的本学期的规划是什么?
  • 虽然某位老师说过算法是一个需要慢慢沉淀才能有所发展的方向,结合我自身对于算法方面的热爱,我希望可以深入进行算法方面的研究。相对于其他同学来说,优势在于我对于算法已经有了一种熟悉感,也掌握了属于自己的深入学习算法的方式;劣势在于短时间内可能并不能看出什么成效,需要时间的积累以及不停歇的“枯燥”研究。
  • 本学期的规划是,重温线性代数以及概率统计课程;可以掌握并熟练运用Matlab;熟练运用遗传算法、差分进化算法、粒子群算法等七种算法进行实际问题的解决。
4. 你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上?
  • 对于软件工程这门课,我希望可以通过本门课程督促自己学习项目类相关知识,并在课程进行过程中完成属于自己的项目。
  • 我打算平均每天拿出2小时及以上时间对待这门课程。

Part 2

采访本课程往届同学(含外校和毕业生). 现代软件工程这门课已经上了好几年了,以前有很多学生做过团队项目(说不定包括本校的学生),请你们找一个以前的团队采访一下。

我采访的学长是2015级高鑫学长。

Q:学长,你们当时的项目是什么?
A:当时所做的项目是“快乐运算游戏”项目,项目的主要内容是随机给出几个四则运算题,使用者进行作答,作答正确的话将会有积分。

Q:当时的项目有多少用户,给用户多少价值? 现在还有人用吗?
A:测试用户有十几个,都是我们项目组邀请班级同学进行测试的;给予用户的价值是通过游戏的形式进行积分,可以进行“天梯积分”排名,对于刚刚学习四则运算的同学有辅助教学训练的作用,并通过游戏的形式让使用者更加感兴趣;目前是没有人使用的。

Q:这个项目能否给我们团队继续开发,源代码/文档还有么?
A:这个项目可以给你们继续进行开发,源代码和文档我们都进行了备份保存,wiki是在我们的博客中保存,代码是在同组的另一个学长那里进行保存,如果有需要我可以提供给你。

Q:项目开发有什么经验和教训?
A:首先要明确开发目标,再将开发目标进行细化,逐一攻破重点难点;其次是重视团队合作,经常举办小组会议进行交流,明确分工,对于某个部分出现问题应该及时提出并解决,严格遵循开发计划。

Q:对学好软件工程有什么建议?
A:最主要就是动手实践以及沟通吧,项目开发不是简单的一段代码的编写,而是各部分像齿轮一样紧密结合,最后才能使整个项目正常运转。有一句话叫做“纸上得来终觉浅,绝知此事要躬行”,对于学好软件工程以及项目开发都是很适用的。

Part 3

《构建之法》通读后疑问。

通读本书之后,首先让我一举打破了“软件工程类书籍都是枯燥无味”的认知,书中将各种例子与理论知识相结合,可以让读者更加深层次的进行理解,让我更有耐心去进行阅读。通读之后,有以下几个问题:

1. 一个好的工程师需要具备什么条件?

(1) 学会看代码
(2) 复习
(3) 做个人项目
(4) 问答网站

引用自 知乎 2.1K赞同

我的疑问是个人需要熟练掌握的专业技能是哪些?我个人认为“动手做”比“看代码”更为重要,此回答的前提是工程师本人已经拥有丰富的开发经验进而更加完善自身么?

2. 结对编程首要遵循的条件就是代码规范性么?

结对编程可以看作是一个工程项目进行整合的过程,代码规范性固然很重要,但是每个人的编程习惯有所不同,一定要严格遵循某个固定的规则进行编程么?还是只要在整合的过程中,每个成员可以根据工程整体进度将相应模块整合在一起就可以呢?

3. MSF团队模型是网状结构,会不会产生一些弊端?

我理解的所谓网状结构是团队中每个成员各司其职,从而完成整个共同的目标,但这种结构中会不会存在缺乏约束性而导致某个部分的成员“浑水摸鱼”,从而耽误整个工程项目的进展呢?可否在网状结构的基础上,增加管理者或监督者对整个项目进程进行监控,从而达到更有效率完成项目的目标?

4. 需求分析的调研结果如何确定有效性?

工程项目的需求分析可以让工程开发者明确开发方向以及开发目标,可以有效减少开发所需要走的弯路,针对所开发的软件进行用户需求分析是个极为重要的步骤,但是调研出的结果如何确定是真实有效的?根据我以往的经验,身边的人大多数都是对调研之类的事抱有不屑一顾的态度,就算调研样本足够庞大,我认为也不能保证结果就是真实可信的。那么如何保证调研结果的有效性?

5. 一个好的软件要经过多少种测试?

对于软件开发团队来说,测试无疑是一个重中之重的步骤,除了在开发过程中进行实时测试,做到问题早发现早解决,当整个项目进行整合之后,还要进行整体的测试,那么经过多少测试才能证明该项目没有问题可以进行下一步工作?或者说,有没有什么规范要求项目要经过若干个测试才能叫做一个没有bug的软件呢?

对于《构建之法》一书的大致阅读仅仅用了2天共计15小时左右的时间,阅读过程可以说是一目十行,日后会重新仔细阅读此书,再对今天存疑之事重新进行审视回答。

Part 4

根据历年学生发布的git代码和随笔,评论3部软件作品。

1. 北京航空航天大学计算机学院Echo软件团队

作品名称:便利记事本 1.0.1
博客地址:http://www.cnblogs.com/echo-buaa/
代码地址:无
作品截图:
enter image description here
enter image description here
点评:既然为便利笔记本,首先要求的要素就是便利。该项目在本版本中增加了首页悬浮窗,可以随时随地点击并使用该应用;另外的图片记录功能也是值得称赞的。

2. 东北师范大学计算机学院Nice 团队

作品名称:记账本
博客地址:http://www.cnblogs.com/zhengrui0452/
代码地址:https://git.coding.net/puchenglin/AccountApp.git
作品截图:


点评:该软件可以通过对于记录收入和支出,生成相对应的柱状图或饼状图,可以让用户更为直观的了解收入和支出情况,另外手势解锁功能增加了软件的保密性。

3.东北师范大学计算机天天向上团队

作品名称:连连看
博客地址:http://www.cnblogs.com/wangsen123/
代码地址:无
作品截图:
enter image description here
点评:作品在启动过程中有卡顿,游戏过程中连线出现问题,主题及关卡过于单一;界面简洁。

Part 5

每周例行报告

1. 本周PSP

2.本周进度条

3.累计进度图

4.本周PSP饼状图

原文地址:https://www.cnblogs.com/wangl009/p/7503087.html