探索软件项目管理

时间:2022-04-18 11:25:00

探索软件项目管理

开发软件项目需要一定的人力、财力、时间,也需要一定的技术和工具。为了使项目能够按照预定成本、进度、质量顺利完成,需要对成本、人员、进度、质量等多方面进行分析与管理。软件是逻辑产品而不是物理产品,在开发、生产、维护和使用等方面与硬件相比均存在明显差异,它更依赖于开发人员的业务素质、智力及人员的组织、合作和管理。

一、软件的概念

系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。但是系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。

二、软件的度量

任何工程项目都必须采用定量的描述手段,软件工程项日也例外。例如,不能定量地描述软件工程项目的规模就无法估算软件项目的成本以及所需的人力和时间,而这个问题是软件项目管理人员和客户都非常关心的。软件工程的定量描述离不开度量、测量、估算等3个基本方面。度量具有数字特征,软件工程范围内的度量是软件产品、软件开发过程或资源简单属性的定量描述。如程序规模、操作符个数、程序中错误的个数等。测量和估算是简单属性度量的函数,如软件成本、软件质量等。测量用于事后或实时状态。他涉及测量的方法、过程、工具和数值结果。估算是对软件产品、过程、资源进行预测,可以采用经验公式,也可以参考历史资料。估算一般用于签订合同、立项、制订工作计划等。这里的产品指软件开发过程生成的文档和程序,例如规格说明、设计文档、源代码及测试策略文档等。

过程指与软件有关的活动,如软件开发计划、开发活动、管理活动等。软件开发资源指软件开发过程中需要的各种支持,如人力、经费、硬件环境等。软件工程的产品、过程、资源都具有外部属性和内部属性。外部属性体现了产品、过程、资源与环境的关系,如成本、效益、程序员的生产率以及软件产品的可靠性、可用性、可维护性、可移植性等。软件项目管理人员和顾客非常关心产品、过程和资源的外部属性,因此外部属性也可以说是面向管理者和用户的属性。软件的内部属性指软件产品、过程和资源本身的属性,如软件产品的结构、模块化程度、复杂性、程序长度等。软件外部属性在软件开发过程中很难测量和控制,但它是由软件的内部属性决定的。

因此,人们不得不研究软件的内部属性及与外部属性之间的关系,并试图通过软件内部属性度量解决软件某些外部属性的度量问题,进而逐步建立软件工程度量系统。该系统的软件度量分为两类,第一类包括面向规模的度量、面向功能的度量和面向人的度量,第二类包括生产率度量、质量度量和技术度量。软件测量又分为直接测量和间接测量两种,不依赖于其他属性的简单属性可以直接测量,如程序代码行数、操作符的个数。设计一个或若干个其他属性的软件要数、准则或属性,需要采用间接测量,如软件复杂性、模块性。间接测量必须建立一定的测量方法或模型。在基于计算机的系统中,软件开发成本占总成本的比例很大。在软件项目立项和软件项目管理工作中,客户和项目管理人员都非常重视软件项目的成本估算。然而,由于软件是逻辑产品,成本估算涉及人、技术、环境、政策等多种因素,因此,在项目完成之前,很难精确的估算出项目的开销。为了实现软件项目估算,实践中开发了大量的软件项目自动估算工具,用以支持软件工作量或成本估算。

三、软件开发过程管理

大型软件项目需要很多人的通力合作,花费一年或数年的时间才能完成。为了提高工作效率,保证工程质量,软件项目开发人员的组织、分工与管理是一项十分重要和复杂的工作,它直接影响到软件项自的成功与失败。首先,由于软件开发人员的个人素质与能力差异很大,因此对软件开发人员的选择、分工十分关键。其次,因为软件产品不易理解、不易维护,因此软件人员的组织方式十分关键。一个重要的原则是,软件开发人员的组织结构与软件项目开发模式和软件产品的结构相对应,这样可以达到软件开发方法、工具与人的统一从而降低管理系统的复杂性,有利于软件开发过程的管理与质量控制,按树形结构组织软件开发人员是一个比较成功的经验。树的根是软件项目经理和项目总的技术负责人。理想的情况是,项目经理和技术负责人由一个人或一个小组担任。树的节点是程序员小组,为了减少系统的复杂性,便于项目管理,树的节点每层不要超过7个,在此基础上尽量降低树的层数。