软件工程 第二周
软件工程 第二周
目录
1.提出问题
1. 提出问题
-
第一章一上来就提出了几个问题,作者也试着作出了自己的解答。但是我看完之后,我觉得程序(算法、数据结构)是基本功,这个观点似乎论证得不够充分,文中只带过了这么一句“……源程序,就是这么一行行的代码。它们是建立在数据结构上的一些算法。……”,同样也没有能够解答我的疑惑。这一章的介绍更偏重于软件工程之于软件的重要性。那我的问题是数据结构作为计算机专业学生的必修课,最重要的原因是什么;老师反复强调算法的重要性的原因又是什么?这个问题,我亟待了解。我们大二的学弟学妹们,就因为几乎没什么人选算法,最后这门课干脆直接取消,似乎大家都觉得算法这门课没什么用。数据结构大家学了之后也基本都扔掉了,只有考研的时候才会再捡起来。确实我们随便上GitHub上找找,就能发现别人都已经实现好的数据结构或者是实现好的算法,我们大部分时间也是调用别人已经写好的库或者是模块,亲自造轮子的真的算是少数。所以这样的理论课到底应该是所有人的必修,还是少数人的选修?
-
第三章中有一个绞刑架和职业发展的讨论,想问下作者,就您的认为,现在的软件开发工作相比于10年前、20年前、甚至30年前软件工具和软件工程理论方兴未艾之时,是更容易了还是更复杂了?关于这个问题能不能用典型的人口增长模型来解释呢(虽然这个模型有一些缺陷,但是相对来说方便理解)?程序员的数量相比于过去肯定是增加的,为什么会增加呢?这个数量存不存在一个上界来约束,如果有的话,限制程序员数量增加的紧俏资源是什么呢?
-
关于用户体验的这个部分,有个文字编辑的对比。Word 2007之后的版本可以双击文档正中实现居中,我也是今天才知道的。那这种一般比较难发现的功能,即使写出来了怎么去让别人发现,更加方便别人使用呢?还有针对LaTeX和VI这样的,认知阻力相对比较大的软件,有必要为了降低认知阻力而作出一些改进吗,如果有,那应该作出那些改变呢?我觉得这就像算法当中一个时空平衡的概念,算法改进到一定的地步,要继续降低空间开销,就必须增加时间开销,反之亦然。那这些软件是否也是这样?很多人写论文会用LaTeX,用VI或者EMACS的也都是熟练的计算机专业人员,那么这些软件的用户人群是不是也就是这些人?
-
这本书的页码为什么是标在章标题的左边,而不是传统的目录结构,而且为什么小节都没有页码,作者这样设计的目的是什么?
-
最后一个问题就是关于这门课的本身。这边就问一个确实很愚蠢的问题,对于不同方向的学生到底应该以什么样的态度去对待这么课?我问出这个问题并不是想偷懒,恰恰相反,很多课我都感兴趣,都想学得很好,但是这无疑就是要花更多的时间,只是正如作者在书中所说“不可能在两个地方同时做猪,这太难了”。去年在Java课上第一次接触到了博客,就觉得手忙脚乱,对于基础不是那么好的自己或许要花很多时间才能够让博客作业看上去不那么敷衍,同时还要准备竞赛,还要跟进老师的项目等等,很多时候都逼自己熬到晚上一两点钟。这几天粗糙地读了一遍书,很显然软件工程更是一个庞然大物,确实又害怕了起来,不知道该怎么应对,再加上这次主要又是团队开发,要非常非常努力,或许才能看上去不是像在划水、在混日子,那其他的课程应该怎么兼顾?准备考研的同学应该怎么分配时间?以后不搞软件开发的同学又该怎么应付?虽然在哪个地方做猪是自己的决定,但是还是希望作者和老师能够传授一些人生的经验,稍稍指点我们一下。我也知道有很多学长学姐都通过软件工程学习到了很多东西,做出了很好的软件,那他们又都是怎么应对的呢?