从软件的价值体系开始向技术的反向分析

软件价值系统的用户级与系统级METRICS包括:

1,持久化的速度与开销;

2,延迟;

3,吞吐量;

4,内存开销;

5,系统状态的收敛性与可管理性,完善的错误处理;

6,处理器开销;

7,I/O开销;

8,磁盘开销;

9,正确性;

10,可进化性;

11,系统性、可靠性;

12,产品性;

13,可伸缩性;

14,灵活性;

15,系统组成件之间的独立性。

其中的一些属性之间其实并不是完全独立的。但仍然把它们独立列了出来。是为了防止不小心就忘记它了。

系统当前性能的重要性比可进化性要高。因为,如果系统当前都不能用,那么我为什么还要修改它呢?

我可以列一个表来对这些东西进行分析。但是看多了文字以后觉得表格的可理解性其实并不好。

持久化作为大部分应用的必要条件被列在首位。因为它实在是太重要了。磁盘比内存稳定100万倍。在适当的时机将数据持久化,是系统能够工作的前提条件。一个没有持久化的系统,就象一个没有长期记忆能力的人,在大多数情况上都是没有用的东西。

绝大多数应用都要求系统具有长期记忆的能力。即使是对于很多高并发的应用,这个需求也没有遭到丝毫的削弱。快速及低成本的持久化到目前为止只有NOSQL可以做到。因为它就是解决旧式数据库管理系统的问题为目标而设计的。这里千万不要提文件系统。因为在这里提文件系统就真的是一种倒退了。

NOSQL仍然是一种数据库管理系统。这使得它能够从所有的应用中独立出来而提供最大面积的可用性。独立系统的好处是,它对其服务调用者没有限制。不管是面向过程的系统还是函数式应用,或面向对象的系统,它都可以为其提供服务。这使得持久化仍然能够以一种服务的形式存在于整个软件体系架构中。这使得我在考虑使用何种编程范型或语言时,无需考虑系统将采用的持久化策略。因为不管如何,它始终都呆在那里,并不会跑远。

至于NOSQL大量的使用异步代替同步的方案,则再一次证明了数据库系统一直都远远地走在应用程序开发者的前面的理论:当应用程序开发者还在苦苦学习同步与锁的时候,数据库早在几十年以前就已经开始使用事务了;当应用程序开发者还在苦苦研究系统的最佳线程数量的时候,数据库则已经在系统中普遍地用异步代替了同步。。。

应用程序开发或语言设计者,总之,应用程序开发领域,需要并可以从数据库学习的东西实在是太多了!

基于过程的系统能提供最好的内存开销。但由于其面向过程的特征而变得更难分析其可靠性,并且基本上不具有任何灵活性与可进化性使得维护成本大大增加。尽管它拥有非常良好的可伸缩性(Which may has higher priority in some applications)。所以它可能只适用于少量的大规模并发应用,但其实并不适用于大量存在的企业级开发。对于大多数企业级应用来说,构建与维护成本比起可伸缩性来说更重要。特别是维护成本,没有哪家企业会希望在这上面挑入太多的金钱。除了那些以系统本身作为其主要生产工具的企业。因为在这些企业里面,软件系统就是他们的核心竞争力,也是他们大部分精力的投入目标所在。

也就是说,对于那种以性能为主的应用,面向过程的方案可能是一种更好的选择。比如如果用Erlang去处理大型在线游戏比起用面向对象的方法去构建这样的系统就可能会是一个比较好的方案,因为系统可以很容易地通过增加机器增加系统的吞吐量而无需对代码作任何的修改。并且因为面向过程的方案提供了一种更为简单的处理流程,反而可能使系统得到比面向对象方案更好的稳定性与可靠性。

 

 

 

 

 

 

你可能感兴趣的:(从软件的价值体系开始向技术的反向分析)