软件开发管理中的最佳实践——日构建和持续集成
2007-09-06 16:08
816 查看
<script type="text/javascript"><!--
google_ad_client = "pub-1926348199765453";
/* 728x90, 创建于 08-12-3 */
google_ad_slot = "0385006797";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
自动化构建的过程,在我项目里面试用了,非常不错
使用自动化持续集成可以做。…可以进行代码检查,单元测试,测试覆盖率,代码风格,代码重复性,优化建议,代码文档,代码方向工程UML,包直接的依赖性,构建流程。下面以我在项目中试用的一些经验,正如好记忆不如烂笔头,把这些记录起来是避免自己日后忘记的时候可以参考。
自动化部署所需要的工具:• 使用 UMLGraph 生成当前源代码的 UML 图。• 使用 SchemaSpy 创建实体关系图(ERD),归档数据库中的表格和关系。• 使用 Grand 生成构建目标以及它们之间的关系的 Ant 构建图。• 使用 Doxygen 生成源代码文档。• 使用 DocBook 制作用户文档。
Graphviz-2.20.2.exe(用于生成uml图形)Doxygen.exe(放入到windows/system32目录下)Doxytag.exe(放入到windows/system32目录下)所需jar包和其他需要的文件 另外2个重要的文件就是Build.propertites 这里是配置一些基本的信息,如#Where all those result will be 保存产生部署文件的位置test.report.base.dir=d:/test-report
#once you change the source.dir, don't forget to#update the doxygen.cfg accordingly, if you want#to generate doxygen docs 源文件位置source.dir=./src
#Location of test code 测试代码位置test.dir=./test
#Location of doxygen.cfg doxygen文件的配置文件doxygen.cfg=etc/doxygen.cfg
#lib location which should be included in CLASSPATH#这里要注意,要把Tomcat下相应的jar包也加上lib.dir=./liblib2.dir=./web/WEB-INF/libtomcat_lib = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/server/libtomcat_lib2 = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/common/lib
Build.xml(Ant的文件)要注意的问题,1. 要注意你项目的编码,如果你项目的编码是GBK的话,那么里面很多有encoding="UTF-8" docencoding="UTF-8" 就要改成gbk了。2. <!--define classpath 定义路径,记得要把tomcat的路径加上 -->
<path id="classpath">
<fileset dir="${lib.dir}" id="lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib2.dir}" id="lib2">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat_lib}" id="tomcat_lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat_lib2}" id="tomcat_lib2">
<include name="**/*.jar" />
</fileset>
<pathelement path="${build.dir}" />
</path>
将代码反向工程到 UML 中生成javadoc 文档,这里要说明的是<packageset dir="${source.dir}/dao" />,如果你的项目里面像我这样来安排程序结构:那么你就要把你所有src下的目录都加上, 如果你只是全部放到src下那么,只要一个<packageset dir="${source.dir} " />就可以了。
使用 Doxygen 生成源代码文档,结合使用 UMLGraph 和 Javadoc 在 Javadoc HTML 报告内部生成一些基本的 UML 类图。为了自定义展示在每一个类图中的信息
<!-- =================================
target: javadoc
================================= -->
<patternset id="java.files.pattern" includes="**/*.java"/>
<target name="javadoc" depends="init, mkdir" description="--> Begin Generate Javadoc Of The Project">
<mkdir dir="${doc.output.dir}" />
<delete dir="${javadoc.output.dir}" />
<mkdir dir="${javadoc.output.dir}" />
<javadoc destdir="${javadoc.output.dir}" encoding="UTF-8" docencoding="UTF-8" access="private">
<classpath refid="classpath" />
<packageset dir="${source.dir}/dao" />
<packageset dir="${source.dir}/web" />
<packageset dir="${source.dir}/service" />
<packageset dir="${source.dir}/commons" />
<packageset dir="${test.dir}/dao" />
<packageset dir="${test.dir}/web" />
<packageset dir="${test.dir}/service" />
<packageset dir="${test.dir}/commons" />
<doclet name="org.umlgraph.doclet.UmlGraphDoc" path="lib/build/UMLGraph.jar">
<param name="-attributes" />
<param name="-enumerations" />
<param name="-enumconstants" />
<param name="-operations" />
<param name="-qualify" />
<param name="-types" />
<param name="-inferrel" />
<param name="-inferdep" />
<param name="-hide" value="java.*" />
<param name="-collpackages" value="java.util.*" />
<param name="-postfixpackage" />
<param name="-nodefontsize" value="9" />
<param name="-nodefontpackagesize" value="7" />
<param name="-visibility" />
</doclet>
</javadoc>
</target>
<!-- =================================
target: doxygen
================================= -->
<target name="doxygen" depends="init, mkdir" description="--> Doxygen Begin run">
<mkdir dir="${doc.output.dir}" />
<mkdir dir="${doxygen.output.dir}" />
<mkdir dir="${doxygen.output.dir}/html" />
<taskdef name="doxygen" classname="org.doxygen.tools.DoxygenTask" classpathref="classpath" />
<doxygen configFilename="${doxygen.cfg}">
</doxygen>
<move todir="${doxygen.output.dir}">
<fileset dir="doxygen" />
</move>
<move todir="${doxygen.output.dir}">
<fileset dir="${doxygen.output.dir}/html">
<include name="**/*.chm" />
</fileset>
</move>
</target>
这里就是生成的实际效果。
试用PMD来进行代码检查,对不符合代码规范的可以全部都检查出来,这样以后检查代码规范就可以轻松很多了。 <!-- =================================
target: check.pmd 代码检查
================================= -->
<target name="check.pmd" depends="init, mkdir" description="--> check pmd">
<delete dir="${pdm.output.dir}" />
<mkdir dir="${pdm.output.dir}" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath" />
<pmd shortFilenames="true" targetjdk="1.6">
<ruleset>basic,imports,unusedcode,naming,codesize,controversial,design</ruleset>
<formatter type="text" toConsole="yes" />
<formatter type="xml" toFile="${pdm.output.dir}/pmd-report.xml" linkPrefix="http://pmd.sourceforge.net/xref/" />
<fileset refid="src" />
</pmd>
<!--Generate html file-->
<xslt style="etc/pmd-report-per-class.xslt" in="${pdm.output.dir}/pmd-report.xml" out="${pdm.output.dir}/pmd-report.html">
</xslt>
</target>
<script type="text/javascript"><!--
google_ad_client = "pub-1926348199765453";
/* 336x280, 创建于 08-12-3 */
google_ad_slot = "6860128133";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
google_ad_client = "pub-1926348199765453";
/* 728x90, 创建于 08-12-3 */
google_ad_slot = "0385006797";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
自动化构建的过程,在我项目里面试用了,非常不错
使用自动化持续集成可以做。…可以进行代码检查,单元测试,测试覆盖率,代码风格,代码重复性,优化建议,代码文档,代码方向工程UML,包直接的依赖性,构建流程。下面以我在项目中试用的一些经验,正如好记忆不如烂笔头,把这些记录起来是避免自己日后忘记的时候可以参考。
自动化部署所需要的工具:• 使用 UMLGraph 生成当前源代码的 UML 图。• 使用 SchemaSpy 创建实体关系图(ERD),归档数据库中的表格和关系。• 使用 Grand 生成构建目标以及它们之间的关系的 Ant 构建图。• 使用 Doxygen 生成源代码文档。• 使用 DocBook 制作用户文档。
Graphviz-2.20.2.exe(用于生成uml图形)Doxygen.exe(放入到windows/system32目录下)Doxytag.exe(放入到windows/system32目录下)所需jar包和其他需要的文件 另外2个重要的文件就是Build.propertites 这里是配置一些基本的信息,如#Where all those result will be 保存产生部署文件的位置test.report.base.dir=d:/test-report
#once you change the source.dir, don't forget to#update the doxygen.cfg accordingly, if you want#to generate doxygen docs 源文件位置source.dir=./src
#Location of test code 测试代码位置test.dir=./test
#Location of doxygen.cfg doxygen文件的配置文件doxygen.cfg=etc/doxygen.cfg
#lib location which should be included in CLASSPATH#这里要注意,要把Tomcat下相应的jar包也加上lib.dir=./liblib2.dir=./web/WEB-INF/libtomcat_lib = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/server/libtomcat_lib2 = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/common/lib
Build.xml(Ant的文件)要注意的问题,1. 要注意你项目的编码,如果你项目的编码是GBK的话,那么里面很多有encoding="UTF-8" docencoding="UTF-8" 就要改成gbk了。2. <!--define classpath 定义路径,记得要把tomcat的路径加上 -->
<path id="classpath">
<fileset dir="${lib.dir}" id="lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib2.dir}" id="lib2">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat_lib}" id="tomcat_lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${tomcat_lib2}" id="tomcat_lib2">
<include name="**/*.jar" />
</fileset>
<pathelement path="${build.dir}" />
</path>
将代码反向工程到 UML 中生成javadoc 文档,这里要说明的是<packageset dir="${source.dir}/dao" />,如果你的项目里面像我这样来安排程序结构:那么你就要把你所有src下的目录都加上, 如果你只是全部放到src下那么,只要一个<packageset dir="${source.dir} " />就可以了。
使用 Doxygen 生成源代码文档,结合使用 UMLGraph 和 Javadoc 在 Javadoc HTML 报告内部生成一些基本的 UML 类图。为了自定义展示在每一个类图中的信息
<!-- =================================
target: javadoc
================================= -->
<patternset id="java.files.pattern" includes="**/*.java"/>
<target name="javadoc" depends="init, mkdir" description="--> Begin Generate Javadoc Of The Project">
<mkdir dir="${doc.output.dir}" />
<delete dir="${javadoc.output.dir}" />
<mkdir dir="${javadoc.output.dir}" />
<javadoc destdir="${javadoc.output.dir}" encoding="UTF-8" docencoding="UTF-8" access="private">
<classpath refid="classpath" />
<packageset dir="${source.dir}/dao" />
<packageset dir="${source.dir}/web" />
<packageset dir="${source.dir}/service" />
<packageset dir="${source.dir}/commons" />
<packageset dir="${test.dir}/dao" />
<packageset dir="${test.dir}/web" />
<packageset dir="${test.dir}/service" />
<packageset dir="${test.dir}/commons" />
<doclet name="org.umlgraph.doclet.UmlGraphDoc" path="lib/build/UMLGraph.jar">
<param name="-attributes" />
<param name="-enumerations" />
<param name="-enumconstants" />
<param name="-operations" />
<param name="-qualify" />
<param name="-types" />
<param name="-inferrel" />
<param name="-inferdep" />
<param name="-hide" value="java.*" />
<param name="-collpackages" value="java.util.*" />
<param name="-postfixpackage" />
<param name="-nodefontsize" value="9" />
<param name="-nodefontpackagesize" value="7" />
<param name="-visibility" />
</doclet>
</javadoc>
</target>
<!-- =================================
target: doxygen
================================= -->
<target name="doxygen" depends="init, mkdir" description="--> Doxygen Begin run">
<mkdir dir="${doc.output.dir}" />
<mkdir dir="${doxygen.output.dir}" />
<mkdir dir="${doxygen.output.dir}/html" />
<taskdef name="doxygen" classname="org.doxygen.tools.DoxygenTask" classpathref="classpath" />
<doxygen configFilename="${doxygen.cfg}">
</doxygen>
<move todir="${doxygen.output.dir}">
<fileset dir="doxygen" />
</move>
<move todir="${doxygen.output.dir}">
<fileset dir="${doxygen.output.dir}/html">
<include name="**/*.chm" />
</fileset>
</move>
</target>
这里就是生成的实际效果。
试用PMD来进行代码检查,对不符合代码规范的可以全部都检查出来,这样以后检查代码规范就可以轻松很多了。 <!-- =================================
target: check.pmd 代码检查
================================= -->
<target name="check.pmd" depends="init, mkdir" description="--> check pmd">
<delete dir="${pdm.output.dir}" />
<mkdir dir="${pdm.output.dir}" />
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath" />
<pmd shortFilenames="true" targetjdk="1.6">
<ruleset>basic,imports,unusedcode,naming,codesize,controversial,design</ruleset>
<formatter type="text" toConsole="yes" />
<formatter type="xml" toFile="${pdm.output.dir}/pmd-report.xml" linkPrefix="http://pmd.sourceforge.net/xref/" />
<fileset refid="src" />
</pmd>
<!--Generate html file-->
<xslt style="etc/pmd-report-per-class.xslt" in="${pdm.output.dir}/pmd-report.xml" out="${pdm.output.dir}/pmd-report.html">
</xslt>
</target>
<script type="text/javascript"><!--
google_ad_client = "pub-1926348199765453";
/* 336x280, 创建于 08-12-3 */
google_ad_slot = "6860128133";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
相关文章推荐
- 软件开发管理工具--持续集成构建
- 一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP 字数2382 阅读28677 评论48 喜欢149 什么是持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成它们的工
- 敏捷软件开发基础: 持续集成环境的构建
- 敏捷软件开发基础: 持续集成环境的构建
- 敏捷软件开发基础: 持续集成环境的构建
- 敏捷软件开发基础: 持续集成环境的构建
- 【软件开发实践】基于 Jenkins 快速搭建持续集成环境
- 六个最佳的软件工程实践(持续的质量验证、变更管理)
- 敏捷软件开发基础: 持续集成环境的构建
- 敏捷技能修炼:敏捷软件开发与设计的最佳实践
- 软件过程管理的最佳实践
- 持续集成 最佳实践 研讨会(1月25日 广州)
- 最佳软件开发实践指导
- 敏捷开发中如何持续集成和优化软件性能
- [CTO札记]Yew敏捷软件项目管理最佳实践
- 软件开发过程最佳实践(1)
- IBM Rational 开发团队的变更管理最佳实践
- 软件开发人员的最佳实践
- 项目管理十大工作的理念和实践在软件开发管理上的运用(从http://hi.csdn.net/cyp207复制)http://blog.csdn.net/cyp207/category/327752.aspx
- 让敏捷落地-软件研发管理最佳实践(上海站)