|
|
代码生成是手工作坊模式下提高开发效率的手段. 代码生成器生成的是一段段的代码片段, 代码片段之间存在需要大量的手工连接, 代码片段之间不匹配等问题. 运用代码生成技术,
实际上是将部分需要手工编写的代码通过生成器来生成.哪些代码需要通过生成器来生成, 如何运用自动生成的代码等问题, 都是由程序员来控制.代码生成减轻了程序员手工编写代码的工作量,
但从本质上来说, 还是属于手工作坊模式, 只不过是是在代码编写的部分环节运用了自动化技术. 当然, 运用代码生成从整个软件开发的演化过程来看, 已经处于手工作坊的后期,
是软件工业化生产模式的前夜.
运用应用生成技术是软件进入工业化生产的标志. 应用生成与代码生成在本质上有如下区别.
1:应用生成使软件开发过程中最核心, 最耗费人工的设计和编码部分基本实现了自动化.
应用生成首先定义好了软件的体系架构;同时,
应用生成是针对领域的, 因此, 部分的设计工作已经自动化了.这是代码生成所不能达到的.
2:应用生成覆盖了实现过程的所有环节, 不需要任何的手工连接;同时,
应用生成的代码是一个有机的整体, 软件中的类, 层之间已经实现了无缝连接, 不存在代码不匹配问题.
3:在应用生成的模式下, 程序员的作用与地位已经发生了根本的变化.
原先由程序员主导代码, 变成由程序员适应应用生成器所生成的代码的模式. 这对程序员来说, 是一个严重的挑战. 并且会导致部分程序员的反感.
应用生成与代码生成相比, 程序员只需要编写更少的代码.更重要的是, 在应用生成技术下, 程序员从主动地位变成了被动地位. 程序员不仅需要去了解生成应用的框架,
同时也需要去了解应用所生成代码的实现机制, 代码风格, 代码规范, 所实现的功能. 然后, 程序员采用与应用生成一样的机制, 代码风格, 编码规范去修改, 扩展应用生成的代码,功能.
同时, 由于应用生成器已经实现了大部分的基本功能, 这些功能能使用,但与用户的实际要求还是有一定的差距,
如果程序员不能很好的理解需求, 会导致程序员不知如何去做的感觉. 程序员会经常发出这些功能不是已经实现了吗, 还需要我做什么的疑问?
从代码生成到应用生成, 可以说是软件手工作坊开发模式与工业化软件开发模式的分水岭.应用生成是软件开发模式的一个重大的进步.所带来的好处应该是非常明显的.
1:应用应用生成技术, 可以快速低成本的实现原型系统. 从而大大的降低软件开发项目的风险.
2:应用生成是在重用在某一领域已经成熟的开发模型, 开发经验, 并且已经自动实现了该领域内大量通用的功能.
3:可以极大的减少需要手工编写的代码量, 原则上只需要手工编码20%, 甚至更少的手工代码量.
4: 可以极大的降低Bug的数量, 应用所生成的代码基本上可以实现零Bug. 这是手工编写所无法达到的,
因此, 可以节省大量的调试和测试时间和费用.
5:由于采用了优秀的可重用的架构, 并且自动生成了代码构架. 基本杜绝了由于嫌麻烦, 程序员经常不按规定的代码框架去编写代码,
同时, 由于绝大部分的代码是由应用生成器生成, 程序员只是在已有的代码风格, 代码框架, 代码规范下去做少量的修改, 因此,.可以在整个系统范围内实现统一的代码框架,
代码规范, 代码风格.所有这些, 都大大的提供了系统的可维护性. 系统的可维护性是软件质量仅次于功能, 用户体验外最重要的质量指标了.
应用生成从本质上说, 是用自动化的技术替代软件开发过程中部分手工工作量.技术的进步, 不仅会改变软件开发的组织模式
同时也会对原来的软件开发人员的作用进行重新定位.
具体到应用生成, 运用应用生成技术, 会改变系统架构师和程序员的地位和作用. 应用生成已经定义好了应用的体系架构,
系统架构师的作用不是去设计系统架构, 而是确定如何选用应用生成器的架构, 如何给程序员讲解应用生成器所采用的代码生成器的原理. 对于程序员来的作用来说, 变化就相当大了.
首先, 由于大量的与业务没有紧密关系的代码, 如系统架构代码. 数据访问代码, 界面的数据基本访问代码等, 都由应用生成器生成了. 这节省了大量的编码过程, 因此,
一个项目中所需要的程序员数量减少了. 同时, 程序员的工作方式发生变化了, 手工模式下, 一个系统的代码绝大部分是由程序员手工搭建起来的,程序员会有很多发挥主观能动性的地方,
程序员会很有成就感. 在应用生成模式下, 应用生成器已经生成了大量的代码, 可由于通用性的考虑, 首先代码量会比手工编码量大很多, 甚至几倍以上.
针对一下子就出来这么多的代码, 程序员会感到恐慌, 这么多的代码我如何看得过来, 管的过来. 在手工模式下, 一个程序员需要管理的代码一般在5,000一下, 可是在应用生成模式下,
一个程序员可能需要管理50,000行以上的代码. 其次, 应用生成的代码规范程度会比较高, 规范程度高应该说是好事. 但具体到程序员来说, 就不一定是好事,
因为规范程度高了, 程序员就会觉得麻烦,不自由了. 还有就是应用生成的代码, 会应用一些成熟的设计模式, 但无法达到代码的精炼, 应用生成器所使用的编码规范,
风格可能会与程序员已有的习惯相冲突,. 如果程序员坚持按直接的习惯去编写, 就会显得很另类. 程序员处于两难境界.
在应用生成模式下, 程序员是去适应, 修改, 扩展应用生成器生成的代码和功能, 而许多程序员对此类工作反感.程序员希望在一张白纸上编码代码.
由于应用生成的代码已经经过反复的测试, 应用生成的代码的bug应该是很低的.因此, 程序员原则上是不需要对应用生成的代码去做单元测试.
测试工作更多的体系在功能测试, 集成测试和系统测试方面.
应用生成可能会导致程序员的反感. 我们需要从一下几个方面去考虑问题,
首先, 对程序员的考核不是以代码量去衡量. 而是手工完成所需要的工作量与应用生成模式下所完成相同功能所需要的工作量去衡量.
其次, 给程序员更多的培训和熟习系统的时间. 工要善其事,比先厉其器. 只要从总体上提高了效率和质量, 降低了成本, 就是值得去做的.
湛蓝科技
隆重推出湛蓝.net应用生成器,
作为软件工业化生产的先锋, 希望能为提高中国的软件开发效率尽自己微薄的力量.
欢迎使用
湛蓝.net代码生成器
|