软件框架和软件架构的区别?

  初学java,遇到jdk,sdk概念:软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

软件包:(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。

开发工具:包含编辑、编译、解释执行(C中是链接执行)等功能。

一、软件框架

​软件框架是面向领域(如ERP、计算领域等)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。也就是说软件框架是领域分析结果的软件化,是领域内最终应用的模板。

随着软件规模的扩大、应用广泛和软件复用技术的发展,以子程序和类为单位的软件复用出现了很多的不足之处:

(1)子程序的库越来越庞大以至于其使用人员难以掌握

(2)大多数类的粒度很小,其自身不能完成所有有用的功能

正是因为这些原因,使得人们在复用中将一组类(模块)作为一个整体来考虑,由此出现了软件框架。而软件框架中至少包含以下组成部分:

(1)一系列完成计算的模块,成为构件

(2)构件之间的关系及交互机制

(3)一系列可变点(热点、或者称为调整点)

(4)可变点的行为调整机制

开发人员通过软件框架行为调整机制,将领域中具体应用中所特有的软件模块绑定到该软件框架的可变点上,从而得到了最终的应用系统,这个过程称为软件软件框架的例化,软件框架的存在使得开发人员将主要的精力放在系统所特有的模块的开发上,从而提高软件的生产率和质量。

软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。

二、软件架构​

软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

  • 软件架构在定义上分为‘组成派’和‘决策派’两大阵营,分别描述如下:
  1. ’组成派‘认为软件架构是将系统描述成计算组件及组件之间的交互。它有两个非常明显的特点:

    • 关注架构实践的客体——软件,以软件本身作为描述对象。
    • 分析了软件的组成,说明软件不是一个‘原子’意义上的整体,而是有不同的部分经过特定的接口进行连接组成的一个整体,这对软件开发来说很重要。
  2. ‘决策派’认为软件架构包含了一系列的决策,主要包括:
    • 软件系统的组织
    • 选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为
    • 如何组合这些元素,使它们逐渐合成为更大的子系统
    • 用于指导这个系统组织的架构风格:这些元素以及它们的接口、协作和组合

软件架构并不仅仅关注软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解、经济以及技术的限制和权衡等。

个人理解:当软件工程具一定规模时,软件开发不完全是以数据结构+算法的形式存在,而是基于技术选择和用户需求等众多因素将软件“分而治之”,架构师的主要任务是将软件分割成不同的模块,并定义模块之间的接口。

软件框架和软件架构的区别?相关推荐

  1. 软件架构, 软件框架,设计模式的区别

    已剪辑自: https://segmentfault.com/a/1190000022489060 软件架构 软件的架构是系统的一个草图.阐述了各个组件之间的通讯.划分层次.一旦系统开始详细设计.架构 ...

  2. 直播软件框架及功能介绍

    作为互联网的新生力量,一种新型的社交互动方式,直播软件快速在互联网行业占有一席之地. 查看全文 http://www.taodudu.cc/news/show-3884724.html 相关文章: 什 ...

  3. 软件体系结构与软件架构解析

    软件体系结构与软件架构的中文翻译都是英文 Software Architecture .两者都使用一样的定义,如 IEEE 的"一个系统的基础组织,包含各个构件.构件互相之间与环境的关系,还 ...

  4. PHP框架之间有什么区别,php框架和设计模式区别

    框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. 框架.设计模式这两个概念总容易被混淆,其实它们之间还是有区别的.(推荐学习:PH ...

  5. 框架和设计模式的区别

    框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. 框架.设计模式这两个概念总容易被混淆,其实它们之间还是有区别的.框架通常是代码重 ...

  6. linux内核中的GPIO系统之(1):软件框架

    一.前言 作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务.对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver.LED d ...

  7. Android App软件框架搭建

    1. App软件框架搭建 1.0软件基本架构 1.1创建MainActivity并设置布局文件 布局文件如下: <?xml version="1.0" encoding=&q ...

  8. Rhapsody软件框架和UML的实时系统开发

    转自http://tech.it168.com/a2009/0827/669/000000669614.shtml 引言 面向对象的软件设计方法推崇抽象.可重用且易维护的设计模式.其中,一个普遍采用的 ...

  9. linux TTY子系统(2) -- 软件框架

    了解tty 子系统 1.TTY的子系统   在Linux kernel中,TTY就是各类终端(Terminal)的简称.为了简化终端的使用,以及终端驱动程序的编写,Linux kernel抽象出了TT ...

最新文章

  1. 数学很差的人能当程序员吗?
  2. LINQ学习(六):OrderBy/Group By子句
  3. OpenCv霍夫变换与RANSAC检测圆形
  4. CAD安装失败怎样卸载重新安装CAD,解决CAD安装失败的方法总结
  5. 情人节的第一道小点心
  6. java tomcat jms_JavaWeb之使用Tomcat、JNDI与ActiveMQ实现JMS消息通信服务
  7. 美团点评金融平台Web前端技术体系
  8. jquery获取html页面参数乱码,JS或Jquery获取浏览器URL的参数值 汉字值乱码 并转码...
  9. 关于机器学习,这里有一份权威入门指南
  10. jconsole命令 Java Monitoring and Management Console
  11. Spring Boot Actuator [监控与管理]
  12. 前端MVC学习笔记第二课
  13. 软件架构领域集大成者——《架构之美》读书笔记
  14. iOS状态栏文字设置成白色
  15. ipad查看qq邮箱收件服务器,ipad邮件设置qq邮箱
  16. 什么是存储引擎以及不同存储引擎特点
  17. 计算机硬盘清理,怎么清理电脑磁盘释放存储空间
  18. 游密科技携手华为云,探讨5G时代下音视频领域的创新变革
  19. 创业公司技术总监出去面试,被拒后的感悟
  20. 用户登录和用户注册案例

热门文章

  1. Resid 学习笔记1-基础命令
  2. 关于markdown
  3. 在 远程桌面 权限不足无法控制 UAC 提示时,可使用 计划任务 绕开系统的 UAC 提示...
  4. 【组件化开发】前端进阶篇之如何编写可维护可升级的代码
  5. Exchange2003-2010迁移系列之十一,Exchange2010 OWA配置
  6. Agile PLM EC Understand the BOM Publishing Process
  7. Nginx提供静态内容
  8. Python-DDoS攻击
  9. 亲测使用 swagger 动态修改后台默认访问地址 swagger-ui.html
  10. Tomcat本地正常!但是部署到服务器后,mysql插入中文乱码问题解决!