TopCoder组件开发 C#

http://xy.scau.edu.cn/info/studentunion/bbsxp/ShowPost.asp?ThreadID=345 Ryan Bay翻译地很好,http://www.topcoder.com/wiki/display/tc/Component+Development+Tutorial 这是TopCoder源址。

这里,是我-iJuliet对Topcoder组件开发的理解哦,菜菜们一起来学习吧!

1. 只能使用C#和Java两种语言,我选择C#.

2. 所需软件

Microsoft .NET Framework v1.1: 开发平台可以自由选择,但之后提交的代码会在这个框架下测试哦。

NAnt: 执行可定制、可扩展的构建脚本的工具。我需要用它编译工程,并向TC提交代码。

NUnit: 一个框架,用它可以快速简洁地测试我的代码。

TC Code Documenter: 一个命令行工具,用来写API文档。

3. 选题并下载资料

http://www.topcoder.com/tc?module=ViewActiveContests&ph=113 从时间、难度、技术上看看有没适合的,找到后注册一下哦。注册就意味着你有权利去访问其他人提交的程序(当然是比赛结束后),并且可以加入组件开发人员论坛(绝大部分关于项目的交流和讨论都在此进行)。

在论坛里的开发阶段文档中,找到需要的开发包(.zip文件),里边有

/conf: 如果有的话,它包含的是组件的配置文件,有时还会包含所依赖组件的配置文件,或组件设计者写好的配置文件的例子。如果没有这个文件夹,而你的组件又用到了配置文件,你自己生成这个目录吧。

/docs: 包含组件当前的所有文档。有.zargo或.zuml格式的UML设计说明,需求和组件说明书等。

.zuml /.zargo 在doc 目录下,应该有一份UML 文档。它包含了组件中所有类和接口的定义。它将定义组件的所有、包括异常行为。
.pdf /.rtf 在doc 目录下,应该有一份组件说明书和需求说明书。组件说明书是UML 文档的更具可读性的版本。它包含组件常规设计,所需的标准和算法。它非常简明的定义了异常类和其它所需的信息。你应该用不着需求说明书。它定义了组件的需求,而所有这些需求应该已经满足。
.gif /.png 这些文档都是由UML 文档生成的,可以不去管它们。其中所有信息都可以通过UML 文档轻松得到

/lib: 包含所依赖的所有组件级别的库文件,不包括系统级别的哦。依赖的所有TCS组件也在这个目录下。

/src:包含所有源文件,也包括测试代码哦!

/test_files: 包括组件测试过程中用到的全部文件。有测试所需的特殊配置文件、输入/输出样例、数据库方案和其它任何非编译文件。这个文件夹通常会包含设计者创建的样本测试数据。

/default.build: C#专有的,它是一个缺省的,可能未加配置的构建脚本。

4. 建好目录,配置构建脚本

建好目录哈,建议是proj/tc/proj_name

在default.build里修改NUnit的安装路径和库文件引用(如果你的项目需要额外库文件)就好。

<property name="Nunit" value="D:\Program Files\NUnit V2.0\bin\nunit.framework.dll"/>
<property value="${tcs_bin}\generic_parser\1.0\TopCoder.Util.GenericParser.dll"
name="generic_parser.dll"/>

5. 开发开始喽!

盯住/docs文件夹,尤其是类图和组件说明文档。

step1: 生成stubs并放在合适位置。

它是可编译的代码框架(各function body)。这些个占位程序刻画了组件的全部API,但并没有实现其内部逻辑哦。占位程序不是生出来(用Poseidon生成,找不着就跟PM索要)就能成功编译地,需要你核实并整理。组件代码都放在/src/csharp/main/目录下,我需要根据包名来组织我的源代码,如我的组件是Topcoder.Util.Tutorial.dll,那么我的源码路径就是/src/csharp/main/TopCoer/Util/Tutorial/..

step2: 通过构建脚本来构建我的组件。从命令行里运行构建工具,常用命令有。

compile: 把工程编译成一个功能完全的二进制单元(假设你的代码是正确的)

compile_tests: 编译我的tests,依赖于compile的成功执行。

test: 执行tests,取决于成功的compile_tests. 执行完后,结果放在/log

clean:删除/build内容,将所有编译过的代码和中间文件删掉

dev_submission: 打包。

如果组件占位程序编译不成功,可能是API或库文件的配置问题,应尽快修正。

step3: 文档,对于可用性、可维护性至关重要。编码同时就添加注释是好习惯哦!

API文档:我需要对UML文档自动生成的API文档进行修改,C#是通过XML文档来注释的。所有的类、接口、方法和变量都必须具备文档。.NET会自动生成大部分XML文档,只需在声明前面键入///即可。而且,C#中不会对throws语句进行检查,但在API文档中注明该方法可能产生的异常是好习惯哦!

文档内容:解释组件的行为,非法输入及相应的异常行为。务必注明方法返回值,可能抛出的异常和所有参数。此外,每个类和接口都需要个概括性文档以解释其作用。

文档要求:

每个文件必须包含TopCoder 版权声明。
所有的public API
元素必须有详细的文档注释(参数,返回值,异常),注意:包括单元测试。
任何复杂或比较大的程序段必须包含内嵌式文档以解释其目的和功能。
Ø
文档必须具备专业的口吻和质量。

step4: 单元测试。

非private的方法和构造函数都要测,在合法状态和输入下的行为(包括极限情况),及在所有可测的出错情形下的异常行为。/src/tests。注意最后清空测试环境哦,让系统保持在测试前的状态!因它测试类和被测组件位于同一包或namespace下,单元测试可以访问具备包访问属性或者protected访问属性的类及其成员。

 

step5: 提交啦

 

执行dev_submission,生成压缩文件。除了组件,还需要包含单元测试成功执行的日志文件,conf/目录下的所有文件,test_files/目录下的所有文件。

6. 等着评审团打分并给出建议吧,不服可以申诉。。。

你可能感兴趣的:(C++,c,C#,单元测试,UML)