软件设计之美--2

软件设计要关注长期的变化,需要应对需求的膨胀。这些在不断变化的东西可能还没你的软件生命周期长,又怎么能支撑起长期的变化。

核心的能力

软件的开发目的是什么?

比较直白的答案:软件开发是为了解决由需求带来的各种问题,而解决的结果是一个可以运行的交付物。

软件设计在这个过程做的事情是什么呢?

就是在需求和解决方案之间的一个桥梁。

区别解决简单的问题:

软件的开发往往是一项长期的工作,会有很多参与其中。在这种情况下,就需要建立起一个统一的结构,以便于所有人都能有一个共同的理解。

而在软件的开发过程中,这种统一的结构就是模型,而软件设计就是要构建出一套模型。

模型的包含:{

包括: 描述业务的各种实体,

也包括完成业务功能的各种功能组件。

}


模型,是一个软件的骨架,是一个软件之所以是这个软件的核心。

例如:

一个电商平台,它不用关系数据库,还可以用Nosql,但如果没有产品信息,没有订单,他就不再是电商平台。

模型的粒度可大可小,如果把模型理解为一个一个的类,你也可以把一整个系统当作一个模型。


关于设计,“高内聚,低耦合”,(模块内的内聚成都越高越好,模块间的耦合度越低越好),这其实就是对模型的要求,一个“高内聚,低耦合”的模型能够有效地隐藏细节,让人理解起来也更容易,甚至还可以再上面扩展。

核心观点:

模型是分层的,由一个个小块组成大的部件,最后组成成品。

即便是在一个软件内部,模型也可以是分层,我们可以先从最核心的模型构建,有了这个核心模型之后,可以通过组合这些基础模型,构建出上面的一层模型。(tcp模型)

交易系统

在上图中,分析了主要的交易动作之后,一个交易原语的概念,包括资产冻结,解冻,出尽,入金等少数几个动作。然后,在把交易原语组合变成交易动作的。在这个结构下,由交易源于保证每个业务的正确性,由交易动作保证事务的完整性,这是一种分成,是一种模型上的分层。

约束的规范

软件设计要构建出一套模型,这还是比较直观好理解的,因为模型通常体现在代码里面。但软件设计的另一部分就是--规范,就常常会忽略(重点 一些约定俗称的东西)


规范,就是限定了什么养的需求应该以怎样的方式去完成。

1.与业务处理相关的代码,应该体现在领略模型中

2.与网络链接相关的代码,应该写在王关

3.与外部系统集成的代码,需要有防腐层


模型与规范是什么关系?

模型与规范,相辅相成,

软件设计既包含构建出一套模型,也包括制定出的相应的规范,

至此,我们已经知道了,软件设计既包含构建出一套模型,也包括制定出相应的规范。再回过头来看这节课开头的问题,你是不是对软件设计有了重新的认识呢?特定技术、框架和中间件,只是支撑我们模型的实现,而设计模式、Controller、Service、Model 这些东西也只是一个特定的实现结果,是某些特定场景下的模型。

总结时刻

今天,我们学习了软件设计到底是什么,

它应该包括“模型”和“规范”两部分:

模型,是一个软件的骨架,是一个软件之所以是这个软件的核心。模型的粒度可大可小。我们所说的“高内聚、低耦合”指的就是对模型的要求,一个好的模型可以有效地隐藏细节,让开发者易于理解。

模型是分层的,可以不断地叠加,基于一个基础的模型去构建上一层的模型,计算机世界就是这样一点点构建出来的。

规范,就是限定了什么样的需求应该以怎样的方式去完成。它对于维系软件长期演化至关重要。

关于规范,常见的两种问题是:一个项目缺乏显式的、统一的规范;规范不符合软件设计原则。

模型与规范,二者相辅相成,一个项目最初建立起的模型,往往是要符合一定规范的,而规范的制定也有赖于模型。

你可能感兴趣的:(软件设计之美--2)