开发管理---配置管理与文档管理

    随着软件规模和复杂性的增大,许多大型开发项目往往都会延迟和超出预算,软件开发不得不直面越来越多的问题,表现为开发的环境日益复杂,代码共享日益困难,需跨越的平台增多;软件的重用性需要提高;软件的维护越来越困难。

    为了解决这些问题,作为控制软件系统一系列变化的学科,软件配置管理(Software Configuration Management,SCM)应运而生。其主要作用是通过结构化的、有序化的、产品化的管理软件工程的方法来维护产品的历史,鉴别和定位产品独有的版本,并在产品的开发和发布阶段控制变化;通过有序管理和减少重复性工作,配置管理保证了生产的质量和效率;它涵盖了软件生命周期的所有领域并影响所有数据和过程。作为软件开发中一个重要过程,实现在有限的时间和资金内,满足不断增长的软件产品质量要求,软件配置管理已经逐渐受到各类软件企业的重视。

 

1 软件配置管理的概念

   对于软件配置管理,IEEE 给出了一个定义:SCM 是指在软件系统中确定和定义构件(源代码、可执行程序、文档等),在整个生命周期中控制发布和变更,记录和报告构件的状态和变更请求,并定义完整的、正确的系统构件的过程。在 IEEE 标准 729-1983 中,软件配置管理包括以下几个方面功能:

  • 配置标识:产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。

  • 版本控制:通过建立产品基线,控制软件产品的发布和在整个软件生命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。

  • 状态统计:记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文件的问题。

  • 审计和审查:确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。

  • 生产:对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。

  • 过程管理:确保软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。

  • 小组协作:控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程序员所做的修改都已被加入新版本的产品中的问题。

   而在另外一个标准 ISO9000.3 中,对软件配置管理系统做了如下要求:

  • 唯一地标识每个软件项的版本;

  • 标识共同构成一个完整产品的特定版本的每一软件项的版本;

  • 控制由两个或多个独立工作的人员同时对一个给定软件项的更新;

  • 按要求在一个或多个位置对复杂产品的更新进行协调;

  • 标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。

    两个文件都强调了配置管理三个核心部分:版本管理、问题跟踪和建立管理,其中版本管理是基础。版本管理应完成以下主要任务:

  • 建立项目;

  • 重构任何修订版的某一项或某一文件;

  • 利用加锁技术防止覆盖;

  • 当增加一个修订版时要求输入变更描述;

  • 提供比较任意两个修订版的使用工具;

  • 采用增量存储方式;

  • 提供对修订版历史和锁定状态的报告功能;

  • 提供归并功能;

  • 允许在任何时候重构任何版本;

  • 权限的设置;

  • 晋升模型的建立;

  • 提供各种报告。

 

2 软件配置管理的解决方案

   目前,软件配置管理的解决方案有许多厂商提供,如 Rational ClearCase,Merant PVCS,Microsoft VSS。大部分软件具备版本控制、建立管理、构造管理、问题追踪这些基本的功能模块,有些软件还融合了需求管理、需求变更管理技术,并支持工作流程,以至 Internet/Intranet 应用的异地通信和管理功能。可以看到软件配置管理的趋势是涉及面越来越广,将影响软件开发环境、软件过程模型、配置管理系统的使用者、软件产品的质量和用户的组织机构。

    常用的软件配置管理工具,主要有如下产品:Rational  ClearCase,Merant  PVCS,Microsoft VSS,CVS。

    1.Rational ClearCase

    ClearCase 是 Rational 公司的主要配置管理工具,可以用于 Windows 和 UNIX 开发环境。ClearCase 主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务,支持Client/Server 网络结构。ClearCase 提供了全面的配置管理功能,包括版本控制、工作空间管理、建立管理和过程控制,而且无须软件开发者改变他们现有的环境、工具和工作方式。下面列举其主要功能:

   (1)版本控制。ClearCase 的核心功能是版本控制,它是对软件开发进程中一个文件或一个目录发展过程进行追踪的手段,通过分支和归并功能支持并行开发。在软件开发环境中,ClearCase 可以对每一种对象类型(包括源代码、二进制文件、目录内容、可执行文件、文档、测试包、编译器、库文件等)实现版本控制。因而,ClearCase 提供的能力远远超出资源控制,并且可以帮助团队在开发软件时为他们所处理的每一种信息类型建立一个安全可靠的版本历史记录。

    (2)工作空间管理。所谓空间管理,即保证开发人员拥有自己独立的工作环境,拥有自己的私人存储区,同时可以访问成员间的共享信息。ClearCase 给每一位开发者提供了一致、灵活的可重用工作空间域。它采用名为 View 的新技术,通过设定不同的视图配置规格,帮助程序员选择特定任务的每一个文件或目录的适当版本,并显示它们。View 可以让开发者在资源代码共享和私有代码独立的不断变更中达到平衡,从而使他们的工作更有效。

    (3)建立管理。ClearCase 自动产生软件系统构造文档信息清单,而且可以完全、可靠地重建任何构造环境。ClearCase 也可以通过共享二进制文件和并发执行多个建立脚本的方式支持有效的软件构造。

    使用 ClearCase,构造软件的处理过程可以和传统的方法兼容。对 ClearCase 控制的数据,既可以使用自制脚本也可使用本机提供的 make  程序,但 ClearCase  的建立工具 clearmake(支持 UNIX)和 omake(支持 NT)为构造提供了重要的特性:自动完成任务、保证重建的可靠性、存储时间和支持并行的分布式结构的建立。此外,ClearCase 还可以自动追踪、建立产生永久性的资料清单。

    (4)过程控制。ClearCase 有一个灵活、强大的功能,可以明确项目设计的流程。ClearCase 为团队通信、质量保证、变更管理提供了非常有效的过程控制和策略控制机制。ClearCase 可以有效地设置监控开发过程,这体现在:为对象分配属性;超级链接;历史记录;定义事件触发机制;访问控制查询功能等几个方面。自动的常规日志可以监控软件被谁修改、修改了什么内容及执行政策,如可以通过对全体人员的不同授权来阻止某些修改的发生,无论任何时刻某一事件发生应立刻通知团队成员,对开发的进程建立一个永久记录并不断维护它。

    综上所述,ClearCase 支持全面的软件配置管理功能,给那些经常跨越复杂环境(如 UNIX、Windows 系统)进行复杂项目开发的团队带来巨大效益。此外,ClearCase 也支持广泛的开发环境,它所拥有的特殊构件已成为当今软件开发人员、工程人员和管理人员必备的工具。

 

    2.Merant PVCS 

    Merant 的 PVCS 是世界领先的软件开发管理工具,在软件生命周期管理市场占有绝大多数市场份额,是公认的工业标准。全球的著名企业、软件机构、银行等诸多行业及政府机构大多数都应用了 PVCS。它能够实现配置管理中的各项要求,并且能和多种流行开发平台集成,为配置管理提供了很大的方便。PVCS 包含多种工具,几乎覆盖了软件开发管理中的所有问题。

  • PVCSVersionManager:能完整、详细地记录开发过程中出现的变更和修改,可快速得到系统中任何文件的各个版本,并使修订版本自动升级。

  • PVCSConfigurationBuilder:为软件系统提供了可靠的自动重建过程。它保证系统在任何时候对某一发布的产品准确地进行重建,避免发生错误,同时自动地对修改过的模块重新编译以节省时间。

  • PVCSTracker:在整个开发过程中确定和追踪软件的每一变更的要求。

  • PVCSNotify:将软件状态的变更通过 E-mail通知组织机构中的其他成员。

  • PVCSReporter:为 GUI 界面环境提供一个客户报表工具,使用它能很容易地生成和存储多个项目的报表。

  • PVCSProductionGateway:提供了局域网间与大型机 MVS 系统双向同步互联。

  • PVCSDeveloper’sToolkit:为 PVCS 客户提供了应用程序开发接口(API),使项目信息通过编程访问。

  • PVCSRequisitePro:提供了一个独特的 MicrosoftWord界面和需求数据库,从而可以使开发机构实时、直观地对来自于最终用户的项目需求及需求变更进行追踪和管理,可有效地避免重复开发,保证开发项目按期、按质、按原有的资金预算交付用户。

    上述的 8 个模块既可以单独安装和使用,也可以相互集成,建立工业化软件开发企业所需的完整的软件开发管理环境。PVCS 不仅很好地解决了代码重用、数据丢失等问题,它还从下述的几个主要方面,满足了软件开发机构迅速增长的市场需求,成为全球开发机构首选的软件配置管理工具。

    3.Microsoft VSS,CVS

    微软的 VSS(Visual SourceSafe)提供了基本的认证安全和版本控制机制,包括CheckIn

(入库)、CheckOut(出库)、Branch(分支)、Label(标定)等功能。版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发中比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。

    VSS 是一种源代码控制系统,它提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能。VSS 带有一个专业的文档、代码管理库,通过将有关项目文档(包括文本文件、图像文件、二进制文件、声音文件、视频文件)存入数据库进行项目研发管理工作。通过 VSS 与 APT 系统的配合,能够对文件进行控制,用户可以根据需要随时快速有效地共享文件。从文档的控制流程(增加、删除、修改、借阅等),到文档的修改信息记录,实现完善的文档管理。VSS 提供了历史版本的提取、提供源码历史版本对比。 VSS 文件一旦被添加进 VSS,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,VSS 也同样会将新的改动记录下来。用 VSS 来组织管理项目,使得项目组间的沟通与合作更简易而且直观。

    VSS 可以同 Visual studio开发环境及 Microsoft Office 应用程序集成在一起,提供了方便易用、面向项目的版本控制功能。VSS 可以处理由各种开发语言、创作工具或应用程序所创建的任何文件类型,用户可以同时在文件和项目级进行工作。VSS 面向项目的特性能更有效地管理工作组应用程序开发工作中的日常任务。VSS 的客户端既可以连接服务器运行,也可以在本机运行,非常适合于个人程序开发的版本管理。

    CVS(并发版本系统,ConcurrentVersions System)是主流的开放源码的版本控制系统,Linux 和 UNIX 下系统自带的版本控制工具。CVS 对于从个人开发者到大型、分布式团队都是有用的。与微软 VSS 在实现功能上属于同一个级别,不过支持的操作平台不一样。

 

3 软件文档管理

    所谓文档,是指某种数据媒体和其中所记录的数据。它具有永久性,并可以由人或机器阅读,通常仅用于描述人工可读的东西。在软件工程中,文档常常是用来对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。

    在软件生产过程中,总是产生和使用大量的信息。软件文档在产品的开发过程中起着重要的作用。

   1.软件文档的作用

   (1)管理依据。在软件开发过程中,管理者必须了解开发的进度、存在的问题和预期目标。每一阶段计划安排的定期报告提供了项目的可见性,把开发过程中发生的事件以某种可阅读的形式记录在文档中。定期报告还提醒各级管理者注意该部门对项目承担的责任及该部门效率的重要性。开发文档规定若干个检查点和进度表,使管理者可以评定项目的进度,如果开发文档有遗漏、不完善或内容陈旧,则管理者将失去跟踪和控制项目的重要依据。管理人员可把这些记载下来的材料作为检查软件开发进度和开发质量的依据,分析评估项目、检查调整项目/计划、调配专用资源,实现对软件开发的工程管理。

    (2)任务之间联系的凭证。大多数软件开发项目通常被划分成若干个任务,并由不同的小组去完成。学科方面的专家建立项目,分析员阐述系统需求,设计员为程序员制定总体设计,程序员编制详细的程序代码,质量保证专家和审查员评价整个系统性能和功能的完整性,负责维护的程序员改进各种操作或增强某些功能。

    这些人员需要的互相联系是通过文档资料的复制、分发和引用而实现的,因而,任务之间的联系是文档的一个重要功能。大多数系统开发方法为任务的联系规定了一些正式文档。分析员向设计员提供正式需求规格说明,设计员向程序员提供正式设计规格说明等

    (3)质量保证。软件文档能提高开发效率。软件文档的编制使得开发人员对各个阶段的工作都进行周密思考、全盘权衡、减少返工。并且可在开发早期发现错误和不一致性,便于及时加以纠正。那些负责软件质量保证和评估系统性能的人员需要程序规格说明、测试和评估计划、测试该系统用的各种质量标准,以及关于期望系统完成什么功能和系统怎样实现这些功能的清晰说明;必须制订测试计划和测试规程,并报告测试结果;他们还必须说明和评估完全控制、计算、检验例行程序及其他控制技术。这些文档的提供可满足质量,保证人员和审查人员上述工作的需要。

    (4)培训与参考。软件文档作为开发人员在一定阶段的工作成果和结束标志,它的另一个功能是使系统管理员、操作员、用户、管理者和其他有关人员了解系统如何工作,以及为了达到他们各自的目的,如何使用系统。

   (5)软件维护支持。记录开发过程中有关信息,便于协调以后的软件开发、使用和维护。维护人员需要软件系统的详细说明以帮助他们熟悉系统,找出并修正错误,改进系统以适应用户需求的变化或适应系统环境的变化。软件文档提供对软件的运行、维护的有关信息,便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。

    (6)历史档案。良好的文档系统,作为全组织范围内共享所存储的文档信息,对于软件企业而言,也是一个很好的学习资源。通常文档记载系统的开发历史,可使有关系统结构的基本思想为以后的项目利用。系统开发人员通过审阅以前的系统以查明什么部分已试验过了,什么部分运行得很好,什么部分因某种原因难以运行而被排除。良好的系统文档有助于把程序移植和转移到各种新的系统环境中。

    (7)销售可能。软件文档便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。

    从某种意义上来说,良好的文档管理是优秀项目的重要标志,文档是软件开发规范的体现和指南,也是记录和管理知识的重要形式。文档与知识管理文档是固化的知识,是显性知识的重要载体,按规范要求生成一整套文档的过程,就是按照软件开发规范完成一个软件开发的过程。从历史经验来看,写作文档在项目开发的早期可能会使项目的进度比起不写文档要稍慢,但随着项目的进展,部门间配合越来越多、开发方对用户需求越来越细,开发者越来越需要知道系统设计的开发思路和用户的进一步功能需求,才能使自己的开发朝着正确的方向推进。一个明显的例子就是系统整合,或者某些环节是建立在其他环节完成的基础之上时,就更显现出文档交流的准确性和高效性。文档的管理虽然是一个非常烦琐的工作,但是长远来看,它不仅使项目的开发对单个主要人员的依赖减少,从而减少人员流动给项目带来的风险,更重要的是在项目进行到后 10%的时候起到拉动项目的作用。所以,在使用工程化的原理和方法来指导软件的开发和维护时,应当充分注意软件文档的编制和管理。

    2.文档的归类

    按照文档产生和使用的范围,软件文档大致可分为 3 类:开发文档;管理文档;产品文档。

    (1)开发文档。开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述(程序逻辑、程序间相互关系、数据格式和存储等)。开发文档起到如下 5 种作用:

  • 它们是软件开发过程中包含的所有阶段之间的通信工具,它们记录生成软件需求、设计、编码和测试的详细规定和说明;

  • 它们描述开发小组的职责。通过规定软件、主题事项、文档编制、质量保证人员,

  • 以及包含在开发过程中任何其他事项的角色来定义做什么、如何做和何时做;

  • 它们用作检验点而允许管理者评定开发进度。如果开发文档丢失、不完整或过时,管理者将失去跟踪和控制软件项目的一个重要工具;

  • 它们形成了维护人员所要求的基本的软件支持文档。而这些支持文档可作为产品文档的一部分;

  • 它们记录软件开发的历史。基本的开发文档包括:可行性研究和项目任务书;需求规格说明;概要设计说明;详细设计说明,包括程序和数据规格说明;项目开发计划;软件集成和测试计划;质量保证计划、标准、进度;安全和测试信息。

    (2)产品文档。产品文档规定关于软件产品的使用、维护、增强、转换和传输的信息。产品的文档起到如下 3 种作用:

  • 为使用和运行软件产品的任何人规定培训和参考信息;

  • 使得那些未参加开发本软件的程序员维护它;

  • 促进软件产品的市场流通或提高可接受性。

    产品文档主要应用于下列类型的读者:

  • 用户——他们利用软件输入数据、检索信息和解决问题;

  • 运行者——他们在计算机系统上运行软件;

  • 维护人员——他们维护、增强或变更软件。

    产品文档包括如下内容:用于管理者的指南和资料,他们监督软件的使用;宣传资料通告软件产品的可用性并详细说明它的功能、运行环境等;一般信息对任何对其感兴趣的人描述软件产品。基本的产品文档实物包括:培训手册;参考手册和用户指南;软件支持手册;产品手册和信息广告;维护修改建议等。

    (3)管理文档。这种文档建立在项目管理信息的基础上,从管理的角度规定涉及软件生存的信息。它包括:项目开发计划、测试计划;开发过程的每个阶段的进度和进度变更的记录;软件变更情况的记录;相对于开发的判定记录;开发人员职责定义;测试报告、开发进度月报;项目开发总结等。

    另外,软件文档从用途上还可以分为内部文档和外部文档。其中,内部文档包括项目开发计划、需求分析、架构设计说明、详细设计说明、构件索引、构件成分说明、构件接口及调用说明、构件索引、构件接口及调用说明、类索引、类属性及方法说明、测试报告、测试统计报告、质量监督报告、源代码、文档分类版本索引和软件安装打包文件等。

   外部文档主要包括软件安装手册、软件操作手册、在线帮助、系统性能指标报告和系统操作索引等。

    3.文档编制计划

    软件开发的管理部门应该根据本单位承担的应用软件的专业领域和本单位的管理能力,制定一个对文档编制要求的实施规定。对于一个具体的应用软件项目,项目负责人应根据上述实施规定,确定一个文档编制计划。

    文档计划可以是整个项目计划的一部分或是一个独立的文档。应该编写文档计划并把它分发给全体开发组成员,作为文档重要性的具体依据和管理部门文档工作责任的备忘录。编制计划的工作应及早开始,对计划的评审应贯穿项目的全过程。如同任何别的计划一样,文档计划指出未来的各项活动,当需要修改时必须加以修改。导致对计划作适当修改的常规评审应作为该项目工作的一部分,所有与该计划有关的人员都应得到文档计划。

    文档计划一般包括以下几方面内容:

  • 列出应编制文档的目录;

  • 提示编制文档应参考的标准;

  • 指定文档管理员;

  • 提供编制文档所需要的条件,落实文档编写人员、所需经费及编制工具等;

  • 明确保证文档质量的方法,为了确保文档内容的正确性、合理性,应采取一定的措施,如评审、鉴定等;

  • 绘制进度表,以图表形式列出在软件生存期各阶段应产生的文档、编制人员、编制日期、完成日期、评审日期等。

    还必须明确:要编制哪几种文档,详细程度如何;各文档的编制负责人和进度要求;审查/批准负责人和时间进度安排;在开发时期内各文档的维护、修改和管理的负责人,以及批准手续。文档计划还应确定该计划和文档的分发,有关的开发人员必须严格执行这个文档编制计划。文档计划还应该规定每个文档要达到的质量等级,以及为了达到期望的结果必须考虑哪些外部因素。

    4.对文档质量的要求如果不重视文档编写工作,或是对文档编写工作的安排不当,就不可能得到高质量的

文档。质量差的文档一般会使读者难以理解,给使用者造成许多不便;会削弱对软件的管理(难以确认和评价开发工作的进展情况),提高软件成本(一些工作可能被迫返工);造成误操作。一般而言,好的软件文档要求具备如下特征。

    (1)针对性。文档编制前应分清读者对象。对不同的类型、不同层次的读者,决定如何满足适应他们的需要。

  • 管理文档主要面向管理人员。

  • 用户文档主要面向用户。

    这两类文档不应像开发文档(面向开发人员)那样过多地使用软件的专业术语。

    (2)精确性。文档的行文应当十分确切,不能出现多义性的描述。同一课题几个文档的内容应当是协调一致、没有矛盾的。

    (3)清晰性。文档编写应力求简明,如有可能,配以适当的图表,以增强其清晰性。

    (4)完整性。任何一个文档都应当是完整的、独立的,它应自成体系。例如,前言部分应做一般性介绍,正文给出中心内容,必要时还有附录,列出参考资料等。同一课题的几个文档之间可能有部分内容相同,这种重复是必要的。不要在文档中出现转引其他文档内容的情况。如,一些段落没有具体描述,用“见××文档××节”的方式。

    (5)灵活性。各个不同软件项目,其规模和复杂程度有着许多实际差别,不能相同看待。应根据具体的软件开发项目,决定编制的文档种类。

猜你喜欢

转载自blog.csdn.net/hu19930613/article/details/82778918