软件架构设计--质量驱动
作为一个有多年程序编程经验的程序员,很多人的梦想是最早成为一名软件架构师,因为这个职位和工作内容听起来很神秘而拥有这个能力的人就像一位武林高手。
在真正尝试做架构之前,我一直心中有一大堆问题,比方,什么是架构,为什么要做架构,架构和设计有没有区别?(包括很多在大学教软件设计的老师也讲不清楚这些东西)
关于架构:
- 当你想了解一个系统,你对构成系统的每一部分真正做些什么,他们之间怎么协作,以及他们怎么与系统周边相关的世界交互,就是架构该考虑的。
系统架构3个关键部分定义:
1.系统的各个元素和他们间关系
2.系统的基本属性:系统做什么,系统怎么做
3.设计和进化的原则: 这些原则使系统更容易被理解,使系统能按一致和有逻辑的方式被扩展,以适应系统全局的形式而不会加入多余的复杂度
- 软件架构是抽象的,并不详述定义出来的系统元素
- 软件架构需要用结构视图,从很多视角来描述
- 软件架构可用作和利益相关方,对系统讨论,理解,协商,交流的基础
- 架构本身不能达到质量,但提供了达到质量的基础
- 架构对于实现系统相关的质量很重要,这些质量应该在架构阶段被设计和评估
系统质量的需求很大程度上会影响架构设计,质量元素可以考虑
System Qualities
Availability
Modifiability
Performance
Security
Testability
Usability
Business Qualities
Time to market
Cost & benefit
Projected lifetime of system
Targeted market
Rollout schedule
Integration with legacy systems
Architecture Qualities
Conceptual integrity
Correctness & completeness
Buildability
质量驱动架构设计的步骤
- 创建质量属性的场景
- 给质量属性场景排优先级,选择驱动架构的场景
- 对于已选择的质量属性场景,选择架构实现手段,方法
- 选择架构设计模式
- 实例化模块和分配功能
- 定义接口和子模块
- 验证,优化用户啊用例和质量场景
- 文档化架构设计视图
完整过程请看下面视图
由以上描述可以看到架构设计很少用到或几乎没有谈到UML 中的类图,顺序图等等,那些是在设计阶段常用的。
最后:架构是抽象的,设计和实现是具体的,系统就是从抽象到具体的过程!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构