软件架构:基础概念总结

作者: Android技术分享 | 来源:发表于2018-03-16 18:20 被阅读142次

    定义

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

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

    架构与设计的关系

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

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

    架构主要的关注点

    功能性

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

    可变性

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

    性能

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

    容量

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

    可构建性

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

    模块化

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

    安全性

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

    生态系统

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

    好的架构

    对于一个软件进行架构,架构师通常的做法是折中。
    他们除了考虑基本的功能需求和品质需求外,还需要考虑投入的成本(人力、财力、时间等等)。
    所以架构设计是否最优,没有一个绝对的答案或正确答案。
    
    从我们的经验来说,应该对架构进行评估,确定它是否满足我们的需求。
    可以通过对架构师提出质询来评估架构,寻找架构不能满足品质关注点的风险,架构师解释如何支持各个场景。
    也可以确定架构的属性,通过建模或模拟系统的一个或多个方面,判断架构是否满足。
    

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

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

    类库

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

    框架

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

    设计模式

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

    架构

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

    一个架构可能包含多个(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个设计模式:即观察者模式、策略模式和组合模式的合体。
    -- 框架是大智慧,用来对软件设计进行分工;
    -- 设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,减低耦合度。
    

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

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

    相关文章

      网友评论

        本文标题:软件架构:基础概念总结

        本文链接:https://www.haomeiwen.com/subject/wovhqftx.html