.net 或 java 中的任何想法或任何具体内容?分形维数表示复杂性。一个分形是由其他分形组成的。如果软件模块可以以某种方式被视为分形,那将是可能的吗?
更新:找到了这个但是没有权限访问它。有人做吗?
计算分形维数 - 大型软件系统的全局指标 http://ieeexplore.ieee.org/articleSale/Sarticle.jsp?reload=true&arnumber=5676891
确定这是全新的范例,所以我的问题是:你会怎么做?
最后有一些有趣的建议。直觉上,我认为分形维数可以更好地衡量复杂性,它比其他指标(如 cycloblahblahblah 太接近低级机器操作)更接近人类感受。
最佳答案
分形维数的概念用不好的普通英语 (AFAIK) 表达:如果我将一个对象的基本长度设为两倍大,那么分形会变大多少。点、线、圆、球这些简单的情况导致因子 1、2、4、8 转换(使用二阶数学 Sprite 尘)到维度 0、1、2、3。
对于类似分形的物体(海绵、海岸线...),您会得到有理数。
如果你想将它应用到软件中,你必须定义三件事:
- 什么是“基本长度”
- 源代码的大小是多少。
- 如何“使基本长度加倍”
我认为有很多可能有意义的选项:
目前我个人最喜欢的是这个组合 - 类文件的数量 -LOC - 等到项目按需增长或使用版本控制系统查看系统的不同阶段
另一种方法是使用不同的项目以获得不同大小的“度量”。因此,您可以将 Java 项目的规模与用 C 实现的项目进行比较。
顺便说一句:这篇文章并没有那么贵。
----------------更新------------------------ 不同的想法
有一种称为“盒子计数”的方法 (http://en.wikipedia.org/wiki/Box-counting_dimension)。您可以将源代码解释为一棵树。节点例如是方法+类+字段。边是像“引用”这样的关系。在此图上应用图形布局算法。在结果上使用盒子计数算法。
不知道这是否稳定(当您稍微更改代码时不会有太大变化)或是否有任何有用的属性。但肯定是一个有趣的实验。
关于java - 是否可以使用分形来计算软件的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702989/