720 likes | 798 Views
地理信息系统工程管理. 郭庆胜 武汉大学资源与环境科学学院 2011-3-21. 软件工程项目管理与计划的概述. 软件项目的管理过程如下: 项目的启动:明确系统的目标和范围(系统的基本功能),考虑可能的解决方案,说明技术和管理上的要求。 度量:对管理过程进行定量化分析,比如软件质量的定量分析。其目的是为了帮助开发人员了解产品开发的技术过程和产品,提高软件的质量。 估算:在做计划时,必须就需要的人力、项目持续时间、成本作出估算。估算主要是参考以前的软件开发的花费。也可以用软件开发的估算技术。
E N D
地理信息系统工程管理 郭庆胜 武汉大学资源与环境科学学院 2011-3-21
软件工程项目管理与计划的概述 • 软件项目的管理过程如下: • 项目的启动:明确系统的目标和范围(系统的基本功能),考虑可能的解决方案,说明技术和管理上的要求。 • 度量:对管理过程进行定量化分析,比如软件质量的定量分析。其目的是为了帮助开发人员了解产品开发的技术过程和产品,提高软件的质量。 • 估算:在做计划时,必须就需要的人力、项目持续时间、成本作出估算。估算主要是参考以前的软件开发的花费。也可以用软件开发的估算技术。 • 风险分析:这对于软件项目管理是决定性的,它必须贯穿在软件工程过程中,他让人们主动“攻击” 风险。 • 进度安排:先确定软件开发的一系列任务,再建立任务之间的相互关联,估算每个任务的工作量,分配人力和其它资源,然后,制定进度时序。 • 追踪和控制:项目管理人员必须负责追踪在进度安排中标明的每个任务,以便重新调整进度和资源的分配。
软件的度量 • 软件度量分为两类:直接度量方法和间接度量方法。 • 对软件进行度量的目的是:表明软件产品的质量、计算软件开发的生产率、给出使用了新的软件工程方法和工具所得到的效益、建立项目估算的底线、帮助调整新的工具和附加培训的要求。 • 影响软件生产率的主要因素如下: • 人的因素:人员规模和专长。 • 问题因素:问题的复杂性、涉及的限制、需求的变更次数。 • 过程因素:使用的分析与设计技术、语言和CASE工具的有效性,以及评审技术。 • 产品因素:系统的可靠性和性能。 • 资源因素:CASE工具、硬件和软件资源的有效性。
软件的度量方法 • 直接度量方法包括产生的代码行数、执行速度、存储量大小和错误数等。 • 间接度量方法包括功能性、复杂性、可靠性、可维护性和其它的许多质量特性。
软件的度量方法 • 面向规模的度量方法所涉及的指标有:工作量、经济成本、代码行数、文档页数、错误数和人数。可以一直分解到子项目,以便定量化。随后,可以计算出单位代码行数的工作量等一系列参数。 • 面向功能的度量方法针对程序的功能性和实用性,可以通过功能点进行度量。功能点涉及五个数据域:用户输入数、用户输出数、用户查询数、文件数和外部接口数。
软件的度量方法 • 基线(参考数据)在软件开发过程的度量中有很重要的作用,需要从以往的软件开发中收集数据,例如:相似的软件开发项目的成本。 • 基线的数据具有如下特点: • 数据应当合理、精确,不能盲目估算。 • 尽量从更多的项目中收集数据。 • 程序的代码行的定义在不同项目中应当是一致的。 • 这些项目应当非常类似。 • 建立了基线后,就可以用不同的度量方法对软件开发过程的各个阶段进行度量分析。
软件的质量 • 软件的质量可以用正确性、可维护性、完整性和可使用性进行度量。 • 正确性可以用每千行代码的出错数表示。 • 可维护性一般用定性的度量方法,也可以用软件的维护时间表示,维护时间越短,可维护性越好。 • 完整性在计算机犯罪和病毒困扰的时代越来越重要,它涉及软件的危险性和安全性,危险性是指软件受攻击的概率,安全性是指排除特定类型攻击的概率。 • 可使用性可以用软件的用户友好性描述。
软件项目估算 • 软件项目估算非常困难,估算需要经验、有用的历史信息和足够的定量数据。 • 影响估算精确性的主要因素包括:项目的规模、结构化程度、历史信息的有效性。估算肯定有风险,风险可以用不确定性程度进行定量估算。
软件项目估算的内容 • 软件项目计划的目标。 • 软件的范围:功能、性能、限制、接口和可靠性。 • 软件开发中的资源:人力资源(人的技能、工作时间等)、软硬件资源(开发系统、编程语言、分析工具、测试工具等)、软件的复用性和软件部件库等。 • 成本和工作量的估算:当问题复杂时,常常采用分解技术,把问题分解到可以解决的子问题。工作量和成本可以用最佳值、可能值、悲观值、期望值等同时描述。
软件开发成本 • 软件开发成本主要靠分解和类推的手段进行,基本估算方法分三类: • 自顶向下的估算方法:从整体出发,依据以往的经验推算项目的总成本,然后分配到各个开发任务。这种方法的估算工作量小,速度快。 • 自底向上的估算法:先把项目分解,计算子项目的成本,然后统计。该方法缺少估算子项目的联系和系统级的工作量,计算结果往往偏低。 • 差别估计法:先把项目分解,同以往的项目进行对比,估算项目和子项目的成本。
软件开发成本--专家判定技术 • 设专家数为M,每位专家都已详细分析了软件系统的规格说明书;每位专家估算的软件代码行数为Ei,Ai 为每位专家估算的可能最小软件代码行数, Bi为每位专家估算的最可能的软件代码行数,Ci 为每位专家估算的可能最大软件代码行数。 • 那么,估算的期望中值为:E=(E1 +…+Em )/M,其中Ei = (Ai +4*Bi +Ci)/6。 • 一般情况下,这个过程需要反复几次。然后利用每行原代码的成本,计算项目的开发成本。
软件开发成本--经验模型 • 有很多经验模型可以用于软件开发成本的估算,例如:IBM模型、PUTNAM模型、COCOMO模型等。但还没有一种估算模型可以适用于所有的软件类型和开发环境。
软件开发成本--自动估算工具 • 自动估算工具可以使得管理或计划人员能够估算待开发软件项目的成本和工作量,还可以对人员配置和交付时间等进行估计。 • 通常需要的数据包括软件的估计代码行数或功能点数、项目特性的定性描述、开发人员和开发环境的描述等。依据工具不同,所需要的输入数据类型和数量也不同,例如:有代表性的自动估算工具BYL(Gordon 公司)、DECPplan(DEC公司)等。
风险分析 • 风险分析包括风险识别、风险估计、风险评价和风险驾驭。 • 风险识别就是判定属于哪一类风险。 • 风险估计是指估计风险发生的概率,描述风险的结果,估计风险对项目和产品的影响等。
风险评价的基本步骤 • 为项目定义风险参照水准。 • 尝试找出评价的各种因子(风险的详细类型、风险出现的概率、风险的影响),并建立它们和对应的每个参照水准之间的关系。 • 预测所有参照点集合,定义一个项目终止的区域,用一条曲线或一些易变动区域来界定。 • 预测复合型风险如何形成一个参照水准。
风险分析 • 必须编写风险驾驭和监控计划RMMP(RISK MANAGEMENT AND MONITORING PLAN),该计划记录了风险分析的全部工作,由项目管理人员使用。
进度安排 • 进度安排的准确度可能比成本估算的准确度更重要,因为进度安排的落空会导致市场机会的丧失。 • 对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。 • 当项目比较大时,涉及的人员会比较多,但用较少的人在稍微长一点的时间内去完成同样的任务是有益的。也有人提出,软件开发小组的规模不能太大,人数不能太多,一般在2至8人为宜。
进度安排 • 软件开发进程中应当设置许多里程碑,为管理人员提供项目进度的可靠依据。当一个软件工程任务成功地通过了评审并建立了文档之后,就完成了一个里程碑。软件开发过程中,任务有并行性,进度安排中必须明确任务的顺序和关键任务,以便项目能按进度安排进行。
进度安排 • 在设计进度安排时,先必须把软件开发过程的各个阶段所占的时间百分比计算出,通常有规律可循
进度安排 • 软件项目的进度安排方法与任何一个多重任务的工作进度安排方法基本一样,可以用图形方法表现各项任务之间进度的相互依赖关系。例如:甘特图(GANTT CHART)、PERT技术、CPM方法。 • 甘特图是利用X轴反映时间进度,Y轴反映不同任务,用线段表示不同任务的起止时间和延续时间。
软件项目的追踪和控制 • 软件项目的追踪和控制方法如下: • 定期让工作人员在会上汇报进展和遇到的问题。 • 评价所有的评审结果。 • 确定可能选择的里程碑。 • 经常和开发人员讨论开发进展和刚刚遇到的问题。
软件项目的管理 • 软件项目的管理涉及系统工程学、心理学、经济学、统计学和法律等,因此,软件项目的管理非常困难,同时,软件是无形的,必须建立大量的文档,但这是一份苦差事,在管理过程中必须严格要求。
制定计划 • 该计划涉及实施项目的各个环节,带有全局的性质。首先,必须明确计划的目的,并进行风险分析,然后,依据不同的目标,编制不同的软件计划,这些软件计划如下: • 项目实施计划:任务、资源等。 • 质量保证计划:规定每个阶段的质量检查。 • 软件测试计划。 • 文档编写计划。 • 用户培训计划。 • 综合支持计划:规定开发过程的支持。 • 软件分发计划:软件如何提供给用户。
软件开发的人员组织 • 软件开发的人员组织非常重要,组织得好,会发挥人员的最大的工作效率,一般的组织原则是:在项目的开始就落实责任,减少人员之间的联系,责权均衡。 • 人员组织可以采用按课题划分的模式、按职能划分的模式或两者的结合(也称矩阵模式)。
软件开发的人员组织 • 通常认为程序设计小组的组织形式比较好,常用的组织形式有: • 主程序员制小组:由一位主程序员(高级工程师)、一位后援工程师和2至5位技术员组成。主程序员还可以聘请专家、辅助人员、软件资料员等协助工作。 • 民主制小组:组内成员之间可以平等地交换意见。 • 层次性小组:组内的成员分3级,组长(1人)负责全面工作,2至3个高级程序员,每个高级程序员可以管理若干程序员。
指导与检验 • 指导的目的是动员和促进工作人员积极完成所分配的任务。 • 检验是对照计划检查执行的情况。在软件开发的整个过程中都必须进行指导与检验。
软件过程成熟度模型 • 软件开发机构的成熟度对软件的质量影响很大。通常,不成熟的软件机构具有的特点是:软件过程由开发人员临时确定、管理人员忙于突发事件、项目的进度和经费估算不合理、软件质量难以预测。成熟的软件机构则相反。
软件过程成熟度模型 • CMM的软件过程的成熟度分为5个等级,每个等级都有其特点,同时,除初始级外,其他等级的机关可以按相应的要点改进软件过程,这些要点可称为关键过程领域
不同等级的软件机构具有不同的特征 • 主要特征如下: • 初始级:管理和工作无序,项目成效不稳定。 • 可重复级:管理制度化,基本实现标准化,变更依法进行,有开发经验。 • 已定义级:实现了标准化和文档化,过程控制好,制度完善,责任明确。 • 已管理级:有各种定量方法,建立了过程数据库,可控制整个过程。 • 优化级:可集中精力改进过程,采用新技术方法,可取得有效的统计数据。
文档的作用与分类 • 文档是指某种数据媒体和其中所记录的数据。可以分为工作表格和技术资料(或称文档、文件)。每种文档与生存期的不同阶段有联系。
文档的分类 • 地理信息系统软件开发的可行性研究报告概要 • 地理信息系统软件的项目开发计划 • 地理信息系统软件项目的需求规格说明 • 地理信息系统软件项目的概要设计说明书 • 地理信息系统软件项目的详细设计说明书 • 地理信息系统软件的用户操作手册
文档的分类 • 地理信息系统软件的测试计划 • 地理信息系统软件的测试分析报告 • 地理信息系统软件的开发进度月报 • 地理信息系统软件的程序维护手册 • 地理信息系统软件的项目开发总结报告 • 地理信息系统软件的问题报告 • 地理信息系统软件的修改报告
地理信息系统项目的管理 • 地理信息系统项目的管理除了软件的开发的管理外,地理信息系统的数据库建立与运行也需要进行严格的管理,这里,把这种地理信息系统工程称为“地理信息系统数据集成工程”(简称为:“GIS数据工程”) • 也有人称之为“实用地理信息系统”。 • GIS数据工程的管理主要针对地理数据库的建立。这种管理可以分为:决策性管理、计划性管理和实施过程管理。 • 决策性管理是指机构或企业的高级决策层制定GIS应用的战略。 • 计划性管理是指将进行GIS应用的计划制定,以便项目的顺利实施。
决策者应当主要考虑的因素 • 是否需要使用地理空间数据,这是决定使用GIS的关键因素。 • GIS数据是否需要共享,决定是否建立网络。 • 是否已经存在所需要的GIS数据,是否已标准化。 • 使用GIS带来的效益,政府部门应当多考虑社会效益。 • 是否有足够的预算。
GIS工程的计划制定 • 一旦决定建立GIS,接下来就是制定计划,项目管理人员的工作通常包括:项目的申请;经费预算、协商和落实;业务人员的组织;参与并控制技术路线的制定;工作和人员的协调;问题的处理;验收和评价。 • 计划的制定是GIS数据工程成功的关键,没有好的计划,肯定不会有成功的GIS数据工程。
GIS工程的计划制定 • 在规划阶段,为了完成实施计划书,从决策性规划转为实施性计划,当GIS项目很大时,可以把一个大的GIS项目分解为子项目,子项目可以进一步分解成子任务,子任务的合理制定使得各方面的细节不至于遗漏,使整个计划、预算和质量得到保证。子项目包括技术任务和各种非技术的任务。
实施性计划的过程 • 分析了解使用GIS的部门的需要和业务范围,以便有效使用GIS。 • 决定所用数据的类型和处理方法,分析其技术要求。 • 进行数据结构、数据模型设计,设计软件接口。 • 为各个部门选择软件和硬件。 • 依据各个部门的需要,对数据的格式进行转换,并建立数据库生成方案。 • 对使用、运行和维护的人员进行培训。
软硬件配置的考虑因素 • GIS的数据量:一个小的企业的GIS数据量和国家的基础地理信息数据量的差别有时非常大,软硬件配置有质的区别。 • 并发访问GIS的用户数或企业内部的用户数。 • 现有网络环境。 • 投资规模。 • 是一个纯粹的GIS系统,还是与其它系统结合而成的综合信息系统。 • 软件和硬件是否配套,能否充分发挥它们的作用,能否满足要求。 • 已有的投资(软件、硬件设备、数据等)能否充分利用。 • 随着用户的需要增加和技术的发展,系统以后能否进一步扩充。 • 如果要进行二次开发,要着重考虑软件的二次开发支持能力。
项目进度安排 • 项目进度安排是管理者在进入设计和实施阶段之前需要完成的,要在时间和顺序上安排各个子项目或子任务。表示项目进度的常用方法有里程碑表示法(Milestone Chart),甘特图法(Gantt Chart),关键路径法(CPM-Critical Path Method)和墙纸法(Wall Paper Method)。
项目进度安排应当遵循的原则 • 进度计划简单、明了,不需要给工作人员做详细的解释。 • 进度计划可以在实施过程中依据事态的发展比较容易修正。 • 进度计划应当说明各个子任务之间的先后顺序和制约关系。 • 应当为每个任务预留一定时间,以便评估和修改。 • 安排不能太紧。 • 应当表达整个项目的实施过程。
里程碑表示法 • 里程碑表示法适用于较小规模的项目,可用于起草项目计划书,该方法将主要任务作为一个阶段来处理,清晰并且容易使用。缺点是不能表达出各项任务之间的关系,对项目进程的控制能力差。
甘特图法 • 甘特图法又称直方图法,目前使用较多,它容易表现项目实施过程中任务所需的时间长短和先后顺序,但不能描述影响关系,难以进行复杂项目的控制。