architecture driven development のすすめ
TRANSCRIPT
![Page 1: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/1.jpg)
Architecture DrivenDevelopment (ADD)の
すすめ(仮)
福井 厚 Atsushi Fukui
第10回 .NET勉強会
2015.8.7
![Page 2: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/2.jpg)
本セッションの内容について
本セッションの内容は、発表者個人の経験に基づく個人的な意見であり、所属する団体、組織の公式な見解、発表ではありません。
従って、本セッションの内容はその正しさをなんら保証するものではないことをご承知おきください。
本セッションにて提示されるグラフ等で出展の明記のないものは福井のこれまでの経験に基づく感覚的なものであり、数値的な根拠はありませんのでご注意ください。
![Page 3: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/3.jpg)
自己紹介
福井 厚 (ふくい あつし)
@afukui
メーカー系サポートでOS、言語などを担当後、ソフト開発会社でC/S型業務パッケージ、C/C++用ライブラリ等の開発を経験。94年にSIerへ転職しデータベース設計支援、COM+による分散フレームワークの開発などを担当。外資系SIerに転職しソリューションアーキテクトとして.NETによる企業向けフレームワークの構築などを担当。2011年3月株式会社アークウェイに入社、プリンシパル コンサルタントとして企業向けコンサルティングを行う。2015円7月よりアマゾンデータサービスジャパン株式会社でSolutions Architect として活動。
2008年8月、Microsoft Certified Architect for Solutions Certification (MCA) に認定される。
マイクロソフトMVPアワード受賞歴11回(2015年7月にMVP 終了)
![Page 4: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/4.jpg)
個人ロール年表1980 1990 2000 2010
カスタマサポートフィールドSE
ソフトウェアデベロッパー
純国産システムエンジニア
外資系アーキテクト
開発コンサルタント
クラウドソリューションアーキテクト
![Page 5: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/5.jpg)
アジェンダ
コンテキスト
ソフトウェア開発における仕様変更のインパクト
アジャイル開発のメリット
あるアジャイル開発プロジェクトのベロシティ
コストエスカレーション
アーキテクチャの作り方
アーキテクチャの変遷
まとめ
![Page 6: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/6.jpg)
コンテキスト
本セッションのテーマ
ソフトウェア開発におけるアーキテクチャの重要性
用語(アーキテクチャ)
このセッションではアーキテクチャを主にソフトウェアアーキテクチャの意味で使っています。
対象
企業向けアプリケーション開発を行っているアーキテクト、設計者、開発者
![Page 7: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/7.jpg)
お詫び
DDDの話は(ほとんど)しません
.NETの話は(ほとんど)しません
お笑いネタがありません
![Page 8: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/8.jpg)
Eric Evens の DDD におけるアーキテクチャの位置づけ
要求をモデルにマップしたドメイン
ルールエンジンなどオブジェクトでないもの
ファクトリなど特殊な責務のオブジェクト
平べったいRDBの世界
インフラストラクチャ
![Page 9: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/9.jpg)
システム
サービスA
今回お話すするアーキテクチャの位置づけ
アーキテクチャUIレイアウト、認証、認可、例外処理、入力検証、データアクセス、ロギングなど
サービスのデータ処理
サービスロジック
UI可変部
サービスB
サービスのデータ処理
サービス ロジック
UI可変部
サービスC
サービスのデータ処理
サービスロジック
UI可変部
ここ
![Page 10: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/10.jpg)
ソフトウェア開発における仕様変更のインパクト
要求定義 設計 実装・単体テスト
結合・システムテスト
受け入れテスト 展開・本番稼働
![Page 11: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/11.jpg)
アジャイル開発のメリット
ウォーターフォール開発
アジャイル開発の変更管理
短期間のスプリント化
![Page 12: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/12.jpg)
![Page 13: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/13.jpg)
変更の痛みはコストであり生産性に影響
アジャイル開発でも変更のコストが大きいものがある
レイヤリング
スケーラビリティ
ユーザビリティ
セキュリティ
データベーススキーマ
コストが大きいと生産性に影響
作り直しの無駄が発生
![Page 14: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/14.jpg)
あるアジャイル開発プロジェクトのベロシティ
Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6 Sprint 7 Sprint 8
非機能要件の見直し
![Page 15: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/15.jpg)
Architecture Driven Development(ADD)とは
アーキテクチャを先に開発することで、その後のアプリケーション開発の品質と生産性を向上させるアーキテクチャ駆動開発方式のことである。
![Page 16: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/16.jpg)
アーキテクチャの作り方
![Page 17: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/17.jpg)
アーキテクチャとは ISO/IEC/IEEE 42010(IEEE 1471改定版)
http://www.iso-architecture.org/ieee-1471/cm/
![Page 18: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/18.jpg)
アーキテクチャは階層構造 企業全体のアーキテクチャから実装コードまですべてがアーキテクチャ
![Page 19: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/19.jpg)
アーキテクチャ ≠ フレームワーク
フレームワークを利用することがアーキテクチャを作ることではありません
目的と制約に従って必要な品質特性を満たすソフトウェアの構造を定義し共通利用する機能を提供するものがアーキテクチャ
従って目的と制約が異なれば違うアーキテクチャが必要です。
![Page 20: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/20.jpg)
正しいアーキテクチャを構築するために
要求定義
フィーチャーの抽出
実装検証
![Page 21: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/21.jpg)
アーキテクチャ要求定義
目的の整理
アーキテクチャを構築する目的は何か
ステークホルダーごとに要求は異なる
アーキテクチャが解決すべき課題は何か
満たすべき品質特性
重視するソフトウェアの品質特性は何か
制約
組織、環境、過去の資産、開発者のスキル、政治的なしがらみなど、どのような制約があるか
利用技術の選定
長く使える技術を見極める
![Page 22: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/22.jpg)
ソフトウェア品質特性 ISO/IEC 25010(IEEE9126の改定)
どの品質特性と副特性を重視するか
© 2015 iso25000.com
![Page 23: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/23.jpg)
フィーチャーの抽出
目的に従ってアーキテクチャが提供すべきフィーチャーを抽出
オプションとマンダトリの整理
フィーチャーと品質特性のマッピング
抽出したフィーチャーで重視する品質特性を満たしているかを確認する
![Page 24: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/24.jpg)
実装検証
抽出したフィーチャーがアーキテクチャ要求を満たしていることを検証
セキュリティ
想定されるケースでの認証、認可は必須
パフォーマンス
パフォーマンスは測るまで誰にも分らない
限界点を知る
システムにとって最も難しい機能から検証する
クラウドの新機能活用や新しい認証基盤の利用など、過去にやったことがないものは失敗するかもしれないことを前提に必ず検証する
![Page 25: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/25.jpg)
アーキテクチャの変遷ある視点で見たアーキテクチャの変遷と理由
![Page 26: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/26.jpg)
HOST / Dumb Terminal
HOSTDumb
Terminal
Compute
Build UI
Display /Input
Data
State
Narrow band network
![Page 27: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/27.jpg)
Client / Server
ServerClient
Compute
Build UI
Display /Input
Data
State
Local Area Network
Compute
![Page 28: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/28.jpg)
Web N-Tier Intranet
Web Server /
App ServerBrowser
ComputeBuild UIDisplay /Input
DataState
Compute
DB Server
Auth
Local Area Network
![Page 29: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/29.jpg)
Internet Web / Multi Device
Web/API Server
Browser
/
Mobile
Compute
Build UI
Display /Input
Data
State
Compute
DB Server
Auth
Auth Provider
Internet
![Page 30: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/30.jpg)
Micro Service Architecture
Web/API Server
Browser
/
Mobile
Compute
Build UI
Display /Input
Data
State
Compute
DB Server
Auth
Auth Provider
Internet
Web/API Server DB Server
Web/API Server DB Server
![Page 31: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/31.jpg)
Cloud Native
API Gateway
Browser
/
Mobile
/
IoT
Compute
Build UI
Display /Input
Data
State
Compute
RDB /
NoSQL/
Big Data Analysis /
ML
Auth
Service APIs
Service APIs
Auth Provider
Internet
![Page 32: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/32.jpg)
まとめ
変更に柔軟に対応できるアジャイル開発であっても変更のインパクトが大きいものがある
アーキテクチャを事前に構築することで、その後のイテレーション開発で品質と生産性を大きく向上させることができる
アーキテクチャは容易には変更できないことを肝に銘じて長いスパンで利用できる技術を選択する
アーキテクチャの変更には理由がある。流行っているという理由で選択しない
![Page 33: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/33.jpg)
Q & A
![Page 34: Architecture driven development のすすめ](https://reader033.vdocuments.mx/reader033/viewer/2022052308/58f2755f1a28abf3568b4597/html5/thumbnails/34.jpg)
ご清聴ありがとうございました