软件工程第一次阅读作业

项目 内容
这个作业属于哪个课程 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ
这个作业的要求在哪里 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ/homework/2625
我在这个课程的目标是 完成课程中所要求的任务,通过该课程
这个作业在哪个具体方面帮助我实现目标 理解课程大纲,提出问题

提问

1 , 简单地说,软件的行为和用户的期望值不一样,就叫Bug。例如,某聊天软件启动时就崩溃了,用户期望这个聊天软件不能崩溃。例如,某聊天软件不支持视频聊天,用户期望这个聊天软件支持视频聊天。但是该软件的开发人员说,这个软件根本没打算支持视频聊天。这还是一个Bug么?是否是Bug,取决于用户和开发者的不同角度,我们看一个经典小说中的例子:

  • 上述是书中对bug的定义,与自己原本的认知感觉起了冲突,原本认为bug应该属于出错,应该属于客观的内容,不由用户所决定,而书中对bug的描述,更加看重用户以及使用者的看法,更具主观性,查看了相关的定义后,程序错误(英语:Bug),是程序设计中的术语,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。 网上的内容与自己的认知基本一致,想提问文中所说的bug是否是更加广义的定义,或者说,从软件工程的角度,是否bug的定义更加广泛。

2,书中将大四学生与软件工程师进行了相应的对比,以此来说明个人开发流程PSP的特点 ,同时引出优秀软件工程师的PSP流程的思考

  • 就像书中之前所论述的,软件行业比较复杂,不同的项目需求不同,要求也千差万别,PSP表格的各个花费时间占比所能最大表现出该软件工程师哪方面的能力?或者说PSP最大的指导意义是什么?个人理解,学生与职业比较,职业写的代码多,熟练,弄清楚需求之后,编码所用时间自然就下降了。PSP表格的意义是不是不大。

3, 关于代码行数的问题,书中提出了当代码是在2,000行以下,程序员可以用“写了再改”的蛮干方法,并且靠记忆力搞定一个程序,但是,如果你的代码规模达到20,000行,你要用结构化编程(类,模块,API,细节隐藏,面向对象的其他方法,等)来保证程序不变成一团乱麻。如果代码规模再大一个数量级,20万,200万呢?

  • 本身没有写过很多行的代码,2000行层次都没达到,但还是想问200万的,这方面经验很少,相比于普通的代码,大工程网上资料也比较少,所以想提问关于大工程的问题,像200万代码规模的项目这样,感觉这样的工程肯定得靠多人合作来完成,在200万行这种软件的情况下,一般是如何配合团队进行相关开发的。

4, 代码复审的问题,代码复审在书中指出主要用于考虑维护等方面的内容,更多注重于代码的质量问题

  • 关于代码质量的问题,是否是在过程中,或者在写之前给出相应的设计指导是不是会更加好一点。这样造成的设计等问题在刚开始可以容易地进行修改,代码审查看书里好像是安排在测试之后,这时候如果发现不合理地地方,改动起来不是很麻烦嘛

5,结对编程, 书中指出了结对编程的有很多种不适用的场景,但是结对编程也有很多独特的好处,解决了代码审查的很多缺点。同时最后书里也花很大篇幅指出了需要进行有效的沟通,同时要注意沟通方式。

  • 我理解结对编程的关键点还是在于沟通,但沟通其实也是门很大的学问。而且沟通过程中也会出现相应的矛盾,并不是所有矛盾都能得到很好的解决方式,特别是对于模棱两可的问题的时候。这个时候花在沟通方面的精力是否偏离了结对编程为了提高代码质量与效率的初衷,或者说投入产出比是否真的客观。个人感觉,相比于外国,我们表达和处理问题更加含蓄,是否适合结对编程这种方式。

词汇历史

  • 据查阅,软件是1935年图灵所提出的概念,在一篇论文中提出。
  • 而软件工程则是1968年提出,是Margaret Hamilton在阿波罗计划期间发明创造出来的。

计算机发展过程中的冷知识

  • 目前已知的编程语言共有700多种

版本管理与项目管理软件

使用趋势:

  • Git:

    • 优点:使用认识广,使用方便,学习容易
    • 缺点:有些操作比较复杂
  • bitbucket:

    • 优点:拥有免费私有库,支持git
    • 缺点:项目不多
  • Mercurial:

    • 优点:配置方便
    • 缺点:不易于管理
  • Trac:

    • 优点:配置灵活
    • 缺点:无法显示中文文件
posted @ 2019-03-03 23:58  guzhanpeng  阅读(342)  评论(2编辑  收藏  举报