信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1452|回复: 5
打印 上一主题 下一主题

诊断中小企业软件项目管理

[复制链接]

该用户从未签到

升级  0%

跳转到指定楼层
楼主
发表于 2008-2-9 15:02:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<p>  民间有一句俗语:多大的脚穿多大的鞋。对于一个企业的管理来讲,大公司有大公司的方式,小公司也有小公司的方式,如果把别人的经验生搬硬套到自己身上,可能会适得其反。同样,管理一个软件项目也一样,大项目和小项目的方式虽然不完全一样。而从另一个角度来看,项目的大与小并没有本质的区别,很多方法是共通的。管理一个软件项目大项目和小项目的方式不完全一样,但从另一个角度来看,项目的大与小并没有本质的区别,很多方法是共通的。 <font class="insert"></font><br/><font class="insert"></font><br/> <strong> 小型软件项目中常犯的错误 <font class="insert"></font><br/></strong><font class="insert">项目管理者联盟,项目管理问题。</font><br/>  相对于大型软件项目,小型软件项目具有灵活性高、项目功能相对较少、开发人员较少、开发周期较短的特点。业内常常提到“软件危机”一词,常是指一些大型软件项目延期,导致项目顺利交接存在困难。这并不意味着“软件危机”就与小型软件项目毫无干系。正如上述小型软件项目的特点,小项目看起来比较简单,比较容易成功实现,因而人们往往忽视了小项目的管理,其实这是一种误解,从本人的经验看来,小项目开发中容易犯以下的一些错误: <font class="insert"></font><br/><font class="insert"></font><br/>  企业层面: </p>
<p><br/>  1、草率确定项目人员 <font class="insert"></font><br/><font class="insert"></font><br/>  对于中小IT企业来讲,人员流动性高,岗位频繁调换是不争的事实。如果这种情况出现在项目中,将对项目造成致命的影响。试想一下如果一个项目,即使是个小型软件项目,开发人员三天两头调来调去,开发设计怎么可能实现呢?所以企业要根据其项目的周期长短谨慎选择开发人员,保证其在开发过程中可以不间断。 <font class="insert"></font><br/><font class="insert"></font><br/>  2、不看重隐性影响 <font class="insert"></font><br/><font class="insert"></font><br/>  作为一位项目组成员,当项目自开始时,就把自己与项目的命运联系在一起了。项目的成功与失败都无疑会对项目组成员造成心理上、情绪上的影响。在我们许多中小企业中,企业往往关心的那些大型项目的成果,而忽视了小型项目。原因往往也很简单:大型项目意味着大收益。然而,项目对项目组成员的隐性影响却不管项目的大小,且这些影响最终会体现在企业的人员积极性上,这不能不说是企业有效运营的关键。 <font class="insert"></font><br/><font class="insert"></font><br/>  项目管理层面: <font class="insert"></font><br/><font class="insert"></font><br/>  1、草率的计划方案 <font class="insert"></font><br/><font class="insert"></font><br/>  企业往往由于项目较小,在软件开发之前没有认真地进行项目可行性和工作量的估计,便很草率地制定一个开发日程表,没有认真地估计项目难度,结果实际完成时间与估计完成时间往往有较大差别,这种偏差必将是项目陷入困境。 <font class="insert">本文转自项目管理者联盟</font><br/><font class="insert"></font><br/>  笔者从一位做项目管理咨询工作的朋友哪里了解到,许多中小企业对于这种偏差的认识始终停留在是执行过程除了差错,然而根源却是项目的前端出了问题。 <font class="insert"></font><br/><font class="insert"></font><br/>  2、蹩脚设计过程 <font class="insert"></font><br/><font class="insert">项目管理者联盟文章,深入探讨。</font><br/>  从小项目的特点来看,开发人员少,意味着不同人员的程序之间交互、接口相对少一些;开发周期短意味着往往是同样的几个人从头到尾负责一个项目。这两者虽是小项目的优势,却都让人容易犯些错误,比如实施中,往往是几个人碰一下意见,讨论一下最基本的数据结构、函数接口便分头去做自己的工作了,并没有一份较正式的文档。其实很多中小企业都是这样的。这种做法很危险。 <font class="insert"></font><br/><font class="insert"></font><br/>  危险之一是有的人可能会对讨论出的接口、结构理解有偏差,应该承认并不是所有参加会议的人总是很明白,人是会犯错误的。而往往一个单纯的误解可能造成以后的返工。</p>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 顶 踩

该用户从未签到

升级  0%

沙发
 楼主| 发表于 2008-2-9 15:03:03 | 只看该作者
<p>  另一个危险是由于讨论时忽略了某些情况,等大家都按当时的分工完成属于自己的工作后,才发现各个模块组合起来却形不成一个完整的系统。其根源在于系统设计不充分,没有一个负责协调的人员不断监控整个开发过程。 <font class="insert"></font><br/><font class="insert"></font><br/>  第三个危险是一旦有人中途退出开发队伍,其他人加入时,新来的人难以理解以前别人做好的代码,索性自己从头来。另外,没有文档的程序,日后维护和版本升级都比较困难。这些不仅是项目没有成功,而且为项目的后续工作要付出很多努力。 <font class="insert"></font><br/><font class="insert">项目管理者联盟文章,深入探讨。</font><br/>  3、直奔系统测试 <font class="insert"></font><br/><font class="insert"></font><br/>  指项目不经过单元测试而直接进入系统测试,造成这一现象的原因是每个模块相对比较简单,但是为了测试一个模块需要建立一些测试环境。比如为了测试一个函数是否正确,应该用一些测试数据去调用该函数,需要编写一些测试数据。笔者曾经做开发时,也嫌麻烦,觉得反正其他模块也很快出来了,直接用真正的数据来运行几次就行了。&nbsp;殊不知,一旦直接进入系统测试,发现运行结果不正确后需要一步一步查找。同时,由于模块间的调用关系,可能查了很久才发现是某个模块的问题。 <font class="insert"></font><br/><font class="insert"></font><br/>  这种方法如果侥幸成功,效率可能会很高,但这种概率不超过40%。所以,总体看来,这种方法一来效率比较低,大量的时间用在了将一个错误定位在模块上了。另外由于这种测试不完全,真正运行系统,当调用某模块时,可能大部分时候都是正常数据,极少出现边界情况,可能某些边界情况容易被忽视,很久之后才被发现,正所谓欲速则不达。然而,如果我们对每个模块进行单元测试时都进行一下边界测试,就会很容易消除这些隐患。 <font class="insert"></font><br/><font class="insert"></font><br/>  <strong>具体的解决方法 <font class="insert"></font><br/></strong><font class="insert"></font><br/>  解决方法,一句话形容就是"麻雀虽小,五脏俱全",即使是小型项目的开发,仍然应该遵循软件开发的一般规律,必须的步骤是不能省略。但是小项目有它自身的一些特点,实行起来可以相对灵活些。 <font class="insert"></font><br/><font class="insert"></font><br/> <strong> </strong>笔者就以下几个方面进行描述: <font class="insert"></font><br/><font class="insert"></font><br/>  1、需求获取及分析 <font class="insert"></font><br/><font class="insert"></font><br/>  在这上面花费相当时间是很必要,也是很值得的。所有软件项目进入正式开发之前,必须先从用户处获取准确的需求信息,并对信息加以分析。 <font class="insert"></font><br/><font class="insert"></font><br/>  我们知道软件项目可以大致分为专用软件和通用软件两大类。对于专用软件,需求相对较为明确,例如给某单位开发一套该单位专用的系统,一般用户对于软件要完成哪些功能已经有了一个比较清楚的轮廓,而且往往在开发合同中已经大致地规定了。但是,开发合同上往往规定的只是一个大概的框架,项目经理必须与用户进行比较具体的交流和讨论,了解清楚用户心目中的产品究竟是什么样子。做好这个步骤,那么就可以避免开发后期因开发人员的理解和用户的要求存在误解,而造成的时间上的浪费。 <font class="insert">项目管理者联盟文章,深入探讨。</font><br/><font class="insert"></font><br/>  对于通用软件,一方面是从经济效益考虑,另一方面是从技术的角度,例如,用户现有硬件配置如何,软件配置如何,使用什么网络,使用什么数据库等等。为得到这些信息,需要做一定的市场调查,并根据调查的统计结果决定即将开发的软件的一些技术指标。 <font class="insert"></font><br/><font class="insert"></font><br/>  需求分析就是将需求用一种模型来表示。目前比较流行的分析方法是面向对象的方法,这部分涉及到具体的方法,在此不详细讨论,只想强调分析与设计过程的衔接。 </p>
<p><br/>  分析过程的内容是用类的结构来表示目标系统,并不设计具体实现,如采用什么编程语言,在什么操作系统平台上运行等等。这些具体实现是在设计阶段来完成的。面向对象方法的优点是分析、设计、编码过程表示法统一,能比较好的衔接。但是,是把分析和设计阶段分开,采用瀑布式开发,还是采用其他方式,要看具体的情况。一般来讲,对于需求潜在变化不大的项目,可以采用瀑布模型,有一个很明显的设计阶段,这样做的好处是有一份比较完整的分析文档。 <font class="insert"></font><br/><font class="insert"></font><br/>  2、设计过程 <font class="insert"></font><br/></p>

该用户从未签到

升级  0%

藤椅
 楼主| 发表于 2008-2-9 15:03:31 | 只看该作者
  包括对分析模型必要的修改。可能需要对某些类结构进行一些修改,这些修改的原因可能是编程环境的要求,或者为了重用以前的某些工作。比如定义界面部分、数据访问(数据库)部分。由于目前很多编程语言都可以可视化地设计界面,所以界面部分工作往往留到了编码阶段来完成。于是设计阶段的工作量并不大。 <font class="insert"></font><br/><font class="insert"></font><br/>  3、编码与测试 <font class="insert"></font><br/><font class="insert">项目管理者联盟文章,深入探讨。</font><br/>  进入编码工作之后,可能会发现前面分析或设计阶段的某些错误,这时应返回到前面的阶段进行必要的修改。测试阶段正如前所述,即使是小项目,也应该严格地进行测试,在此不再赘述。 <font class="insert"></font><br/><font class="insert"></font><br/>  4、人员的安排 <font class="insert"></font><br/><font class="insert"></font><br/>  比较小的项目,往往是几个人来完成,这几个人基本上从头到尾参加开发。在这几个人中,有一位项目负责人,负责分析、设计和协调的工作。由于项目小,项目负责人也要参加编程,那么这人必须把时间合理运用,据经验来讲,我们需要下面几点原则: <font class="insert"></font><br/><font class="insert"></font><br/>  A&nbsp;.协调工作比自己去做更重要. <font class="insert"></font><br/><font class="insert"></font><br/>  项目管理主要工作就是协调,如果协调上出了漏洞,可能导致很大的问题,所以项目负责人必须随时监控各开发人员的工作,包括内容是否与要求发生偏差,进度是否滞后等等。只有在完成这些工作之后,项目负责人剩下的时间才能用于编程。 <font class="insert"></font><br/><font class="insert"></font><br/>  B&nbsp;.给每个开发人员明确的任务书. <font class="insert"></font><br/><font class="insert"></font><br/>  不管是用面向对象或者其他方法开发,分析、设计模型只是从功能的角度来描述系统。但是,具体开发时每个开发人员必须非常明确自己的任务,这些任务应该采用明确的文档来表示。 <font class="insert"></font><br/><font class="insert"></font><br/>  C&nbsp;.让大家都大致熟悉设计模型. <font class="insert"></font><br/><font class="insert"></font><br/>  让每个开发人员都清楚自己所做的工作在整个系统中处于什么地位,有时侯可能会发现设计模型中的漏洞,避免了各人的代码编写完毕之后又要修改的后果。
  • TA的每日心情
    开心
    2012-1-27 22:05
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    升级  0.01%

    板凳
    发表于 2011-7-3 08:50:37 | 只看该作者
    真是汗啊  我的帖子好少啊  加油  
  • TA的每日心情
    开心
    2013-2-22 11:24
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    升级  0.01%

    报纸
    发表于 2011-7-3 08:50:37 | 只看该作者
    好帖子,要顶!
  • TA的每日心情
    开心
    2013-2-22 11:24
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    升级  0.01%

    地板
    发表于 2011-7-3 09:00:26 | 只看该作者
    说的真有道理啊!
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-7 03:40

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表