- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Advanced Principles of Component Design
Advanced Principles II Principles of Object-Oriented Component Design Increasing Complexity Complexity and Failure Software’s Chronic Crisis, Scientific American, September, 1994 Complexity dilutes Productivity Because complexity of software can grow geometrically with size... Coupling Coupling is the term used to describe the dependence of one software module upon another. When coupling is high, there are many dependencies between the modules. In a system with n modules, the coupling can be as high O n2 . Coupling – Impact of Change The impact of making a change to a module is a function of its coupling. Every module that depends upon the changed module must be inspected, compiled, tested, and redeployed. Moreover, the transitive closure of modules that depend upon a changed module must be recompiled, re-tested, and redeployed. That transitive closure can be as high as O n ; And since there are n such closures in the system… A system with a fully coupled architecture Dilution of Productivity As the application size grows, more and more effort is applied to dealing with coupled modules. At the knee of the curve more effort is applied to coupling than adding features. The effort expended to add new features drives the complexity upwards and drives the productivity downwards. So…Project effort increases geometrically with project size. … Project size increases Exponentially with time. Other costs of a highly coupled architecture Geometrically increasing compile time. Geometrically increasing unit test time. Componentization is infeasible. Making footprint and load-time issues unmanageable. Barrier to Components As footprint and load time grows, the desire to break the software into individual components -- that can be independently built, tested, and deployed -- increases. However, componentization depends critically upon being able to create subsystems that are independent. So long as coupling is high, and dependency cycles are rampan
文档评论(0)