Share
Embed
実践!RDRAを活用した既存システムの仕様変更 / Specification Changes in Existing Systems Utilizing RDRA
Imamoto Hikaru
March 23, 2024
Transcript
36 slides
-
自己紹介 今本 光(いまもとひかる) 株式会社ラクス インフラ開発部 SRE課 趣味:サウナ / 日向坂46(夫婦で応援) /
野球観戦 X(旧Twitter): @imamotohikaru GitHub: @kudagonbe 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 2 -
システム外部環境レイヤー 役割 システムが「どのように使われるのか」を明らかにする ダイアグラム ビジネスコンテキスト図:「業務」と「ビジネス要素」を洗い出す ビジネスユースケース図 業務をブレイクダウンして「ビジネスユースケース(BUC)」を洗い出す 業務フロー図 BUCごとにアクターのアクティビティ(仕事)とユースケース(システムの処理)を定 義して、BUCの流れを定義したフロー図
バリエーション・条件図:ビジネスルールを取りうる値と条件で定義する 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 10 -
システムレイヤー 役割 システム化する「情報」とその情報が取り得る「状態」でシステムを明示する ダイアグラム 情報モデル図 システム化したいビジネス上の用語とその関連を明示する 状態モデル図 ビジネス上認識している「状態」を構造化して、システムで実現したい状態を明示 「情報」が「状態」を保持し、「ユースケース」によって「情報」が操作された結 果「状態」が変化するという考え方で、三者の相互作用を定義するとRDRAモデル
全体の精度が上がる 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 12 -
RDRAのメリット 上位RDRAレイヤーで明確にしたインプットを元に、下位レイヤーで業務やシステ ムの詳細を明確化していくことで、要求が明確化 され、要求の認識齟齬 のリスク を最小化できる 関係者が多い、ビジネスの複雑度が高い場合により効果的 「要件定義」にとどまらず「基本設計」まで踏み込んだドキュメントが完成され る システム設計のインプットとなり、用語も統一される
実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 14 -
システムが抱える課題 スループット不足 当該システムのスループットが現在のアカウント発行件数に追いついていない 当該システムが処理を並列化できていないのに加え、他システムの性能やレートリ ミットも大きな要因になっている 現状は事業部の運用部門において運用カバーしているが、持続可能性が低い 並列度を上げることで現状の課題は大幅に緩和される コードの保守性が低い 適切に構造化されていないスパゲッティコードになっている 作られた当時のメンバーはおらずドキュメントも不十分で、意図がよく分からな
いコードが多い (もちろんRDRAでの要件定義もしていない) 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 18 -
今回のプロジェクトで取った作戦 1. すべてのバッチ・APIの洗い出し 2. リバースエンジニアリング 3. システムを利用するユースケースを整理 4. 既存システムの要求をリストアップ 5.
仕様変更を要求モデルに追加 6. 整合性を取りながら下位レイヤーを変更 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 25 -
3. システムを利用するユースケースを整理 現行のソースコード、ドキュメントに加え、「バッチ・API一覧」で洗い出した関 係システムやバッチの起動トリガーも加味して、システムが利用されている業務 やユースケースを特定し、業務フローを作成する 「システム外部環境」「システム境界」レイヤーに属するダイアグラムを作成 ビジネスユースケース一覧(BUC=業務を構成する価値を提供する単位) 業務フロー図(BUCの仕事の流れを記述する) ユースケース複合図(BUC単位で、システムの処理ごとに「画面」「情報」「条 件」「イベント」を紐づける形で記述する)
条件/バリエーション図(条件分岐やデータのバリエーションを定義) 実践!RDRAを活用した既存システムの仕様変更 #ooc_2024 #ooc_2024_c 28