三级信息管理技术分章节考试要点辅导:软件工程(软件管理之进度安排)
来源:优易学  2011-10-10 13:09:53   【优易学:中国教育考试门户网】   资料下载   IT书店
  进度安排

  软件开发项目的进度安排可以有两种考虑方式。第一种,系统最终交付使用的日期已经确定,软件开发机构必须在合同规定的时间内安排;第二种,只确定了大致的年限,最后交付使用的日期由软件开发机构根据具体情况确定。后一种考虑能够对软件开发任务进行细致的分析;能够最好地利用资源,合理地分配工作量,但实际工作中常常遇到第一种情况,问题是软件管理人员如何在规定的期限内分配人力和安排进度。进度安排的好坏往往影响整个项目的按期完成和用户的使用,如不能按期完成,用户就会不满,而且需向用户赔偿损失。如作为商品,将会失去市场竞争力。

  进度安排的精确性有时比成本估算更重要。在商品生产的社会中,某种商品的损失往往还可以通过其他商品或分期偿还来承担。而进度拖延的损失是无法弥补的。下面就软件开发项目进度安排中的几个问题进行讨论。

  1.软件工作的特殊性

  制定软件进度与其他工程没有很大的区别,因此使用一般的通用技术和工具即可。但重点要强调的是软件产品是逻辑产品,这与其他工程不同。因此当几个人共同完成某项任务时,人与人之间就有一个思想交流问题,称之为通信关系。通信是要付出代价的,不只是要花时间,同时由于通信中的疏忽常常会使错误增加。如一个组有4个软件工程师,两两之间进行通信联系,通信路径有6条;对6个软件工程师,则通信路径增加至14条。因此所付的代价就必然会增加,所以工作组的人员不宜太多,一般3—5人为好,目前国外一般采用主程序员组的制度。另一点要强调的是软件工作切忌中间临时加人,必须在安排进度时就考虑周到。

  2.各阶段工作量的分配

  估算出总的工作量以后,就需要一个可以进行各阶段工作量分配的模型。某一阶段工作量所占的百分比必须根据经验数据确定。这里要再一次强调,在开发过程中保存的记录将增加经验数据库存,而且将改善今后估算的准确性。

  R.S.Pressman提出一种称作40-20-40的工作量分配规则,即前期工作(计划、需求分析、概要设计和详细设计阶段)和后期工作(测试阶段)各占40%,编码阶段占20%。

  应该强调要重市馨期和后期工作。前期工作容易被忽视,主要原因是:管理人员认为不开始编码工作就算没有进行,他们不了解前期工作的重要性;技术人员往往也急于编码,认为写出代码任务就算完成了。后期工作也容易被忽视,认为编码出来就完事了,对测试工作要占这么大的工作量没有思想准备。所以要制定好进度计划,就要研究软件工作的规律,前期基础工作没做好,将会给后期工作带来很大困难,往往使工程进度一拖再拖,难以坚持,有的不得不中途夭折。

  3.制定开发进度

  需要涉及的下一个未知量是开发进度。进度安排是软件计划工作中一项最困难的任务,计划人员要把可用资源与项目工作量协调好;要考虑各项任务之间的相互依赖关系,并且尽可能地平行进行;预见可能出现问题和项目的“细脖子”,并提出处理意见;以及规定进度,评审和应交付的文档。

  假设用作变量的开发时间TD接线性变化,而且已经得到了总的开发工作量估算值ED,要求在规定的时间TD内完成,在项目中最好有参加工作的人员平均值M,即M=ED/TD,这将是一个非常有用的数据。遗憾的是在上述算式中,项目的工作量和开发时间不能作为独立的变量。Brooks定律描述了这种现象的最极端情况:为误期的软件项目增加人员将会使其进度更慢。估算开发时间可以使用类似于工作量的估算法。一些研究人员指出,开发时间与开发工作量之间十分精确地满足下面关系 TD=a(ED) b

  其中a和b为经验常数,若ED以人-月为单位,则TD的单位为月,a和b的大小分别为2到4和0.25到0.4。

  算式TD=a(ED) b 给出了名义开发时间。某些其他模型能够表示出名义开发时间发生变化后,开发工作量将如何变化。如COCOMO模型,最多只能压缩到名义开发时间的75%。所增加的这一部分工作人员的工作量都消耗在保持项目人员通信开销中了。

  4.软件开发组织

  有多少个软件开发机构,几乎也就有多少人员的组织机构。不管这些组织机构是好或坏,一般是不可能轻易改变的。尽管组织机构的改变不属于软件计划人员的职责范围内的事。不过,在一个新的软件项目中直接涉及人员的组织问题却是可以,也应该在软件计划阶段加以认真考虑的。

  对于一个需要n个人工作k年的软件项目,如何使用人员资源,可能有以下几种选择:

  (1)把m项不同功能的软件分配给n个人去完成,他们之间无需多少合作,主要协调的任务由一位软件主管人员来负责。这样,软件主管可能同时需要管理多个不同项目;

  (2)把m项不同功能的软件分配给n个人去完成(m≤n),这样可能就要建立一些非正式的小组,并指定小组负责人,而小组之间的协调工作则由软件主管负责;

  (3)n个人被组成k个小组,每个小组分配一个或多个功能,并有具体组织,协调工作由小组和软件主管共同进行。

  虽然对上述每一种方案都可能说出赞成或反对的理由。然而,有越来越多的证据表明,第三种方案,即正式的小组是最好最有效的。

  正式的小组的方案来源于“主程序员小组”的概念。它是由Harlan Mills首先提出,并由Baker进一步阐述的。小组的核心由一位高级工程师(主程序员)、2至5位技术人员和一位后备工程师组成。主程序员负责小组的所有技术活动的计划、协调和评审工作;技术人员负责项目的具体分析和开发;后备工程师则支持主程序员工作,必要时能代替主程序员工作,以便使项目能继续进行,而使损失最小。

  主程序员小组有一名或多名专家(如数据库设计或通信方面专家)、数名辅助人员(如秘书和打字员)和一名资料员参加工作。资料员同时为多个小组工作,具体完成下列工作:

  (1)保存和管理所有软件配置(包括各种文档、源程序清单、数据和各种磁介质资料);

  (2)协助收集和整理软件生产率数据;

  (3)对可修改的模块分类及编写索引;

  (4)协助小组进行调查、评价和准备文档等。主程序员小组的主要目标是发挥集体力量。因引,小组要培养从“全局”观点出发进行程序设计,把“我的”程序变为“我们的”程序;帮助消除软件的个人属性,小组可以鼓励更加彻底的评审,并在共同的工作中增加学习,从而改善软件质量。

  在本章中,我们曾讨论过人们在工作中有一个需要交流的问题。当采用主程序员小组这种形式时,必须会增加交换意见所需的工作量,这似乎不利于提高软件开发的生产率。然而,不管怎样组织,在软件整个开发过程的总工作量的相当一部分总是要花费在交换意见方面(如计划、分析和评审等)。虽然,小组的形式增加了内部交换意见的工作量,但是这是有组织的评审,必将减少在设计和编码中引入的错误。结果是测试工作量减少了,从而使小组有更高的生产率。当然,小组中技术人员的数量不宜过多,一般建议2~5人为好。5.软件计划

  软件开发过程的每一步都要生产出可交付的文档,这些文档可以用来进行评审和作为下一步工作的基础。

  软件计划是一份比较简短精炼的文件。它应该发给有关部门,其中包括:

  (1)把该项目所确定的工作范围和所需的资源告诉软件主管部门、技术人员和该项目的需求者;

  (2)有关该项目的成本估算和进度安排,应告诉软件主管部门,以便他们进行评审;

  (3)还要发给与该项目开发有关的所有人员,给他们提供有关该项目开发的总办法。软件计划应包含以下内容:

  1.工作范围

  1.1项目目标 1.2主要功能 1.3其他特性 1.4开发情况

  2.资源

  2.1人员资源 2.2硬件资源 2.3软件资源2.4可利用的窗口

  3.成本估算

  4.进度安排六、软件开发工具与环境

  目前,软件开发工具种类繁多,按功能可将软件开发工具分为8类:

  (1)业务系统规划工具 通过将企业的策略性信息需求模型化,这类工具提供一个可导出特定信息系统的“原模型”,这样可使业务信息运行于企业的各个部门。

  (2)项目管理工具 借助这类工具,项目管理者可以有效地估算软件项目所需的工作量、成本和研制周期等,可以定义一个功能分解结构WBS,并制定可行的项目开发计划;基于需求跟踪项目的开发情况;可采集度量数据,以此评价软件开发效率和产品质量。由此可见,这类工具又可详细分为项目计划工具、需求跟踪工具及度量和管理工具等。

  (3)支持工具 这类工具用于支持软件工程过程,具体包括文档编制工具、系统软件工具、质量保证工具、数据库管理工具和软件配置管理工具等。

  (4)分析和设计工具 这类工具是用于建立待开发系统的模型,并评价模型的质量,通过对模型进行一致性和有效性检查,保证分析与设计的完整性。它除包括支持某种开发方法的工具外,还包括基于规则体系的分析与设计机,这种分析与设计机是90年代的期望产品,它可使工具适用于各种分析和设计方法。

  (5)编程工具 这类工具包括用于支持大多数传统编程语言的编译器、编辑器和调试器等,从工具输出来看,4GL也属于这一类。

  (6)测试与分析工具 常用的测试与分析工具包括静态分析工具和动态测试工具。

  (7)原型工具 作为除瀑布式开发模式以外的另一主要开发模式是原型开发模式,因其运用的灵活性和用户需求反应的快捷性愈来愈受到重视,特别是随着软件构件重用研究的深入,更增强了这种开发模式的实用价值。但原型的构造离不开经验信息,所以支持原型开发模式的原型工具的发展日趋专用化,诸如用于用户界面设计的原型工具可利用图形包快速构造出应用系统的界面,供用户评价,以确定最终产品的界面形式。

  (8)维护工具 用于协助维护活动的完成,包括当运行发现问题时,定位到相应的软件开发基线;软件配置不完备时由源程序到分析与设计模型的逆转换工具等。软件开发环境的分类方法很多。

[1] [2] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训