关于架构设计的几点理解和思考

Posted 长源动力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于架构设计的几点理解和思考相关的知识,希望对你有一定的参考价值。

软件架构是一个系统的草图,描述的对象是直接构成系统的抽象组件,用于指导软件系统各个方面的设计。
1、软件架构的重要性
软件工程中,架构提供了一个项目关系人之间交流的平台,明确了系统实现的约束条件,有助于原型开发和成本、进度评估。
架构作为系统的总体设计,指导后续的详细设计和编码。
架构在较高层面上实现软件复用,使基于模板的开发成为可能,有利于开发的规范化和一致性,减少开发与维护成本。
2、软件架构设计过程
架构设计的过程和内容的不是固定不变的,通常来说包含四个阶段:预架构阶段、概念架构阶段、细化阶段、实现阶段。
关于架构设计的几点理解和思考 3、软件架构设计5视图法:
多视图方法是业界广泛认同的一种架构设计思路,软件系统的不同的角色会站在不同的角度上提出的问题。
5视图法包括:逻辑架构视角、开发架构视角、运行架构视角、物理架构视角、数据架构视角。
(1) 逻辑架构
从系统用户的角度考虑问题,重点是考虑软件功能性需求,包含用户直接可见的功能,还有系统中隐含的功能。设计出来的软件架构能够满足业务逻辑的需求,能够处理越来越复杂的业务逻辑需求。考虑的问题及输出各有不同,下图仅供参考:
关于架构设计的几点理解和思考

(2) 开发架构

从系统开发人员的角度来考虑问题,为了指导开发人员如何架构系统的开发环境,设计的架构要易于理解,易于开发,易于单元测试,最好做到让开发人员可以用最少的代码行数完成功能的开发。重点关注的是开发编码实现方面的问题。开发环境包括:开发框架的选型、开发工具、编程语言、模块划分等内容。考虑的问题及输出示例如下:

关于架构设计的几点理解和思考

(3) 数据架构
不仅仅要考虑开发中涉及到的数据库,实体模型,也要考虑物理架构中数据存储的设计,即数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。考虑的问题及输出示例如下图:
关于架构设计的几点理解和思考
(4) 运行架构

从系统运行时的质量需求考虑问题,特别关注于系统的非功能需求。开发架构更关注的是程序运行前的一些准备工作;而运行架构更多考虑的是程序运行后可能发生的一些问题,关注的不再是全局而是局部,关键点与难点,因此常常需要技术攻关与预研。例如考虑质量属性:系统的功能画面的最长响应时间不超过4秒,能满足2000个用户同时在线使用,基于角色的系统资源的安全控制,还有资源争用、锁机制、同步异步、并发等等。考虑的问题及输出示例如下:

关于架构设计的几点理解和思考
(5) 物理架构

关注安装和部署的系统、网络、服务器等基础设施,考虑硬件选择和拓扑结构,软件到硬件的映射,软硬件的相互影响。考虑的问题及输出示例如下:

 4、软件架构设计的要求
架构设计影响着系统的质量属性,除了满足功能性需求和非功能需求,具有易用性、实用性,稳定的架构设计还应满足高内聚、低耦合,充分考虑安全性、容错性,以及可维护性、可移植性等。
以开发物联网系统为例讨论架构设计的一些要求及重点:
5、几点总结
(1) 架构设计通常从上至下的设计,或者说由高至低的设计。先分层(目前的绝大多数的企业级应用系统中都分为三层,即表现层,逻辑层和数据层),按不同的逻辑层来划分包,在层的包下面再按功能来划分包,注意包之间不要产生循环依赖(高内聚低耦合)。
(2) 架构不是框架,也不是简单的将几种框架或技术的组合,但框架本身也是有架构的。我们在工作中通过将许多方面的可重用的工具类,公共类,基础类等抽象出来,即可形成一些可重用的框架。
(3) 慎用、巧用设计模式。模式其实是一门工具,是人们对于过去解决某一类问题的经验总结。一个项目中不同模块不同层次可能会应用不同的设计模式,我们在设计活动中应用各种设计模式,应先分析清楚问题,注重实用性,平衡业务需求,切忌生搬硬套或过度设计。

                                             

 (供稿者:梁凯宇)


                                          


以上是关于关于架构设计的几点理解和思考的主要内容,如果未能解决你的问题,请参考以下文章

游戏数值策划属性篇:关于属性设计的几点思考

DEVOPS架构师 -- 02Kubernetes落地实践之旅

有效提高ThinkPHP的应用性能的几点建议

关于架构设计的一点思考

软件架构设计分层模型和构图思考

关于缓存的几篇好文章