上一页 1 ··· 5 6 7 8 9
  2012年1月15日
摘要: 软件自身是一种固化的思维,因此从本质上来看,软件是不可度量的。但这并不意味着软件不需要度量,而只是说软件中的度量大多都有一定限度。应用各种度量数据的时候一旦跨过这种限度,结果就会适得其反。在这篇文章里,我们将考查一下现有的,对软件进行度量的方法(注意:这篇里主要考察别人的方法,不是我自己的)。可能不全面,不足的地方欢迎大家进行补充。对软件“直观可见的质量属性”的度量比较简单,比如:Bug率,性能等,这里就不提了。这里主要关注的是软件的内在的,不直观可见的质量属性。圈复杂度圈复杂度主要用于度量函数或方法,从《代码大全》中可以找到圈复杂度的描述。关于圈复杂度:TomMcCabe曾经建议使用下面的方 阅读全文
posted @ 2012-01-15 23:48 理想流 阅读(3243) 评论(2) 推荐(0) 编辑
  2012年1月12日
摘要: 无意间发现,腾讯和360又开始PK。第一次PK应该是在2010年11月,当时对抗十分激烈,腾讯发表声明:将在有360的电脑上停止运行QQ,最终结局是在有关部门的协调下,握手言和。这一次似乎又重复了昨天的故事,腾讯再次发表声明:建议只使用360或腾讯的电脑管家。这事情在没有进一步信息的情形下,很难明断其间是非曲直,但如果我们做一点抽象,有些结论却是显而易见的。为回避不必要的争议,我们来打个比方。假使说有两个农民A和B,住在一个村里,村周围有8000亩土地,现在每人占了100亩,接下来开始各自开荒。结果有一亩地两个人都看中了,两个人各占了半亩后,为了争夺对方那半亩就开始PK,可能是A割了B的庄稼, 阅读全文
posted @ 2012-01-12 22:45 理想流 阅读(1011) 评论(4) 推荐(1) 编辑
  2012年1月2日
摘要: 对于特定的人,在大致时间段里他所能写的、确定质量的代码基本上应该是个确定值。这点似乎显而易见,但事实上大多时候却总是被忽视。如果项目负责人总是认可上面的基本点,那么任何项目的日程就应该以此为前提,而不是以此为变量。假设说一个项目被估计为1万行(SLOC),团队平均每人每天可以写100行代码,如果团队中有5个人,那么就应该至少为编码保留20整天。说到这里,为避免误解,要区分一下编码速度和生产率这两个概念。项目管理中常用的一个数据被称为生产率,用代码行计算时,会被表示为SLOC/MM。这个值用于表示平均每人月的代码产出。其基本算法是规模除以项目所用的人月,而项目所用的人月中包含了设计、测试、修Bu 阅读全文
posted @ 2012-01-02 19:48 理想流 阅读(20636) 评论(20) 推荐(0) 编辑
  2011年12月26日
摘要: 很多大学里是把软件开发相关的专业划入工科的,这给人一种错觉,让人认为软件开发也是一个工程学科,就像土木建筑,动力机械那样。但这从根本上错了,土木建筑,动力机械的背后有确实的科学定律作为支撑,而软件开发的背后基本上什么都没有,远不是一种“科学”。也正因此,“软件工程”的现实意义也就远不如“土木工程”,“动力工程”。每个人对“科学”的定义可能不同,但在这里,我们可以做一个简化版的定义:当有一组在限定条件下颠扑不破的定律做支撑时,相应的知识,我们可以称之为科学,科学自身可以体现为一种确定性。比如说:牛顿的力学定律在低速时是不容违反的,是一种铁则,那基于此的各种知识就可以成为科学。从这个视角出发,我们 阅读全文
posted @ 2011-12-26 00:05 理想流 阅读(3446) 评论(50) 推荐(8) 编辑
  2011年12月19日
摘要: 首先要声明的是:这个列表既不权威,也不全面,所有信息仅供参考,本人也不对由此导致的任何后果负任何责任。建立这个列表的初衷来自三个方面:一个是很多人在加入程序员这个行业前,需要对编程语言有一个大致的认知。一个是如果有人要从头开发一个产品终究需要类似的信息做些参考最后一个则是自己的好奇心,在看了国外那张表后,我自己也挺想知道国内的状况究竟是什么样。编程语言是程序员必备诸多技能中的一个,你既不能漠视它的影响,也不能过高估计它的影响。假设说你掌握C++用了7年,无疑的转向Java时,这7年时间不会完全浪费,但损失1~2年是再所难免的。细想起来,人这一生究竟又有多少个1~2年,程序员的职业生涯又有多少个 阅读全文
posted @ 2011-12-19 02:15 理想流 阅读(6987) 评论(108) 推荐(20) 编辑
  2011年12月13日
摘要: 精英化趋势C++是一门引起无数争议的语言。眼下最常听到的声音则是C++将趋于没落,会被某某语言取代。我很怀疑这种论调的起点是商业宣传,C++的真实趋势应该是越来越倾向于精英化。精英化是指在可用可不用C++的领域中,C++将逐渐退出,而所有剩下必须用C++的领域通常都是附加值比较高,难度较高的领域,比如:操作系统,数据库,大型网站后端等。这一过程造成的现象就是在TIOBE上,C++的份额逐步下降。但就像经济上挤泡沫一样,这倒不是C++衰落了,而是原本人们对C++的期望过高了。早在1995年,美国的调查机构就曾经预测:“终端用户”编程从从业人员比率上将占94%,而“基础结构”编程从业人员只占1.5 阅读全文
posted @ 2011-12-13 20:59 理想流 阅读(4736) 评论(53) 推荐(8) 编辑
  2011年12月12日
摘要: 自从《赢》,《基业长青》这些书出了之后,只要是个人,只要他还做管理都会关注文化这个事。这是对的,但关键是在这个事上不能走形式,不能在管理中做虚情假意的文化建设。不知道提到文化这事,每个人会对应到什么?可能有的人会想到宣讲,有的人会想到集体活动(喝酒,唱歌,旅游,培训等),有的人会想到挂图,历史展示等。但事实上这些手段更类似一种枝节,如果没有一个核心支撑,那就很容易变成虚情假意。这个核心支撑就是:你能很清楚的回答你的部下,你的员工在三年(或多年)后它可能得到什么吗?你能很清楚的回答你的部下,你的员工怎么才是一个有效的达成他/她下一个人生目标的有效手段么?在所有其他领域中,人们都在强调利益归属,没 阅读全文
posted @ 2011-12-12 07:17 理想流 阅读(624) 评论(1) 推荐(0) 编辑
  2011年12月5日
摘要: 软件开发是个奇妙的行业。你可以说它复杂,但与此同时,随便有个人,只要接受点培训就可以做软件开发。你也可以说它简单,但据统计世界上一半以上的软件项目会以失败收场。强调软件复杂的最有代表性的观点来自《人月神话》:Brooks认为复杂性是软件的根本特质,而非偶然特质。强调软件简单性的观点则时见于国内某些MIS开发公司以及外包公司:他们大多时候会把需求分析(业务分析)的权重抬的很高,而把设计编码的位置压的很低。这种迷思其实不难打破,但在此之前要对软件的特质做一点考察。软件自身是一种固化的思维,其必同时具有思维的特质以及思维承载之物的特质。这话有点搞,但并不难理解:思维由概念和逻辑组成,所以软件必然由概 阅读全文
posted @ 2011-12-05 18:33 理想流 阅读(700) 评论(4) 推荐(1) 编辑
  2011年11月28日
摘要: 软件是一种固化的思维。其根本组成是概念和逻辑。软件世界中的一切的故事始于一个机器模型,而这个基本的机器模型并不复杂,甚至可以用三个关键概念来概括:指令,数据以及栈。其逻辑也比较简单,即按照指定的顺序,逐步执行各条指令。但也就是这样一个简单的模型,支撑起了整个软件的世界。软件构建的过程就是从客观世界中的概念和逻辑向机器模型逐步进行映射的过程。由于编译器(或解释器)的存在,最后一重映射已经被无限简化,因此我们可以认为以编程语言为载体的代码即是固化后的思维,包含了所有固化后的概念和逻辑。为完成这一任务,首先软件的边界必须清楚,即“要转换的究竟是什么”必须尽可能明确,此即需求开发的根本任务。从需求向最 阅读全文
posted @ 2011-11-28 21:20 理想流 阅读(620) 评论(2) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9