软件架构是什么
|
admin
2023年3月6日 16:34
本文热度 517
|
概述
本文从不同角度阐述什么是软件架构,软件架构在做什么,在进行软件架构设计时需要考虑哪些方面。
基本概念
软件系统的架构就是有它的构建者所决定的,软件架构这项工作的实质就是:如何将系统切分成组件,并安排好组件之间的排列关系,以及组件之间的相互通信的方式。
而设计软件架构的目的就是:为了在工作中更好的对这些组件进行研发、部署、运行及其维护。
设计良好的架构:可以让系统更容易理解、易于修改、方便维护、并能轻松部署。
软件架构的终极目标:最大化程序员的生产力,同时最小化系统的总运维成本。
开发
一个开发起来很困难的软件系统,不太可能有一个长久的长久、健康的生命周期。
系统架构设计的作用,就是方便其团队对它进行开发。
运行
设计良好的系统架构应该可以使开发人员对系统的运行一目了然。
架构应该起到揭示系统运行过程的作用。
系统架构应该将系统中的用例,功能,以及必备行为,设置为对开发者可见的一级实体,简化他们对系统的理解。这将会对系统的开发与维护,提供极大的帮助。
部署
在设计的早期就要考虑到部署问题,
为了让开发成为有效的工作,软件系统就必须是可部署的。
通常一个系统的部署成本越高,可用性就越低。所以,实现一键轻松部署应该是设计软件架构的一个目标。
维护
在软件系统所有方面中,维护所需要的成本是最高的。需求的变更,新功能的添加,以及系统缺陷这些工作将会占去大部分人力资源。
系统维护的主要成本,包括两个方面:
新增功能:确定新增功能或修复问题的最佳位置。
风险成本:在进行系统代码修改时,可能衍生出新的问题。
通过优良的架构设计,可以减少维护成本:
将系统切分成各个组件(模块)。
使用稳定的接口把各个组件之间进行隔离。这样让各个组件之间保持正交性,各个组件之间解耦。
将未来需要添加新功能的添加方式明确出来,可以大大降低对系统其他部分造成的伤害的可能性。
如何提前考虑新功能的添加方式?
比如支持数据库:可以编写数据服务层,并设计成接口;当需要支持新的数据库时,只需要按新的数据库的驱动实现接口,其他模块或业务上层代码保持不变。
保持可选项:
让软件尽可能长时间地保留尽可能多的可选项。
所有的软件系统,可以分解为:策略和细节;策略:软件中的业务核心,它是系统真正价值所在;细节:是指操作该系统的人,其他系统与策略进行交互,但又不影响策略本身的行为。
软件架构师的目标:创建一种系统形态,以策略为基本元素,并让细节与策略脱离关系,允许在具体决策过程中,推迟或延迟与细节相关的内容。
比如:在开发早期,开发高层策略时,应该无须选择数据库系统,不用确定使用的web服务,不用确定是否使用REST接口。就是说:软件的高层,与这些东西没有关系。
设备无关:
不同硬件上都能直接部署,而且得到的结果是相同的。
这个原则,对软件开发和部署非常重要。
参考书籍
该文章在 2023/3/6 16:34:17 编辑过