三、软件开发的特征
软件开发究竟是怎么一回事呢?在我的前一个连载《敲响OO时代的丧钟》里,我也讨论到了软件开发的实质,自己引一段来用用。
软件开发的定义:“软件开发,就是在一个受到限制的环境中,利用环境提供的可能性,修改或添加环境允许的各种状态,去满足某一组需求。”
1) 软件开发所处的环境,不仅仅是一个限制,同时也是一个可能性。软件的能力,局限性与硬件的能力,比如说,如果计算机没有喇叭,那么任何软件都不能使计算机播放音乐。但是,另一个必须考虑的方面是,同样有能力发声的计算机,要想使他播放音乐,可能很容易,也可能很困难。用专业一点话来描述就是:“有些硬件的API设计很合理,有些则非常愚蠢。”由于我们对于软、硬件的定义是一个连续体,因此,这个观点不只是可以用来评价硬件API设计,也可以用来评价语言、虚拟机、框架、平台等等软件的一个方面的优缺点——是否有利于二次开发,这是一个重要的评价标准。
2) 修改、添加状态,比较拗口,其实就是编程的意思。在一个受限制的范围内编程,我们需要考虑很多东西,语法、接口、规范、内存大小诸如此类,当然,不同级别的,不同领域的编程,需要考虑的限制是有巨大差别的。软件开发的水平高低也就体现在,满足同样的需求,有些方法速度更快,有些方面却要慢很多。而软件开发的方法的选择,受到很多因素的影响:环境限制,经验多少以及对于需求的了解程度等等。
3) 满足需求,是啊!提起这个需求,每一个程序员都会有好多的苦水要倒出来。为什么满足需求就这么难呢?因为,对于程序员来说,那是另外一个世界(这是比较客气的说法),那些提需求的家伙根本不懂怎么说话(这个说法稍为激烈一些),那是一些不知道自己要什么的蠢货(你遇到过这样的用户吗?)作为程序员,我知道我有很多同行,非常苦恼于与客户谈需求这样的任务——“至少电脑不会出现前后矛盾的逻辑错误”——这就是做程序员的难处。如果我们不仅仅是抱怨的话,也必须承认,程序员是非常挑战的职业,一个好的程序员,不但得是软件开发领域的专家,还得是他开发的那一类软件所在领域的专家。但事实上,其他行业的人,只需要做一种专家就能够混得很好了。
软件开发的实质,与软件开发的特征之间,还是有区别的。毕竟我的前一篇文章,是从技术的角度出发来看软件开发,而现在我们的要讨论的是从管理的角度来看待,它又有哪些特征呢?
软件开发的管理特征,在外行看来,也就是一堆人在做个东西。但是,软件开发的独特之处就在于,软件开发是由一堆独特的人,以独特的方式,做独特的东西。我们先来看看软件开发,遇到了哪些独特的困难:
1、沟通困难:同为软件开发,可能面对的思维模式,是完全不同的世界。比如二进制的世界,函数的世界、逻辑的世界、过程的世界、对象的世界、二维表的世界等等等等。在这些不同的世界中开发软件,需要的思考方式、思维习惯都是不同的。开发项目大到一定程度以后,不同的世界必须在一个完整的项目中和谐并存,这些差异,有时候就会带来沟通障碍。再加上技术与需求世界之间的差异,沟通成为一个非常重要的工作。软件开发中的人与事,如何才能有效沟通,是一个非常重大的课题。
2、控制困难:程序员都是些怪人,至少都是些聪明人。要让他们听话,很难啊。一个项目,要想顺利进行,程序员们能够接受的,必须是“稳定而合理的命令”。而在软件开发过程中,往往需求频繁变动,领导层层叠叠,用户花样百出,计划一改再改。程序员们经常会接到朝令夕改的命令,而且还来自于那些莫名其妙,连说话的逻辑都成问题的家伙。如何才能知道,那些小伙子是在严格地执行命令而不是在那里磨洋工呢?
3、评价困难:要控制,必须要能够赏善罚恶,但是在软件开发中,何为善?何为恶?如何评价一个程序员的工作?我们当然可以在项目计划该结束的时候,再去问他们,做完了吗?但是如果他们那时候没有完成,再要挽救就来不及了。必须在项目开发过程中建立即使有效的反馈机制。以小而高密度的评价手段,来对开发过程进行较为准确的控制,这一切,都必须建立在合理的评价机制的基础上。但是,这样一套评价机制,非常困难。什么才算是好的需求分析?好的代码?好的设计?好的测试用例?没有定论。举个例子:两三年前,在项目中加入EJB的成分,越多越好。现在呢?设计人员,随时都可能被人指责滥用EJB。这风向变得也太快了。
4、估算困难:这个在上一章我们也讨论到了,软件开发与其它行业的一个重大区别,就在于对于软件开发的估算成本,不能忽略不计。想要估算变动剧烈的项目的时间、人力、成本,简直就是不可能的任务。
怎么办?
(未完待续)
分享到:
相关推荐
物流学习探讨管理基本定论.doc
突然发现,很多公司一夜之间变戏法似的迅速的推出了自己基于云的业务系统:比如存储云,或者基于云环境的数据仓库等。...因为云的定义目前可谓是众说纷纭,未有定论——从而任你如何标榜大概都无可厚非。
近年来,研究最多的领域是关于该反应催化剂的开发,其中镍基催化剂的研究最广泛。为了全面了解甲烷二氧化碳重整反应及镍基催化剂的应用,介绍了甲烷二氧化碳重整反应的热力学研究及机理;分析了镍基催化剂的积碳原因...
煤表面官能团对CH4以及CO2吸附性能的影响已得到印证,但不同官能团类型对2种气体吸附行为的具体促进与阻碍作用以及影响因素尚未有定论。利用密度泛函理论,通过计算不同官能团化结构对CH4以及CO2的吸附能数据,揭示...
———————————————————————————————— 作者: ———————————————————————————————— 日期: 大数据研究综述全文共11页,当前为第2页。 大数据研究综述...
煤层是典型的黏弹各向异性介质,将黏弹性和...Hz内是否随频率变化尚无定论,假设煤层Qs随频率线性减小,各阶槽波品质因子曲线低频部分差异很小,高频部分差异变大,当Qs减小到10时,槽波衰减系数随频率增长很快;对于三
论文研究- 58家大中型水泥企业投入产出要素的效益分析.pdf, 大中型...过去对此只有一个模糊的定论,总的认为大中型水泥企业的管理技术落后,生产效率低,但究竟低到什么程度就缺少一个量的概念。本文针对58家大中型水泥
背景:乳腺癌被认为是世界上最常见和最致命的女性癌症。... 方法:我们使用免疫组化方法评估了50例乳腺癌石蜡块中FOXC2和YKL-40的表达。 我们对患者进行了3年的随访,以评估连续治疗后的疾病复发率和生存
在国内外的理论和实证水平上,关于政府债务与经济增长之间的相关性的研究仍然没有定论。 结合中国的实际情况,本文以我国1995年至2014年的31个省和地方政府债务和经济增长数据为18个(2005、2013年,拒绝)为样本。 ...
机构投资者能否稳定市场和改善市场效率尚无定论.通过检验不同类型机构投资者的交易行为对波动率和信息效率的影响,基于非平衡面板数据两阶段最小二乘回归模型提供了新的...
它们可能与使用老年人护理服务的经验有关,这在以前的文献中仍然没有定论。 这项研究旨在探讨以前在正式和非正式长期护理服务中的经验与老年人及其非正式护理人员对生活安排的看法之间的关系。 研究设计和方法:本...
你知道吗 和我们本能以为的不同…… 造一个能在瞬间算出十位数乘法的计算机——非常简单 造一个能分辨出一个动物是猫还是狗的计算机——极端困难 造一个能战胜世界象棋冠军的电脑——早就成功了 造一个能够读懂六岁...
GML指数、ML指数、以及超效率SBM测算的matlab代码,可以计算VRS以及CRS下非期望...最后一种方法是Rolf Fare&Grosskopf(2010)基于方向距离函数的SBM模型(SBM-DDF模型),三种方法的优劣及合理性评价,目前暂无定论。
针对无线Mesh网络混合策略的接口角色决定问题至今尚未定论,定义了接口角色决定问题,并证明了该问题是NP难题。为了在合理的时间内解决接口角色决定问题,提出了一种近似1/2算法。该算法在维持原拓扑结构的情况下,...
通过其运算符,每种 EC 方法都针对勘探-开发平衡提出了特定的解决方案,该解决方案目前在 EC 文献中被认为是一个未定论的问题。 另一方面,多代理系统被引入为智能、合作和自组织结构,其中简单规则的协同作用在...
emacs和vi孰优孰劣争论几十年至今无定论(有定论就怪了)。 很多人认为emacs很难学,其实这是误解,emacs的常用命令一般通过把界面首页的“Emacs快速指南”走几遍就能熟练掌握了。虽然入门不难,但要用emacs煮咖啡...
初中语文文摘社会大熊猫是熊?百年无定论
许多过程,技术,工具,方法论和方法声称可以促进信息系统的开发过程,但是公开报道了很少有支持这些声明的经验验证。 这项研究从两个方面解决了这一缺陷。 首先,它为系统分析技术的比较开发并应用了有前途的实验...
你的观点或方法正是需要通过论文研究撰写所要论证的核心内容,提出和论证它是论文的目的和任务,因而并不是定论,研究中可能推翻,也可能得不出结果。开题报告的目的就是要请专家帮助判断你所提出的问题是否值得研究...
电影是地道语言材料的宝贵来源,但是使它们优于其他... 确定哪一种特定的字幕类型最有效似乎很难确定,并且该领域的结果尚无定论。 因此,有必要进行进一步的研究以确定哪种类型的字幕将导致词汇获取和保留的最佳结果。