我参与了一个金融应用项目,忙了好一阵子,停下来思考一下,觉得项目存在问题,想给领导提提建议,于是整理了一下思路,先请大家提提看法。
编程方面:我们部门在Windows端的开发主要采用Borland C++Builder,初衷可能是考虑部门里的开发人员大部分都对C比较熟悉,而C++兼容C,也就是说可以在C++Builder中使用C,这当然有一定的好处,但由此带来的问题也逐渐暴露出来。因为
C是面向过程的,很容易使我们用面向对象的开发工具进行面向过程的开发。
常见的情况是:在界面上放一些控件,设置一下属性,然后开始对事件进行编码,除了里面的代码有调用了对象的方法还能看出点OO的痕迹,整个思路还是面向过程的。这样,不但不能发挥面向对象的优势,而且,由于Windows系统的事件触发机制,使得系统的逻辑流程还不如用结构化的开发方法清晰。结果是代码复用性差,不好维护。
我觉得最主要的原因是缺乏对面向对象思想的理解与应用氛围。就我个人体会,对Delphi,C++Builder等开发工具的应用可以分为3个层次,最常见的是能使用系统提供的控件进行编程,更高一层,能够自己作控件,把常用的,通用的模块封装成控件,以利于复用。最高层次就是在开发中融入面向对象的思想,进行面向对象设计,面向对象编程,实际上,到这一层已经跟语言的特性已经没什么关系了。
所以,我觉得有必要在开发人员中普及面向对象思想。
改进措施:
1。使他们意识到必要性(其实大部分人都知道面向对象的好处...)
2。创造学习氛围,提供学习资料,内部培训交流等方式
3。在实际应用中提高(需要评审,检查机制来确保质量)
在设计方面:缺少富有面向对象设计经验的人员以及没有架构设计师(Architect)的角色。任务的分配方式主要是由项目经理划分好模块,初步规划后,分给下面的开发人员设计,编码,这样,设计的质量过多依赖于开发人员的水平,并且缺少检查评审机制,最终影响产品质量。
改进措施:
1。招聘或内部选拔架构设计师,由架构设计师负责系统的总体架构设计以及考虑系统的非功能性需求,如:Security
,Reliability,Performance等。
2。组织面向对象设计的学习培训。如设计模式,设计原则,UML等
3。加强管理,确保评审制度的执行。由高级设计人员辅导、检查设计人员的设计,同等水平的设计人员之间的互相评审
与检查。
在开发方法方面:我负责一个子系统的开发,在开发过程中,为了降低风险,以及给客户作演示的需要,采用原型化开发方法。作原型时,为了赶时间,没有很好的去规划系统,也没有注意编码规则,命名规范等。实际上,作原型也不必花太多的功夫在这些时间上面,但前提是:后续的开发不能在原型的基础上开发。但我违背了这个前提。导致了现在的代码
显得很凌乱,需要花很多的精力去改进。
改进措施:
作原型与后续开发一定要分开。