アーキテクチャ中心開発の勘所 山田 大介 2018年7月6日 ビースラッシュ株式会社

Slides:



Advertisements
Similar presentations
CMU2005 海外エンジニアリングワークショップ参加報告書 1 「真の要求を見極めろ!」: teamB 要求定義をどう捉えるか ● 要求定義とは何か? 製品には、顧客の望むことを正しく反映させる必要がある。 そのために必要なものが要求仕様である。 すなわち、要求仕様とは、顧客と製品を結ぶものであり、これを作ることが要求定義である。
Advertisements

解説構造化システム設計手法. ・ 構造化分析設計技法 ・ オブジェクト指向分析・設計技法 ■ 現在の主なシステム分析設計技法 ・ データ中心分析設計技法 SA,SD (Structured Analysis and Structured Design) Data Oriented Analysis.
2008/10/2 システム設計演習Ⅱ 第 1 回 1 システム設計演習Ⅱ 第1回 シラバスのレビュー シラバスの見直し MVCモデル インストール 第1回 シラバスのレビュー シラバスの見直し MVCモデル インストール.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
ソフトウェア・エンジニアリング入門 セッション 4: まとめ.
東京工科大学 コンピュータサイエンス 亀田弘之
Riding the Design Wave II
ブロック線図に基づく システム制御学習環境における リアルタイム制御実験
テストの種類 要求分析 顧客 運用テスト システムテスト システム設計 SE 結合テスト プログラミング プログラマ (ユースケース、
画面設計④:製品詳細ページ 別 紙 Daishinsha Inc. マスタ タイトルの書式設定 ■ヘッダー・グローバルメニュー ×
パイプラインパフォーマンス管理 SAP Best Practices.
OJT研修 「テスト実施、テスト設計の技術習得」 日時: 8月22日(月)  場所: 本社5階.
3-1システム戦略 3-1-3ソリューションビジネス (Point) ・代表的なサービスを通じ、ソリューションの考え方を理解
情報システム構築 -説明と実力テスト- 金曜4校時 掛下哲郎  大月美佳.
情報伝播によるオブジェクト指向プログラム理解支援の提案
顧客/コンタクト管理 SAP Best Practices.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
よりよいe-Learningの ための研究
変数のスコープの設計判断能力 を育成するプログラミング教育
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
付属書I.4 故障の木解析 (FTA).
開発流れ.
CSP記述によるモデル設計と ツールによる検証
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
エージェントについて 上杉裕也.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
オブジェクト指向モデリング [3] 2003年10月14日.
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
ソフトウェア工学 第四回 知能情報学部 新田直也.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
47070 オブジェクト指向モデリング [1] 2001年10月2日.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
Copyright © 2012 Funabashi IT-Lab. All right reserved
その他の図 Chapter 7.
「iQUAVIS」 によるハード・ソフトの 横断的な構想検討
47070 オブジェクト指向モデリング [7] 2001年11月 12日.
XP Extreme Programming.
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
アップデート 株式会社アプライド・マーケティング 大越 章司
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
社会シミュレーションのための モデル作成環境
     年  月  日 名前 太郎 x 班.
オブジェクト指向モデリング [2] 2003年10月 7日.
ゲーム開発モデルの基礎.
ユーザ・インタフェース 小テスト 第5回.
12の発明の原理だけで発想できるプロセス アイデア発想とアイデア選定
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
バイトコードを単位とするJavaスライスシステムの試作
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第15回放送授業.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
コーディングパターンの あいまい検索の提案と実装
INTRODUCTION TO SOFTWARE ENGINEERING
All Rights Reserved, Copyright © 2004, Kobayashi
発表会用テンプレート このテンプレートの枚数で発表をすれば、ほぼ15分で終了するであろう。
GSTOS コマンド計画検証ソフトウェアの開発
データ中心システム設計方法論“DATARUN” 
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
アジャイル開発プロセス 森口朋広.
Presentation transcript:

アーキテクチャ中心開発の勘所 山田 大介 2018年7月6日 ビースラッシュ株式会社 Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 3つの勘所 1.静動分離 末広がり から 構造化 へ 末広がりは静動混在 静解析ファースト 2.アーキテクチャテンプレート コンポーネントの全体レイアウトを決める 骨格+肉付けプログラミング 3.WhatとHowの補助線 複数ビューを統合し経営とテクノロジを繋ぐ 多重下請け構造からはアーキテクトは生まれにくいなぁ Copyright BACKSLASH DESIGN Co., Ltd.

1.静動分離 Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 静動混在:末広がり形状 制御仕様をそのままプログラミングすると「末広がり」になる 内部的なフラグ判断の積み重ね 外部的な他のイベントの積み重ね アクチュエータ出力 フラグやイベントが増減すると、ほぼ全体を見直さなければならない ⇒grep検索の多用 内部的なフラグ判断 フラグ センサー入力 フラグ フラグ エラー処理のリカバリが極めて困難 ⇒重大なエラーがリブート、軽微なものは継続、という安易な設計 センサー入力 エラー出力 外部的な他のイベント センサー入力 時間の流れ Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 静的構造を設計すると:構造化 論理的な階層化設計 上位層で、状態変数を定義 下位層で、センサーやアクチュエータのプリミティブな制御のみ センサーやアクチュエータが変わっても下位層のモジュールを置換するだけで良い ⇒センサー値がAからBに変わっても、一段上の「論理値」は変わらない 基本系列の構造に、エラー処理を当てはめる ⇒エラーハンドリングの設計ができる(上位駆動/中間駆動/下位駆動の伝播ルート) 状態変数 論理値 置換可能 センサ値A 制御値 センサ値B センサーA アクチュエータ センサーB Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 静動分離 静的構造 と 動的構造を分離する 静的構造はWhatの視点で図面化 ⇒ 問題ドメインの用語 動的構造は、mainループなどを図面化 ⇒ ソフトウェアの用語 静と動が混在しているディスパッチルーチン 動的構造 静的構造 BOSS1 処理1 BOSS1 条件1 条件1 処理1 BOSS2 条件2 条件3 処理2 条件2 条件3 BOSS2 処理3 処理2 処理3 処理4 BOSS3 BOSS3 処理5 処理6 BOSSモジュールを 起動(Hook)するだけ 処理4 処理5 処理6 Copyright BACKSLASH DESIGN Co., Ltd.

2.アーキテクチャテンプレート Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. ソースコードと設計のシンクロ開発 アーキテクチャを遵守したコード トップダウン:アーキテクトが、設計意図を明示し、コードと合わせ込む ボトムアップ:各エンジニアが、コードを洗練化し、部品化していく ソースコードと設計の同期 リバースモデリング 洗練化 資産化 資産運用 開発戦略 目論見 設計方針 プロダクトライン開発 アーキテクチャ ドキュメント 変動点 統合資産 資産開発 機種開発 資産活用 合わせこみ 部品マスター 部品表 洗練化 インフラ 既存  コード 既存  ード 部品化 設計図 ソース コード ①教育 ②指標と計測 ③プロセス構築 ④ツール導入 Copyright BACKSLASH DESIGN Co., Ltd.

アーキテクチャ構築の主な成果物 = 要求 分析 構造設計 詳細設計 実装 アーキテクチャ設計 要求図 イベントリスト データフロー図 タスク構造図 コンポーネント 構造図 <<task>> 事象 刺激 行動 応答 影響 状態遷移図 詳細設計 データ 辞書 ユースケース図 クラス図 コミュニケーション図 コントロールフロー図 モジュール 構造図 要求図 実装 シーケンス図 フローチャート ロバストネス図 ソースコード + + + Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 設計意図発掘ツールの活用(左ページ) 分析 アーキテクチャ設計 ① ③ データフロー図 ⑤ 機能 D B A C E アプリ層(app) ユーザ インタフェース (ui) 全体管理 (sys) ミドル層(mid) ドライバ層(drv) A BC D E F G コンポーネント構造図 H I ④ データ データ 辞書 コントロールフロー図 ② 条件 状態 ⑥ ⑦ ⑨ 既存  ード ソース コード ⑧ Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 設計意図発掘ツールの活用(右ページ) アプリ層(app) ユーザ インタフェース (ui) 全体管理 (sys) ミドル層(mid) ドライバ層(drv) アプリ層(app) ユーザ インタフェース (ui) 全体管理 (sys) ミドル層(mid) ドライバ層(drv) ⑫ ⑩ ⑪ 既存  ード ソース コード 既存  ード ソース コード Copyright BACKSLASH DESIGN Co., Ltd.

3.WhatとHowの補助線 Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. アーキテクトとは 『何を、どのように、作るのか』のリーダーシップを発揮する人 設計の方針を決めて、構造設計を行い、 様々な利害関係者と調整し、 価値のある製品開発を推進する 技術と経営をつなぐ 経営 アーキテクチャ ドキュメント WHAT アーキテクト HOW いままでの 技術リーダ 固有技術に 詳しい人 技術 多面的な 検討と調整 Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. アーキテクチャ中心開発 アーキ テクチャ 技法 プロセス ツール 既存資産を起点として戦略的な開発の実現へ アーキテクチャを中心に、技法/プロセス/ツールを連動させます ボトムアップ:既存コードを部品化して、洗練化・資産化していく トップダウン:設計意図を明確にして、ソースコードへ反映していく アーキテクチャ設計とは 複数ビューで設計意図を明確にします 静的構造で、全体アーキテクチャを俯瞰する 目論見と設計方針で、商品の特徴や差別化を定義する 動的構造で、パフォーマンスのボトルネックなど設計の勘所を明確にする 実装構造で、ソースコードの構成管理方法や書き方を統一する アーキテクチャ中心の試作駆動開発 常に動く状態を保ちながら、徐々に内部を作成していく方法です コンポーネント間のインタフェースを定義する 責務分割し、重要な引き渡すデータをデータ辞書で定義する プログラミングしながら、インタフェースの妥当性を確認する コンポーネント内はまずはスケルトンコードで繋ぐ インタフェース部分を作り、いつでも動く状態を保つ(骨格) 徐々に内部処理を書いていく(肉付け) ビジネス視点 テクノロジ視点 目論見 設計方針 動的構造 実装ビュー 静的構造 Copyright BACKSLASH DESIGN Co., Ltd.

アーキテクト活動支援&アーキテクチャ構築サービス ビースラッシュではソースコード起点と要求分析起点でアーキテクト活動を支援します 商品戦略 経営評価 BC1 アーキテクト活動 クイックスタート 要求分析 BC3 商品テスト アーキテクチャ駆動 試作コード開発 構造設計 [アーキテクチャ] 結合テスト BC2 ソースコード診断 アーキテクチャ設計 詳細設計 単体テスト BC4 リバース&リファクタリング コーディング Copyright BACKSLASH DESIGN Co., Ltd.

Copyright BACKSLASH DESIGN Co., Ltd. 主なセミナー 技術経営へ 技術リーダ育成 現場実践トレーニング 設計力底上げトレーニング 設計技法の原理原則 レビュー技法 資産化モデリング オブジェクト指向モデリング 設計図活用 凝集度と結合度 構造化モデリング [静的] 構造化モデリング [動的] 部品化リファクタリング コード起点 新人研修: 設計技法基礎 事業と技術を繋ぐ 目的目標セミナー アーキテクト育成 アーキテクチャ設計実践 ことづくり ものづくり リバースモデリング アーキテクチャ中心反復型 アジャイル開発プロセス実践 Copyright BACKSLASH DESIGN Co., Ltd.