【真】真の継続的改善を実現する
高信頼性ソフトウェア開発環境構築

2017年4月13日
イーソルトリニティ株式会社
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

1

本資料使⽤上の注意• 本資料はイーソル株式会社およびイーソルトリニティ株式会社（以降弊社）の著作物であり、本資料の著作権は作成者である弊社が有します。
• 本資料の利⽤は個⼈の範囲に限ります。
• 本資料の商⽤利⽤（著作物の複製・上演・演奏・公衆送信及び送信可能化・口述・展示・上演及び頒布・貸与・反訳・翻案・⼆次著作物の利⽤ ）はこれを禁じます。

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

2

はじめに
• 組込みシステム／組込みソフトウェアに要求されるレベルは高く、また、“要求”自体も変化しやすい。
• 情報化社会の高度化に伴う社会環境およびビジネス環境の変化が、開発期間の短期化（納期の短期化）を加速しているが、システムに要求される品質レベルは、より高度化する。
• この状況を改善するために“CI（継続的インテグレーション）”などの開発の自動化手法が導入されてきたが、組込みシステム／組込みソフトウェア特有の課題からCIが上手く回らない状況が多発している。
• この“CIが上手く回らない”状況を改善するとともに、CIから真のCI（継続的インプルーブメント（継続的改善））に繋げる方策をお話する。
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

3

組込みシステム開発を取り巻く状況
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

4

組込みソフトウェアの現状• 規模の肥大化・機能の複雑化• 自動運転、大量データ処理、多機能＝高競争⼒（の勘違い）･･･• 品質要求の高度化• 安全、セキュリティなど品質要求の強化• ビジネス環境変化の加速• マーケットの変化への迅速な対応が急務• 頻発せざるを得ない要求変更

負担増• 開発者の品質確保や要求変更などの手間は増えるのに、納期は短くなり・・・

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

5

救世主（CI）登場！？
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

6

CI（継続的インテグレーション）導入による効率化• 自動化促進と品質確保• 自動ビルド、自動テストで手動作業を減らす• サーバができることはサーバにやらせる• 静的解析ツールや単体テストツールで品質も確保

まさに業界の救世主？？

https://www.techmatrix.co.jp/product/cisolution/service/thhp7i0000002h6k-img/campaign_07.jpg

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

7

ところが！

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

8

上手く回らないCI• 継続的しないCI環境？
• ビルド環境に自動実⾏⽀援ツール・テスト自動実⾏ツールを導入！

CIスタート！

あれ？うまく回らない・・・
サーバやツール環境が整備され、自動ビルド・自動テストが実⾏できても、なぜか継続的インテグレーションが“うまく回らない”･･･ことも･･･
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

9うまくいかない例• ビルドエラーやテストのNGが放置され、いつまでも直らない• コンパイルWarningや静的解析ツールの指摘の放置• 他グループの開発モジュールの影響で自身のビルドが通らない• 全体ビルド時にビルドエラーがなかなか無くならない• 共通部や他グループ開発モジュールのVersionズレでビルドエラーが発生する• SVNのTrunkがいつまでもビルドが通らないWhy!? Japanese people！
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

10

WHY！？に答えてみる
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

11

なぜ？
• ビルドエラーやテストのNGが放置され、いつまでも直らない• コンパイルWarningや静的解析ツールの指摘の放置• チーム内のルール未定義、不徹底• CIツールは自動でコミット時やデイリーなどのタイミングで自動で実⾏されるが、その後に⼈がどうFeedbackするか決まっていない• CIは実装→ビルド・テスト（自動）→Feedbackが1サイクル。これがデイリーなど断続的に回らないと意味が無い（問題の早期収束が目的）

１CIサイクル
問題点修正

フィードバック実装

ビルドテスト結果をコミット

ソースをコミット

ビルド・テスト（自動）【プロジェクト起因】

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

時間

12

なぜなぜ
• 他グループの開発モジュールの影響で自身のビルドが通らない• 全体ビルド時にビルドエラーがなかなか無くならない• 対象製品の構造上の問題• 他モジュールとの結合度が強い• お互いが干渉しあう• 多⼈数での平⾏開発• なぜか複数ある同じ名称の共通関数• レガシーコードの存在• 誰も触らない、誰も触れない【プロダクト起因】
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

13

なぜなぜなぜ• 共通部や他グループ開発モジュールのVersionズレでビルドエラーが発生する• SVNのTrunkがいつまでもビルドが通らない• 開発プロセスがCIに適していない• （⼀般的な）開発プロセスは並⾏開発の方式まで規程することは少ない• 並⾏開発グループ間の同期タイミングは各⼯程の終了時であることが多い• ⼯程内での並⾏開発グループ間の同期タイミングは規程無しが多い• （⼀般的な）開発プロセスは並⾏開発の活動まで規程することはない• ソフトウェアの部品化、共通化の方策【プロセス起因】
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

14

実はレガシー問題
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

15

ソフトウェア開発導入の⿊歴史
1970年

1980年

1990年

※：⽇本で主流になった時期として2000年 SWのISO9001
機能安全CMMI導入

⽶国防総省
WFの誤り認める

Unix出現
ミニコンから
C言語出現 マイコンへ C++出現

Java出現

Web技術
隆盛

2017年

IoT技術

組込みソフトウェア開発• 製造業を中心に発達• 製造業の製品開発観点でのWaterfall万歳文化• ソフトウェアはハードウェアを制御する“添え物”的存在• 製品の継続性から“新製品”でもソフトウェア（構造）は従来のまま→雪ダルマ式に増加→構造、部品という考えは無い
極小規模

4bit/8bit

中規模

大規模

オブジェクト指向プログラミング導入
構造化、部品化
大規模開発対応
並⾏開発対応

超大規模

8bit/16bit/32bit

eXtreme
導入
Programming導入
オブジェクト指向等の構造化技術、並⾏開発技術が大前提

超超大規模

超超超･･･

16bit/32bit

32bit/64bit

組込みソフトウェアの規模

組込みシステムの主流なCPU規模

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

アジャイル手法のベース• CIなどアジャイル手法は2000年代以降のソフトウェア開発技術の上に成⽴している（そもそも論）• 技術は“積重ね”なので、以前が“悪”と言うわけでない• オブジェクト指向技術は構造化手法がベース• 以前の技術の“現在”に合わない部位を改良して進化• ハードウェアの高性能化に伴い、以前は“量的”に不可能であった開発技術が適⽤される•ソフトウェア⼯学にかかわるアイデアの90%は1970年代に出尽くしているという説もある。

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

17歴史ある組込みソフトウェア開発の課題• プロダクト観点• 添え物から主役へ（でも、構造というよりも“つくり”はそのまま）• 派生開発の限界（変化点の周辺は解析されるが全体は？？？）構造化、部品化が進まない• プロジェクト観点• “ひとり”プロジェクトから“多⼈数”“多グループ”“多拠点”へ（“ひとり”だと「何の気兼ねもいらないね！」）• プロセスはプロジェクトの具体化まで規程していない（どのように組織して運営すればよいの？）
適切な複数プロジェクト運営が難しい• プロセス観点• Waterfall万歳！（でも、機構設計、ハードウェア設計は？）• ISO規程は進化した技術を取込んでいる（でも、解釈して実装する⼈は？）適切なプロセス規程化が難しい

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

18

いわゆる「逆に言うと」
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

19

CIが適切に回るということは！
• プロダクト観点• 適切に構造化、部品化ができている！
• ⾒通しのよい、高品質なソフトウェアが開発できている！
• ⾒通しのよさ→保守性の向上→可読性の向上→不具合混入の低減• プロジェクト観点• 適切に複数プロジェクトが同期できている• 適切にプロジェクト運営ができている• プロセス観点• 適切にプロセス規程化ができている（PDCAサイクルが回っている）• 適切にプロセスをプロジェクト化できいている

C Integrationが回る

継続的改善＝真のCI＝Continuous Improvementが実現できている
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

20

サービス紹介Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

21

CI導入⽀援サービス• 活動の流れ及び内容

継続的インテグレーション環境構築⽀援
CI環境スペシャリストがお客様のCI導入目的をお伺いし、CIループが回らない理由を調査究明することで、適切な改善策を提示します。
eSOL Trinityが提供する単体テストツール「TESSY」やクラウドサービス「eSOL Trinity Cloud」等の導入も追加可能です。

既存プロセスへの継続的インテグレーション適⽤⽀援
CI導入経験を持つコンサルタントがお客様の既存プロセスを分析し、無理なCI環境と運⽤プロセスの改善を⽀援します、
具体的には実装⼯程周辺のテストプロセスやインテグレーションプロセス。バックボーンとなる構成管理プロセス等を分析・改善致します。
また、CI導入と同時に「タスク管理ツールeWeaverを⽤いたAgile導入サービス」を実施することによりより変化に強い開発プロセスへの移⾏も可能です。

継続的インプルーブメントへの変革⽀援
CI環境・プロセスが整い、運⽤開始しても改善サイクルが回らない部分が出てきます。
現場での問題解決経験を持つコンサルタントが、問題改善に参加し、CIから始まる現場改善のフィードバックループの醸成を⽀援します。

効率的に高品質な製品開発を⾏える組織への変⾰をサポート
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

22メッセージ
Process改善ループ

Product改善ループ

CIループ

フィードバック実装

ビルド・テスト（自動）

継続的インテグレーションはCIツールの導入だけでも自動化の恩恵で開発活動に効率化・品質向上の効果をもたらします。
しかし、浮いた手間を更なる開発現場の改善ループに回していくと更に大きな改善効果が表れると我々は考えています。
イーソルトリニティのCI導入⽀援サービスは継続的インテグレーションの導入を起点に、開発全体の改善ループを醸成することを目的としています

継続的インテグレーションから真のCI：継続的インプルーブメントへ
Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

23

プレスリリース しました！

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

24Thank you for your timeand attention.

Copyright(C) 2016-2017 eSOL TRINITY Co.,Ltd. All rights reserved.

25