软件开发中使用系统化方法的真正原因.docVIP

软件开发中使用系统化方法的真正原因.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件开发中使用系统化方法的真正原因   1 人固有能力的局限性以及使用工具后产生的力量      人类的劳动总的来说可以分为两种:一种是体力劳动;另一种是脑力劳动。相应地,人的能力总的来说也可以分为两种:一种是人体活动产生的力量,即体力;另一种是使用大脑产生的记忆、理解、想象等的能力,即脑力。   看看最能代表人的体力极限的世界纪录(如跳高、举重等),就可以很容易做出判断,人的体力相当有限。然而,要人们承认这个事实却很困难,各种小说,电影等更是极力地夸大人体的力量。   人的脑力也相当有限,因涉及记忆、理解、想象甚至与智力有关的问题,人们更难接受这个事实。   就体力而言,举个例子,目前,跳高的世界纪录是2.45米(1993年,古巴人哈维尔?索托马约尔创造),而对一个普通的成年人,要想跳过1米的高度,并不困难。现在,如果我们借鉴算法大O的表示,那么,显然,世界冠军与我们一般的成年人,其体力处在同一个数量级。   就脑力而言,要说人的能力处在同一个数量级更是让人难以接受,然而,如果能像体育运动那样明确比赛规则的话,就不得不接受人固有的脑力也处在同一个数量级的事实。比如,1加2加3一直加到N,规定必须一步一步相加,当N确定时,人们所花费的时间,不会相差太多,更一般的,当用同一个算法解决同一个问题时,不同的人所花费的时间,大致在一个数量级之中。换言之,在这种意义上,人的脑力处于同一个数量级。   既然人的体力和脑力极其有限,人固有体力和脑力又处在同一个数量级上,那又如何解释人类在认知和改造客观世界中所产生的巨大力量?答案在于,依靠工具,人能够创造工具又能够使用工具。   尽管人还未能跳过2.45米的高度,计算的速度也不快(智力本质上可以看作是一个认知过程,所有的智力过程,就时间而言,都是不可逆的、确定的计算过程,也就是一种计算),然而,若使用有形的工具,如飞机,人就可以飞得很高;使用无形的工具,如数学理论,就可以在较短的时间内,解决一些复杂的计算问题。      2 复杂性      根据信息论的观点,复杂度可以定义为系统表明自身方式数目的对数,或是系统可能状态数目的对数:K=logN,式中K是复杂度,N是不同的可能状态数。一般来说,一个系统越复杂,它所携带的信息越多。若两个系统各自有M个和N个可能状态,那么,组合系统的状态数目是两者之积M×N,其复杂度为,K=logM×N。   从可操作性的角度,复杂性可以定义为:寻找最小的程序或指令集来描述给定的“结构”,即一个数字序列。若用比特计算的话,这个程序的大小相对于数字序列的大小就是其复杂性的量度。克拉默在其著作《混沌与秩序-生物系统的复杂结构》(Chaos and Order: The Complex Structure of Living Systems)一书中,给出了几个简单例子,用于分析相应程序的复杂性。   例1:序列aaaaaaa……   这是一个亚(准)复杂性系统,相应的程序为:在每一个a后续写a。这个短程序使得这个序列得以随意复制,不管要多长都可以办到。   例2:序列aabaabaabaab……   与第1个例子相比,该例要复杂一些,但仍可以很容易地写出程序:在两个a后续写b并重复这一操作。   例3:aabaababbaabaababb……   这个例子与例2相似,也可以用很短的程序来描述:在两个a后续写b并重复。每当第三次重写b时,将第二个a替换为b。这样的序列具有可定义的结构,有对应的程序来表示。   例4:   aababbababbbabaaababbab……   这个例子,无结构,若想编程,则必须将字符串全部列出。结论:一旦一个程序的大小与试图描述的系统相提并论时,则无法编程。或者说,当系统的结构不能被描述,或描述它的最小算法与系统本身具有相同的信息比特数时,则称该系统为根本复杂系统。在达到根本复杂之前,人们仍可以编写出能够执行的程序,否则,做不到。      3 软件系统的复杂性      人固有的能力极其有限,但是,这种有限的能力可以用来创造工具和使用工具,最后产生巨大的力量。一个典型的使用工具的案例,就是阿基米德给出的一个利用杠杆原理的案例:给我一个支点,我就能撬起地球。   谈到力学、物理学,就不得不提到一个近代科学的巨人,那就是牛顿。牛顿给出过一个著名的定律万有引力定律。利用它,可以解决复杂的行星的轨迹问题。温伯格(Gerald M.Weinberg)在其著作《系统化思维导论》(An Introduction to General Systems Thinking)一书中,对牛顿的贡献进行了分析。他认为,牛顿是个天才,但他的才能并不在于他的大脑计算能力特别突出,而在于懂得如何对问题做合理的简

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档