http://blog.csai.cn/user1/21567/archives/2009/36751.html
作者简介:沈东海,和谐软件过程创始人和实践者,中国系统分析顾问团专业顾问(csai),高级工程师,国家系统分析师、高级程序员、网络安全工程师;
也许N多年前就有人提出过软件行业需要规范化,或许有许多人会把软件比做建筑、会计等,同样也有更多的人(“更多”两字一点都不夸张),却强烈反对软件规范化,认为软件行业有自身的特殊性,每个项目也有特殊性,怎么可能要求每个公司、每个人都按照同样的标准来执行呢?再说建筑、会计等和软件差别甚大,根本不能相提并论。
作者虽然只在软件行业打滚7年,但是却深深地感受各公司规范的差异性实在太大,甚至连公司内部都无法统一,要说要让全体软件人都统一执行同样的规范,确实是非常困难的事。但是,从软件行业进一步发展的需要看,从软件人自身的发展需要来说(这点或许更重要),规范的实行已经破在眉睫。很多行业,往往会越做越吃香,而软件行业的人,男的35女的30后,如果走不上管理类岗位,大部分得考虑转型甚至转行,近几年因为转型转行不成而自杀的例子也不少见。因此,作者认为,要执行软件行业规范虽然十分艰难,甚至会有很强大的阻力,但是必须坚决执行、深彻执行。
下面再根据行业的共性和个性来谈谈,软件行业执行行业规范的必要性与可行性。
软件行业确实和其他行业有较大差异。但是透过表面现象来看更深层次的东西,却存在着很多相似性。会计、建筑、医疗、机械制造业等经过上百年至几百年的发展,都已经是非常成熟的产业了,她们的每一个步骤、每一道工序都有非常明细和严格的标准,软件业相比于这些行业来说还是一个处于发展起步阶段的行业,尤其是在中国。软件工程的出现就是为了将软件开发工程化,并确保软件过程正确执行。规范软件过程的目的就是提高产品的质量,降低个体的不确定因素对软件质量的影响,将软件开发置于受控状态下。总之,规范化的目的是提高效率、确保质量、长期发展。
很多人或许会认为“软件开发是一项智力密集、创造性成分较高的劳动”,因此会产生许多非受控的因素,造成软件开发标准规范在实际中难以贯彻执行的错误观念。作者认为软件开发和其他行业一样,有着许多共性,对质量的保证都其实都可以归结为一个管理问题,从这一角度讲,需要遵循的基本原则和面向对象没有什么不同,过分强调软件开发的特殊性其实是软件行业尚不成熟的表现、是对软件过程没有信心的表现。
我们可以借鉴其他成熟行业的质量管理体系,来反思一下软件开发过程的问题。其他很多行业已经拥有长久的历史,形成了一套行之有效的管理模式、规范以及质量管理体系,更重要的是这种观念和意识已经深植于其行业从业人员心中。不论是大型的企业还是只有一二百人的小厂,都会有自己的详细流程、制度,并良好运转且大家习以为常。例如会计、建筑等行业甚至已经以立法的形式明确固定下来了。
再例如,一个机械制造企业需要开发一个新产品时-这个产品可能是一种新型步枪,也可能是新一代的运载火箭,其研发大致可以分为这样几个步骤:
1、首先,是对新产品的功能、技术性能(指标)等的定义;
2、其次进行产品的总体设计、分系统或模块的划分,设计各接口之间的关系或依赖条件等等,还包括部分的尺寸、重量等等具体的技术指标,完成总体蓝图以及设计计算说明书;
3、然后进行的是分系统的设计-产生分系统的蓝图、设计计算说明书,完成具体的零件图;
4、组织加工,这个阶段完成零件工艺线路、工卡量夹具的设计,零件的加工,产品的装配;
5、系统的联调。
6、产品的定型或提交;
整个的阶段过程大致如此,我们可以和软件研发过程作一下比较,与软件开发的步骤非常相似,完全可以将这些步骤分别对应到需求分析、概要设计、详细设计、编码与实现、测试、发布。在一个机械产品开发过程中,同样有与软件开发过程相对应的职责与角色,大家可以自己去比较分析。
制造业不是一个“智力密集、创造性成分较高的劳动”吗?如果我们了解了一个产品的开发过程,恐怕会说"Yes",只不过我们经常在流水线的轰鸣声中忘记了一个背后的事实----任何产品,包括生产线本身,都是人类创造性的结果。其实不止是制造业,电子行业、建筑行业、医疗、会计、航天行业等等,都是这样的情况。
这里要问的是,机械制造业的产品差异、变化并不比软件少,而机械行业能够规范化,为什么软件行业就不能规范化呢?
说了这么多,只想说明一点,对于质量的管理、控制(或者以软件行业的术语说成时间、成本、范围等),都不是哪一个行业或哪一些人面临的孤立问题,而是万变不离其中的。正如上面所举的例子中,制造业有6个步骤,而在不同行业中,步骤可能有多少,措施或许有不同,但是抽去了具体业务后,却是相同、相通的。
下面来总结一下软件行业无规范情形的主要危害:
1,软件人跳槽频繁,结果对公司对自己都不好,最根本的原因在于没有相关法律法规、道德规范的约束。
2,黑客、破坏性恶意代码泛滥,原因在于没有执业资格管理制度,法律法规的禁止、惩罚制度。
3,从业人员水平参差不齐,大家的标准都不统一却又各自以自己的标准出发去做事;有的公司自己或许有规范,然而却也往往缺少对员工的强制作用,或者即便有强制作用,然而在和别的公司合作时,却又因为公司间的标准不一致而导致各类问题。结果往往把问题归责与沟通问题。
4,软件行业技术路线随心所欲,往往取决个别权威人士的技术偏好;而软件行业的新技术层出不穷,即便你整天学习,也学不完所有的技术,而新技术的出现必然淘汰旧技术,因此一般如果2年不学新技术就已经不是IT人士了,所以软件人必须不断学习,但是人的精力毕竟有限,特别是成家后,因此也就出现目前男35女30后转型转行的问题;另外,跳槽后,也会出现像从新进入软件行业一样,因为技术、业务的不同,很多东西又得从头做起。
5,由于软件人大多比较聪明(或者自认为比较聪明),不愿意服谁或者受制于谁,对别人的软件成果也往往不屑一顾。在其他行业叫做同业相妒。因此在团队合作方面也往往比较差。
6,即便公司有规范,软件人也往往不愿意遵守。
7,加班不断,却又得不得应有的补偿,甚至加班赶工都会被说成因为个人能力差所以才必须加班。
8,不可控性太高,风险太大。
9,软件人员没有安全感、归属感,只想赚快钱,而不顾公司利益。
总之,软件行业不执行统一规范,受害的是公司、是个人。
我们再来看看其他行业中规范的执行情况。
1、从规范的产生看
建筑行业的规范和标准由来以久,这也是建筑行业成熟的重要标志。标准约束的不仅仅是内容的表示方法,而且包括表示的格式,在一张设计图中绝对不会出现别人看不懂的符号,而且这些符号的写法、位置甚至字体都是相同的(本人大学里选修过机械制图,深有体会),而程序员的代码格式、命名规范、文档写法不也是这样的吗,为什么就不能全行业统一?
2、从规范的执行看
没有那一个会计师会认为会计行业规范没有必要,每个人都会认真的执行,严格按照国家统一的会计法律制度执行。如果违反,很可能被吊销会计从业资格,严重的将受到刑法的严厉制裁。但是在国内的软件行业,却并不是这样。不但没有统一的规范,更谈不上吊销软件从业资格一说。
3、从过程监督看
规范的执行仅仅有执行的自觉自愿是不够的,在软件行业态度好并不把软件做好,严格的审计、监理等相互监督制约的方法措施同样必不可少。在法律行业有检察院和上级法院的审判监督制度,在会计行业有稽核、审计等监督制度。而软件行业的出错率比这些行业更高,为什么就不需要相关的监督制度呢?
其实很多问题不是大家看不到、看不懂,而是涉及到大家的利益问题。例如,如果真正严格执行软件规范制度,那么人的权威性就会降低(这个问题其实在其他行业也是存在的),大家的工资水平差异就会缩小,要想正真在软件行业做出惩成绩就会更加困难等等。
《庄子》曾经说过“大仁不仁”,在软件行业只有实现了行业法治(目前是行业人制治),真正做了到规范,从业人员才有可能真正得到发展、工作效率才能提高、软件质量才能得到保证、大家的利益才能得到保障。只保障少部分人利益的游戏规则,迟早会被打破!
最后,借用司法界的一句话,“实体公正的关键在于程序公正”,同样软件行业要维护大家的利益、要想长久发展还是得靠行业规范、行业法治!
发表评论
-
String和InputStream的转换
2014-04-03 21:24 525String和InputStream的转换 1 ... -
JS暴虐查找
2014-03-18 16:40 582function JS_cruel_search(data, ... -
编码规范
2013-03-19 19:11 1113最近买了一本书《深入分析JavaWeb技术内幕》 学 ... -
[转]CAS原理
2012-10-16 16:49 1166在JDK 5之前Java语言是 ... -
关于V8 JavaScript Engine的使用方法研究(转)
2011-07-05 15:52 8025一、写在前面的话 随 ... -
javascript内置对象Array中删除元素
2011-05-30 17:43 1402在javascript中,Array对象没有提供 ... -
window.showModalDialog和window.open关闭子页面时刷新父页面 IE7,IE8
2011-05-18 11:29 3993if(true){ ... -
能动态加载js的方法
2011-04-21 16:16 803//加载新的js function _GetJsDat ... -
Shapefile格式说明及读写代码示例
2011-04-18 16:24 1894Shapefile格式说明及读写代码示例 ESR ... -
JavaScript王者归来
2011-02-26 13:39 1323内容简介回到顶部↑ 你手中的这本《javascr ... -
oracle更改用户名后 OracleDBConsole不能启动
2010-12-20 10:31 1182更改机器名后重新配置oracle数据库参数 在命令行输入 ... -
<ww:select 标签只读
2010-06-17 12:00 2053struts2中如何使s:select标签只读 在开发op ... -
URL记录
2010-03-29 20:08 755http://blog.qq.com/qzone/622 ... -
Java 泛型的理解与等价实现
2009-12-17 10:54 715Java 泛型的理解与等价 ... -
MD5加密
2009-05-17 18:22 1131import java.io.IOException;i ... -
Struts Token 使用
2009-05-08 14:08 17221,先在一个Action中,调用saveToken(HttpS ... -
CVS权限设置
2009-05-08 11:22 1419不同用户设置不同的访问权限方法 ... -
转载http://blog.csdn.net/xidor/archive/2008/03/20/22
2009-04-21 20:50 1173// JavaScript Document /**//** ... -
java学习网站
2009-03-18 10:08 1229http://www.open-open.com/ http ... -
从“表内”,“表外”说起,商业银行业务学习(一)
2009-02-28 11:43 1410今天胡里胡涂又做了几张报表,忽然想起一年前也是在做类似的报表, ...
相关推荐
2. **管理软件**:研发适合房地产行业的管理软件,解决管理规范化和科学化的滞后问题。 3. **人才引进**:培养和引进既懂信息技术又懂建筑的专业人才,提升信息化实施能力。 4. **流程优化**:结合信息化平台,...
通过引进先进的软件系统,制定统一的数据标准,加强信息平台的建设和整合,可以有效地解决目前工程项目管理中的诸多问题,实现项目的精细化、智能化管理,进一步提高整个行业的竞争力和管理水平。
总之,会计信息化带来了会计工作模式的根本变革,对《会计基础工作规范》的修订势在必行。修订工作应着眼于提升会计管理效能,强化内部控制,适应大数据和云计算等新兴技术的发展,确保会计信息的合法、合规和高效。...
我们的系统开发的整体任务是实现绩效考核信息管理的系统化、规范化、自动化和智能化,从而达到提高单位管理效率的目的。 1.2 主要研究的目的及内容 本课题的目的是使绩效考核信息管理清晰化,透明化,便于操作,易于...
其次,自动化设备的安装必须符合行业规范和准则,保证设备在安装过程中的良好运行。最后,技术人员在自主研发过程中,需要解决可能出现的干扰因素,确保安装质量,提升整个自动化设备的性能和效率。 五、作者简介 ...
(3)政府导向,行业规范,积极推行劳动准入制度,提高全社会的职业意识。让社会、家长、学生、用人单位从思想意识上真正体会到职业教育对当代社会发展的重要作用和地位。 (4)有的毕业生就业观念比较落后。虽然...
设计主要依据为:GB8566 计算机软件开发规范 GB/T12504 计算机软件质量保证计划规范 三、系统特点 1. 采用统一的设备接口平台:针对物联网各种硬件设备的接入,系统提供了具有良好开放性和扩展性的中间接口平台。...
该软件具有高度的自动化,极大提高工作效率,具有极高的性价比。 沉降监测工程系统解决方案包括以下几个方面: 1. 基准点布设:确定沉降监测点的位置和高度,确保沉降监测点的稳定性和可靠性。 2. 沉降观测点布设...
其次,档案标准化和规范化是关键。医院需要遵循国家和行业的相关标准,确保电子信息档案的格式统一、内容完整,便于检索和共享。同时,建立严格的档案管理制度,规范档案的录入、存储、检索和销毁流程,确保信息的...
随着技术的不断发展和应用领域的不断拓展,标准化工作势在必行。只有通过标准化,才能确保医学影像信息的互操作性,提高系统的可靠性和稳定性,为临床和科研提供更好的支持。 总而言之,医学影像工作站的发展现状...
因此,加快婚纱摄影的现代化转变势在必行。 在国外,婚纱摄影信息系统起步比国内早几十年,系统的信息化更加成熟,另外市场竞争的加剧,促使了国外婚纱摄影网站稳定、全面的大发展,国外的婚纱机构公司也有很多,...
当前公路CAD课程的教学存在模式简单化、内容滞后化、手段单一化、性质实践化等问题,以及学生读图、识图能力的培养不足,这些都严重制约了教学质量的提升。 针对上述问题,文章提出了改革的两个主要方案。第一个...
- 纯粹软件教学:这类方法通过介绍AutoCAD的界面和命令来组织教学内容,它简单易懂,易于教学,但缺乏针对性和实用性,学生难以掌握专业技能和行业规范。 - 针对专业需求的教学:这种模式以实际工程需求为基础,...
综上所述,基于ARM的实时测控系统开发平台,通过巧妙的硬件设计和软件选型,成功构建了一个高性能、网络化、智能化的开发环境。这一平台不仅可以提高开发效率,减少资源浪费,还能应对日益复杂的测控需求,对于提升...
- 软件支持:引入先进的实验教学软件,支持模拟仿真和数据分析,辅助教学。 - 信息管理:建立高效的信息化管理系统,便于资源的共享和教学活动的组织。 - 师资培训:定期对教师进行培训,提升他们的教学能力和对新...
随着电信市场竞争加剧,精细化管理和高效运营成为关键,结算系统的现代化升级势在必行。 2.3. 建设原则 灵活性、可扩展性、安全性、稳定性以及易维护性是系统建设的核心原则。 3. 综合结算系统业务 3.1. 组织...
小微企业会计需要革新工作模式,不仅要具备专业的理论知识基础,还要熟练操作现代化工作软件,利用信息技术广泛收集和储存数据,全面掌握小微企业的运行情况。通过分析研究企业财务数据,互联网技术的优势可以得到...
随着改革开放的深度不断加深,工程设计行业进行企业化转型进入市场竞争已成为无法回避的事实,如何在市场竞争的大潮中立于不败之地,如何使企业能够和国际接轨,如何使企业能够面队WTO带来的机遇和挑战,对于工程...