atscope 3つの活用シーン [et2016]
TRANSCRIPT
![Page 1: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/1.jpg)
1 Copyright BACKSLASH DESIGN Co., Ltd
ソフトウェアを資産化する
設計意図発掘ツールAtScope
2016年11月18日
ビースラッシュ株式会社
![Page 2: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/2.jpg)
2
本日の内容
1.ビースラッシュが解決したいこと
2.設計意図発掘ツールAtScopeの活用
ご参考:
3.設計力向上セミナー
4.ソフトウェアの資産化アプローチ
Copyright BACKSLASH DESIGN Co., Ltd.
![Page 3: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/3.jpg)
3 Copyright BACKSLASH DESIGN Co., Ltd
1.ビーラッシュが解決したいこと
![Page 4: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/4.jpg)
4
ビースラッシュが解決したいこと
コードを追いかけて動きを理解
grep検索で関連部分を探す
局所的な修正の積み重ね
コードの複雑さが増大する 負のスパイラル
設計構造と設計意図を理解
依存線と配置で関連を追跡
大局を見て勘所を押さえた修正
コードがシンプルで美しくなる 改善スパイラル
迅速
高品質
資産化 在庫
残業
バグ
在庫化サイクルから、資産化サイクルへ
Copyright BACKSLASH DESIGN Co., Ltd.
![Page 5: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/5.jpg)
5 5
ソフトウェアの資産価値 在庫化している?
資産価値が徐々に低下して『在庫化』していませんか? 組織資産⇒属人資産:最初はドキュメントがあったが、誰も読まなくなり、保守されなくなる
属人資産⇒在庫:最初は設計ができていたのだが、人が変わったり、仕様追加で劣化する
資産名称 特徴
在庫 ソースコードは複雑で説明困難であり、
信頼できる設計ドキュメントは存在していない状態。保守コストが膨れていく傾向にある
属人資産 ソースコードはシンプルで分かりやすい。
ただし、設計ドキュメントが揃っていない状態。
個人主導の開発であり、引継ぎに苦闘する。
半組織資産
設計ドキュメントが揃っているが、
ソースコードが複雑な状態。
マネジメント主導の開発である
組織資産 ソースコードがシンプルで、設計ドキュメントが整備されている状態。
品質・生産性とも予測可能となる。
戦略資産 ソースコードと設計ドキュメントが統合。
戦略的な資産活用ができる。
ソースコード
在庫 半組織資産
属人資産
組織資産
戦略 資産
設計ドキュメント
5 Copyright BACKSLASH DESIGN Co., Lt
d.
引継ぎ
次機種
![Page 6: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/6.jpg)
6
在庫から脱却し、ソフトウェア資産へ
資産価値を向上させる – 最初の一歩を踏み出す勇気が必要
– 日々の開発業務と並行して、着実に向上させていく仕掛けを作る
在庫 半組織 資産
属人 資産
組織資産
戦略 資産
A
B
C
D
名称 特徴
A コード・リファクタリング ソースコードを、管理可能な単位へ分解する
B 再構造化設計 設計図レベルで再構築を行う
C モジュール・リファクタリング
ソースコードの構造を図面化して洗練化する
D フォワード設計 設計図に沿って、ソースコードを修正する
E アーキテクチャ設計 複数視点で図面化し、文書として統合する
6 Copyright BACKSLASH DESIGN Co., Lt
d.
![Page 7: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/7.jpg)
7 Copyright BACKSLASH DESIGN Co., Ltd
2.設計意図発掘ツールAtScopeの活用
![Page 8: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/8.jpg)
8
設計意図発掘ツールAtScopeとは
静的解析ツール 設計意図発掘 ツール メトリクス系 図面作成系
主な目的 不具合の検出 設計図面の作成 不具合混入の未然防止
主な機能 複雑度などの定量化 関数コールの図面化 全体構造の俯瞰
規約違反の検出 設計書の作成 設計構造の劣化検知
効果 不具合の検出 コードの理解促進 ソフトウェアの資産化
品質状況の把握 納品資料の作成 迅速な機能追加
主な利用者 品質保証、プロセス改善 担当エンジニア アーキテクト/設計担当者
が使うことで設計力向上
解析精度 厳密 (コンパイラレベル)
比較的厳密
ゆるいコードでも解析可能 (人の目に映るレベル)
主な使い方 第三者が計測して、 現場の設計改善を行う
担当者の引継ぎ時や 納品時に仕様書を作成
アーキテクチャを分析し、
重要部分から設計改善
品質確保を「メトリクス系ツール」で行い、エンジニアの設計支援として「図面作成系ツール」を使い、組織資産を活用した開発で「設計意図発掘ツール」を使う、ことでトータルな効果が得られます。
Copyright BACKSLASH DESIGN Co., Ltd.
![Page 9: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/9.jpg)
9
AtScopeの3つの機能+1
力づく開発
func() { ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ } func() { ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ }
・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ } } ・・・・・() { { ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ } }
func() { ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・ } }
static char time_tick; main () { time_tick = 0; while(1){ if(time_tick == 1){ time_tick = 0; top_module(); } } } void ta0int() { time_tick = 1; }
①アーキテクチャ解析
②クラス解析
C言語
③モジュール解析
コンポーネント単位
ファイル単位
関数とデータの単位
再配置
考える開発
To_uiTo_ctrlFrom_ctrlTo_histFrom_sys
<<...app
To_uiTo_ctrlFrom_ctrlTo_histFrom_sys
To_drvTo_mainteTo_app
<<...s ys
To_drvTo_mainteTo_app
To_drvFrom_sysTo_uiTo_hist
<<...ma int e
To_drvFrom_sysTo_uiTo_hist
From_ctrlFrom_sysFrom_mainteFrom_histFrom_ui
<<...drv
From_ctrlFrom_sysFrom_mainteFrom_histFrom_ui
To_uiTo_drvFrom_appTo_app
<<...ct rl
To_uiTo_drvFrom_appTo_app
From_appFrom_mainteTo_drv
<<...h is t
From_appFrom_mainteTo_drv From_appTo_drvFrom_ctrlFrom_mainte
<<...u i
From_appTo_drvFrom_ctrlFrom_mainte
6
8
2
2
4
153
3
3
8
5
3
3 15
PaperHandlingPaperHandling
PatternControlPatternControl
SwInputSwInput
ButtonMonitorButtonMonitor
ToggleDrvToggleDrv
KeyScanKeyScan
CopyAppCopyApp
BlinkAppBlinkApp
MessageOutputMessageOutput
MachineWatchMachineWatch
FusingControlFusingControlDisplayOutputDisplayOutput
OperationPanelOperationPanel
LedOutputLedOutput
LedDrvLedDrv
DisplayDriverDisplayDriver
SystemMainSystemMain
PageStreamPageStream
2
1
1
1
3
2
2
1
11
1
2
2
1
3
1
1
1
1
1
1
1
1
1
1
3
2
app
UserPersonUserPersonDiagnosisStepDiagnosisStep
ReceptionistReceptionist
sys
SysNoticeSysNotice
SysCtrlSysCtrl
mid
InspectionProcessInspectionProcess
drv
TimerTimer
SwSw
VolSensorVolSensor
CurrentMeterCurrentMeter
EepRomEepRom
ui
PushButtonPushButton BuzzerSoundBuzzerSound
PanelDisplayPanelDisplayOperationFlowOperationFlow
NoticePanelNoticePanel
LedLed BuzzerBuzzerLcdLcd
l ib
InspectionHistInspectionHist
mon
ProgramConfirmationProgramConfirmation
LcdInspectionLcdInspectionVolInspectionVolInspection
MaintePanelMaintePanel
VolMeterVolMeter
HistInspectionHistInspection
InspectorInspector
2
2
2
1
3
3
13
3
3
3
4
2
2
5
1
3
1
3 2
41
3
3
3
8
5
2
3
1
3
2
7
22
2
2 2 3
2
2
4
2
1
5
2
1
5
2
3
22
2
main
sc_execsc_exec
rc_initrc_init
ds_finish
rc_finish_diagrc_finish_diag
up_start_inputup_start_input
up_set_weightup_set_height
up_rq_chg_modeup_rq_chg_mode
rc_start_diagrc_start_diag
rc_request
rc_rq_chg_moderc_rq_chg_mode
<<...rcMode
1
1
1
1
1
1
1
11
1
1
1
1
SysCtrl
sc_execsc_exec
main
DiagnosisStep
ds_finish
UserPerson
up_rq_chg_modeup_rq_chg_mode
up_start_inputup_start_input
up_set_weightup_set_height
Receptionist
<<データ>>Receptionist::rcMode
rc_rq_chg_moderc_rq_chg_mode
rc_start_diagrc_start_diag
rc_initrc_init
rc_finish_diagrc_finish_diag
rc_request
1
1
1
1
1 1
1
11
1
1
1
1
再配置
再配置
再配置することで 設計意図が分かります
設計ルール違反が 色付きで表示されます
指定したデータから 関数コールを遡ります
EnterpriseArchitectで動きます
④リファクタリングスコア
Copyright BACKSLASH DESIGN Co., Ltd.
![Page 10: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/10.jpg)
10
活用シーン① アーキテクチャ中心開発
1.アーキテクチャ構造に従ってフォルダを作る
Copyright BACKSLASH DESIGN Co., Ltd.
2.コンポーネント構造図を出力する
3.アーキテクチャの崩れを検知する
ui
hist
ctrl
drv
mainte
sys app 15
38
3
3
3
6
2
3
5
8
15
34
ui
drv
his t
ct rl
ma int e
sysapp2
3
5
3
2
8
6
1
15
4
3
3
15
8
1
3
飛び越え
逆方向 依存
アーキテクチャに従って配置
![Page 11: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/11.jpg)
11
活用シーン② 派生開発での構造設計
ファイル見取図で設計構造を見える化
リファクタリングスコアで改善点を洗い出し
Copyright BACKSLASH DESIGN Co., Ltd.
app
UserPersonUserPersonDiagnosisStepDiagnosisStep
ReceptionistReceptionist
sys
SysNoticeSysNotice
SysCtrlSysCtrl
midInspectionProcessInspectionProcess
drv
TimerTimer
SwSw
VolSensorVolSensor
CurrentMeterCurrentMeter
EepRomEepRom
ui
PushButtonPushButton BuzzerSoundBuzzerSound
PanelDisplayPanelDisplayOperationFlowOperationFlow
NoticePanelNoticePanel
LedLed BuzzerBuzzerLcdLcd
l ib
InspectionHistInspectionHist
mon
ProgramConfirmationProgramConfirmationLcdInspectionLcdInspectionVolInspectionVolInspection
MaintePanelMaintePanel
VolMeterVolMeter
HistInspectionHistInspection
InspectorInspector
1
2
3
1
2
2
3
3
2
2
2
3
2
3
1
2
3
5
4
8
5
2
3
2
45
2
1
3
2
4
3
2
2
3
2
3
1
2
2
3
7
3
2
1
3
1
1
2
3
5
2
2
<<スコア>>総合 : 94点
要素 : 99点
構造 : 89点
<<構造の警告リスト>>
/* ファンアウト数 */
17 : InspectionProcess.c
15 : DiagnosisStep.c
14 : EepRom.c
14 : Lcd.c
12 : Inspector.c
/* 循環依存 */
2 : InspectionProcess 8 : CurrentMeter
3 : InspectionProcess 3 : DiagnosisStep
1 : Receptionist 3 : DiagnosisStep
2 : UserPerson 1 : Receptionist
<<要素の警告リスト>>
/* 関数の長さ */
44 : Lcd lc_init()
MaintePanelMaintePanel
OperationFlowOperationFlow
LedLed
InspectionHistInspectionHist
NoticePanelNoticePanel
InspectionProcessInspectionProcess
ReceptionistReceptionist
UserPersonUserPerson
CurrentMeterCurrentMeter
VolSensorVolSensor
EepRomEepRom
TimerTimer
DiagnosisStepDiagnosisStep
HistInspectionHistInspection
PushButtonPushButton
InspectorInspector
VolInspectionVolInspectionLcdInspectionLcdInspectionProgramConfirmationProgramConfirmation
PanelDisplayPanelDisplay
VolMeterVolMeter
SysCtrlSysCtrl
SysNoticeSysNotice
SwSw
BuzzerSoundBuzzerSound
BuzzerBuzzerLcdLcd
2
1
2
1
5
3
3
1
4
3
2
3
1
2
3
3
1
5
12
3
2
2
2
3
1
3
2
1
5
3
7
1
2
2
3
1
2
22
3
23
2
2
2
8
4
2
2
3
3 4
5
2
劣化検知
飛び越え
逆方向依存
スコア目安 評価 コメント
80点~100点 優 他の人でも変更可能
60点~79点 良 引継ぎ説明が少しで済む
0点~59点 可 引継ぎ期間が必要
マイナス点 不可 熟知していないと修正が大変
要素 改善点
総合点
構造 改善点
変更の影響範囲がわかる
⇒検索回数が大幅に減る
![Page 12: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/12.jpg)
12
スコアの使い方:資産価値の向上
相対的なスコアの推移を定点観測 – 徐々にスコアが上がる仕掛けを作る
設計図でのピアレビュー、など
アドホックな変更の積み重ね
変更時にリファクタリングや構造設計を実施
スコア スコア
Copyright BACKSLASH DESIGN Co., Ltd.
![Page 13: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/13.jpg)
13 Copyright BACKSLASH DESIGN Co., Ltd
3.設計力向上セミナー
![Page 14: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/14.jpg)
14
設計力向上セミナー
Copyright BACKSLASH DESIGN Co., Ltd.
技術経営へ 技術リーダ育成
現場実践トレーニング 設計力底上げトレーニング
設計技法の原理原則
レビュー技法
既存コードを資産化する
資産化モデリング オブジェクト指向モデリング
コード中心から設計中心へ
設計図活用 今日から使える
凝集度と結合度 2年目研修:5日間コース
ソフトウェア分析設計
構造化モデリング [静的]
構造化モデリング [動的]
部品化リファクタリング
構造化設計 [派生開発]
コード起点
新人研修:1日コース
設計技法基礎
事業と技術を繋ぐ
目的目標セミナー
アーキテクト育成
アーキテクチャ設計実践
良いアーキテクチャ設計書を作る
ロジカルシンキング
ことづくり ものづくり
ソフトウェア技術者のための
ロジカルライティング
アーキテクチャ設計入門
設計技法と テスト技法
![Page 15: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/15.jpg)
15 Copyright BACKSLASH DESIGN Co., Ltd
4.ソフトウェアの資産化アプローチ
![Page 16: AtScope 3つの活用シーン [ET2016]](https://reader031.vdocuments.mx/reader031/viewer/2022030313/58ce7a1e1a28abdc578b7547/html5/thumbnails/16.jpg)
16
ソフトウェアの資産化アプローチ
既存資産を起点として戦略的な開発の実現へ ボトムアップ:既存コードを部品化して、洗練化・資産化していく
トップダウン:設計意図を明確にして、ソースコードへ反映していく
既存 コード
部品表
設計図
開発戦略 アーキテクチャ
ドキュメント 資産開発
機種開発
部品化
変動点
設計方針 目論見
統合資産
部品マスター
洗練化
合わせこみ
既存 コード
既存 コード
資産活用
リバースモデリング 資産化 資産運用
インフラ
①教育 ②指標と計測
洗練化
③プロセス構築 ④ツール導入
プロダクトライン開発
Copyright BACKSLASH DESIGN Co., Ltd.