软件系统的价值
行为价值
行为价值是软件的核心价值,包括需求的实现,以及可用性保障(功能性bug、性能、稳定性)
架构价值
如果业务是明确的,稳定的,架构的价值就可以忽略不计。但是真实世界不是这样的。
《架构整洁之道》书中记录了一个真实案例,随着版本迭代,工程师的团队的规模持续增长,但总代码数却趋于稳定,相对应的,每行代码的变更成本升高、工程师的生产效率降低。
为什么架构经常会被忽略:
- 依重要紧急矩阵看,架构通常是重要不紧急的事。
- 架构不能带来明显可见效益。
- 架构需要工程师需要拥有更高的水平。
编程范式
架构其实就是限制,限制源码放在哪里、限制依赖、限制通信的方式,但是这些限制比较上层。编程范式是最基础的限制,它限制了控制流和数据流
- 结构化编程<核心价值是采用分解法将大型问题拆分>(1968):限制了控制权的直接转移
- 面向对象编程(1966): 限制了控制权的间接转移(限制了函数指针的使用。控制权的间接转移——>调用了函数指针或接口,原来的代码不再继续执行,转而去执行别的代码,但具体执行了代码是被封装了的,你并不知道)<没有面向对象编程,跨越组件边界回事一件非常麻烦而危险的过程>
- 函数式编程(1936) :限制了赋值(在架构领域中,所有的竞争问题,死锁问题,并发问题本质上都是可变变量导致的。如果有足够大的存储量和计算量,采用完全不可变的函数式编程,解决以上问题的源头。<但这其实时不现实的,在这只说明函数式编程能让组件更加高效和稳定>)
网友评论