Skip to main content
QUICK REVIEW

[论文解读] Towards physical laws for software architecture

A. D. Chepelianskii|arXiv (Cornell University)|Mar 29, 2010
Complex Network Analysis Techniques参考文献 10被引用 45
一句话总结

本文通过将开源软件中的过程调用网络(PCN)建模为无标度网络,提出了一套定量的软件架构框架,应用PageRank和影响力度量来识别关键代码组件。研究发现,PCN中的流行度与影响力在统计上不相关——这与网络世界相反——表明‘关注点分离’原则具有定量基础,并可实现对结构性关键代码元素的自动化检测。

ABSTRACT

Starting from the pioneering works on software architecture precious guidelines have emerged to indicate how computer programs should be organized. For example the "separation of concerns" suggests to split a program into modules that overlap in functionality as little as possible. However these recommendations are mainly conceptual and are thus hard to express in a quantitative form. Hence software architecture relies on the individual experience and skill of the designers rather than on quantitative laws. In this article I apply the methods developed for the classification of information on the World-Wide-Web to study the organization of Open Source programs in an attempt to establish the statistical laws governing software architecture.

研究动机与目标

  • 建立定量的、以数据为驱动的软件架构法则,摆脱‘关注点分离’等概念性指导原则。
  • 通过将软件建模为源自源代码的过程调用网络(PCN),分析其结构特性。
  • 应用网络世界中的链接分析技术(如PageRank)识别软件中重要且具影响力的函数。
  • 探究PCN中流行度与影响力之间的统计相关性是否与万维网中的相关性一致。
  • 识别区分良好组织的软件与网络式网络的结构性特征,如特征值分布和度量的相关性。

提出的方法

  • 通过解析C源代码构建过程调用网络(PCN),其中节点为函数,有向边表示函数调用。
  • 应用谷歌矩阵形式(G_ij = αS_ij + (1−α)/N)计算每个函数的PageRank(ρ)和影响力(ρ*)向量。
  • 使用相关系数 κ = N∑ρ(i)ρ*(i) − 1 来量化网络中流行度与影响力之间的统计依赖性。
  • 分析谷歌矩阵的谱特性,特别是复平面上特征值的分布,以评估网络的模块性和社区结构。
  • 通过分析度分布 P_in(ν) 和 P_out(ν̄) 检验无标度行为,拟合幂律并得到指数 γ_in ≈ 2.0 和 γ_out ≈ 3.0。
  • 使用一致的网络度量,在多个开源项目(包括Linux内核、GIMP和X Windows服务器)中评估结果的稳健性。

实验结果

研究问题

  • RQ1软件架构网络是否表现出与万维网类似的无标度特性?
  • RQ2在软件网络中,函数的流行度(PageRank)与影响力(影响力向量)之间是否存在统计相关性?
  • RQ3软件PCN中谷歌矩阵的谱特性与网络超链接网络中的谱特性相比如何?
  • RQ4PCN中流行度与影响力之间缺乏相关性,是否可被解释为‘关注点分离’的定量表达?
  • RQ5谷歌矩阵中的特征值分布在多大程度上反映了软件系统的模块化与协调结构?

主要发现

  • Linux内核及其他开源项目的程序调用网络(PCN)具有无标度特性,入度和出度分布分别符合幂律,指数为 γ_in = 2.0 ± 0.02 和 γ_out = 3.0 ± 0.1。
  • 流行度(PageRank)与影响力之间的相关系数为 κ ≈ 0,表明PCN中流行函数与有影响力函数之间近乎独立,这与网络中正相关系数(如3.79)形成鲜明对比。
  • PCN的谷歌矩阵特征值分布中,仅有约1%的特征值满足 |λ| > 0.1,表明独立社区极少,而网络中约50%的特征值为弱连接,形成鲜明对比。
  • PCN中流行度与影响力联合概率分布 P(ρ, ρ*) 与边缘分布乘积 p(ρ)p*(ρ*) 非常吻合,证实了统计独立性。
  • 如Linux内核中的 do_fork() 等函数,因其在代码结构中兼具高度流行与高度影响力,被识别为关键组件。
  • 该方法成功推广至其他开源项目,包括GIMP(κ = -0.068)和X Windows服务器(κ = -0.027),在多种软件系统中均表现出一致结果。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。