(转摘)_《数据库设计入门经典》:通过分析进行规划与准备_9.4 项目管理

9.4  项目管理
现在是规划和建立时间表的时候,在这种情况下有一些相当好的可用的项目规划软件工具。当计划包括数据库模型设计在类的软件项目时,通常在项目中会包含多个人员。这种做法将计划者排出在项目之外。如果不使用软件工具,并且由多人完成互相重叠并彼此依赖的任务,那么最后的结果是很多无用的图纸。每件事情都可能发生变化。计划是会变的。工作人员可能生病和度假。他们可能找到新的工作。有时候,人们甚至有可能不出现!换言之,预期的事情都会发生变化。
事实上,当开始规划、建立时间表和进行预算时,通常没有实用的或者合适的规则与步骤集合。这样的集合是不存在的。在任何规划过程中(包括预算),对于每一种类型的项目都不可能精确地预测任何程度的确定性。没有人能够真正地预测未来。规划、建立时间表和预算需要很灵活的过程,这一过程几乎完全依赖于计划者的专门知识和过去经验。并且,如果某些变化和意外的阻碍或事件没有被预测到,项目也应该能够迅速地恢复正常。
9.4.1  项目规划和时间表
软件开发公司通过在项目计划中设置紧缩的时间来解决财务问题。在软件开发领域,不同公司对于项目投标预算可能会相差50倍,这种现象是十分普遍的。换言之,从价格最低的投标到价格最高的预算之间相差的金额是巨大的。这种情况表明其中存在猜测性。通常的情况是:最没有经验的公司投标的价格是最低的。最高的投标价很有可能是贪婪的结果。在平均价和最高价之间的价格有可能是最真实的。同样,它们很有可能从中获利,并可以在5到10年之后支持昂贵的软件工具。
正如刚才所谈到的那样,许多研究通常是针对项目规划的。但遗憾的是,这些研究几乎都没有获得有价值的和可用的结果。基于专家过去经验的评估通常是最好的可能性方法。
提示:
有一种名为“ISO 9000-3 Model”的国际标准化组织(International Standards
Institute,简写ISO)模型。这种模型多用于为最终的产品(例如:对数据库模型的分析)提供质量保证的方法。该ISO模型不能提供完成分析过程的方法说明,而是提出有效性验证方法。
计划预算的准确性取决于计划者的经验。数据库设计人员、管理员和编程人员认为他们的项目经理和计划者没有作任何事。这种想法是错误的。计划者承担所有的风险,并做出大胆的推测;编程人员才能开始编写数学上精确的编程代码。因此,当您下一次见到项目经理提心吊胆的时候,您会明白其中的原因。他们的工作才是真正有风险的工作。
这里是常用于描述计划、预算和项目管理的一些需要注意的(有时也是有趣的)项目:
●       “小鸡为什么要过马路?”——
这是一句关于目前无法继续的软件开发顾问公司的名言。该公司因为生产大量的纸张而出名。大量的纸张有助于软件开发公司获得更多的利润。纸张生产的越多,无用的东西也越多。但是,生产越多的纸张,事物被忽略的可能性就越小,同时计划和预算的精确性也越高。大量的纸张带来的另外一个问题是没有人有充足的时间来阅读它们,同时,也不希望来阅读。
●       “用又大又长的大印刷纸和重大标题让人尽快停止在其上活动。”——
这句话也可以称为“推卸责任”。需要有人承担责任,承担者的级别越高越好,并且最好不要由计划者承担责任。计划者有太多的事情需要考虑,从而无暇考虑到所提出的大胆猜测能否成功或是失败。
●       “如果固定了就不要打破它。”—— 如果某样事物运行得很正常,为什么要改变它?
●       “使用现有系统的信息,无论它们是计算化的还是存在于纸上的。”——
现有的结构通常可以为我们提供关于公司更多的信息。但是,如果正在替代某个系统,那么很有可能会与旧系统产生冲突,因此这种做法具有危险性。
●       “不要试图重新发明轮胎”——
当计划建立软件或者新的数据库模型时,可以使用他人提出的合适的想法。当然,需要提防过时的想法。需要作彻底地调查。Internet是可以免费获得可用的新旧想法的完美来源。
●       “更多的资源并不意味着更快的工作”——
参与项目的人员越多,产生的混乱也越多。在项目中投入越多的人力有可能会使项目难于管理,而不是提高项目完成速度。
图9-30显示的是项目时间表的样式,包括多个人员,多种技术人次和多个任务(既互相重叠也彼此依赖)。项目时间表可以十分复杂。但可能的话,应该对时间表尽量简化。如果某个区域超出时间限制,那么过多的依赖性会产生问题。可以根据人员、可用的时间和其他因素保证备用的内容。预期的事情会发生改变。在对备用资源的基础上进行计划。
图9-30显示的式简化的项目时间Gantt图中的5个独立的任务。任务1分配给Jim。任务2和任务4之间没有时间冲突,并且都可以分配给Joe(个人)。任务3和任务5在Janet和Joe之间不止一次地重叠。事实上,Joe会非常忙碌。在正在完成分配任务的人员能够完成多个并发行为的条件下,项目经理可以允许重叠。
提示:
Gantt图是一种项目管理图形工具。Gantt图考虑到对时间表的图像化说明,因此有助于规划、协调和跟踪多任务。这些任务可以是独立的或者相互依赖。许多现成的软件工具允许用Gantt图(或者其他图表)进行计算化的项目管理,这些工具包括Microsoft
Project、Excel电子表格插件,甚至Visio。

                                                               
                                                                  图9-30  示例项目时间表Gantt图
9.4.2  预算
当对项目进行预算的时候,预算成为规划的一部分,因此它对专家解释开放。这里也存在对形式化方法应用到预算上的研究。其中许多研究都没有成功。在商业领域,大多数观察提供的是基于经验的猜测。同样,专家会很勉强地对他们提出结论的方法和原因进行证明和限定。正如已经说明的那样,预算与规划类似。它是受过训练的猜测。没有任何一本书能像本书那样,告诉普通读者为诸如数据库建模一类的项目进行预算的方法。
软件开发(包括数据库模型的开发与设计)中的一个大问题是它的不可把握性。软件项目之所以难以限定,部分原因是由于它们是无法预测的,因为软件项目在开发过程中可以彻底地改变。软件中的绝对复杂性是另一个因素。复杂性不仅存在于每个独立的单元和步骤中。某一步骤可以是数据库模型的分析和设计。另一步骤可以是编写前端应用程序的代码。由于需要考虑到所有的可能性,因此产生复杂性问题。同样,软件开发各个部分之间的相互依赖性也会产生复杂性。这些相互依赖的部分从最高层次(例如:比较数据库模型和应用程序编码)到最细微的部分(在数据库模型中比较同一张表的两个不同字段)。
简而言之,数据库模型分析和设计非常难以预算。最普遍和成功的实行方法是基于所估计的可用时间进行费用估计。最后的结果有可能超过预期结果的50%,有时甚至是最初的保守估计的好多倍。本章已经对很多细节方面进行过讨论:
●       聘请辅助人员的花费—— 聘请软件开发专家经验形式的辅助人员有可能产生巨额的花费。
●       硬件开销—— 硬件既可以很便宜也可以十分昂贵。总之,较贵的硬件可以产生如下情况:
·
昂贵的硬件有助于减少软件的耗费,但是通常会以掩盖性能问题的形式出现。通过硬件的升级可以克服草率的数据库设计和软件开发带来的问题。如果预测到增长并且所选择的硬件跟不上增长的速度,则会产生费用问题。当使用昂贵的硬件设备时,不需要过多地考虑建立的数据库和软件应用程序是否合适。执行速度快的硬件使我们避免考虑许多问题
· 昂贵的硬件可以很复杂。雇佣建立和维护硬件复杂性的人员开销会很高。简化和便宜的硬件只需要较少的培训和较低的技术层次。低技术的劳动力的价格会便宜很多。
●       维护——
维护主要关于复杂性和质量。越复杂的东西越难以维护。另外,低质量的产品会导致维护量的上升。间接地说,维护与数据库模型和最终的应用程序的生存时间有关。软件的生存时间有多久?它们有用的时间和产生效益的时间又有多久?在不断地维护和完全地重写之间存在临界点。换句话说,有时候从头开始重建数据库和软件应用程序要比对旧软件进行维护更能节省开支,原因在于旧软件经过多次修改之后已不再具有维护的价值。
●       培训——
培训影响着各个层次,从技术人员到大量的Internet上的终端用户。很明显,不能对在地球遥远地方的Internet用户进行培训。试图培训Internet用户是没有意义的。人们会对难以使用的应用程序丧失兴趣。您也许可以再次从这个案例开始。对内部人员的培训有所不同。复杂性越高,其中包含的培训也越多。培训需要开销——
有时是很大的开销。

posted on 2007-04-27 13:12    阅读(228)  评论(0编辑  收藏  举报

导航