Awesome Software Architecture
Software Architectureを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
原則
- Flexibility - 構造変更を伴わず、環境と使いやすさの要件の両方における変更へ適応できること。
- SOLID - プロジェクトの成長に伴う保守・拡張を考慮してソフトウェアを開発することに寄与します。
デザインパターン
- Ports and adapters pattern - アプリケーションのコアロジックを、それが使用するサービスから分離します。
- Observer pattern - 一対多の状態変更通知。
- Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma et al - すべての始まりとなったもの :orange_book:。
- Software Design Patterns: A Guide - 一般的なソフトウェアデザインパターンの紹介。
- CQRS - 別個のインターフェースを使用して、データを読み取る操作をデータ更新操作から分離します。
- Event Sourcing - ドメイン内のデータの現在状態だけを保存する代わりに、そのデータに対して行った完全な一連のアクションを追記専用ストアで記録します。
- Feature Toggles - Feature Toggles(Feature Flagsとも呼ばれることが多い)は、コードを変えずにチームがシステムの振る舞いを変更できる強力な技術です。
- Behavior Driven Development (BDD) and Functional Testing - BDDは、人間が読めるソフトウェアユーザー要件の説明をソフトウェアテストの基礎として使います。
- N-tier architecture style - レイヤーは責任を分離し、依存関係を管理する方法です。
スケーラビリティとレジリエンス
- Circuit Breaker - カスケード障害を防ぐため、障害中のリソースを保護します。
- Bulkhead - 障害を分離するためリソースを分割します。
- Leader Election - リーダー選出により分散ワークロードを調整します。
方法論
- No silver bullet, by Brooks - 小さな増分でソフトウェアを成長させる主張 :orange_book:。
- 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プラクティスと境界に関する提案 🎥。
ドキュメント
- arc42 - ソフトウェア・システムアーキテクチャの文書化とコミュニケーション向けテンプレート。
- Architectural Decision Records - コードと同じようにアーキテクチャ上の決定をバージョン管理・文書化します。
- Documenting architecture - ソフトウェアアーキテクチャを効果的に文書化する実用的なヒント。
ワークショップ形式
- Event Storming - ドメイン駆動設計を探求するための形式。
- MoSCoW Prioritization - 要件の高速で非常に単純な優先順位付け方法。
- Story mapping - ストーリーマップを作成して要件を可視化します。
- Impact mapping - 製品構築とプロジェクト提供に使用される戦略的計画手法。
- Business Model Canvas - シンプルで視覚的な事業計画。
- Business Model Generation, by Osterwalder & Pigneur - 価値提案、コスト、収益源を容易に可視化します :orange_book:。
モデリング
- The C4 Model - Context、Containers、Components、Codeを使ってソフトウェアを記述します。
- Wikipedia: Data modeling - データモデリングへの優れた短い入門。
ツール
- Sparx Systems Enterprise Architect - オブジェクト指向モデリングスイート。Windowsでのみネイティブに利用可能。
- Visual Paradigm - Enterprise Architectに類似。複数プラットフォームで利用可能。
- Lucidchart - 有料のクラウドベース図エディター。すべての一般的なプラットフォームで利用可能。
- Draw.io - 無料でシンプルな図エディター。Visioなどに匹敵します。すべての一般的なプラットフォームで利用可能。
- Structurizr - C4 Model(上記)に基づくモデリングツール。
- PlantUML - 図向けのmarkdownのように、PlantUMLは英語に似た文法を図へレンダリングします。
- PlantUML for Atlassian - atlassianスイートにPlantUMLベース図のサポートを追加します。
- Sketchboard.io - 共同スケッチボーディング。
- ERD Lab - 開発者向けに作られた無料クラウドベースのエンティティ関係図(ERD)ツール。
- Pumler - PlantUML、Mermaid、Structurizr(C4)向け、ブラウザーベースのPNG/SVGエクスポートを持つリアルタイム共同テキストから図へのエディター。
フレームワーク
Agile
- Scrum - 複雑な製品を開発・保守するためのフレームワーク。
- SAFe - スケーラブルなアジャイルフレームワーク。
- Nexus - Scrum共同作成者Ken SchwaberによるスケーラブルScrum。
- The death of Agile, by Allen Holub - 「Agile」がアジリティの基本原則からどのように離れ、改善に何が必要か 🎥。
- Agile Architecture Pt. 1, by Allen Holub - アジャイル世界でアーキテクチャをどのように扱うか 🎥。
- Agile Architecture Pt. 2, by Allen Holub - アジャイル世界でアーキテクチャをどのように扱うか 🎥。
リーンソフトウェア開発
- Wikipedia: Lean Software Development - ソフトウェア開発領域に向けたリーン製造の翻訳。
- Rolling rocks downhill, by Clarke Ching - アジャイルとリーンソフトウェア開発に関するビジネス小説 :orange_book:。
- The Goal: A Process of Ongoing Improvement, by Goldratt - 製造環境における継続的改善に関するビジネス小説。ソフトウェア開発にも容易に適用できます :orange_book:。
エクストリームプログラミング
- Extreme Programming - 人気のアジャイルプロセスの中で最も具体的で、エンジニアリングと開発プラクティスに焦点を当てます。
DevOps
- Wikipedia: DevOps - 高品質を維持しつつ市場投入までの時間を短縮する、ソフトウェア開発と運用プラクティスの組み合わせ。
- The Phoenix Project, by Gene Kim et al - IT、Devops、ビジネスの勝利を支援すること :orange_book:。
- The Unicorn Project, by Gene Kim - 開発者、デジタル破壊、データ時代の繁栄 :orange_book:。
- Keep CALMS and carry on - BPDTSがDevOps適応の参照としてCALMSモデルを使う方法。
- Chaos Engineering at Netfix - Chaos Engineeringは、スケールでの分散システムの振る舞いに信頼を築くソフトウェアエンジニアリング内の新しい規律です 🎥。
- Adidas DevOps Maturity Framework - C.A.L.M.S.のDevOps定義に基づき、採用するとチームの効率、効果、幸福を高める能力とガイドラインのセットを定義します。
ボーナス
- How to learn software design and architecture - a roadmap - ソフトウェアアーキテクチャの確かな理解に役立つ、さらに学ぶべきこと。
- Software Architect Roadmap - ソフトウェアアーキテクトになるための完全で構造化されたガイド。
貢献
このリストをさらに良くすることに貢献したいですか?素晴らしいです!ただし開始前に、行動規範と貢献ガイドラインをご覧ください。
ライセンス
法律の下で可能な限り、simskijはこの作品に関するすべての著作権および関連・隣接する権利を放棄しました。