`
abalone
  • 浏览: 130665 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

5.1 每个项目最重要的十件事

    博客分类:
  • CC
阅读更多
这是我在做每个项目时的明细表,我强烈建议您也这样做。原因是:(1)新的开发者很快的就能够加快这个
项目的进程,(2)用户能够容易的安装你的产品,而且也很容易去维护。
1.版本控制:应该说您需要有某种形式的版本控制系统。如今的版本控制系统应该选择Subversion ,您只需
要一台服务器主机。开放源代码的项目时,我使用code.google.com ,商业项目时我使用Hosted-Projects
。Hosted-Projects,每月只需几美元,你在网上有一个备份。您需要检查你的repository,也包括所有的依赖
库。
2.命令行编译脚本:我大部分的时间都在用Eclipse,他可以为我做所有的编译,单元测试和代码覆盖
(EclEmma )。不过您需要命令行脚本去不断的build(通常是使用Ant 脚本)。你的脚本应分为:
1. 编译代码
2.编译测试
3.生成javadoc
4.运行测试与代码覆盖:我使用Emma 或cobertura 。
5.生成报告:测试的通过/失败和覆盖
6.建立一个分布的JAR。
3.连续Build:我见过很多项目,由于储存库的头部并没有被编译,导致无休止的生产力损坏。始终有一个规
则,无论如何至少要让存储库编译(通过测试更为理想的)。使用持续集成服务器,例如cruisecontrol
或Hudson。我宁愿选择Hudson,因为安装它很简单,而且功能非常强大,为您的上层管理提供了很多很好的
图形显示。您要连续获得JARs,javadoc ,测试报告,覆盖面的报告它能提供生成的脚本。对于code-base的
状态基本上没有疑议,如果你的老板想尝试最新的代码,他可以下载继续Build。
4.自动分级推动:设置连续Build,如果测试通过就自动的将代码转到分级服务器。我通常会使用Tomcat 服务
器,只需要更新Web-INF目录与最新的代码,Tomcat 就会自动的告知新的文件和刷新。这给了人们展示产品
的平台。您可以让您的QA使用这个服务器,也可以使用单独的一个。我经常会有很多的自动化测试,所以我将
网站直接给客户,并告诉他们这是“Alpha”服务器。这是非常有用的,当您的工作的一项功能完成,客户得到
这一部分,对该功能的意见能给你正面的推动,如果到最后客户才能看到,项目就很难进行改变。
5.测试和覆盖:即使您是新的自动化测试和单元测试,我仍建议你还是要按照清单上来做。自动化的测试个给下
个阶段带来了整体的进步。您从自动化的测试得到的好处是巨大的,并且关于测试的介绍也出版了书籍,所以
我们不在这里详细的讲解。
6.默认的嵌入式Web服务器:如果您正在建设一个Web应用程序,我推荐Jetty 作为您的Web容器。Jetty 最
http://www.iteye.com/news 5.1 每个项目最重要的十件事
第 73 / 92 页
酷的地方是您可以在您的main函数中新建服务。使用Tomcat 时,你要导入一个war文件,并将它添加
到Tomcat 的目录中,然后等待Tomacat “安装” ,这样就会比较麻烦。但使用Jetty 您可以通过一个main函
数开始您的应用(就像一个正常的桌面APP )并通过你的main函数来启动Jetty 。您的开发者更容易去开发/调
试,您的客户也更容易去部署。
7.默认情况下嵌入式数据库:没有什么比一个复杂的数据库安装说明更复杂。所以我使用一个嵌入式数据库,
例如HSQLDB 。 在开发和测试中,我让系统采用一个内存数据库,然后我才使用这个数据库的硬盘版本。 但
在这两种情况下客户/开发做的没有不同,这是最重要的。如果生产环境需要大负载,我再提供命令行选项,切
换到外部数据库如Oracle数据库。
8.自动安装模式:应用程序启动的第一件事就检查schema是否安装。 如果没有它会自动安装模式。 我通常使
用的Hibernate ,如果需要他会为我做所有的事,升级架构,以较新的版本。所以在数据库中我从来没有担心
过架构问题。
9.guice 依赖注入:如果您想要一个可维护性,可测性和容易理解的code-base,您需要使用依赖注入 ( DI
)作为一个设计模式。一个自动化的DI框架,使您的工作更轻松。我使用guice我想这是最先进的DI投资,同样
还有picocontainer 和spring 。
10.易于安装/运行:现在考虑的是让顾客更容易的去尝试你的产品。 我喜欢给我的客户看一个JAR文件,并告
诉他们“双击”来启动JVM , Web服务器,数据库,安装架构,并推出网络浏览器(基于本地)。或您的应用
通过Java Web Start 开始,这样你就可以在web页面中一键式安装,这样就不需要安装手册了。
a)把主要class放在JAR MANIFAST,这样只要双击就可以加载你的应用。
b)把所有的JAR依赖放在主要的JAR文件中,使用JarJar 或者One-Jar-Classloader 。
c)给应用提供:内存数据;安装schema; 加载Web的容器; 安装自动提供一个admin用户等等……
这给您带来了什么好处?您将有快乐和富有成效的开发流程和快乐的顾客,而且可以很容易为你的产品吸引到
客户。
分享到:
评论
1 楼 78425665 2012-02-14  
请问下,eclemma怎么用在tomcat部署的项目中

相关推荐

    小学语文汉字记忆训练系统正式特惠版 V5.1D

    当训练达到一定的速度,每超过100分,都会上升一个级别,一共有六个级别,每个级别所获得的“宝石”数会逐级增加。超过500分将有机会获得一对“宝盒”。 ▲运行环境:操作系统Windows 2K、XP、2003等,另外必须安装...

    计算机组装与维护微机组装技术PPT课件.pptx

    具体到每个配件的安装,CPU的安装尤其需要技巧,要对准缺口,轻放并固定好,然后涂上导热硅胶并安装好风扇,以确保散热效果。内存的安装需要注意方向和卡槽,确保内存条平稳放入并牢固卡住。电源的安装也需注意电源...

    伸缩缝施工设计方案.doc

    在南水北调中线一期工程总干渠沙~黄(委托建管项目)新南段第二施工标段十里铺东南公路桥的建设中,伸缩缝的施工方案显得尤为重要。 2.1 施工进度计划安排 在施工过程中,合理的时间规划是保证工程顺利进行的关键...

    ODI应用指南(教程)

    项目是ODI中的组织单元,每个项目包含了数据集成的所有元素,如模型、接口等。 **2.7 创建模型** 模型定义了数据的逻辑结构,包括表、字段等。在创建模型时,可以使用拖拽的方式添加数据表。 **2.8 创建接口** ...

    C#微软培训资料

    13.1 事 件 .148 13.2 索引指示器 .151 13.3 小 结 .154 第十四章 继 承 .155 14.1 C#的继承机制.155 <<page 3>> page begin==================== 14.2 多 态 性 .159 14.3 抽象与密封 .163 14.4...

    高质量C++编程

    - 函数应尽可能短小,每个函数只做一件事。 **6.5 使用断言** - 断言用于调试阶段检测程序状态是否符合预期,有助于发现编程错误。 **6.6 引用与指针的比较** - 引用提供了类似指针的功能,但更安全且易于使用。 ...

    基于AT89S52 单片的频率计

    在构成为定时器时,每个机器周期加1 (使用12MHz 时钟时,每1us 加1),这 样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部 引脚发生从1 到0 的跳变时计数器加1,这样在计数闸门的控制下可以...

    fanuc简明联机调试资料第三版

    - 电源连接是整个系统中最重要的部分之一,必须严格按照安全规范执行,确保所有的电源线都已正确接入且无短路风险。 - **放大器外形图**(第1.9节) - 放大器外形图提供了放大器的具体外形尺寸和接口位置等信息,...

    算法导论(part1)

    如果希望实现这些算法中的任何一个,就会发现,将书中的伪代码翻译成读者熟悉的某种程序设计语言,是一件相当直接的事。伪代码被设计成能够清晰简明地描述每一个算法。因此,我们不考虑出错处理和其他需要对读者所用...

    算法导论(part2)

    如果希望实现这些算法中的任何一个,就会发现,将书中的伪代码翻译成读者熟悉的某种程序设计语言,是一件相当直接的事。伪代码被设计成能够清晰简明地描述每一个算法。因此,我们不考虑出错处理和其他需要对读者所用...

    CS开发框架使用入门指南

    - 包括多个功能模块,每个模块都有详细的说明文档,方便开发者理解和使用。 ##### 5.2 数据字典模块 - 数据字典模块用于管理系统的各种基础数据,如分类、代码等。 ##### 5.3 销售模块 - 销售模块包括订单处理、...

    SAP MM物料管理系统功能详解

    每个步骤都需要精确的数据支持和科学的方法论指导。 **4.2 批量过程** 批量过程是指按照预先设定的规则批量生成物料需求计划的过程。这种方式适用于重复性强的生产环境。 **4.3 物料预测** 物料预测是基于历史...

    openssl API 函数库

    BIO数据结构定义了不同类型的BIO对象,每个对象对应一种输入输出源。 **7.3 BIO函数** OpenSSL提供了一系列BIO函数,用于创建、读写和关闭BIO对象。 **7.4 编程示例** 示例代码展示了如何使用BIO函数来处理不同...

    微软C#教程.txt

    每个对象都包含数据和行为。 - OOP 的主要特性包括封装、继承和多态。 - **9.2 对象的模型技术** - 讨论了如何使用UML(统一建模语言)等工具来描述和设计面向对象的程序。 - **9.3 面向对象的分析** - 分析了...

    Reversing:逆向工程揭密

    记得第一次做与逆向有关的工作是2000年,当时由于项目的需要,做过一个钩子(hook)程序,用于截获一个第三方控件发出的消息,但是当时还不知道什么是逆向工程。第一次看到“逆向工程”这个词是在2001年的《机械工程...

Global site tag (gtag.js) - Google Analytics