话题的由来
某天午饭前,项目组一同事挑起了这个话题,由于是马上要到饭点了,所以没有细聊,但公认的结论是,从零开始准备一个项目,花费的工作量不小。
由于最近我参与了一个全新的web项目,有切身的体验,所以记录下来。
主要的工作量包括如下几点:
代码开发环境准备
开源软件选择
版本管理软件
基础代码开发
问题处理
制度建设
代码开发环境准备
支持j2ee的eclipse,版本当然要最新的,插件则包括easyexplore、国际化资源编辑器;
JDK1.8,注意不是JRE1.8,要附带源码,否则开发过程中看不到JDK的源码就很郁闷了;
构建工具,Ant和Maven;Ant平时用的比较多,所以很熟练,但用maven的话下载开源软件比较方便,所以也要准备好;
反编译工具,开发过程中可能会遇到开源软件的使用问题,这时如果可以走读一下代码,可以提供一些思路;
easyexplore,通过这个插件,可以很方便的打开代码所在的目录,否则还需要手工一级、一级的跳过去,麻烦;
lombok,通过这个工具,代码里可以少很多getter/setter之类的东东;
开源软件选择
开源软件很多,选择面很广。但考虑到项目需要商用,所以基于GPL之类的协议开源的软件都不要使用,否则后续整改进来非常麻烦;同一功能的开源软件里,评价前要准备几款备选,同时评估,从中挑选社区活跃度高、维护人员努力一点的,否则软件出了Bug,就比较坑了。
一般的选择有
日志记录器,我用过log4j、log4j2、slf4j,比较过后,我倾向于使用slf4j做前端,log4j或者log4j2做后端,原因是slf4j的接口比较好用,log4j或者log4j2的资料很多,会做配置的人也多,所以两方面好处都可以享受;
ibatis,ibatis2.3.4.726版本从08年开始使用,虽然这个版本已经停止维护,但由于使用简单,没有使用经验的新进员工只要会使用SQL,基本上一周之后就可以上手,培训的代价小,所以新项目里仍然打算使用这款软件;
spring,我使用的spring时间还比较短,所以挑主流分支的最新版本;
mysql及其jdbc驱动,项目启动时直接从官网下载其时的最新版本,项目进行过程中如遇到问题则考虑更新,否则就不变了;
xstream,XML序列化的神器,保存一些临时数据非常有用,可以少写很多代码;
json,可选软件非常多,比如google的gson,jackson等,可以依据团队成员的能力和项目的特性,从中选择一款出来;
commons库,比如commmons-io、commons-file-upload、commons-codec、commons-logging、commons-lang等,这些软件一般不需要专门下载,很多开源软件的发布包中都会附带,当然也可以直接在apache的官网上下载最新版本;
。。。
版本管理软件
svn和git,中心服务器是SVN,本地为了方便,同时安装了svn客户端和git,这样可以创建很多分支,分别用于开发新特性、试验新技术、修复Bug等。
基础代码开发
这个要看团队成员的能力而定,但一般可以分为如下几种。
数据库访问封装
页面与服务端通信协议封装
服务端接口样例实现
页面基本样式定义
页面样例代码
。。。
制度建设
项目涉及多人协作时,必须要考虑到团队协作时的制度。
需求传递和变更制度,需求和方案是需要管理的,团队的能力需要逐步培养,而外部的预期也要可控,否则会导致成员天天加班累死,外部呈现却不好,以至于恶性循环。
会议制度,晨会、周例会。
开发流程,开发人员领取到任务之后需要完成哪些动作,一般要完成Story分析、评审、代码开发、过自测用例、showcase、修改showcase问题等。
Story评审制度,主要评审的是Story分析,那么Story分析需要完成什么内容,通过和不通过的标准,Story评审的时机,参与人员等都需要明确。
代码评审制度,一般需要在转测试之前完成,代码好、坏的标准,差的代码如何修改等。
问题单修改流程,一般要包括测试提单、测试经理确认、项目经理确认、开发人员分析、开发人员修改、项目经理审核、测试经理安排回归、测试人员回归。测试人员完成提单和回归问题单,首先要在问题单里填充必要的信息,以提高沟通效率。开发人员在其中主要完成修改和自测试的环节,基本要求就是一次搞定,避免测试人员返工。
开发规范,比如web页面的规范、java代码的规范等。
求助渠道,项目团队成员有了困难,不同类型困难的求助人要明确出来,不同级别问题的求助人也要明确出来。
培训制度,收集团队近期遇到的问题,统一讲解和答疑。
。。。
结尾
万事开头难,事情太多要烦,那么有帮手可以分担一些的话,生活将无比美好。
若非注明,均为原创,欢迎转载,转载请注明来源:从零开始启动一个项目,需要哪些准备工作