关注

软件架构之开发管理

第 13 章:开发管理

美国国防部曾于 20 世纪 70 年代中期专门针对软件项目失败的原因做了调查。调查结果显示 70%的失败软件项目都是因为管理不善引起的,而并不是事先以为的技术实力不够。到了 20 世纪 90 年代,据对美国软件工程实施现状的调查显示,大约只有 10%的项目,尤其是商用软件,能够按预先计划的费用和进度交付。因此,业界认为影响软件研发项目全局的因素是管理水平,而技术只影响局部,这就有必要从项目管理的角度去管理软件的开发和运行。

加强项目管理的好处是明显的,它可以控制财务成本、提高资源利用率;改进客户关系;缩短开发时间;降低成本;提高利润、生产率、产品质量和可靠性;完善公司内部协调等。

根据美国项目管理协会的项目管理知识体系可知,项目管理是指“在项目活动中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目干系人的需要和期望。”一 般的项目管理可以分为范围管理、时间管理、费用管理、质量管理、人力资源管理、沟通 管理、风险管理、采购管理和整体管理 9 个知识领域。对于软件的开发管理来讲,软件范围管理、软件进度管理、软件成本管理、软件配置管理(属于整体管理)、软件质量管理、软件风险管理、开发人员管理(属于人力资源管理)7 个方面的管理尤为重要,软件开发的每个阶段、每个过程都要重视这几个方面的管理。

13.1 项目的范围、时间与成本

项目管理首先要考虑三个约束条件:项目范围、时间进度、成本预算。在签订软件开发合同时要明确:项目的任务是什么?发起人要通过项目获得什么样的产品或服务?这属于项目范围的范畴;项目需要多长时间?进度如何安排?这属于时间进度的范畴;项目需要花费多少?资金来源如何?这属于项目成本的范畴。

13.1.1 项目范围管理

所谓项目范围管理,包括保证项目顺利完成所需的全部工作过程。其目的是控制项目的全部活动都在需求范围内,以确保项目资源的高效利用。它主要包括项目启动、范围计划编制、范围定义、范围核实和范围变更控制 5 个部分的内容。项目启动指批准项目启动或者允许项目进入下一个阶段;范围计划编制是将生产项目产品所需进行的项目工作渐进明细和形成文件的过程;项目范围定义是把主要的项目可交付成果分解成更小、更易管理的单元,以达到如下目的:

  • 提高对成本、时间及资源估算的准确性。
  • 为绩效测量与控制定义一个基准计划。
  • 便于进行明确的职责分配。

正确的范围定义是项目成功的关键。“当范围定义不明确时,不可避免的变更会使最终项目成本大大超出预算,因为这些不可避免的变更会破坏项目节奏,导致返工、增加项目历时、降低生产率和工作人员的士气”。范围核实是项目干系人(发起人、客户)正式接受项目范围的过程。范围核实需要审查可交付成果和工作结果,以确保它们都已经正确圆满地完成。如果项目被提前终止,范围核实过程应当对项目完成程度建立文档。范围核实与质量控制是不同的,范围核实是有关工作结果的“接收”,而质量控制是有关工作结果的正确性。
项目范围变更控制涉及的是:

  • 对造成范围变更的因素施加影响,以确保这些变更得到一致认可;
  • 确定范围变更是否已经发生;
  • 当范围变更发生时对实际变更进行管理。
  • 范围变更控制必须与其他控制管理过程(进行控制、成本控制和质量控制)结合在一起使用,才能取得良好的效果。

13.1.2 项目成本管理

所谓项目成本管理,是保证在批准预算内完成项目所需要的过程。成本对项目有关各方来说都是非常敏感的问题。因此成本管理在软件项目管理中是一项非常重要的工作。软件项目的成本不仅包括开发成本,也包括开发之前立项阶段及软件在运行中的费用。此外,操作者的培训费用和项目所使用的各种硬件设施费用也都是整个项目成本的一部分,这些成本都需要很好地计划和控制。
项目成本管理包括资源计划编制、成本估算、成本预算、成本控制 4 个主要部分内容。

资源计划编制是确定为完成项目各活动需什么资源(人、设备、材料)和这些资源的数量。资源计划与成本估算是紧密相关的。成本估算就是计算出完成一个项目的各活动所需各资源成本的近似值。当一个项目按合同进行时,应区分成本估算和定价这两个不同意义的词。成本估算所涉及的是对可能数量结果的估算——执行组织为提供产品和服务的花费是多少;而定价是一个商业决策——执行组织为提供的产品或服务索取多少费用。成本估算是定价要考虑的因素之一。成本估算包括确认和考虑各种不同的成本估算替代方案。例如软件设计阶段多做些工作可减少编码阶段的成本。而成本估算过程必须考虑增加的设计工作所多花的成本是否被以后的节省所抵消。

成本预算是把估算的总成本分配到单个活动或工作包上去,建立基准计划来度量项目实际绩效。成本控制的内容有:对造成成本基准计划变化的因素施加影响,以保证这种变化得到一致认可;确定成本基准计划是否已经发生变化;当变化发生和正在发生时,对这种变化执行管理。成本控制包括以下方面:

  • 监测成本执行情况,以寻找出并掌握计划的偏差及原因。
  • 确保所有变更都准确地记录在成本基准计划中。
  • 防止把不正确、不适宜或未批准的变更纳入成本基准成本。
  • 将批准的变更通知项目干系人。
  • 采取措施,把预计的成本控制在可接受的范围内。
  • 成本控制包括寻找产生正负偏差的原因。成本控制必须和其他控制过程结合。例如,如果成本偏差采取不恰当的应对措施常会引起项目的质量和进度问题或引起项目在后期出现无法接受的风险。

13.1.3 项目时间管理

时间管理包括确保项目按时完成所需的各个过程。它包括活动定义、活动排序、活动历时估算、进度计划编制、进度控制 5 个部分内容。活动定义是对 WBS 中规定的可交付成果或半成品的产生所必须进行的具体活动进行定义,并形成文档。为使项目目标得以实现,在这个过程中对活动做出定义无疑是必要的。活动排序是确定各活动之间的依赖关系,并形成文档。活动必须被正确地加以排序,以便今后制定切实可行的进度计划。排序可由计算机辅助或用手工排序。

项目活动历时估算是根据项目范围和资源的相关信息为进度表设定历时输入的过程。历时估算的输入通常来自项目团队中熟悉该活动特性的个人和团体。估算通常采用渐进明细的方式,同时此过程需考虑输入数据的质量和可获得性。因此,可以假设此估算逐步精确,并且其质量水平是已知的。项目团队中最熟悉具体活动性质的个人或团队应当完成历时估算。制订进度计划要决定项目活动的开始和结束日期。若开始和结束日期是不现实的,项目就不可能按计划完成。进度计划、历时估算、成本估算等过程交织在一起,这些过程反复多次,最后才能确定项目进度计划。进度控制涉及的是:对造成进度变更的因素施加影响,以确保这些变更得到一致认可;确定进度变更是否已经发生;
当变更发生时对实际变更进行管理。

13.2 配置管理与文档管理

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

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

13.2.1 软件配置管理的概念

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

  • 配置标识:产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供
    对它们的存取。
  • 版本控制:通过建立产品基线,控制软件产品的发布和在整个软件生命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。
  • 状态统计:记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,
    它将解决修改这个错误会影响多少个文件的问题。
  • 审计和审查:确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件
    集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。
  • 生产:对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来
    生成的问题。
  • 过程管理:确保软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用
    户的产品是否经过测试和质量检查的问题。
  • 小组协作:控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程
    序员所做的修改都已被加入新版本的产品中的问题。 而在另外一个标准 ISO9000.3 中,对软件配置管理系统做了如下要求:
  • 唯一地标识每个软件项的版本;
  • 标识共同构成一个完整产品的特定版本的每一软件项的版本;
  • 控制由两个或多个独立工作的人员同时对一个给定软件项的更新;
  • 按要求在一个或多个位置对复杂产品的更新进行协调;
  • 标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或
    问题引起的。

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

  • 建立项目;
  • 重构任何修订版的某一项或某一文件;
  • 利用加锁技术防止覆盖;
  • 当增加一个修订版时要求输入变更描述;
  • 提供比较任意两个修订版的使用工具;
  • 采用增量存储方式;
  • 提供对修订版历史和锁定状态的报告功能;
  • 提供归并功能;
  • 允许在任何时候重构任何版本;
  • 权限的设置;
  • 晋升模型的建立;
  • 提供各种报告。

13.2.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 支持全面的软件配置管理功能,给那些经常跨越复杂环境(如 UN

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/zch981964/article/details/140387989

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--