摘要:今天看了一会儿分治算法的讲座,产生了这样一种感觉,分治法是模块化的雏形。 最初的程序编码基于过程,整个程序就是一个长长的过程,不容易理解,也不容易差错。因为程序员开始对代码进行分治,把长长的代码分段,形成一个个较小的过程或函数,如果依旧过长,则再次分段,直到每段代码长度适量。 再接下来,如果这些子函数或子过程功能不明确,依旧不容易理解,于是逐渐按照特定的功能来进行整合,使得每段代码实现特定的功能。最后,既然每段代码功能相对独立,那就把他们和特定的数据打包,做成黑盒,于是就发展到了模块化。 分治算法的目标固然不是模块化,让程序结构更清晰也仅仅是其附加功能,分治的目的是降低程序的规模,使O(n).
阅读全文
摘要:代理连接器声明组件实例具备的某项功能并非由其自身实现,而是由另一个具备兼容能力的实例。这可以是另一个组件的实例,或者(简单情况下)仅仅另一个类的实例。后一种情况下,代理连接器连接组件的接口或端口与作为其部件的一个包含的类。这个类必须和相连接的接口或端口存在实现关系。 代理连接器用于对行为的层次化分解建模,这种情况下的服务的最终实现处于由多层嵌套之下。代理一词体现了具体的消息和信号在被连接的端口之间的转递,这些端口甚至有可能跨越很多层。要知道这些信号的传递并不一定被所有的系统环境或实现所理解。 一个端口可以由多个下级组件的端口代理。这时,这些下级端口必须共同实现上级端口功能的代理。执行的时候,.
阅读全文
摘要:《OMG UML Superstructure》中对于组件的语义描述一段感觉比较精彩,特翻译如下,不当之处请大家指正。 一个组件是一个自成体系的单元,它封装了一些分类成员的状态和行为。一个组件制定了其相关的正式契约,这些契约包括它为其客户提供的服务以及它所依赖于系统中其它组建提供的服务,这些通过其提供和要求的接口的形式给出。 组件是一个可替换单元,它可以在设计时或者运行时被替换,只要替换它的组件满足基于接口一致性的等价功能。只要环境允许组件通过提供和需求的接口形式提出的约定,这个组件就可以满足这个环境中的交互需求。因此,一个系统可以通过增加新的组件来扩展现有的功能。 组件要求和提供的接口可以体
阅读全文
摘要:今天阅读UML Specification的时候,对Namespace-ElementImport-PackagableElement的关联方式有了更深的理解。ElementImport这个概念,表示一个关联,它本来并不是一个实体,而前述的关联实质上(或者说直观的来分析),应该是两个实体之间有一个关联的结构。但由于中间这个关联含有一些普通关联所无法描述的内容,visibility和alias,因此把它独立为一个实体,于是这个结构就变成了三个实体依次关联。在设计过程中经常会遇到这种情况。但两个实体之间的关联过于复杂时(主要是包含了一些可变因素的时候),就把它们之间的关联独立为一个实体,变成三实.
阅读全文