软件架构(software architecture)是一系列相关的抽象模式,用于指导大型
软件系统各个方面的设计。
软件架构是一个系统的
草图。软件
体系结构是构建
计算机软件实践的基础。
简介
定义
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象
组件。各个组件之间的连接则明确
转载
2023-07-14 15:52:44
72阅读
一,软件架构的两个要点1.代码复用无论是开发哪种软件产品,成本和时间都是最重要的。较少的开发时间意味着可以比竞争对手更早进入市场。较低的开发成本意味着能够留出更多的营销资金,覆盖更广泛的潜在客户。代码复用是减少开发成本最常用的方式之一,其目的非常明显,即:与其反复从头开发,不如在新对象中重用已有的代码。使用设计模式是增加软件组件灵活性并使其易于复用的方式之一。但是,这可能也会让组件变得更加复杂。一
转载
2023-08-15 16:00:23
103阅读
软件体系架构基于一组适用于各种软件系统的基本原则,有经验的架构师知道这些原则,并且能够在软件产品的正确位置实现特定的原则。下面我们快速浏览一下架构师日常遵循的基本原则。1. 依赖倒置(Dependency Inversion)这一原则表明依赖的方向应该是抽象的,而不是具体实现。如果编译时依赖在运行时执行的方向上流动,就形成了直接依赖。通过依赖倒置,可以反转依赖控制的方向。2. 关注点分离(Sepa
转载
2024-03-01 13:03:35
22阅读
开闭原则(OpenClosedPrinciple,OCP)是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定、灵活的系统。例如版本更新,我们尽可能不修改源代码,但是可以增加新功能。在现实生活中
原创
2021-10-24 16:47:19
396阅读
开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则,它 ...
转载
2021-10-24 15:48:00
130阅读
2评论
模块划分应遵循的准则:
[b]高内聚低偶合
模块大小规模适当
模块的依赖关系适当等[/b]
大型软件项目开发中,模块的划分非常的重要!一般来说,模块在功能上尽可能单一和明确化,最好做到模块与目标的一一对应。模块间的联系应尽可能少,对于必须的联系都应该有明确的说明,模块应足够小,以方便单个模块的调试。
从模块划分的视角优化架构:
[b][url]
转载
2024-06-15 14:00:28
189阅读
硬件 => CDN =>DNS =>接入层=>逻辑层=>数据层=>缓存层=>安全=>监控=>质量保证=>性能定位分析 =>案例 什么是架构的高可用 架构高可用重要性 架构高可用的手段都有哪些 架构高可用评价维度是什么 架构高可用的如何分级&考核 架构高可用的涉及环节 典型问题你遇到过吗? 什么是软件架构系统架构两大
转载
2023-08-07 23:33:21
58阅读
软件架构师的工作过程,简单点来说,就是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策。并负责与各方保持沟通,确保系统准确的完成。接下来,我把架构师的工作过程分为六个步骤,并一一详细的来说明。  
转载
2023-08-30 11:17:01
66阅读
开闭原则(Open Close Principle)开闭原则是指软件实体如类、模块、函数应该对扩展开放,对修改关闭。强调的是用抽象构建框架,用实现扩展细节。比如在一个稳定的软件系统中增加新的功能,若对原有的功能进行修改,那么可能带来很多的隐患,甚至降低原系统的稳定性,而如果只是在原有功能的基础上进行扩展,将会有效的降低对原有功能的影响,且利于后续的维护。可以提高软件系统的可复用性、可维护性。&nb
转载
2023-08-10 17:07:20
27阅读
开闭原则(Open-Closed Principle)开闭原则是指一个软件实体(如类、模块或函数)应该对扩展开放,对修改关闭。开闭原则强调的是用抽象创建框架,用实现扩展细节。开闭原则的核心思想就是面向抽象编程。优点:可以提高软件系统的可复用性和可维护性,降低频繁修改代码带来的风险。依赖倒置原则(Dependence Inversion Principle)依赖倒置原则是指设计代码结构时,高层模块不
转载
2023-07-30 19:21:49
43阅读
合成复用原则(Composite/AggregateReusePrinciple,CARP)是指尽量使用对象组合(hasa)/聚合(contanisa)而不是继承关系达到软件复用的目的。可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。继承叫作白箱复用,相当于把所有的实现细节暴露给子类。组合/聚合称为黑箱复用,我们是无法获取到类以外的对象的实现细节的。虽然我们要根
原创
2021-10-24 16:42:26
844阅读
点赞
4评论
接口隔离原则(InterfaceSegregationPrinciple,ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时应当注意以下几点:(1)一个类对另一个类的依赖应该建立在最小的接口之上。(2)建立单一接口,不要建立庞大臃肿的接口。(3)尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。接口隔离原则符合我们常说的高内
原创
2021-10-24 16:45:21
351阅读
合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a)而不是继承关系达到软件复用的目的。可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。 继承叫作白箱复用,相 ...
转载
2021-10-24 15:54:00
117阅读
2评论
依赖倒置原则(DependenceInversionPrinciple,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。接下来看一个案例,还是以Course(课程)为例,先来创建一个类Tom:javapubli
原创
2021-10-24 16:46:44
343阅读
里氏替换原则(LiskovSubstitutionPrinciple,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。这个定义看上去还是比较抽象的,我们重新理解一下。可以理解为一个软件实体如果适用于一个父类,那么一定适用于其子类,所有引用父类的地方必须能透明地
原创
2021-10-24 16:43:46
481阅读
点赞
接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时应当注意以下几点: (1)一个类对另一个类的依赖应该建立在最小的接口之上。 (2)建立单一接口,不要建立庞大 ...
转载
2021-10-24 15:51:00
161阅读
2评论
依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序 ...
转载
2021-10-24 15:49:00
230阅读
2评论
里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为T1的对象o1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。 这个定义看上去还是比较抽象的,我们重 ...
转载
2021-10-24 15:31:00
227阅读
2评论
软件架构本质上是绘制一幅复杂素描所打的草稿,我还说,如果你罩得住,可以不需要这个草稿。但这只是“理论上”,我们写软件,基本上不是在写只有几千行的代码的小程序,而是写数千万行的大型程序。《道德经》说得好,大曰逝,逝曰远,远曰反。一件事情变大以后,原来近在眼前的事情看到的策略,方法,都会反过来。我举简单程序的例子,是反向化简模型,所谓“执古之道以御今之有。能知古始, 是谓道纪”,是让读者从原始的推演中
转载
2018-12-25 09:01:17
703阅读
Java软件架构设计原则:框架是常见开发的最佳实践的抽象,目的在于提高开发效率框架的应该感觉自然 idiomatic,即与相应语言的风格保持一致框架通过抽象使常见的开发变得便利抽象需要鼓励最佳实践的使用提供默认的最佳实践使用,比提供选择更加重要抽象需要尽量避免泄漏提供底层访问能力,让开发者可以在需要的时候能够绕过默认绑定的最佳实践,去实现特定逻辑框架应该提供可定制能力,让开发者可以针对具体业务鼓励
原创
2021-10-14 12:02:23
920阅读