软件架构:基础概念总结


定义

软件架构是指:对于软件的各个方面做出的设计决定,包括行为上的和结构上的。

结构上:
表示产品如何划分多个部分,以及这些部分之间的关系。

行为上:
包括外部行为和内部行为。
外部行为描述了产品如何与用户、其他系统、外部设备进行交互。
内部行为描述了产品组件之间的交互接口。
注意:
架构可作为一个名词也可作为一个动词。
作为名词,表示一组抽象、规则,即产品的结构约束,像蓝图或构建规范的文档等,它描述了要构建的对象;
作为动词,表示制作这些抽象、规则的过程;

架构与设计的关系

架构是设计的一部分,通过抽象突出了一些细节,而忽略了另一些细节。

突出的细节:如结构、行为规则、组件如何装配、应用规则等;
忽略的细节:组件如何具体设计、开发等;

架构主要的关注点

功能性

软件向用户提供哪些功能?

可变性

软件将来可能需要哪些改变?哪些可能不需要改变?

性能

软件期望将来达到怎样的性能?

容量

多少用户使用?需要为多少用户保存数据?

可构建性

如何构建成一组组件?能够独立的实现、验证、复用等

模块化

如何将软件任务分解成独立的模块?支持独立开发等

安全性

数据安全如何保证?权限控制?抵挡攻击?等

生态系统

与其他系统、设备如何交互?

好的架构

对于一个软件进行架构,架构师通常的做法是折中。
他们除了考虑基本的功能需求和品质需求外,还需要考虑投入的成本(人力、财力、时间等等)。
所以架构设计是否最优,没有一个绝对的答案或正确答案。

从我们的经验来说,应该对架构进行评估,确定它是否满足我们的需求。
可以通过对架构师提出质询来评估架构,寻找架构不能满足品质关注点的风险,架构师解释如何支持各个场景。
也可以确定架构的属性,通过建模或模拟系统的一个或多个方面,判断架构是否满足。

类库、框架、设计模式、架构概念区别

在一些常规项目的开发过程中,多少都会提到上面几个词汇,
那么,他们之间具体的区别是什么呢?

类库

也可称为工具库,是为解决某一问题而进行的封装。
作用:使开发者摆脱底层编码(不必重复制造轮子),专注特定问题和业务逻辑,给程序员带来了方便。

框架

相对工具库更宏观,是一组协同工作的类,在某种程度上控制整体的结构和流程,是服务于业务的。
作用:使设计者在特定领域重用整体设计(不必重复制造轮子),也是为程序员带来编码约束的。

设计模式

是针对一类问题提出的行之有效的解决方案。
作用:对开发者而言,是思想上(问题解决方案)的重用,但只是针对局部。

架构

是一个软件的最高层次的整体结构和规划。
相对设计模式而言,是针对软件整体的“解决方案”。

一个架构可能包含多个(0 ~ n)框架和多个(0 ~ n)工具库,
一个框架可能包含多个(0 ~ n)设计模式。

1. 一个架构可能包含多个(0 ~ n)框架和多个(0 ~ n)工具库
例如:
一个java web项目,可包含spring/springmvc + hibernate/mybatis + ......等多个框架;
工具库就更多了,如:JSON库、XML库、日期库、图片库等;

2. 一个框架可能包含多个(0 ~ n)设计模式。
普通开发中,常见的框架模式有很多种,如MVC/MVVM/MVP/MTV/CBD等。
以MVC为例,通常,MVC可看做3个设计模式:即观察者模式、策略模式和组合模式的合体。
-- 框架是大智慧,用来对软件设计进行分工;
-- 设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,减低耦合度。

参考:
《架构之美》
《企业架构应用》
......

本文参考了多份资料,比较概念化,如有问题的地方,请及时指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 原文出处:http://www.apkbus.com/blog-875309-62984.html 前言架构设计,...
    zzj丶阅读 1,622评论 1 24
  • 每次夜幕降临,总会有莫名的悲伤涌上心头。 紧张,焦虑,愤怒的小情绪交织在一起,侵蚀着我的身体。 感觉很累。 却找不...
    泡沫伊然阅读 170评论 3 0
  • 此时岱山路上大雨滂沱,看不清车前的路,见附近有所养老院,曲筱绡的车便开了进去 话说今天也是够衰的了,来这盯工程路上...
    野生根号三阅读 316评论 0 1
  • 没有你的梦,醒来总是有些失望,有你的梦,醒来却又总是有些失落。 些许日子没有梦到你了,不知你还好吗? 我可以肯定的...
    你看有只螃蟹阅读 153评论 0 0