软件按功能划分为系统软件、支撑软件和应用软件三大种类,这三大种类的软件在不同领域中发挥着重要的作用。我们所有软件的运行和开发都是建立在系统软件之上的,而支撑软件是用来构件系统软件,让系统变得更加完美,应用软件则主要是解决实际生活中的一些问题,反映了生活。
软件的分类体现了软件开发的多样性,普通较简单软件在开发过程中不需要较多的技术支持,但是遇到较庞大的工程如:系统软件、一些应用软件的开发时,就要考虑软件规范化的开发。软件体系架构的设计是软件设计很重要的一环,不同类型的软件要使用不同的体系架构,好的架构能够提高软件的可扩展性、可复用性、可维护性,并实现松散耦合的目的。也就是说好的架构能够较容易的实现功能扩展和后期的维护,同时实现代码或逻辑的复用等。
软件体系架构的重要性不言而喻。在软件体系架构中,分层结构是最常见的,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,自上至下分别为:表示层、业务逻辑层、数据访问层,如下图所示:
在我们日常生活中也常常能够看到三层的概念,诸如下面所见的场景:
饭店将整个业务分解为三部分来完成,每一部分各负其责,服务员只管接待顾客、向厨师传递顾客的需求;厨师只管烹炒不同口味、不同特色的美食;后勤工作人员只管提供美食原料;他们三者分工合作共同为顾客提供满意的服务。在饭店为顾客提供服务期间,服务员、厨师、后勤工作人员,三者中任何一者的人员发生变化时都不会影响其他俩者的正常工作,只对变化者进行重新调整即可正常营业。
我们用三层结构开发的软件系统于此类似,表示层只提供软件系统与用户交互的接口;业务逻辑层是表示层和数据访问层之间的桥梁,负责数据处理和传递;数据访问层只负责数据的存取工作。重点强调服务员、厨师、采购员三者中当任何一者发生变化时都不会影响到其他两者的正常工作,而且可以同时分工协作,类似三层结构各层之间的“高内聚,低耦合”特点。
饭店业务员之间的工作是协同的,他们之间只需有相关人员的协调即可实现工作的正常进行。在三层中就是我们通常所说的接口,一旦定义好各层次之间的接口,开发人员就可以分散关注,齐头并进,这也是我们分层设计的一个目的。分层设计主要是为了达到:分散关注、松散耦合、逻辑复用、标准定义的目的。