一点说明:作为程序员,通常心里是讨厌软件工厂的,但很多时候问题自身皆有其内在理性,并不以个人的偏好而改变其发展的轨迹。

所以程序员一旦谈及和自身喜好相关的问题时,尤其要摒绝个人好恶,否则就会离问题的真相越来越远,而只有一腔情绪。

就我个人观察软件工厂大致处在这样一种地位:经营管理者迫于成本的压力,总是潜在的期望其可能实现;而程序员群体自身则总是对其嗤之以鼻。

为什么在经营层面软件工厂有如此大的诱惑力?

这不难理解,如果软件可以用工厂的模式来运作,那么程序员的可替换性将被无限强化,这样软件开发的成本就可以大幅度降低。

看看近二十年来中国制造的影响,就可以理解这种廉价劳动力所蕴含的巨大杀伤力。

经营层面话题可以无限丰富,但永远也无法摆脱的则是永恒的利益,而这些利益又是不得不争。

外包,外协人员所有这些东西的出现貌似偶然,但终究是利益驱动。

同样的原因,很多人也总是忘不了软件工厂。

但软件工厂的方向实在是错误的,这种错误不在于口水上的是是非非,而在于使用软件工厂模式投入产出比很低,一样会照成利益上的损失,而非相反。

工厂的特征是按照既定的工艺流程,大批量生产同样的东西,这时候通常会有规模效益。

而软件开发是通过明确概念和逻辑来一次性的创造东西,这时候的特征是规模不经济(diseconomy of scale)。

这点是有很多工程数据可以支撑的。

这也就意味着,创造,创新性的东西是无法和工厂的特征相结合的,而更类似于某种工艺的确认过程。

勉强为软件开发导入工厂模式时,很多人会努力切分想(设计)和做(编码)。

这里的问题在于软件开发中想和做是无法切的干净利落的,想约定了做的方向,但做的过程中必然带着对想的深化。

对于全新的开发,不管需求分析还是架构设计都很难摆脱迭代的特征,这个时候需要的是全员参与及积极的沟通。

独裁体制会阻塞这种信息回路,进而降低效率。

我们可以用一个很简单的公式来做些推导:

生产率:Productivity =  Scale/MM  单位:KSLOC/MM

其中,Scale代表最终软件产品的规模,我们用代码行来做度量规模的单位。

MM则是开发此软件产品所花费的人月。

而与此同时,Scale = Coding Speed *Coding MM。

Coding Speed是指一个程序员编写代码的速度(不是指生产率),而Coding MM则是指所有程序员 用来编码的时间。

把这两个简单的公式合在一起,生产率的公式将变为:

Productivity =  Coding Speed* CodingMM/Total MM  单位:KSLOC/MM

如果我们假设Coding Speed是一个程序员写出Bug最少,质量最佳代码的时间,那么显然生产率主要和程序员的能力以及编码所投入的时间有关。

而软件工厂模式恰恰与此相反,编码速度较低,耗费在沟通上时间会多,所以生产率大致上是低的。

顺道一提:李开复先生的公司叫创新工厂,这很有意思,从本质上看,专注创新的一定不是工厂,而工厂的使命也一定不主要是创新。

这是一个充满矛盾的名字,只是不知道从何而来。

--------------------------------------------------------------

理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。

转载于:https://www.cnblogs.com/daoshi/archive/2012/03/28/2420499.html

软件工厂是否真的可能存在?相关推荐

  1. MDSF:在线查看【模型驱动软件工厂】文章汇总

    OpenExpressApp是我前年开始写的一个框架,最近没有怎么更新,有些关心的朋友还问我进度以及是否停止了,在这里我想和大家说的是,OEA还一直在做着,我的目标并没有因为我的精力分布较多而改变,O ...

  2. 《企业软件交付:敏捷与高效管理精要》——3.4 企业软件交付的软件工厂方法...

    3.4 企业软件交付的软件工厂方法 正如我们前面讨论的,今天的机构面对的商业环境正以前所未有的速度发生变化.与此同时,这些机构还要管理和降低整个机构的运营成本.这就直接意味着,他们不仅要最大限度地减少 ...

  3. 【转】Web服务软件工厂

    patterns & practices开发中心 摘要 Web服务软件工厂(英文为Web Service Software Factory,也称作服务工厂)是一个集成的工具.模式.源代码和规范 ...

  4. Web服务软件工厂(WSSF)演练之三:创建服务契约和实现方法

    Web Services Software Factory Web服务软件工厂(WSSF)演练之三:创建服务契约和实现方法 关键字:Web Services Software Factory, Ser ...

  5. Pixelmator Pro比肩Photoshop,专业的图像处理软件,是真的吗?

    随着 Pixelmator Pro(点击安装)发布,原先的 Pixelmator 也更名 Pixelmator Classic.据说Pixelmator Pro比肩Photoshop,专业的图像处理软 ...

  6. 打造数字化软件工厂 —— 一站式 DevOps 平台全景解读

    本文为 CODING 协同产品总监张路宇 在腾讯云 CIF 工程效能峰会上所做的分享.文末可前往峰会官网,观看回放并下载 PPT. 欢迎各位朋友,来到腾讯云 CIF 工程效能峰会的分论坛,我是 COD ...

  7. 工厂软件支持及测试是什么,软件工厂

    [编辑] 什么是软件工厂 软件工厂是软件生产实现社会化.标准化的一种组织形式,是能按需要形成批量生产软件产品的场所. [编辑] 软件工厂的工作过程 产品线开发的目标是为一个产品系列提供生产资产.我们可 ...

  8. 软件观点 - 软件工厂方法

    软件工厂由四个基础构建块组成,分别是产品线工程,架构框架,模型驱动开发和构建指南. 产品线工程 1 软件产品线是指具有一组可管理的共同特性的软件密集性系统的集合,这些系统满足特定的市场需求或任务需求, ...

  9. 威迅教育软件工厂正式入驻无锡软件园

    近日,威迅教育软件工厂与无锡(国家)软件园的项目签约仪式在无锡软件园举行.江苏省委常委.无锡市委书记杨卫泽,无锡市及园区领导陈振一.徐劼.许刚.许卫国.谈学明和倪斌等出席了仪式. 威迅教育软件工厂(L ...

最新文章

  1. httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过htt......
  2. 为什么Java中有多态?
  3. iOS使用WSDL2ObjC工具调用Webservice接口
  4. ELK7.8.1的Docker搭建过程
  5. 点击按钮打开选择文件对话框
  6. easypoi导出word表格_Java导出word文档(POIamp;Spire.Doc)
  7. python改变背景颜色_python中绘图时怎么改背景颜色?
  8. jsp调用servlet方法_Servlet的运行原理
  9. ubuntu 下c语言开发环境搭建,Ubuntu下Object-c的开发环境搭建
  10. 4G DTU设备数据上传阿里云微信小程序获取阿里云设备数据
  11. java 文件 锁定,Java中的文件锁定
  12. mysql完全卸载教程(图文详细)
  13. Unity 随机生成中文名字
  14. 功率因数 matlab,基于MATLAB的有源功率因数校正器设计
  15. wx.login 和 wx.getUserProfile 同时使用问题
  16. 三刷红宝书之 JavaScript 的引用类型
  17. C++中用 GetModuleFileName()函数 获得程序当前的运行目录
  18. unity3d是干啥的
  19. Java 百度地图 根据经纬度(坐标) 获取乡镇
  20. 淘宝 API 开发步骤

热门文章

  1. CentOS6安裝Cacti
  2. 如何转移域名到GoDaddy.com
  3. 我的crystal report for asp.net測試通過了
  4. android studio 以源码形式导入volley作为library,SDK的目录结构
  5. Android.text.TextUtils类
  6. android 如何拖动控件的实现
  7. android addView的使用
  8. 【Android】进程
  9. View-屏幕坐标 Content-网页(内容)坐标 mScrollX和mScrollY-屏幕坐标偏移
  10. WebView http图片加载失败