继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何为SDK编写专业的用户指南

叮当猫咪
关注TA
已关注
手记 191
粉丝 6
获赞 27

我在原来的公司上班时,所有的用户手册都有一个Document Team来负责。每次添加一个新的功能或者对功能进行更改,我们都需要开一个Document Bug,然后Document Team会根据描述信息来更新文档,最终给用户提供一个全面、符合当前软件系统的用户指南。现在我们团队也正在开发一个OSGi.NET平台的产品,这种SDK类的产品如果没有一个专业的用户指南就显得很不专业了。这个产品的RC2版本还没有很好的文档,仅是提供一个基于Word的用户指南和一个API的CHM说明书。现在我们正在为这个产品编写专业的用户指南,因此我就把如何使用工具来编写用户指南的过程在这里做一个描述。

 

1 用户指南效果图

UIOSP是一个基于OSGi.NET的动态模块化平台,通俗一点,就是一个插件平台。目前用户指南已经编写到“如何创建主程序”这一节了。用户指南由两大部分组成:(1)平台使用指南;(2)API说明书。CHM格式的帮助文档如下所示:

image

当然,你还可以生成HTML的格式,如下:

image

接下来我将分别介绍如何来编写平台使用指南和API说明书,由于API说明书比较简单,因此,我把API说明书编写介绍放在前面。

 

2 如何编写用户指南

2.1 工具

这个用户指南是使用Sandcastle和SandcastleBuilder这两个工具来编写的,你可以从http://sandcastle.codeplex.com/和http://shfb.codeplex.com/站点上下载到这两个工具。安装完成后,你可以运行Sandcastle Help File Builder来创建一个帮助文档项目,我在《[产品开发经验总结] 软件产品背后的冰山一角》已经提到这2个工具了。如下图,我新建了一个UIOSP User Guide的项目,在Documentation Sources添加了UIShell.OSGi.dll和UIShell.OSGi.WebExtension.dll两个API Doc Sources。此外,我还创建了一个UserGuide.content的“平台使用指南”目录。最还,更改了一些用户手册的属性,比如HelpFileFormat我指定的是HtmlHelp1和WebSite。

image

2.2 API说明书编写

API说明书的编写比较简单,它可以根据我们编写的类的注释生成的XML文件自动的创建出来。API说明书编写的步骤如下:

(1)为类添加注释

为类或者方法添加注释的方式很简单,只要以“///”开头,VS IDE就自动给你生成如下格式的注释。不过,它默认的只有Summary、参数和返回值。

复制代码

1 /// <summary> 
2 /// 
3 /// </summary> 
4 /// <typeparam name="ServiceInterface"></typeparam> 
5 /// <param name="serviceInstance"></param> 
6 public void AddService<ServiceInterface>(object serviceInstance) 
7 { 
8         Framework.AddSystemService(typeof(ServiceInterface), serviceInstance); 
9 }复制代码

VS IDE的注释还提供了其它的XMl节点,比如Example、Code、Para等,以下是使用这些节点编写的一个API说明,它在说明里面除了简单注释之外,还举了一个使用API的例子。

复制代码

 1 /// <summary> 
 2 /// 添加一个全局服务。 
 3 /// </summary> 
 4 /// <typeparam name="ServiceInterface">服务接口。</typeparam> 
 5 /// <param name="serviceInstance">服务实现。</param> 
 6 /// <example> 
 7 /// <para>该方法可以在BundleRuntime启动之前添加一个全局服务,从而所有的插件都可以获取并使用。以下是其用法。</para> 
 8 /// <code> 
 9 /// using(BundleRuntime bundleRuntime = new BundleRuntime(@"D:\UIOSP\MyShell\plugins")) 
10 /// { 
11 ///     Console.WriteLine("Enter 'exit' key to exit..."); 
12 ///     // 添加一个全局服务。 
13 ///     bundleRuntime.AddService<![CDATA[<ILogService>]]>(new MyLogService()); 
14 ///     bundleRuntime.Start(); // 启动模块插件运行时。 
15 ///     Console.ReadLine(); 
16 /// } 
17 /// </code> 
18 /// </example> 
19 public void AddService<ServiceInterface>(object serviceInstance) 
20 { 
21     Framework.AddSystemService(typeof(ServiceInterface), serviceInstance); 
22 }复制代码

当生成API之后,其对应的内容如下图所示。它包含了方法的注释、参数的注释、使用语法、示例。

image

一般而言,常见的注释XML如下:

复制代码

 1 <c>text</c> -- 文本中指定为代码 
 2 <code>content</code> -- 多行代码 
 3 <para>content</para> -- 段落 
 4 <see cref="member"/> -- 链接 
 5 <param> -- 参数 
 6 <seealso cref="member"/> -- 显示also列表 
 7 <example>description</example> -- 示例
 8 <exception cref="System.Exception">Thrown when...</exception> -- Exception声明 
 9 <remarks>description</remarks> -- 备注
10 <list type="bullet" | "number" | "table"> -- 列表 
11     <listheader> 
12         <term>term</term> 
13         <description>description</description> 
14     </listheader> 
15     <item> 
16         <term>term</term> 
17         <description>description</description> 
18     </item> 
19 </list>复制代码

(2)更改项目属性生成注释XML文件

这个步骤比较简单,只需要把“XML文档文件”勾上并指定生成目录就可以了。

image

(3)添加Doc Sources

接着我们可以使用SandcastleBuilder添加Doc Sources,然后添加一个dll就可以了。

(4)设置需要生成的API的类集合

对于一个SDK而言,暴露过多没有意义的API会对用户造成混淆,因此,我们可以通过SandcastleBuilder来设置不需要生成API的命名空间或者类。如下图所示,你可以通过项目的ApiFilter来设置过滤。

image

 

2.3 平台使用指南编写

2.3.1 创建平台使用指南的目录

首先点击项目属性右键,添加“New Item”,选择Content Layout,即文档目录。

image

然后双击Layout文件,在左侧将显示给目录内容,这样,你可以为目录添加一些节点。首先点击“右键”,然后选择“Add Sibling Topic”来添加一个一级节点。

image

创建完成后,你可以为一级节点通过“Add Child Topic”菜单添加字节点,这样你就可以构建像UIOSP用户指南的目录了。

image

 

2.3.2 编写指南文件

在上面描述的,每一级目录都有一个aml文件,这个文件是这级目录的内容。接下来我们需要填充一些内容。以下示例建立了一个具有示例代码、图片的AML文件。

复制代码

 1 <?xml version="1.0" encoding="utf-8"?> 
 2 <topic id="73dfeeb5-c3c9-444f-b23d-b7dc24d3cd2f" revisionNumber="1"> 
 3   <developerConceptualDocument xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> 
 4     <introduction> 
 5       <para>该小节向您介绍如何创建Movies插件。该插件为整个应用系统提供了“Movie List”页面——Default.aspx和“Create New Movie”页面——CreateNew.aspx。</para> 
 6     </introduction> 
 7     <section address="CreatePlugin"> 
 8       <title>创建插件项目</title> 
 9       <content> 
10         <para>添加一个新建项目,项目模板为UIOSP目录下的“ASP.NET Web空白插件”,名为MoviesPlugin,项目目录位于Plugins下。</para> 
11       </content> 
12     </section> 
13     <section address="CreateModel"> 
14       <title>创建数据模型</title> 
15       <content> 
16         <para>添加一个Movie类,这个类定义了这个插件的数据模型,其定义如下。目前该类只是提供了一些模拟的数据。</para> 
17 <code language="cs"> 
18 <![CDATA[ 
19 using System; 
20 using System.Collections.Generic; 
21 using System.Linq; 
22 using System.Web;
23 namespace MoviesPlugin.Model 
24 { 
25     /// <summary> 
26     /// Movie实体定义。 
27     /// </summary> 
28     public partial class Movie 
29     { 
30         public string Title { get; set; } 
31         public DateTime ReleaseDate { get; set; } 
32         public string Genre { get; set; } 
33         public string Rating { get; set; } 
34         public float Price { get; set; } 
35     }
36 } 
37 ]]> 
38 </code> 
39       </content> 
40     </section> 
41     <section address="CreateCreateNewPage"> 
42       <title>创建CreateNew.aspx</title> 
43       <content> 
44         <para>到目前为止,MoviesPlugin已经创建完毕。接下来我们将创建一个可重用的LogsPlugin插件,并利用它提供的服务来记录Movie记录操作日志。关于目前解决方案的内容,请查看“Step2-MoviesPlugin.zip”文件,创建的MoviesPlugin插件内容如图3-17所示。</para> 
45         <para> 
46             <mediaLink> 
47                  <caption><legacyBold>图3-17 MoviesPlugin插件内容</legacyBold></caption> 
48                  <image xlink:href="3_17_MoviesPluginContentScreen"/> 
49              </mediaLink> 
50         </para> 
51       </content> 
52     </section> 
53   </developerConceptualDocument> 
54 </topic>复制代码

图片通过以下XML来添加。

        <para>  
            <mediaLink>    
                 <caption><legacyBold>图3-17 MoviesPlugin插件内容</legacyBold></caption>    
                 <image xlink:href="3_17_MoviesPluginContentScreen"/>    
             </mediaLink>    
        </para>

代码通过以下XMl来添加。

<code language="cs">  
<![CDATA[    
using System;    
……

]]>  
</code>

 

有关图文并茂、包括示例代码的帮助编写就先简单的介绍到这。:) 

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP