技术文章News当前位置:中网维优 > 技术文章 >

武汉程序设计与软件开发的区别?

时间:2019-04-26 14:18 来源:中网维优 作者:中网维优

  在我从事软件开发行业以来,有一个体会,是有些人对于这个行业有个误解,包括我自己也曾经如此。究竟是什么误解呢?也就是以为写程式就是开发软体的全部或绝大多数。
 
  不只我曾经这么认为,我也相信有不少人也和我一样有过类似的误解,以为只要找了一些知道如何写程式、或是很擅长写程式的人,就可以顺利地,把软件开发出来。即使软件开发的环节需要其他的角色,也不过只是配套,真正的主角还是撰写程式,其他环节其实并不重要,搞定程式撰写,就大概可以搞定整个软体的开发了。
 
  不过,在过去的经验里,也有过整个团队都是程式设计高手,在开发软体时却屡遭失败的经验。这样的情况给我一些反思,也就是程式设计其实并不等同于软件开发,程式设计只是软件开发的一个阶段,是重要的阶段,但重要程度不像大多数人所想像的那样,支配着整个软件开发的结果。在今天,相信还是不少人认为,只要找到了一群很会写程式的家伙,把他们凑在一块,开发软体就能无往不利,事实上却不一定如此。
 
  程式设计与软件开发的区别
 
  程式设计像是个人的作战技巧,而软件开发像是团队行军作战,需要的不只是个人的战技,诸如整体的战略、阵势、分工、武器……等等,也都相当的重要。软件开发只讲程式设计,就像两军交战,我军空有个人战技,却不谈如何设定战略、也不谈该如何摆阵一样。
 
  在多年前我还是菜鸟时参加了一个专案,那时听到了前辈和客户的一句话,让我心里很震憾。我记得,他大概是这么说的:「我现在已经不太懂得如何写程式,但是我懂得怎么做软体,这个专案在我的协助下,会顺利完成的」。这句话完全颠覆了我那时对软件开发的看法。
 
  我那时仍旧以为,能够把程式写好,软体就能做得好。因为,不懂得如何写程式,怎么把软体做好呢?然而,之后的一些经验,让我慢慢体会到这句话的意思。
 
  开发软体本身就是一个独立的学问,和程式设计可以是分离的。程式设计是开发软体中几乎不可或缺的一环,但是并不是全部、也不是唯一。
 
  这就好比测试工作也是一个专门的领域,也是开发软体中无法省略的环节,但不会有人认为测试等同于开发软体一样。
 
  之所以会有程式设计等同于开发软体的想法,可能是源自于程式设计是产出实际程式码的直接手段,因此,才会有类似的迷思产生。
 
  据我观察,不少人都有这样的迷思,而这样的迷思,会使得我们在开发软体时,太侧重在程式设计部份,而忽略了其他在软件开发中,也必须关注的重要的事情。
 
  就像前段中所说的,软件开发是一个独立的学问,它探讨的是相关的观念和方法,使得人们可以更好的开发出软体。
 
  如果拿打棒球来比喻,球员的打击技巧像是程式设计,总要把球打出去,才可以发动真正的攻势,但是,若是要得分,要有选球的观念、跑垒的观念,球员间需要合作才能在一个个的垒包间向前推进,而教练也会有各种的战术运用,像是打带跑、盗垒、牲打、等等……,综合搭配起来,才能在一局局的球赛中尝试得分。
 
  守备方也一样,面对不同的打者,会有不同的守备阵形,而投手的配球策略也会做因应调整。当攻击方击出球时,不同位置的守备球员该怎么移动、补位、甚至如何进行封杀、……等等,这些观念也都会深深影响最后的结果,而不单单取决于投手的球速、变化球的种类或变化幅度。
 
  想打好一场棒球赛,固然个别球员的球技扮演重要的角色,但是像是作战策略的拟定、或是融入于比赛之中的各种观念,默契搭配方式,其重要性也不亚于球技,甚至更在那之上。
 
  棒球比赛的例子,我们可以拿来类比软件开发的观念及方法。若想好好地设计出软体,光能设计程式还不够,你得懂得如何开发软体,而且不是懂得程式设计就懂得开发软体,两者可以说是独立的领域。
 
  因此,我们应该要把软件开发当做是一个独立的学问来看待,而不是把它和程式设计给混在一起,才能够把软件开发做的更好。
 
  软件开发的要件
 
  在软件开发里,你要懂得开发软体的流程、步骤、跟步调。软件开发中有很多基本的观念,就像棒球比赛中跑垒、选球那样的基本,也那样的重要,但还是很多人是在不了解或不贯彻这些基本观念的情况下开发软体。在这种情况下,即使很会撰写程式,软件开发的过程,也有可能发生诸般的问题及不顺利。
 
  就像有个基础的小观念就是,在开发时你应该画分阶段,不论究竟分为多少阶段、也不管每个阶段究竟有多长或多短,每一个阶段都有一个明确的开始和结束。在每个阶段里都应该要有明确的需求、有个明确的目标,才能开始进行之后的开发动作。
 
  但是,我们还是很常看到一些人开发软体时没有明确的阶段画分,把所有想做的事都混在一起,也没有明确的需求就开始写程式,也放任需求不时地改变、调整,没有任何管控需求变更的程序或手段。这么一来,就容易导致无法收敛的需求、或是持续变化的需求,影响到整个开发。
 
  控管品质也是软件开发的一环
 
  又好比对软体品质稳定的看法,事实上,在程式码写完之后,还需要一段测试及修改的时间,而这段时间通常不少于撰写程式所花的时间,甚至倍数于撰写程式所花的时间。
 
  其实,这是一个很基本的观念,但也总有人不知道、或是不相信这个观念,最后错估了软体实际需要完成的时程,或是在时间截止时,只能交付品质不够稳定的软体。
 
  再者,又像是软件开发中的瑕疵(defect)或议题(issue),经提出后,都需要被透过某种方式来追踪,并且促使其完成。每个需求不论描述方式多严谨或多简略,都应该有一个明确的描述方式,以便在团队成员间沟通确认。
 
  采用不同的软件开发方法论,都有不同的信仰、价值、和所衍生出来的观念,而绝大多数的开发方法,也都有其共通的基础观念。不论如何,我们都应该学习这些观念并且把它们落实在实务的开发生活中。
 
  软件开发,除了大体的精神之外,就是由这个精神之下再展开的诸般观念。这些方法和观念的重要性并不逊于程式设计的技巧,甚至影响的层面更深远。
 
  有些人偏重程式设计而忽略软件开发,或是误以为程式设计就是软件开发,都有可能使得他们不多下功夫在软件开发之上。
 
  然而,软件开发本身就是一个独立的学问,它关心的是如何用更好的方式打造出品质好的软体,和程式设计有相关,但不能画上等号,或认为它们很接近。
 
  很多时候,我们不见得需要复杂的方法,我们只需要把一些基础的观念落实,如此就能得到不错的成效。
 
  因为,跑垒的速度固然重要,但跑垒的策略和观念也同样不可忽视呀。

  文/ 王建兴
  • QQ咨询

  • 在线咨询
  • 售前咨询
  • 售前咨询
  • 投诉建议
  • 电话咨询

  • 027-87862018
  • 13886188100
  • 13995588992