0 定义
软件工程学科也没有提出通用的复杂性定义和度量方式,但针对某些具体的场景,有一些明确的定义和评估方式。
软件内部的关联关系。越复杂,修改越困难。
0.1 组成
本质复杂度:固有的复杂度。软件把任务抽象出来的东西。
附属复杂度:把抽象的东西,使用代码实现的复杂度。
0.2 没有银弹
由于软件的复杂性本质,本质复杂性占比很大。而使真正的银弹并不存在;所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。(因为本质复杂度是占比最多的)
1 耦合
耦合是不同组件之间的亲密程度。
松紧
2 聚合
同一个模块的不同组件属于同一个模块的程度。
3 循环复杂度(圈复杂度)
函数内的分支度量
V (G) = e − n + 2
3.1 pylint 测试循环复杂度
pylint a.py --load-plugins=pylint.extensions.mccabe