架构师手册
老郑曾经挺开心。
老郑在某电信软件企业,负责计费系统的架构。最初,他非常重视系统的性能问题,因为他认为:电信领域用户群光,数据量大,所以性能的压力必然会很大。
后来,他们用C++
开发的计费系统上线了,用户反映彼此,性能挺高的。
但现在,老郑很懊恼。
原因何在?原来,计费系统一直面临着功能不断改进的压力,整个团队不断致力于提高系统的可扩展性–以便于增加和修改功能。但始料未及的是,可扩展性上去了,性能下来了!
看着程序里导出都是接口和无处不在的间接、继承,老郑产生了一个危险的念头,都是C++
的错,应该用C
重写计费系统!
问题:某公司以C
语言替代C++
,重写电信计费系统,因为开发人员引入了太多抽象,导致“可扩展性上去了,性能下来了”。此法可行否?
C
也会过度设计Pre-Architecture
正确答案:B、C、D
高性能和灵活扩展这两个质量属性之间存在矛盾关系,这就是要害。
上面这张图揭示了更多质量属性之间的“促进”或“矛盾”关系。
我们可以看到:性能和安全性,与其他许多质量属性都是矛盾的。
正确的做法是: