- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
没有银弹 - 为龙ppt
Dong SHAO,Nanjing University 没有银弹 思考软件工程中的根本和次要问题 Fredrick P. Brooks 1986 No Silver Bullet (1986) 没有任何一种单纯的技术或管理上的进展,能够独立地承诺十年内使生产率、可靠性或简洁性获得数量级上的进步。 所有大家看到的技术、管理方法都不会给软件开发带来意想不到的效果。 软件开发活动 – 摘要 括根本任务(essential)——打造由抽象软件实体构成的复杂概念结构 次要任务(accidental)——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言. 除非次要任务占了所有工作的9/10,否则即使全部次要任务的时间缩减到零,也不会给生产率带来数量级上的提高. The Werewolf of Eschenbach(1685) Silver bullet – 银弹 人狼--可以完全出乎意料地从熟悉的面孔变成可怕的怪物 消灭人狼--银弹 软件项目 -- 常常看似简单明了的东西,却有可能变成一个落后进度、超出预算、存在大量缺陷的怪物。 软件开发与硬件相比 为什么软件的发展比硬件慢? 不是软件发展慢,而是硬件发展太快。 “从人类文明开始,没有任何其他产业技术的性价比,能在30年之内取得6个数量级的提高,也没有任何一个产业可以在性能提高或者降低成本方面取得如此的进步。这些 进步来自计算机制造产业的转变,从装配工业转变成流水线工业。 ” 探寻软件产业发展的问题 按照亚里士多德的观点,将软件开发的问题分成根本的(essence)——软件特性中固有的困难,次要的(accident)——出现在目前生产上的,但并非那些与生俱来的困难。 根本困难 -软件特性中固有的困难 我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。 如果这是事实,那么软件开发总是非常困难的。天生就没有银弹。 现代软件系统中无法规避的内在特性:复杂度、一致性、可变性和不可见性。 复杂度1 (1)软件实体可能比任何由人类创造的其他实体要复杂,因为没有任何两个软件部分是相同的。如果有我们会将它们合并。 (2)数字计算机本身就比人类建造的大多数东西复杂。计算机拥有大量的状态,这使得构思、描述和测试都非常困难。软件系统的状态又比计算机系统状态多若干个数量级。 (3)软件实体的扩展也不仅仅是相同元素重复添加,而必须是不同元素实体的添加。整个软件的复杂度以很大的非线性级数增长。 复杂度2 (4)软件的复杂度是必要属性,不是次要因素。抽掉复杂度的软件实体描述常常也去掉了一些本质属性。 数学家和物理学家们建立模型以简化复杂的现象,从模型中抽取出各种特性,并通过试验来验证这些特性。这是因为模型中忽略的复杂度不是被研究现象的必要属性。 复杂度3 复杂度问题造成软件产品开发问题 团队成员之间的沟通非常困难,导致了产品瑕疵、成本超支和进度延迟 由于复杂度,列举和理解所有可能的状态十分困难,影响了产品的可靠性 由于函数的复杂度,函数调用变得困难,导致程序难以使用 由于结构性复杂度,程序难以在不产生副作用的情况下用新函数扩充 由于结构性复杂度,造成很多安全机制状态上的不可见性 复杂度4 复杂度引发管理上的问题 全面理解问题变得困难,从而妨碍了概念上的完整性 它使所有离散出口难以寻找和控制 它引起了大量学习和理解上的负担,使开发慢慢演变成了一场灾难 一致性 物理学家面对异常复杂的事物,他们坚信必定存在着某种通用原理。物理学是研究上帝创造的东西。热力学定律。 软件开发面对的复杂度往往是随心所欲、毫无规则可言的,来自若干必须遵循的人为惯例和系统。软件开发面对的是人,不是上帝。 很多复杂性来自保持与其他接口的一致。 可变性 软件实体经常会遭受到持续的变更压力。 汽车、建筑可以修改,但很少有人修改,大家都知道成本很高。 软件包含了很多功能。 软件可以很容易地进行修改——它是纯粹思维活动的产物,可以无限扩展。 软件的变更 人们要求扩展,更改功能 硬件的变化 软件与整个社会联成一体,后者在不断变动,它强迫软件也跟着变动。 不可见性 软件是不可见的和无法可视化的 抽象的功能:几何抽象、机械制图、化学分子模型 帮助我们捕获物理存在的几何特性。 软件的客观存在不具有空间的形体特征 现在没有任何一种2维、3维的图形可以描述软件。 这限制了个人的设计过程,也严重的阻碍了相互之间的交流。 没有银弹 相对必要任务而言,软件工程师在次要任务上花费了多少时间和精力?除非它占了所有工作的9/10,否则即使全部次要任务的时间缩减到零,也不会给生产率带来数量级上的提高。 当年的银弹 Ada和其他高级编程语 面向对象编程 人工智能
您可能关注的文档
- 永旺青岛物流中心启用的联络函 - 青岛永旺东泰商业有限公司.doc
- 永磁风电机组全程高效风能获取非线性控制器设计 - 河海期刊 - 河海大学.pdf
- 永续校园改造计划课程设计表.doc
- 求解批量流水线调度问题的改进和声批量流水线调度问题的改进和声 ....pdf
- 汇丰实业发展有限公司诉哈尔滨市规划局案案情简介: 1993 年4 月 ....pdf
- 永续校园期初简报.ppt(8165 kb ) - 永定国小.ppt
- 汉堡和大汉堡区北欧的经济中心 - hamburg business development ....pdf
- 汉江蜀河水电站主变压器及其附属设备招标公告 - 大唐甘肃发电有限公司.doc
- 汉王ocr_rtf文档 - 社会责任验厂资源与贸易,就上csa[国际验厂网].doc
- 汉能与芬兰金属屋顶制造商签署400千瓦柔性组件供应协定.pdf
文档评论(0)