狠狠撸

狠狠撸Share a Scribd company logo
分析モデル
2025年2月21日
浅海智晴
クラウドアプリケーションのための
オブジェクト指向分析設計講座
第44回
ケース?スタディ
SimpleModeling2021
? オブジェクト指向分析設計での共通範囲
? UML/UP
? 本講座で使用するUMLプロファイル
? プロファイル:SimpleModeling2021 (SM2021)
? オブジェクト指向分析設計の基本からの拡張部を明確化
? アジャイル開発
? Communication
? Embrace Change
? Travel Light
? Scaling
? Component-Based Development
? クラウド?アプリケーション
? モデル駆動開発
SM2021
Travel Light
Embrace Change
Cloud
Model-Driven
Scaling
CBD
Testability
Serviceability
? 非機能要件
? Testability
? Serviceability
第1部 基本編の構成(1)
? 概論 [第1回]
? 開発プロセス [第2回]
? 基本モデル [第3回]
? 静的モデル(1) [第4回]
? 静的モデル(2) [第5回]
? 動的モデル [第6回]
? 協調モデル [第7回]
? 関数モデル [第8回]
? 物理モデル [第9回]
? 作業分野 [第10回]
? ビジネス?モデリング [第11回]
? 要求 [第12回]
? 要求/ユースケース [第13回]
? 要求/シナリオ [第14回]
? 分析 [第15回]
? 分析/コンポーネント分析 [第16回]
? 分析/イベント駆动 [第17回]
? 作業分野
? 設計 [第18回]
? 設計/アーキテクチャ設計 [第19回]
? 設計/コンポーネント設計(1) [第20回]
? 設計/コンポーネント設計(2) [第21回]
? 設計/コンポーネント設計(3) [第22回]
? 設計/ドメイン設計(1) [第23回]
? 設計/ドメイン設計(2) [第24回]
? 設計/ドメイン設計(3) [第25回]
? 設計/ドメイン設計(4) [第26回]
? 設計/ドメイン設計(5) [第27回]
? 設計/原理 [第28回]
? 設計/ UX/UI設計 [第29回]
? 実装(1) [第30回]
? 実装(2) [第31回]
? 実装(3) [第32回]
? テスト [第33回]
第1部 基本編の構成(2)
? アプリケーション?アーキテクチャ [第34回]
? Cloud Native CBD [第35回]
? ドメイン?サブシステム [第36回]
? アプリケーション?サブシステム [第37回]
? プレゼンテーション?サブシステム [第38回]
? Cloud Native Component Framework [第39回]
? ケーススタディ[第40回]
? ビジネス?モデル [第41回]
? 要求モデル [第42回]
? 要求モデル/BDD [第43回]
? 分析モデル [第44回]
? 設計モデル [第45回]
? 実装 [第46回]
? テスト [第47回]
本講座のアプローチ
? オブジェクト指向分析設計の基本を確認
? UML + UP(Unified Process)
? CBD (Component-Based Development)
? 最新技術でアップデート
? クラウド?コンピューティング
? イベント駆動、分散?並列
? ビッグデータ、AI、IoT
? コンテナ
? 関数型
? OFP(Object-Functional Programming), Reactive Streams
? ルール, AI
? DevOps
? アジャイル開発
? DX (Digital Transformation)
第25回 アプリケーション?アーキテクチャ
第2回 開発プロセス
第9回 物理モデル
第11回 ビジネス?モデリング
第2部 クラウド?アプリケーション編
第21回 設計/ドメイン設計
第20回 設計/コンポーネント設計
第2部 クラウド?アプリケーション編
原理 (Principle)
? Agile Software Development [ASD]
? SRP (The Single Responsibility Principle)
? OCP (The Open-Close Principle)
? LSP (The Liskov Substitution Principle)
? …
? GRASP (General Responsibility Assignment Software Patterns or principles)
? Low Coupling
? High Cohesion
? …
? Writing Effective Use Cases [WEUC]
? Scope
? …
パターン (Pattern)
? Design Patterns [DP]
? Observer, Strategy, …
? Domain Driven Design [DDD]
? Ubiquitous Language, Intention-
Revealing Interfaces, …
? Analysis Patterns [AP]
? Party, Quantity, …
? Pattern-Oriented Software
Architecture [POSA]
? Layers, Pipes and Filters, …
? Patterns of Enterprise
Application Architecture [PEAA]
? Unit of Work, Data Transfer Object,
…
? Enterprise Integration Patterns
[EIP]
? Message Bus, Aggregator, …
? Patterns for Effective Use
Cases [PEUC]
? CompleteSingleGoal,
VerbPhraseName, …
? AntiPatterns [AnP]
? Stovepipe System, Analysis
Paralysis, …
内容
? 分析モデル
? プラクティス
? Identify Subsystems
ケーススタディ
? ブック?カフェPieris Booksの販売システム
? 新刊?古本などの書籍に加えてアクセサリーや日用品などのセ
レクト商品を販売
? もともと新刊?古本の販売も行うブックカフェでしたが、新し
くアクセサリーや日用品のセレクト商品販売を併設することに
した
? セレクト商品は見本品の展示を基本と考えており、見本品に対
してECでオーダをする方式を主に考えている
? 見本品はECサイトでの販売も行う
再掲 第40回 ケーススタディ
開発体制
? 背景
? オブジェクト指向分析設計に興味を持つ関係者がいない環境
? クラウド?アプリケーション開発、アジャイル開発、
? 自分一人でアジャイル開発によるオブジェクト指向開発を進める
? 登場人物
? A(私) : バックエンド開発
? 開発プロセスをマスターして、より大きな規模の開発につなげたい
? Uさん:フロントエンド開発
? 手練れのUIエンジニア。モデリングには興味がなくプログラミング中心で開発を行う
? Bさん:ブック?カフェPieris Booksの店長
? ビジネスでやりたいことは明確にもっているが、ビジネス?モデリング的なアプロー
チには興味がない
再掲 第40回 ケーススタディ
分析モデル
作業分野とモデルの関係 第10回 作業分野
再掲
PracticeのActivity
(マイ開発プロセス版改2)
Embrace Change & Travel Light 再掲 第2回 開発プロセス
コンポーネント (Component)
? 再利用可能な部品
? 明確な外部インタフェースを定め実装を隠蔽
? 新規開発を抑えることで開発期間短縮、品質向上を図る
? 再利用性の高い部品化は自然にできることではないので、コストを掛けて積極的に狙い
に行く
? 論理モデルと物理モデルの両方の性質を兼ね備える
? 配備の単位
? 物理的な側面 ? モジュール
? オブジェクト指向分析設計による開発の様々な側面を集約してパッケージ化
? モデリングとプログラミングの結節点
? モデリングはコンポーネントまで。コンポーネントの実現はプログラミングで。
? 再利用可能な部品にするための仕掛けが必要
? コンポーネント?フレームワーク
? 実行コンテキスト
Travel Light
Travel Light
再掲 第5回 静的モデル(2)
オブジェクト指向分析設計の様々の側面
をコンポーネントに集約
? 機能の単位
? 機能を凝集(coherent)して実現
? 開発の単位
? コンポーネント単位で開発の管理を
行う
? 開発工程、担当者など
? モデリングの単位
? コンポーネントの実現はプログラミ
ングで
? 運用の単位
? 配備の単位
? バージョン管理
? 仕様書?マニュアルの単位
? 外部仕様、マニュアルの作成
? テストの単位
? テスト仕様の作成単位
? テストの進捗管理の単位
? 障害調査の単位
? 障害発生箇所の特定
? 障害調査マニュアルの作成
? 販売?課金の単位
? 再利用可能な商品
Scaling
再掲 第5回 静的モデル(2)
プラクティス
プラクティス
? Identify Subsystems
? 分析モデルを作成
? Make Cloud Native CBD
? 設計モデルを作成
Identify Sybsystems
Identify Subsystems
? 分析モデルを作成する
? システムをサブシステムに分割して、サブシステム境界を明確にする
? アクティビティ
? Analyze Use-case Scenarios
? Distill Subsystems
? Analyze a Domain Model
プロジェクト构造
Analyze Use-case Scenarios
? ユースケース記述のシナリオからシナリオ分析で分析モデルを
抽出
? ロバストネス図
第15回 分析
シナリオ分析
? ロバストネス(robustness)分析
? ユースケースのシナリオからロバストネス図を作成
? コンポーネント分析のための中間モデル
? 責務(responsibility)の抽出
? アクター、エンティティを抽出?具体化
? ルールを抽出?具体化
? イベントを抽出
再掲 第15回 分析
UMLで定義されている分析オブジェクト
分析オブジェクト 再掲 第15回 分析
SM2021
本講座による分析オブジェクトの拡張
分析オブジェクト/拡張
Cloud
第2部 クラウド?アプリケーション編
再掲 第15回 分析
ロバストネス図 再掲 第15回 分析
SM2021
ロバストネス図(イベント駆動) 再掲 第17回 分析/イベント駆动
ロバストネス図 (Pieris Books)
Distill Subsystems
? ロバストネス図からシステムを構成するサブシステム群を抽出
? サブシステム間の関係
? サブシステムのインタフェースを定義
? Cloud Native
? 更新処理はイベント駆動による非同期化
設計オブジェクトの抽出
? アクター
? UI経由でシステムにアクセスする利用者
? 利用者の代理オブジェクト(ユーザー)がエンティティ?オブジェクトとして管理される
? セッション情報の管理も必要
? 通信相手の外部システム
? 時間
? バウンダリ
? UIを実現するオブジェクト
? RPCを実現するオブジェクト
? エンティティ
? エンティティ?オブジェクト(永続オブジェクト)
? 主にデーターベースに格納して管理
? コントロール
? 責務(responsibility)を表現
? オブジェクトのオペレーション
再掲 第16回 分析/コンポーネント分析
設計オブジェクトからコンポーネントへ
? アクター
? ユーザーの管理や認証?認可を行うコンポーネントにまとめる
? バウンダリ
? UIを実現するオブジェクトをコンポーネントにまとめる
? RPCを実現するオブジェクトをコンポーネントにまとめる
? エンティティ
? エンティティ?オブジェクトをコンポーネントにまとめる
? コントロール
? オペレーションまとめたオブジェクトをコンポーネントにまとめる
再掲 第16回 分析/コンポーネント分析
ロバストネス図 第15回 分析
再掲 第16回 分析/コンポーネント分析
コンポーネント境界の基準
? 機能境界
? アーキテクチャ上の役割
? PAC(Presentation/Abstract/Control) [POSA]
? 原理
? SOLID [ASD]
? GRASP
? Low Coupling / High Cohesion
? パターン
? Knowledge Level [AP]
? Knowledge level / Operation Level
? Responsibility Layers [DDD]
? Decision / Policy / Operation / Commitment / Potential
? テスタビリティ
第18回 設計モデル
第21回 アプリケーション?アーキテクチャ
第18回 設計モデル
第18回 設計モデル
第20回 テスト
再掲 第16回 分析/コンポーネント分析
バウンダリ?オブジェクトから
WebやiOS/Androidアプリケーションを抽出 例題のロバストネス図のスコープ外だが
運用管理系の管理コンソールも必要なので追加
サービスのコンポーネントと
機能実現のコンポーネントを分離
利用者向けと管理向けの
2系統のインタフェースを用意
アーキテクチャ?モデル
再掲 第16回 分析/コンポーネント分析
ステレオタイプ
名前 説明 UML
subsystem サブシステム ○
service サービス ○
facade ファサード -
web Webフロントエンド -
ios iPhone/iPadアプリケーション -
android Androidアプリケーション -
再掲 第16回 分析/コンポーネント分析
アプリケーション?ロジック
管理ロジック
利用者がリソースの更新を行うアプリケーションでは、
利用者管理、セッション管理が必要なので、この処理を
司るコンポーネントを追加
エンティティの格納?管理を行う
コンポーネント
イベント駆動アプリケーションで
イベントの発生、実行を司る
ジョブ実行やイベント駆動などの
バックグラウンド処理を行う
コンポーネント
コンポーネント?モデル
通知機能を司る
再掲 第16回 分析/コンポーネント分析
オペレーションの定義
コンポーネントのオペレーションでは
引数、復帰値をValue Object [DDD]で受け
渡すのがよい
実際には実行コンテキストな
どの受け渡しが必要
第18回 設計モデル
再掲 第16回 分析/コンポーネント分析
今回のアプローチ
? UMLをできるだけ使わずプログラム(Scala)で直接モデルを作
成
? 構造はScalaのクラスで表現
? 振る舞い仕様はTDD仕様(テスト?プログラム)で表現
? 「要求モデル」で作成したBDD仕様(テスト?プログラム)は、
分析の作業後も引き続き動作するように修正を行う
? 状態機械仕様はプログラムでは表現できないのでステート
チャート図で記述
Travel Light
class AnalysisPurchaseSpec extends AnyFreeSpec
with Matchers
with GivenWhenThen
with EcMatchers {
"Boundary: カートの商品を購入" - {
"店舗在庫を1個購入する" - {
"Main" in {
val service = EcService.createForAnalysis()
Given("EC顧客はログイン済み")
val user = "U123"
And("店舗在庫が存在")
val addstockcmd = AddStockCommand()
service.addStock(addstockcmd)
And("カートに商品を追加")
val addcartcmd = AddCartCommand("P123", 1)
val cart = service.addCart(addcartcmd).get
Then("カートの商品を購入")
val cartid = cart.cartId
val cmd = PurchaseCommand(cartid)
service.purchase(cmd) should successPurchase(cmd)
}
}
}
}
AnalysisPurchaseSpec.scala
class AnalysisProductSpec extends AnyFreeSpec
with Matchers
with GivenWhenThen
with ScalaCheckDrivenPropertyChecks
with EcMatchers {
"Boundary: 商品一覧を表示" - {
"商品一覧をデフォルト問い合わせで表示する" - {
"Main" in {
val service = EcService.createForAnalysis()
Given("EC顧客はログイン済み")
val user = "U123"
And("商品を登録")
val addproductcmd = AddProductCommand()
service.addProduct(addproductcmd)
Then("商品一覧を表示")
val productq = ProductQuery()
val products = service.listProducts(productq)
products should successProductList()
}
}
}
}
AnalysisProductSpec.scala
trait EcService extends Subsystem {
def addStock(cmd: AddStockCommand): Try[Unit]
def addProduct(cmd: AddProductCommand): Try[Unit]
def listProducts(q: ProductQuery): Try[ProductSequence]
def addCart(cmd: AddCartCommand): Try[AddCartResult]
def listCarts(q: CartQuery): Try[CartSequence]
def purchase(cmd: PurchaseCommand): Try[PurchaseResult]
}
EcService.scala (1/3)
object EcService {
def createForRequirement(): EcService = createForAnalysis()
def createForAnalysis(): EcService = new Service(
ProductService.createForAnalysis(),
CommerceService.createForAnalysis()
)
class Mock() extends EcService {
var carts = CartSequence.empty
def addStock(cmd: AddStockCommand): Try[Unit] = Try(())
def addProduct(cmd: AddProductCommand): Try[Unit] = Try(())
def listProducts(q: ProductQuery): Try[ProductSequence] = Try(ProductSequence())
def addCart(cmd: AddCartCommand): Try[AddCartResult] = Try {
carts = carts.add(cmd.procutId, cmd.count)
val cartid = Cart.Id("C123")
AddCartResult(cartid)
}
def listCarts(q: CartQuery): Try[CartSequence] = Try(carts)
def purchase(cmd: PurchaseCommand): Try[PurchaseResult] = Try(())
}
EcService.scala (2/3)
class Service(
val product: ProductService,
val commerce: CommerceService
) extends EcService {
override protected val sub_Components = Vector(product, commerce)
def addStock(cmd: AddStockCommand): Try[Unit] = Try(())
def addProduct(cmd: AddProductCommand): Try[Unit] =
Try(issue_event(CommandRequestedEvent(cmd)))
def listProducts(q: ProductQuery): Try[ProductSequence] =
product.listProducts(q)
def addCart(cmd: AddCartCommand): Try[AddCartResult] = Try {
val cartid = Cart.Id("C123")
issue_event(CommandRequestedEvent(cmd))
AddCartResult(cartid)
}
def listCarts(q: CartQuery): Try[CartSequence] =
commerce.listCarts(q)
def purchase(cmd: PurchaseCommand): Try[PurchaseResult] =
Try(issue_event(CommandRequestedEvent(cmd)))
}
}
EcService.scala (3/3)
trait CommerceService extends Subsystem {
def addCart(cmd: AddCartCommand): Try[AddCartResult]
def listCarts(q: CartQuery): Try[CartSequence]
def purchase(cmd: PurchaseCommand): Try[PurchaseResult]
}
object CommerceService {
def createForAnalysis(): CommerceService = Mock()
class Mock() extends CommerceService {
var carts = CartSequence.empty
def addCart(cmd: AddCartCommand): Try[AddCartResult] = Try {
carts = carts.add(cmd.procutId, cmd.count)
}
def listCarts(q: CartQuery): Try[CartSequence] = Try(carts)
def purchase(cmd: PurchaseCommand): Try[PurchaseResult] = Try(())
override protected def receive_Event(evt: Event): Unit = evt match {
case CommandRequestedEvent(cmd) => cmd match {
case m: AddCartCommand => addCart(m)
case m: PurchaseCommand => purchase(m)
case _ => {}
}
case _ => {}
}
}
CommerceService.scala (1/2)
class Service() extends CommerceService with Component {
def addCart(cmd: AddCartCommand): Try[AddCartResult] = ?? ?
def listCarts(q: CartQuery): Try[CartSequence] = {
Try(CartSequence.empty)
}
def purchase(cmd: PurchaseCommand): Try[PurchaseResult] = ?? ?
override protected def receive_Event(evt: Event): Unit = evt match {
case CommandRequestedEvent(cmd) => cmd match {
case m: AddCartCommand => addCart(m)
case m: PurchaseCommand => purchase(m)
case _ => {}
}
case _ => {}
}
}
}
CommerceService.scala (2/2)
trait ProductService extends Subsystem {
def addProduct(cmd: AddProductCommand): Try[AddProductResult]
def listProducts(q: ProductQuery): Try[ProductSequence]
}
object ProductService {
def createForAnalysis(): ProductService = Mock()
class Mock() extends ProductService {
var products = ProductSequence.empty
def addProduct(cmd: AddProductCommand): Try[AddProductResult] = Try {
?? ?
}
def listProducts(q: ProductQuery): Try[ProductSequence] = Try {
products
}
override protected def receive_Event(evt: Event): Unit = evt match {
case CommandRequestedEvent(cmd) => cmd match {
case m: AddProductCommand => addProduct(m)
case _ => {}
}
case _ => {}
}
}
}
ProductService.scala
分析段阶でのサブシステム构造
[info] RequirementPurchaseEcSpec:
[info] UC: ECサイトで店舗在庫を購入する
[info] UCS: 店舗在庫を1個購入する
[info] - Main
[info] + Given EC顧客はログイン済み
[info] + And 店舗在庫が存在
[info] + When EC顧客が購入を開始
[info] + And 問い合わせを行い目的にあった商品の一覧を出力
[info] + And 購入する商品をカートに追加
[info] + And カートの一覧を出力
[info] + Then カートの商品を購入
テストを実行 (RequirementPurchaseEcSpec)
要求仕様として作成したBDDテスト?プロ
グラムは引き続き動作するように修正
[info] AnalysisPurchaseSpec:
[info] Boundary: カートの商品を購入
[info] 店舗在庫を1個購入する
[info] - Main
[info] + Given EC顧客はログイン済み
[info] + And 店舗在庫が存在
[info] + And カートに商品を追加
[info] + Then カートの商品を購入
テストを実行 (AnalysisPurchaseSpec)
分析仕様はバウンダリオブジェクトを中心
にTDDテストプログラムを利用
AnalysisProductSpec:
[info] Boundary: 商品一覧を表示
[info] 商品一覧をデフォルト問い合わせで表示する
[info] - Main
[info] + Given EC顧客はログイン済み
[info] + And 商品を登録
[info] + Then 商品一覧を表示
テストを実行
Analyze a Domain Model
? ドメイン?モデルを分析
? 設計モデルに連携できるモデルを構築
? UMLはできるだけ使わずプログラミング言語(Scala)で記述
? 着目点
? ドメイン?データタイプ
? イベント
? ステート?マシーン
? ドメイン指標
Travel Light
case class Cart(
id: Cart.Id,
productId: Product.Id,
count: PositiveQuantity
) {
def addCount(p: PositiveQuantity) = copy(count = count + p)
}
object Cart {
case class Id(string: String) extends EntityId
object Id {
def generate() = Id(System.currentTimeMillis().toString)
}
def create(
productId: Product.Id,
count: PositiveQuantity
): Cart = Cart(Id.generate(), productId, count)
}
Cart.scala
case class Product(
id: Product.Id,
name: Product.Name,
price: Money
)
object Product {
case class Id(string: String) extends EntityId
case class Name(name: String) extends NameString
}
Product.scala
分析段階でのドメイン?モデルの構造
プログラムの内容をクラス図化
施工図として必要に応じて作成
購入の状態機械
状態遷移が発生する所にイベントあり
指標分析
? ドメイン?モデル内の各種指標
? ビジネス?モデルのKPIなどシステムで採取する指標を整理
? 指標の採取方法
? ログなどから収集
? カウンタで記録
? 設計モデルに実現
方法を盛り込む
再掲 第41 ビジネス?モデル
まとめ
? ケーススタディ
? ブック?カフェPieris Booksの販売システム
? プラクティス
? Identify Subsystems
? UMLをできるだけ使わずプログラミング中心でモデルを作成
? ロバストネス図、ステートチャート図は使用
? バウンダリ?オブジェクトを中心にTDD
? 要求仕様のBDDは引き続き動作するように対応
参考文献
? The Unified Modeling Language Reference
Manual, 2nd (Rumbaugh他, 2004)
? The Unified Modeling Language User Guide,
2nd (Booch他, 2004)
? The Unified Software Development Process
(Jacobson他, 1999)
? The Object Constraint Language, 2nd (Warmer
他, 2003)
? UML 2 and the Unified Process: Practical
Object-Oriented Analysis and Design (Arlow
他, 2005)
? OMG Unified Modeling Language Version 2.5
(OMG, 2015)
? 上流工程UMLモデリング (浅海, 2008)
? The Essentials of Modern Software
Engineering: Free the Practices from the
Method Prisons! (Jacobson他, 2019)

More Related Content

More from Tomoharu ASAMI (20)

Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
?
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
?
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
?
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
?
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
?
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
?
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
?
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
?
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
?
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
?
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
?
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
?
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
?
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
?
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
?
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
Tomoharu ASAMI
?
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
Tomoharu ASAMI
?
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
Tomoharu ASAMI
?
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
Tomoharu ASAMI
?
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
Tomoharu ASAMI
?
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Cloud Native CBD 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第35回】
Tomoharu ASAMI
?
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション?アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
Tomoharu ASAMI
?
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
Tomoharu ASAMI
?
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
Tomoharu ASAMI
?
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
Tomoharu ASAMI
?
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
?
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
Tomoharu ASAMI
?
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
Tomoharu ASAMI
?
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
?
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
Tomoharu ASAMI
?
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
Tomoharu ASAMI
?
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
Tomoharu ASAMI
?
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
Tomoharu ASAMI
?
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
Tomoharu ASAMI
?
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
Tomoharu ASAMI
?
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
Tomoharu ASAMI
?
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
Tomoharu ASAMI
?
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
Tomoharu ASAMI
?
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆动 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
Tomoharu ASAMI
?
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
Tomoharu ASAMI
?

分析モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第44回】