返回 硬件与物联网
## Awesome Software Architecture
[](https://awesome.re) [Software architecture](https://en.wikipedia.org/wiki/Software_architecture) aims to describe the high level 软件的结构以及创建它们的规则. 由于这个主题非常广泛,它可能 包含一些也出现在更多利基列表中的资源. 如果您喜欢这个列表,请考虑通过在 Twitter 上关注@0x12b来表达您的支持.
硬件与物联网
Awesome software architecture
想为使这份清单变得更好而做出贡献吗? 耶,太棒了! 不过,在开始之前,请查看我们的行为准则和贡献指南.
Awesome software architecture
## Awesome Software Architecture[](https://awesome.re) [Software architecture](https://en.wikipedia.org/wiki/Software_architecture) aims to describe the high level 软件的结构以及创建它们的规则. 由于这个主题非常广泛,它可能 包含一些也出现在更多利基列表中的资源. 如果您喜欢这个列表,请考虑通过在 Twitter 上关注@0x12b来表达您的支持.
Principles¶
- Flexibility - 能够在不包含结构变化的情况下适应环境和可用性要求的变化.
- SOLID - 考虑到随着项目的增长进行维护和扩展的软件开发
Design Patterns¶
- Ports and adapters pattern - 将应用程序核心逻辑与其使用的服务分离.
- Observer pattern - 一对多的状态变化通知.
- Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma et al - 一切的始作俑者
.
- Software Design Patterns: A Guide - 介绍常见的软件设计模式.
- Software Design Patterns and Principes (quick overview) - 常见设计模式的原因及其优点和缺点.
- CQRS - 使用单独的接口将读取数据的操作与更新数据的操作分开.
- Event Sourcing - 不只是将数据的当前状态存储在域中,而是使用仅附加存储来记录对该数据采取的完整系列操作.
- Feature Toggles - 功能切换(通常也称为功能标志)是一种强大的技术,允许团队在不更改代码的情况下修改系统行为.
- Behavior Driven Development (BDD) and Functional Testing - BDD 使用人类可读的软件用户需求描述作为软件测试的基础.
- N-tier architecture style - 层是分离职责和管理依赖关系的一种方式.
Scalability and Resilience¶
- Circuit Breaker - 保护故障资源以防止级联故障.
- Bulkhead - 分区资源以隔离故障.
- Leader Election - 通过选举领导者来协调分布式工作负载.
Methodology¶
- No silver bullet, by Brooks - 为以小增量增长软件提供理由
.
- Clean Architecture, by Martin - 构建可持续和可维护软件的关键原则和概念:orange_book:.
- Technical Debt, by Fowler - 累积技术债务的成本和影响.
- The Magic Tricks of Testing, by Metz - 极简主义理念作为软件测试的实用和务实方法.
- TDD, Where did it all go wrong?, by Cooper - 关于 TDD 实践和边界的建议,以减少耦合.
Documentation¶
- arc42 - 软件和系统架构的文档和通信模板.
- Architectural Decision Records - 以与处理代码相同的方式对架构决策进行版本化和文档化.
- Documenting architecture - 关于如何有效记录软件架构的实用技巧.
Workshop formats¶
- Event Storming - 探索领域驱动设计的格式.
- MoSCoW Prioritization - 快速而简单的确定需求优先级的方法.
- Story mapping - 通过创建故事地图可视化您的需求.
- Impact mapping - 用于构建产品和交付项目的战略规划技术.
- Business Model Canvas - 商业计划变得简单和直观.
- Business Model Generation, by Osterwalder & Pigneur - 轻松可视化您的价值主张、成本和收入流
.
Modeling¶
- The C4 Model - 使用上下文、容器、组件和代码描述软件.
- Wikipedia: Data modeling - 很棒,简短的数据建模介绍.
Tools¶
- Sparx Systems Enterprise Architect - 面向对象的建模套件. 仅适用于 Windows.
- Visual Paradigm - 类似于企业架构师. 适用于多个平台.
- Lucidchart - 付费的基于云的图表编辑器. 适用于所有常见平台.
- Draw.io - 免费和简单的图表编辑器. 可与 Visio 及其类似软件相媲美. 适用于所有常见平台.
- Structurizr - 基于 C4 模型的建模工具(见上文).
- PlantUML - 就像图表的降价一样,PlantUML 将类似英语的语法渲染到图表中.
- PlantUML for Atlassian - 在 atlassian 套件中添加了对基于 PlantUML 的图表的支持.
- Sketchboard.io - 协作速写板.
- ERD Lab - 为开发人员制作的基于云的免费实体关系图 (ERD) 工具.
Frameworks¶
Agile¶
- Scrum - 开发和维护复杂产品的框架.
- SAFe - 可扩展的敏捷框架.
- Nexus - 根据 Scrum 的联合创始人 Ken Schwaber 的说法,可扩展的 Scrum.
- The death of Agile, by Allen Holub - “敏捷”如何偏离敏捷的基本原则,以及我们需要做什么来解决问题.
- Agile Architecture Pt. 1, by Allen Holub - 我们如何在敏捷世界中使用架构.
- Agile Architecture Pt. 2, by Allen Holub - 我们如何在敏捷世界中使用架构.
Lean software development¶
- Wikipedia: Lean Software Development - 翻译软件开发领域的精益制造.
- Rolling rocks downhill, by Clarke Ching - 关于敏捷和精益软件开发的商业小说:orange_book:.
- The Goal: A Process of Ongoing Improvement, by Goldratt - 关于制造环境不断改进的商业小说. 也很容易适应软件开发
.
Extreme programming¶
- Extreme Programming - 最具体的流行敏捷流程,侧重于工程和开发实践.
DevOps¶
- Wikipedia: DevOps - 结合软件开发和运营实践以缩短上市时间,同时保持高质量.
- The Phoenix Project, by Gene Kim et al - IT、DevOps 和帮助您的业务获胜
.
- The Unicorn Project, by Gene Kim - 开发人员,数据时代的数字颠覆和繁荣
.
- Keep CALMS and carry on - BPDTS 如何使用 CALMS 模型作为其 devops 改编的参考.
- Chaos Engineering at Netfix - 混沌工程是软件工程中的一门新学科,它建立了对大规模分布式系统行为的信心.
- Adidas DevOps Maturity Framework - 基于 DevOps 的 CALMS 定义,该框架定义了一组功能和指南,采用这些功能和指南后,可以提高团队的效率、效力和幸福感.
Bonus¶
- How to learn software design and architecture - a roadmap - 有助于学习的其他内容,以深入了解软件体系结构.
- Software Architect Roadmap - 成为软件架构师的完整且结构化的指南.
Contributing¶
想为使这份清单变得更好而做出贡献吗? 耶,太棒了! 不过,在开始之前,请查看我们的行为准则和贡献指南.
License¶
在法律允许的范围内, simskij 已放弃该作品的所有版权和相关或邻接权.
