用例一:构建
名称:构建
级别:user goal
范围:每晚构建平台
主要角色:构建者
前提:主要角色已登录
成功场景:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)构建者要求系统从代码库中取出某个项目的所有源代码
构建者编译连接所有源代码,系统产生项目软件
构建者要求安装构建出的项目软件,系统安装软件
构建者测试软件,系统测试并记录测试信息
扩展:
* 系统出错:
*.1系统保存出错信息
用例二:浏览构建信息
名称:浏览构建信息
级别:user goal
范围:每晚构建平台
主要角色:构建信息关心者
前提:已执行构建
成功场景:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)构建信息关心者进入构建信息地址
系统显示所有的构建信息的目录
相应信息选择感兴趣的构建信息
系统显示相应的信息
扩展:
* 系统出错:
*.1系统保存出错信息
技术
要求用web技术,采用j2ee体系;
采用cvs open souce系统作为项目源代码版本控制工具;
数据字典
构建信息:
构建出的产品;单元测试日志(成功与否,失败则要提供相应失败原因);单元测试的覆盖率;构建过程的日志;项目组成员的工作量(代码行数)和项目源代码树中各个目录和非二进制文件的行数;项目源代码树。
其他需求
尽量采用第三方开源代码软件;
尽量使构建用例自动化;
能构建多个项目;
实现用java 语言写的项目的构建,但要考虑未来对c,c++程序的构建的扩展。
4、系统分析
系统分析要对问题空间的本质进行分析造模,形成"要做什么"的深刻了解,尽可能地和用户达成共识。我这里既使用了传统的造模工具也利用了面向对象分析的方法学来产生文档。这一节中我首先对这些需求所涉及的子系统进行定位,看看他们之间的关系,这里我把这种分析称为上下文分析;然后看看我们关心的子系统数据流如何,得出数据流图;最后我分析每晚构建平台的"类"模型。本节所有内容的全体构成了对需求的分析模型。
系统上下文分析
通过分析,我们可以看出整个每晚构建平台的运作由6个实体构成,它们之间的关系如系统关系图所示。
构建系统完成需求定义中的软件项目的构建工作,它从CVS系统中获取项目源代码,并对源代码进行编译连接安装和测试工作,产生的构建信息通知给构建信息展示系统,构建信息关心者通过构建信息展示系统浏览构建信息。用蓝色标记表示的为本平台的组成部分。
数据流程图
下面的数据流程图更好地更详细地理解了需求,从这个流程图可知,构建系统主要和CVS系统打交道,并会生成构建信息供构建信息展示系统使用。构建系统由取出项目代码、产生项目度量数据、编译连接安装测试删除和编译连接安装(发布版)四个任务组成;构建信息展示系统和构建信息关心者打交道,主要完成浏览构建信息的任务。用黄色线条表示的存储单元"项目源代码目录"是个临时存储单元。
最后需指出的是本分析模型实现的用例一为全自动版本,是比较符合"最大化的减轻构建者工作负担"的需求的。
类模型
类关系
类BuildAdmin,ProjectBuild是project类的子类,因为从某种意义上来说,它们两者都是项目,不把OSScheduler类列为project类的子类是因为OSScheduler类很简单,可能是操作系统的一行脚本或者一行配置。
另外BuildAdmin负责所有ProjectBuild服务execute方法的执行,所以它和ProjectBuild的关系为一个复合关系;OSScheduler类要启动BuildAdmin的execute方法,所以OSScheduler和BuildAdmin有单向关系。
另外构建信息存放的位置是本平台的关键,为了让所有的类对这些位置有一个共同的视图,BuildInfoLog类是其它类的父类。
类描述
经过分析不难知道,所有的构建信息用非结构化数据来描述比较合适。在这里可以做一个决策:要求他们是独立的,也就是说进入相应的信息地址,它们可以自我显示;需求定义要求用www的方式浏览这些信息,所以同时要求他们对普通的browser是可浏览的。我们没必要用类来描述这些信息。
构建显示信息系统只有一个类来显示构建信息目录:每晚构建显示类(NightlyBuild)
另外从上下文图和数据流程图,我们可以得到我们构建系统的类:操作系统定时服务(OSScheduler),构建管理服务(BuildAdmin),应用项目构建服务(ProjectBuild)。
两个系统之间有一个定义构建信息存放位置的类BuildInfoDir,这个类定义了两个系统之间的协议。
注意书写约定:
${变量名}为取变量名所代表的值的含义。
构建信息存放位置类 类名 构建信息存放位置类 类英文名 BuildInfoDir
成员变量
变量名 变量说明
nightly_Build_Tags 保存所有的构建标签,是构建标签列表
logTopDir 保存构建管理服务运行的日志的目录
statCVSTopDir 保存了所有应用项目的项目度量结果的顶层路径
projectLogTopDir 保存了所有应用项目构建服务实例运行日志的顶层路径
testCoverTopDir 保存了所有应用项目的测试覆盖率计算结果的顶层路径
distTopDir 保存了所有应用项目的发布版的顶层路径
testTopDir 保存了所有应用项目的测试结果的顶层路径
方法
方法名 参数 执行步骤 方法说明
每晚构建显示类
类名 每晚构建显示类 类英文名 NightlyBuild
成员变量
变量名 变量说明
方法
方法名 参数 执行步骤 方法说明
list_ Buildinfo_table (1)读取nightly_Build_Tags内容,格式化显示每个构建标签指示的构建信息目录。
操作系统定时服务
类名 操作系统定时服务 类英文名 OSScheduler
成员变量
变量名 变量说明
方法
方法名 参数 执行步骤 方法说明
excute 利用系统当前时间形成日志文件名;
执行BuildAdmin的excute()方法,并把BuildAdmin的正常输出和错误输出记录到日志文件名中;
保存日志文件到${logTopDir}指定的目录中。
启动构建管理服务并记录日志