1、第12章软件项目管理12.1源代码管理12.2版本控制系统Subversion12.3开发文档管理常见的开发文档12.4使用trac管理软件开发文档12.5Bug跟踪系统12.1 源代码管理12.1.1 什么是软件的版本12.1.2 版本控制的概念12.1.1 什么是软件的版本软件开发过程中通常会把完成某个功能的代码打包,用数字和字母的组合为软件的源代码或者二进制文件命名,表示完成一个阶段的工作,这种软件阶段性的名字称做软件版本。1GNU软件版本命名规则2常见的软件版本命名含义1GNU软件版本命名规则GNU软件版本命名规则几乎被所有的开源软件采用。GNU软件版本命名规则使用3段数字表示,每段数
2、字之间用.间隔开,如图所示。主版本号子版本号修正版本号编译版本号2常见的软件版本命名含义许多软件在采用数字命名版本的基础上,还加入一些英文单词表示版本的意图,下面介绍几种常见的版本命名的含义。(alpha)(beta)Trial(试用版)Unregistered(未注册版)Demo(演示版)Registered(注册版)Professional(专业版)Enterprise(企业版)12.1.2 版本控制的概念版本控制的目的就是解决软件开发过程中的版本问题。在开发过程中常会遇到同一文件多人修改或者多人修改代码后同时提交的问题。版本控制的一个重要功能是记录每个版本信息,在发生错误时能回退到某个指
3、定的版本。12.2 版本控制系统Subversion12.2.1 在Linux系统下使用Subversion服务端12.2.2 在Windows系统下使用TortoiseSVN客户端12.2.1 在Linux系统下使用Subversion服务端本节介绍在Ubuntu Linux 12.04版本上安装Subversion。Ubuntu Linux使用apt管理软件包,安装Subversion的过程非常简单。安装配置过程如下:tomtom-virtual-machine:$sudo apt-get install subversionsudo password for tom:$sudo mkdi
4、r/home/svn$sudo svnserve d r/home/svn12.2.2 在Windows系统下使用TortoiseSVN客户端Windows提供了良好的图形界面,在嵌入式开发中,通常把客户端工具安装在Windows系统下,如编辑工具、代码管理工具等;而把编译环境等放在一个Linux系统下。这样充分利用了两个系统的优势。在Windows系统下有许多开源的Subversion客户端。TortoiseSVN是目前使用最广泛的Subversion客户端,该客户端界面简洁、功能丰富,并且比较稳定。12.3 开发文档管理常见的开发文档12.3.1 可行性研究报告12.3.2 项目开发计划1
5、2.3.3 软件需求说明书12.3.4 概要设计12.3.5 详细设计12.3.6 用户手册12.3.7 其他文档12.3.1 可行性研究报告软件项目的可行性研究报告需要列举出需要的技术、人员、资金、时间周期以及法律等方面的因素,最终目的是论证一个软件项目是否可以开发。软件可行性研究报告的结果直接决定了一个软件项目是否启动。12.3.2 项目开发计划项目开发计划的目的是使用文件形式,把开发过程中各工作的负责人、开发进度以及需要的经费预算、所需的软件和硬件等都描述出来。后续的工作根据项目开发文档安排调配资源。项目开发文档是整个开发项目的资源描述文档,在编写的时候要从开发组织的实际情况出发,合理安
6、排资源。12.3.3 软件需求说明书软件需求说明书是软件开发组织与用户之间的接口文档,是整个软件开发的基础。软件需求说明书是软件供求双方对软件功能的一个具体描述文档,通常由软件开发组织编写。该文档包括了软件的开发任务、功能约定、开发周期等,用户根据软件开发组织的需求设计提出自己的意见,修改后行形成最终文档。需求说明书对软件开发组织来说很重要,软件开发的设计和测试工作都是针对需求文档进行的。12.3.4 概要设计概要设计文档说明了整个程序设计的框架和工作流程,是详细设计文档的基础。概要设计描述整个系统的处理流程、模块划分、接口设计以及出错处理等内容。概要设计的好坏决定了软件的优劣,通常是项目经理
7、设计该文档,并且经过讨论后形成最终文档。12.3.5 详细设计详细设计是一个软件模块或者流程的具体描述文档。详细设计文档包括具体程序的功能描述、性能要求、输入输出格式、算法、存储分配等内容。对于简单的软件可以不做详细设计,在代码中做相应详细的注释即可。对于大型的软件,至少要在关键流程做详细设计,并且尽量保证详细设计的文档与代码的对应关系便于维护管理。详细设计文档一般由程序员编写。12.3.6 用户手册前面介绍的几种文档都是软件开发组织使用的,文档结构规范、内容使用术语较多,便于开发组织内部交流。用户手册编写的目的是要使用非术语描述软件系统具有的功能和使用方法。用户在阅读使用手册后可以了解软件的
8、功能和用途,并且通过说明书可以操作软件。用户说明书通常包括软件的功能、运行环境、操作方法以及示例、常见出错问题及解答。用户手册要保证内容简洁,易于用户理解。12.3.7 其他文档在软件开发过程中还会产生一些其他文档,常见的有测试计划、测试报告、开发进度表和项目总结报告等。其中,测试是比较重要的部分,一个软件的优劣测试起到很大作用。测试是与开发并进的,包括单元测试、集成测试、功能测试和完整性测试等。测试的目的是发现软件中的缺陷,帮助改进软件的健壮性。12.4 使用trac管理软件开发文档12.4.1 安装trac12.4.2 配置trac基本设置12.4.3 配置trac全局脚本12.4.4 设
9、置trac的Web界面12.4.1 安装tractrac是一组Python语言编写的脚本,运行在Apache服务器上,后台使用SQL数据库。安装trac需要安装Apache服务器、MySQL数据库和Python语言解析器。$sudo apt-get install apache2 python$sudo apt-get install trac libapache2-svn12.4.2 配置trac基本设置trac安装完毕后,开始配置trac。(1)首先进入Apache的工作目录,建立trac的工作目录。(2)修改好trac工作目录属性后,开始设置trac的工作脚本:12.4.3 配置trac
10、全局脚本trac安装完毕后,接下来配置trac的全局脚本。(1)全局配置脚本也可以通过trac-admin程序来创建。(2)配置好脚本后,把trac加入到Apache的默认站点。编辑/etc/apache2/httpd.conf文件。12.4.4 设置trac的Web界面设置用户名和密码结束后,需要安装trac的Web界面。trac使用组件完成各种功能,它的组件被打包成egg文件格式,在安装egg文件之前需要安装python-setuptools。(1)安装egg文件支持。(2)安装完毕后,下载Web界面的代码。使用svn从trac的代码服务器迁出egg组件的代码。(3)代码迁出后,使用pyt
11、hon-tools编译Web组件代码,得到打包的egg组件。(4)在Apache的工作目录下建立一个存放egg组件信息的目录,并且为目录设置Apache服务相同的所有者。(5)最后重新加载Apache的配置文件。12.5 Bug跟踪系统12.5.1 Bug管理的概念和作用12.5.2 使用Bugzilla跟踪Bug12.5.1 Bug管理的概念和作用软件开发领域习惯把程序中的错误比作“臭虫”,使用Bug一词表示软件中的缺陷、错误。软件开发过程中Bug一词应用范围非常广,从功能上的错误到死机、机器重启、程序访问异常等致命错误都称之为Bug。12.5.2 使用Bugzilla跟踪BugBugzilla是一个开源的Bug管理系统,它提供了许多专业的Bug管理系统具备的功能。Bugzilla提供了Bug报告、查询、记录产生等功能。