当前位置:首页 -> 焦点新闻

软件工程

2005/1/7 13:21:58       

  目前国内的软件人才开始大量的关注软件工程这门学科,大有80 年代末90 年代初国人追捧汉字系统的劲头,但是实事求是的理解国内的开发过程,我认为软件工程固然是一个方面(甚至可能是非常重要的一面),但隐藏在表象后的问题也是不容忽视的,我认为目前
    开发环节中存在着一些问题或理解的偏差,其中典型的表现在:


1 、 学而优则士

    这个问题很普遍,很多人都是这样想:开发到35岁以后就应该考虑管理的问题了。这个想法是“学而优则士”的想法,好的开发人员,不一定是好的管理人员,因为侧重的面不一样,知识结构也不一样。但是,由于很传统的思想,认为领导就是应该各方面都好些,所以强把“学”推为“士”。这样不但没有更好的提高效率,反而浪费了很好的人才。同时,也是由于传统的思想,“士”更受人尊敬,而“学”往往被认为是蓝领,所以很多的“学而优”者也就有成为“士”的激励诱因了。我认为,这是一个不正常的现象。“学而优”的地位及受人尊敬应该有相应的评判机制,比如说:系统设计师应该比项目经理更加受人尊敬。也只有这样,“学”者才可以安心设计,“士”者也可以更好发挥“士”的职能。


2 、过程与阶段

    只有过程没有阶段是没有意义的,我们都知道,任何一个软件产品的开发都需要很长时间的开发过程,这个过程也是充满风险的;如果没有有效的把过程细化,只是简单的严格按照需求、设计、开发、编码、测试的流程去做,问题也就蕴含其中了。必须明确的是,没有绝对成功的软件工程,也没有满足一切情况下的绝对的开发过程,将过程阶段化只是将风险降低,将蛋糕切细,一次吃不了多次吃。这个在软件工程中的相应的解决方法是里程碑。在绝大多数的开发过程中,里程碑的作用是非常重要的。在有些开发过程中讲究的是渐进式的开发、螺旋式的过程,其实也是对里程碑的一种扩展而已,只不过这些开发过程的里程碑是定义在自己的开发过程中罢了。
    好的开发过程应该是在风险管理上的尽量灵活,我不赞成将里程碑式的阶段管理放入到开发过程中的明细规定中,而是应该在不同的产品或项目开发上灵活掌握。有时一个里程碑可能只是在需求分析阶段的初期,但是如果符合实际的开发需要,我认为就是好的开发方法。用这种观点审视RUP,我认为RUP 中关于里程碑的定义有些刻板,RUP 基本上是一个演化式的开发方法,演化的层次很清楚,但是,对于实际的开发中的里程碑定义的灵活性表现的不够充分。当然,任何开发方法不可能满足所有要求,在相对固定的需求的项目上,RUP 还是有很大的长处的。在这一点上,我比较偏向于MSF 的开发方法。


3 、软件工程的左与右

    以前学马列的时候学了一个概念,就是左倾与右倾,好像是这样定义的:左倾是指的把将来的事现在做,右倾指的事把过去的事现在做。这两种都是不好的。实事求是的讲,我认为现在的推崇RUP 、CMM 等有些左倾的味道。从管理的角度来讲,管理有三个阶段:能人管理、制度管理和标准管理。我认为RUP 、CMM 等属于标准管理的范畴。现阶段的很多公司连能人管理还没有做好,就急于开展标准管理是不正确的方向。首先将能人管理方式进化到制度管理才是当务之急。所谓制度管理就是建立符合公司实情的规章制度,做到人尽其才,在一个游戏规则下做事,这样就可以很大的提高工作效率,更好的沟通开发中方方面面的问题;也只有这样,才能更加深刻的理解标准管理的重要。越过这个阶段,直接跳向更高层次,就象在现阶段实现共产主义的想法一样,有些不切实际。当然,少数公司的制度管理已经很好了,工作效率确实很高了,那就另当别论了。


4 、缺少什么样的人才

    记得一个笑话说:外国人搞软件工程是在一个黑屋子里面抓黑猫,不过到现在还是没有抓住,而中国人是在一个黑屋子里面,而里面连猫都没有,然后有人说,我已经抓到猫了。这个笑话一方面说明直到现在,软件工程还是一个在继续探索、发展的领域,另一个侧面也说明中国搞软件工程摸不着边的局面。(以上摘自《我有一个梦》,作者:胡朝晖,详细参见ChinaByte.com)那么中国最缺少什么样的人才呢?我认为是系统架构师。很多人会说:我们缺少软件工程人员、缺少良好的项目经理、缺少……,是的,这些人我们确实也缺,但最重要的是系统设计师。因为,无论是项目经理、精通软件工程的人员,我们都可以培养,相对的培养成本也不是很高,而系统架构师却需要多年的行业经验和高超的设计水平,这些都不可能短时间内得到。
    很多人说,我们的项目大多都是低成本的包工头似的项目,但是大家是否想过,如果,真的有一个项目是让大家去完成很尖深的系统,又有几个公司可以胜任?!为什么很多的Open Source 的系统可以做的很大,不是因为这些Open Source 有多么的“软件工程”,而是由于有一些优秀的系统设计师在参与设计。软件工程只能使得可以做到的工作做的更好,不能解决连做都做不出来的工作。这也可以说明为什么商业软件中软件工程的重要性,其原因很简单:在大家都能做到的情况下,就要比较谁做的更好了。
    软件工程是贴在楼房上的马赛克,有了当然更好,但是如果楼房的结构不好,贴再多的马赛克也可能只是金玉其外、败絮其中。


5 、对程序员的正常理解
    程序员是要求有创造性的,几乎每个人都是这样想。但在现实的情况下,又有很多人开始谈论如何将程序员当作运转机器的一个齿轮!这是很不对的,是对软件工程的一个曲解!首先,程序员不是打字员,程序员之所以重要,在于他的脑袋而不是他的手指。程序员又不是设计师,他不必有宏观的观点,但程序员必须对某个方面非常的精通,哪怕是很小的一部分。系统设计师不可能将设计做到可以照编程序的地步,他需要把握的是整体;而相应的,程序员需要把握的是局部。当然,如果任何局部都做的很好,整体不一定好,反之也一样。就象一条船,设计师是舵手,他需要有宏观的能力,需要知道哪有险滩,需要辟其风险;而程序员是划手,他需要做到和大家行动一致,需要使用最佳的划船姿势,需要吃苦耐劳的精神。
    不要认为程序员是机器,在他的岗位上一样可以知道航行的轨迹,要仔细听取他们的建议,因为,有时航行的问题往往都是划船的人先发现的。


6 、讨论的也需一定的标准

    有时候会有这样的问题:一帮市场人员与一帮技术人员讨论,为了要解决市场与技术的协调问题,其中市场人员说市场的问题,技术人员说技术的问题,结果往往公说公有理、婆说婆有理。所以,讨论的也需一定的标准!如何定义这个标准在不同的场合和环境下是不尽相同的。技术人员最终需要解决市场上的问题,可是解决的方法并不是简单的服从。如果那样,是不可能做出真正符合市场的产品,因为市场人员看到的只是一定阶段的市场表象,他们并不清除这里面的原因,也不清楚原因的本质。
    比如说:现在人们常说的三层结构,往往客户需要你使用三层结构的思路去解决实际的问题,可是他们并不清楚为什么,只是认为很多人都是这样做的。我不是否定三层结构的优点,只是说,在很多的项目中并不一定非要使用三层结构,因为那会使复杂度增加,而灵活性的掌握又需要很多客户的支持(指客户很明确的说明业务逻辑),同时,真正发挥三层结构的好处,还需要很强的设计师做出良好的设计。在很多的小项目中完全没有必要多此一举,把两层的问题三层化。
    建立这个讨论的标准就要求,技术人员理解问题的缘由,清楚问题的实质。我说的意思并不是要求技术人员要有很强的市场眼光,而是需要把这些更深层次的原因及时的说明给市场人员听。简单的服从市场人员的意志往往是项目可控性失败的直接原因。


7 、片面的理解管理学

    现在有一股势头认为,软件工程中的管理者只要拿个手册照搬执行,肯定十有八、九不会有大的问题。但问题真是这样吗?在《软件工程—实践者的研究方法》中有这样一段关于管理者的神话:神话:我们已经有了关于建造软件的标准和规程的书籍,难道它们不能给人们提供所有需要知道的信息吗?
    事实:不错,关于标准的书籍已经存在,但真正用到了它们吗?……它们完整吗?很多情况下,对于这些问题的答案均是“不”。我们必须明确管理的责任、实质与优劣。优秀的管理是无为管理,管理的目标就是不管理。
    不管的前提是有一套符合实际的游戏规则,大家按照游戏规则做游戏。有些人理解管理就是天天跟在被管理者的后面,不停的催促、不停的调度。这是不对的,这样的管理者是妨碍了正常的工作,是对管理的曲解。
所以说,优秀管理的前提是建立一套大家都能遵守的有效的游戏规则,在此规则下,达到高效工作的目的。
    那种认为管理就是找人谈话、挑人问题、催促进度的理解是错误的,如果,真的遇到了这样的问题,我认为确实是到了需要重新审视自己定义的规则的时候了。


8 、您有一个持续发展的框架吗?
   
    明知不可为而为之的后果是怎样的呢?可能是这样的:项目进度太紧、产品问题很多、每天陷入到工期的泥潭之中……。很多人说项目太紧是市场给的时间太紧、是项目计划不严密、是软件工程不到位等等,但是,回头想想,如果真的做到了:市场给的时间充分、项目计划严密、软件工程符合实际,那么,您有把握完成一个符合用户实际需要的、优秀的、低维护成本的项目吗?我认为,还不行。
    可能很多人不会反对,如果客户的要求是让我们做一些Word 、PowerPoint 的模板(无需编写很多的代码),我们可以很容易的满足客户的需求。但是,如果客户让我们做一些关于MIS 、POS 、甚或是如教育、政务等软件,我们的成功把握度就大大降低了。为什么呢?
    如果,我们做其他类的软件如同做Word 的模板一样容易的话,我们还会没有把握吗?我们缺什么呢?我们在做这些软件的时候为什么就有些信心不足呢?
    问题的症结在于:您是否有一个持续发展的框架。您如果有一个基本满足用户需要的semi-application 的话,您将不会遇到那些问题。 如果您在实际工作中屡战屡败又屡败屡战的时候,您会不会问自己这样一个问题:您有一个持续发展的框架吗?


9 、对过程范型的误解

    任何过程范型都有它的优点和缺点。我们不能否定瀑布模型的优点也不能否认其缺点,我们不能否定演进模型的优点同时也不能否认其缺点,其他范型也一样。很多人推崇RUP 、XP 等过程范型,但是前提是我们必须知道这样的模型是演进模型,有很多的优点,同时也不可避免的有其缺点的存在。比如说:我们需要做一个需求很明确,并且在一段时间内需求不易改变的项目,如:一个数据结构类库、一个通讯底层库等,这时候,使用瀑布模型可能会得到更好的效果。为什么呢?首先,演化模型的任何一次迭代的终点就是下一次迭代的起点,这样有助于用户更好的把握系统,可以更好的理解需求,但这种模型并不适合需求非常清晰的情况,如果
需求非常清晰,这种迭代只能产生更多的冗余文档,更可能产生很多过渡的设计,而这些显然是一种浪费。有些人,干脆就把演进模型当作瀑布模型来使用,讲究的是一步到位,这种做法就更有问题了!如果需要一步到位的系统(即需求非常明确,同时需求很少改变),演化就变成了瀑布,这时候提倡演化无非就是多走了几个弯路而已。
    正确的理解过程范型是正确的使用过程范型的前提。


10 、对测试工作的误解
   
    我们应该重视测试工作,但是,过度的重视测试又会产生严重的问题。测试工作最重要的是要发现问题,是保证提交给客户的软件中不再出现问题,从这个观点说,测试很重要,但是,我们不能为了测试而测试,很多问题不是能够通过测试而解决的。
    发现问题的时候解决是对的,正如亡羊补牢,未为晚也。但是对于问题的源头我们需要更加的重视。我们更加需要重视对于需求分析的审核、对于设计的复审、对于代码的复审。将问题消灭在摇篮中,总比与问题搏斗来的容易。
    对软件的测试固然重要(无论是单元测试还是系统测试),但这种产生了问题征兆的测试是一种狭义的测试。我们决不能忽略对需求分析的测试(需求复审)、对设计的测试(设计评测),这样的种种测试的综合,才是软件工程中对测试的广义理解。
    如果您发现在测试的环节上出现了太多问题,您就应该考虑在其他环节上“测试”是否出了问题。有时候,羊亡的太多,补牢也就晚了。
    测试在软件工程中是一个狭义的概念,但是我们应该努力广义的去理解。


11 、对文档作用的错误理解

    文档在开发过程中是很有用的,但文档泛滥就不好了。有些人说,开发过程中文档越多越好,我认为这种观点是不对的。首先我们要明确开发过程中为什么要写文档,文档的最根本的作用是为了沟通!一个项目或产品可能需要延续很长的时间,开发过程中可能需要很多的环节,可能会遇到很多的问题和很多的解决方法,这时,我们需要文档的帮助,我们需要有一个记录,我们需要有一个共同的声音。文档不过是一个准绳,将开发中的各个树枝树叶扶正。如果,这个准绳太多太紧,大树可能会发育的很高很直,但是就是有些畸形,如果这个准绳太少太松,大树可能就会变成灌木丛。文档的多少、繁简是有度的,绝对不能说越多越好。
    那么这个度多少最好呢?我觉得有几个标准:1 、文档需要说明解决问题的方法而不是解决问题的理论;因为解决问题的理论是在文档形成中做到的;2 、文档完整即可,每一份文档说明一个问题,无需将多个文档的内容放在一个文档的里面;3 、除了重要阶段形成文档,其它部分都只是讨论或者说是想法(这些通过其它工具可以有效的管理起来);4 、不要让文档成为累赘,如果真是这样,我认为就该考虑写作这些文档是否必要了。
    我们在写文档的时候,一定要明白为什么要写这些,无论是为了现在还是为了将来。


12 、仔细审视神话!

    在软件工程的实施过程中,我们往往会遇到很多的神话,“软件神话具有一些特征使得它具有欺骗性……软件神话仍被不少人相信着”(参见《软件工程—实践者的研究方法》P.10),
    如果,我们使用审视的眼光,而不是盲听盲信,我们就有可能发现其中更多的玄妙了。
    希望和大家共同努力,仔细审视软件工程中存在的神话!

煤炭网版权与免责声明:

凡本网注明"来源:煤炭网www.coal.com.cn "的所有文字、图片和音视频稿件,版权均为"煤炭网www.coal.com.cn "独家所有,任何媒体、网站或个人在转载使用时必须注明"来源:煤炭网www.coal.com.cn ",违反者本网将依法追究责任。

本网转载并注明其他来源的稿件,是本着为读者传递更多信息的目的,并不意味着本网赞同其观点或证实其内容的真实性。其他媒体、网站或个人从本网转载使用时,必须保留本网注明的稿件来源,禁止擅自篡改稿件来源,并自负版权等法律责任。违反者本网也将依法追究责任。 如本网转载稿件涉及版权等问题,请作者在两周内尽快来电或来函联系。

  • 用手机也能做煤炭生意啦!
  • 中煤远大:煤炭贸易也有了“支付宝”
  • 中煤开启煤炭出口贸易人民币结算新时代
  • 下半年煤炭市场依然严峻
市场动态

网站技术运营:北京真石数字科技股份有限公司、喀什中煤远大供应链管理有限公司、喀什煤网数字科技有限公司

总部地址:北京市丰台区总部基地航丰路中航荣丰1层

京ICP备18023690号-1      京公网安备 11010602010109号


关注中煤远大微信
跟踪最新行业资讯