201521123018《软件工程》个人阅读作业2-提问题

提出问题

如何提出有价值的问题?

请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互联网时代如何提问题。
还有这些要点:

  • 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文
  • 列出一些事例或资料,支持你的提问。
  • 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?

模板

一个模板可以是这样:

我看了这一段文字 (引用文字),有这个问题(提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。

或者这样:

我反对作者的观点(提出作者的观点,自己的观点,以及理由)。

大学生应该能写出自己的思考, 而不是摘抄书本内容。

提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。

问题1:关于软件工程复杂性、易变性

书上的解释:

复杂性——软件可以说是人类创造的最复杂的系统类型。大型软件(操作系统、办公软件、搜索引擎)有超过百万行的源代码,上万个不同的文件。……软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。而理解运用这些复杂性的人并没有太大的变化。
易变性——软件看上去很容易修改,修改软件比修改硬件容易多了。……但是与此同时,正确地修改软件是一件很困难的事情。

问题:

复杂性就是代码数量庞大吗?还有没有什么其它的特点呢?
易变性是指软件本身是容易修改的 ,是修改源代码吗?

问题2:关于过早优化

书上的解释:

过早优化: 既然软件是“软”的,那它就有很大的可塑性,可以不断改进。放眼望去,一个复杂的软件似可很多模块都可以变得更好。一个工程师在写程序的时候,经常容易在某一个
局部可题上陷进去,花大量时间对其进行优化、无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。这个毛病早就被归纳为“过早的优化是一切罪恶的根源”。

问题:

关于程序优化的时机,这真的是一个令人头疼的问题,在程序设计或课设过程中,对于某个模块既希望优化使其能具有更强大的功能,但又担心能否在最终将其全部功能都充分利用到而纠结半天,究竟怎样才能避免过早优化,怎样确定程序优化的时机?

问题3:关于软件开发的质量与re-work(返工)

书上的解释:

软件开发的工作量和质量怎么衡量呢? 第2 章提到的PSP认为有下列4个因素:
a.项目/任务有多大?
说明项目的大小,一般月代码行数(LineOfCode,LOC) 来表示; 也可以用功能点(Function Point) 来表示。
b.花了多少时间?
可以用小时、天、月、年来表示。一组人所花费的时间可以用(人数x 时间)来表示,例如某项目花费了10个人x 月。
c.质量如何?
交付的代码中有多少缺陷? 交付有两个定义:①在代码完成(code complete)时,交付给测试人员;②在软件最终发布时交付给顾客。

笔者认为,re-work 只是表明在软件开发过程中花费的时间,re-work 的多寡并不跟最终的质量成正比关系,软件开发过程很大程度上是一个探索和实验的过程,不同的re-work能帮助工程师深人了解项目的各个难点,尽早交付原型,找到最优解决方案,等等。因此,re-work是有价值的。当然,如具一个程序员为了一个简单的问题而不断地re-work,其工作效率就不是太高一这可以用时间花费来衡量。

问题:

为何说re-work 的多寡并不跟最终的质量成正比关系,当工程师从程序中发现了问题并进行re-work,这样程序的质量也会随着提高,发现越多的问题,进行越多次的re-work难道不应该使最终的质量更好吗?

问题4:关于BUG

书上的解释:

什么是Bug呢?简单地说,软件的行为和用户的期望值不一样,就叫Bug。是否是Bug,取决于用户,开发者的不同角度。

问题:

从书上给的两个例子可以看到,当用户和软件优化有冲突,期望值不一样时,那这时候要怎么选择?是从用户的角度还是从软件优化的角度?

问题5:关于结对编程

书上的解释:

驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作有一小时休息15分钟。领航员要控制时间。

问题:

那如何把握好轮换的时间?

posted @ 2018-03-18 17:04  原浆  阅读(168)  评论(1编辑  收藏  举报