分类: WINDOWS
2006-05-23 22:12:17
技术交流上,总感觉北京的比上海的氛围要好很多,象这次其实本来想去听听大师对敏捷的分析与介绍,结果感觉北京的话题比上海要贴切实际不少,北京是“敏捷释放软件价值”和“敏捷现场秀:敏捷开发全过程”,感觉会比较有指导意义,而上海则介绍“RUBY”(是什么?),大概会是介绍一些理念,不过还是希望能去听听,林锐博士也来了,看过他的《高质量C++》感觉不错,现场听听大师的“圆桌会议”大概能颇有收获吧。^_^
接触敏捷大概是04年,那个时期出了很多软件工程方面的优秀的书籍,从看《设计模式》开始,接下来是《重构》,《XP极限编程:拥抱变化》,《敏捷开发:原则设计与模式》。。感觉进了一个新的领域,从此迷上了这些类似框架构架,可复用设计等一些理论研究与探索。感觉比较有实际意义的是,这些书籍教的都不是一个具体的实现(例如实现开机调用一个服务)或者编程技巧等,讨论的都是一些与具体业务无关,比较通用的一些原则方法论等,是“放之四海皆准”(似乎略显夸张。^_^)的一些方法(注意是方法而不是真理)。
做软件开发也有好几年,头一次能感觉到能从一个比较高的LEVEL去看待软件开发,这是切实体会到的一些收获。以前做软件开发,总有一些相同感或者类似感,比如一个场景做来做去都是这么实现的,感觉比较重复,就好比《代码大全》中提到的:开发十年相同的程序和开发两年不同的程序是效果完全不一样的,当时也比较迷茫,从看了这些书以后,目前基本会把软件分三块,首先当然是需求的调研与分析,其中需求的控制与变化等可以通过CMM过程域的一些方法来控制。其次就是高低端的软件设计了,高端的偏业务场景,也就是从业务角度出发实现用户的需求,低端的借助一些模式或者弹性比较好的框架来搭建,最后就是实现层了,实现具体的功能,比如实现数据库的读写或者SOCKET数据的收发等。感觉这样的划分会比较清晰。当然其中可以贯穿一些重构的手段或者AOP的一些方法等,但总体的划分从高到低应该是差不多的。
关于敏捷本身,由于才疏学浅也不好多说什么,但还是说说自己的一些体会。敏捷是这几年新起的一种软件开发方法,强调能快速响应变化,与传统的重量级软件工程(如CMM)等不同,不强调文档或者过多的前期控制等,而强调在软件开发过程中,通过一些敏捷方法(如重构,快速集成,结队编程,测试驱动)等一些“最佳实践”来保证响应的及时快速与高质量。由于目前我们公司还是比较传统的软件企业,尤其是去年过CMM,更是重中之重,因此没能对这些方法进行一些比较好的实践,对于一些比较零星的比如“测试驱动”等,有过局部的一些体检,但由于没能放在整个“敏捷”的开发大环境中,因此感觉有用处,但是体会不深。相信这也是目前国内大部分软件企业的现状。 个人以为,软件开发没有“银弹”,合适最好,当然前提是必须知道彼此的一些优势与劣势,敏捷开发觉得特别适合那种规模不是很大的一些项目(如十几个人月),这样的项目说实话,只要达到用户的需求即可,也不需要你有多好的构架或者弹性,但是需求容易变化,因此以代码为主体的敏捷式开发应该能较好的完成任务,但对于一些大型项目,比如多少多少人年的规模,还是需要一套严谨的控制体系,毕竟“船大调头难”,一旦有了变化可能不光是改代码那么简单,这些就比较适合用CMM等来控制了,举个例子,小项目的一个需求更改如增加一个什么模块,说实话扯来扯去的时间都已经改好了(前提是按照敏捷来做),但对大项目而言,可能涉及到的环节多,文档多,测试多,因此可能要走个比较严格的需求变更流程就比较合适了。所以还是一个度的问题与合适与否的问题。
对于目前一些比较热门的话题如敏捷,MDA,AOP,SOA等,感觉其中肯定不乏一些炒作成分,因为厂家肯定也以盈利为目的,所以还是那句老话“以科学的态度批判的接收) (^_^,搬来的),以比较好的心态去了解去比较,找到适合自己的方法,切实提高软件质量与过程。呵呵
才疏学浅,愚人妄谈,希望跟大家多多交流。