Exploiting Client Usage to Manage Program Modularity

Exploiting Client Usage to Manage Program Modularity
复制标题

DOI:
10.7892/boris.104700
复制
发表时间:
2006-06
期刊:
--
影响因子:
--
通讯作者:
María Laura Ponisio
María Laura Ponisio
中科院分区:
其他
文献类型:
--
作者:
María Laura Ponisio

文献摘要

被引文献

相似文献

在过去的三十年里,设计者试图通过将系统实体组织成模块(即实体组)来处理软件的复杂性。然而,模块的创建和组织并不简单。构建这些模块的标准影响系统的可维护性和开发。设计师对同一个系统有不同的兴趣和个人观点,这些观点很难沟通,也很难从代码中提取出来。对这种组织的不了解增加了系统的复杂性,例如,通过增加重复和意想不到的涟漪效应。这反过来又降低了系统对不断变化的需求的灵活性,并导致维护成本的急剧增加。为了克服这些问题,我们提出了一种在面向对象系统中管理局部性的方法。我们开发了一个利用上下文信息的模型,即对象被客户使用的方式,来理解和改进系统中类的组织。通过我们的模型,我们充分利用了模块的上下文信息来评估它们的内聚性,找到放错位置的类,检测热点,并找到客户端拥有的不同视图。在我们的实验验证中,我们应用上下文信息来理解、维护和描述系统。我们的方法与度量、可视化技术和一种名为模拟退火的优化方法一起应用于面向对象系统的逆向工程。总而言之,我们提供了一种方法来理解和改进面向对象系统的模块化,力求简单。
Over the last thirty years designers have tried to cope with software complexity by organizing system entities into modules, i.e. groups of entities. However, the creation and organization of modules is not straightforward. The criterion with which these modules are built impacts in the maintainability and development of the system. Designers have different interests and personal views of the same system, views that are difficult to communicate and to extract from the code. Poor understanding of this organization increases the complexity of the system e.g. by favoring the addition of duplication and of unexpected rippling effects. This, in turn, lowers the flexibility of the system to changing requirements and leads to a sharp increase in their maintenance cost. To overcome these problems, we present a methodology to manage the locality in object-oriented systems. We develop a model that exploits the contextual information, i.e. the way objects are used by their clients, to understand and improve the organization of classes in the system. With our model we take full advantage of the contextual information of modules to evaluate their cohesion, find misplaced classes, detect hot spots and find the different views that its clients have. In our experimental validation we apply the contextual information to understand, maintain and describe systems. Our methodology is applied successively together with metrics, visualization techniques, and an optimization method named simulated annealing to reverse-engineer object-oriented systems. All in all, we provide a methodology to understand and improve the modularization of object-oriented systems, in an effort towards simplicity.