dairongle

去年5月份,公司项目较少,我就组织了一个用于公司内部办公管理的项目(以下称OA)。第一个目的是为了让公司里面一些技术较差的人员得到真正编程的锻炼;第二个目的是为了使用空闲的人员为公司开发一个产品,在内部推行科学管理,以后也可以考虑销售。

   结果一直到今年4月份,这个项目才算上线,开发进度一拖再拖,代码质量很差。回过头来考虑原因,有以下几个:

1)程序员技术能力弱

2)对JSF技术不熟悉

3)JSF框架有Bug,并且可用tag较少,不足以应付项目,还需要额外开发自定义tag

4)人员变动频繁

5)按照<<Software Engineering>>最新版的建议和日立公司开发流程结合指定的开发流程不合理

a)设计阶段连web界面的每个控件(tag)的表现形式都描述的清清楚楚,花费了大量的人力

b)开发流程如下

use-case设计-》画面设计-》系统建模-》数据库设计-》编码-》代码评审-》

                                                                       单体测试式样书编写-》单体测试

                                                                       集合测试式样书编写-》集合测试

这个开发流程看上去很完美,其实由于国内项目进度要求都很高,其实不能支付这样高昂的开发成本,并且如果项目管理不当,很多文档写了,却没有人遵守。

                                                                      


6)管理人员对代码审查把关较弱

7)缺乏一个合格的项目经理,我因为兼顾公司很多事情,项目经理只是挂名而已,唯一把好关的就是数据库设计是自己亲自做的

8)对OA的复杂业务(特别是考勤业务)缺乏经验,设计人员也是边设计边改。


   以上说的是问题,下面也说说说收获:

1)程序员得到了实战的机会,原来我公司的能力弱的程序员一直没有机会编程,只是做一些测试工作,这次让不少程序员得到了较大提高

2)对JSF基础知识的掌握,通过实战和编写文档等方式教育,培养了一个了解JSF技术的团队

3)OA是公司内部第一个多人开发的大型Web系统,从这个过程中发现国内项目普遍不能承受<<Software Engineering>>和日本开发流程中的“完美”过程管理,因此对后来的OA开发流程进行了简化:

use-case设计(包含Review)->美工画面设计

                                  ->数据库设计

                                   ->程序员编写基础画面->整合美工的画面->编码->代码评审(特别加强)->程序员交叉测试(按照use-case要求)

4)代码评审的工作如何更加有效呢

   要求程序员先编写调用代码(有点类似测试驱动开发的方法,这个时候很多类和方法其实不存在,所以编译不会通过),技术管理人员评审调用代码,没有问题后程序员再逐一实现各个类和方法,最后技术管理人员再作一次代码评审。为了保证质量,降低成本,代码评审工作是重中之重。

5)使用了NetBeans6.5+UBuntu8.10的开发环境,一个获得了较好的开发速度(Linux性能好),而且避免了windows的盗版问题,Eclipse配置比较麻烦,NetBeans更好上手。

6)找到了ICEFaces Framework进行后续开发,ICEFaces能够提供web 2.0的一切特性,并且只要编写纯Java代码,降低了程序员的负担,JSF所有的基础知识都能够使用。


    因此,我认为现在OA的Alpha3开发出来的产品一定比之前的更快、更好,而且功能强大。不过还要继续实践下去。

 

后续1(2009-7-19):

    由于金融风暴的到来,公司出现了严重的赤字,很多事情不能继续进行,其中也包括OA项目。在我暂时离开公司的这段时间,我的技术之火并没有因此熄灭。我亲自开发和研究ICEFaces技术。

    首先,我使用基于woodstock可视化jsf项目的icefaces1.8.1,其中发现了icefaces1.8.1也有不少的bug(比如ice:tree使用bind属性时可能导致一些问题),不过好在我的技术底子比较厚,总能找到办法绕过去。在发现sun不再继续支持woodstock项目后,icefaces.org也放弃了对该项目的支持,因此,我们已经不能在netbeans6.7当中找到visual icefaces1.8.1的身影了。开始这对我是一个打击,因为我的英语网站已经写了一段时间了,4000行java代码已经完成了。

   不过很快我发现了jsf的今后方向facelets已经能和icefaces很好的结合起来开发,我花了一周的时间将原有代码移植到新的框架中来,很快我就发现很多的优点:

1)facelets带来了更快的性能

2)facelets提供了准确的报错信息

3)xhtml比jsp要求严格,更能早发现错误

4)facelets提供的模板特性能够极大得提升网页开发的效率

 

具体内容可以查看我的两篇文章<<使用Facelets开发JSF程序>>、<<使用ICEFaces+Facelets开发Web程序>>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分类:

技术点:

相关文章: