软件框架和软件架构的区别?
初学java,遇到jdk,sdk概念:软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
软件包:(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。
开发工具:包含编辑、编译、解释执行(C中是链接执行)等功能。
一、软件框架
软件框架是面向领域(如ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板。
随着软件规模的扩大、应用广泛和软件复用技术的发展,以子程序和类为单位的软件复用出现了很多的不足之处:
(1)子程序的库越来越庞大以至于其使用人员难以掌握
(2)大多数类的粒度很小,其自身不能完成所有有用的功能
正是因为这些原因,使得人们在复用中将一组类(模块)作为一个整体来考虑,由此出现了软件框架。而软件框架中至少包含以下组成部分:
(1)一系列完成计算的模块,成为构件
(2)构件之间的关系及交互机制
(3)一系列可变点(热点、或者称为调整点)
(4)可变点的行为调整机制
开发人员通过软件框架行为调整机制,将领域中具体应用中所特有的软件模块绑定到该软件框架的可变点上,从而得到了最终的应用系统,这个过程称为软件软件框架的例化,软件框架的存在使得开发人员将主要的精力放在系统所特有的模块的开发上,从而提高软件的生产率和质量。
软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。
二、软件架构
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
- 软件架构在定义上分为‘组成派’和‘决策派’两大阵营,分别描述如下:
- ’组成派‘认为软件架构是将系统描述成计算组件及组件之间的交互。它有两个非常明显的特点:
- 关注架构实践的客体——软件,以软件本身作为描述对象。
- 分析了软件的组成,说明软件不是一个‘原子’意义上的整体,而是有不同的部分经过特定的接口进行连接组成的一个整体,这对软件开发来说很重要。
- ‘决策派’认为软件架构包含了一系列的决策,主要包括:
- 软件系统的组织
- 选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为
- 如何组合这些元素,使它们逐渐合成为更大的子系统
- 用于指导这个系统组织的架构风格:这些元素以及它们的接口、协作和组合
软件架构并不仅仅关注软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解、经济以及技术的限制和权衡等。
个人理解:当软件工程具一定规模时,软件开发不完全是以数据结构+算法的形式存在,而是基于技术选择和用户需求等众多因素将软件“分而治之”,架构师的主要任务是将软件分割成不同的模块,并定义模块之间的接口。