10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです....

6
NTT技術ジャーナル 2014.10 14 ソフトウェア生産技術革新 ソフトウェア開発自動化の歴史 ソフトウェア開発の歴史を振り返っ てみると,自動化として想起される技 術として,アセンブラとコンパイラ技 術があります.アセンブラ技術は,ア センブラ言語から機械語に翻訳する技 術であり,コンパイラ技術は高級言語 からアセンブラを生成する技術です. 歴史的にはアセンブラが最初に登場 し,さらに高級言語としてCOBOLや C言語が登場しました. ソフトウェア開発の自動化の歴史 は,抽象化の歴史です.現在は言語の 抽象度はオブジェクト指向言語Java の登場でさらに進化しています.また, 4GL(第 4 世代言語)などの技術が登 場し,設計レベルの特殊言語からコー ドを自動生成する技術も利用されるよ うになっています. また,最近のソフトウェア開発自動 化技術としてCASE(Computer Aided Software Engineering tools)やMDA (Model Driven Architecture)という 分野があります.いずれも技術開発 は進みましたが,大きな成功を収め たとは言い難いものでした.これら の技術分野に共通する課題は次の 2 つでした. ① 汎用性の限界:汎用的なモデル で業務を表現することの難しさ ② 抽象度を上げることの難しさ: 汎用性を保ったまま,抽象度を高 めることの難しさ 製造の自動化の分類とNTTデータ の取り組み 前述のように,ソフトウェア開発の 自動化には,汎用性の限界があります. 現在の自動化は,業務に特化して自動 化率を向上させる取り組みと,自動化 率は高くありませんが汎用化する取り 組みに分けることできます(図1 ). NTTデータでは,業務特化型の自 動化と汎用的な自動化を組み合わせた 取り組みを行っています. また,NTTデータでは単一の自動 化技術を適用するのではなく,後述す る 8 つの自動化ツールを複数組み合わ せて使うのが一般的です. ■自動化の定義 NTTデータでは,コンピュータパ ワーを活用できる領域であれば,すべ て自動化するという方針のもと,自動 化をより広義に定義しています. ■ 8 つの自動化領域 NTTデータではソフトウェア開発 における自動化を 8 つの分野に分類し ています(図2 ). 製造の自動化は 8 つの分野の 1 つと して位置付けられます.NTTデータ においては,製造の自動化に加えて, 現行解析の自動化,設計の自動化,テ ス ト の 自 動 化 を「TERASOLUNA Suite」ソリューションとして提供し ています. ■TERASOLUNA Suite TERASOLUNA Suiteは要件定義 から結合テストまでを対象とした自 開発の自動化 普及展開 CASE 業務開発に特化した自動化 汎用化を前提とした自動化 対象業務の範囲を限定することにより高い 自動化率を実現する 概 要 生産性 (自動化効果) 汎用性 (導入しやすさ) 標準のアプリケーションフレームワークを前提とし, 設定ファイルやプログラムの雛形を自動生成 対象システムの業務・性能に特化したツー ルを利用でき,生産性向上率は高い 基本的に雛形の生成にとどまり,生産性向上 は限定的となる 専用ツールの開発・カスタマイズ,専用言 語の習得といった作業・教育が必要となる 標準フレームワーク・言語をベースにするため, 導入壁が低い 図 1  自動化の分類 NTTデータにおける ソフトウェア開発自動化の取り組み NTTデータでは,ソフトウェア開発の自動化として,各工程で人間がか かわる作業を少なくする取り組みを2010年から進めてきました.しかし, ソフトウェア開発の自動化は,特別な技術を必要としないため,どの取り 組みも大きな差はありません.そこで,自動化技術をいかに普及展開し, デファクトスタンダードにしていくかが重要となっています.本稿では, NTTデータの自動化技術の概要と普及展開の状況について紹介します. ともゆき NTTデータ

Transcript of 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです....

Page 1: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.1014

ソフトウェア生産技術革新

ソフトウェア開発自動化の歴史

ソフトウェア開発の歴史を振り返ってみると,自動化として想起される技術として,アセンブラとコンパイラ技術があります.アセンブラ技術は,アセンブラ言語から機械語に翻訳する技術であり,コンパイラ技術は高級言語からアセンブラを生成する技術です.歴史的にはアセンブラが最初に登場し,さらに高級言語としてCOBOLやC言語が登場しました.

ソフトウェア開発の自動化の歴史は,抽象化の歴史です.現在は言語の抽象度はオブジェクト指向言語Javaの登場でさらに進化しています.また,4GL(第 4 世代言語)などの技術が登場し,設計レベルの特殊言語からコードを自動生成する技術も利用されるようになっています.

また,最近のソフトウェア開発自動化技術としてCASE(Computer Aided Software Engineering tools)やMDA

(Model Driven Architecture)という分野があります.いずれも技術開発は進みましたが,大きな成功を収めたとは言い難いものでした.これらの技術分野に共通する課題は次の 2つでした.

①  汎用性の限界:汎用的なモデルで業務を表現することの難しさ

②  抽象度を上げることの難しさ:汎用性を保ったまま,抽象度を高めることの難しさ

製造の自動化の分類とNTTデータの取り組み

前述のように,ソフトウェア開発の自動化には,汎用性の限界があります.現在の自動化は,業務に特化して自動化率を向上させる取り組みと,自動化率は高くありませんが汎用化する取り組みに分けることできます(図 1 ).

NTTデータでは,業務特化型の自動化と汎用的な自動化を組み合わせた取り組みを行っています.

また,NTTデータでは単一の自動化技術を適用するのではなく,後述する 8 つの自動化ツールを複数組み合わ

せて使うのが一般的です.■自動化の定義

NTTデータでは,コンピュータパワーを活用できる領域であれば,すべて自動化するという方針のもと,自動化をより広義に定義しています.■ 8 つの自動化領域

NTTデータではソフトウェア開発における自動化を 8 つの分野に分類しています(図 2 ).

製造の自動化は 8 つの分野の 1 つとして位置付けられます.NTTデータにおいては,製造の自動化に加えて,現行解析の自動化,設計の自動化,テス ト の 自 動 化 を「TERASOLUNA Suite」ソリューションとして提供しています.■TERASOLUNA Suite

TERASOLUNA Suiteは要件定義から結合テストまでを対象とした自

開発の自動化 普及展開 CASE

業務開発に特化した自動化 汎用化を前提とした自動化

対象業務の範囲を限定することにより高い自動化率を実現する概 要

生産性(自動化効果)

汎用性(導入しやすさ)

標準のアプリケーションフレームワークを前提とし,設定ファイルやプログラムの雛形を自動生成

対象システムの業務・性能に特化したツールを利用でき,生産性向上率は高い

基本的に雛形の生成にとどまり,生産性向上は限定的となる

専用ツールの開発・カスタマイズ,専用言語の習得といった作業・教育が必要となる

標準フレームワーク・言語をベースにするため,導入壁が低い

図 1  自動化の分類

NTTデータにおけるソフトウェア開発自動化の取り組み

NTTデータでは,ソフトウェア開発の自動化として,各工程で人間がかかわる作業を少なくする取り組みを2010年から進めてきました.しかし,ソフトウェア開発の自動化は,特別な技術を必要としないため,どの取り組みも大きな差はありません.そこで,自動化技術をいかに普及展開し,デファクトスタンダードにしていくかが重要となっています.本稿では,NTTデータの自動化技術の概要と普及展開の状況について紹介します.

我あ づ ま

妻 智ともゆき

NTTデータ

Page 2: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.10 15

特集

動 化 ソ リ ュ ー シ ョ ン で す.TERASOLUNA Suiteの全体像を図₃ に示します.

要件定義工程では,現行解析の自動化ツールTERASOLUNA Reengineeringを提供しています.

設計工程では設計書の整合性自動チェックツールTERASOLUNA DS

を提供しています.TERASOLUNA DSはこのほかに全文検索機能,影響分析機能を提供しています.

製造工程では設計書からソースコードを自動生成するツールTERASOLUNA IDEとTERASOLUNA ViSCを 提 供しています.

単体試験工程および結合試験工程で

はテストコードやテスト項目を自動生成するTERASOLUNA RACTES for UTとTERASOLUNA RACTES for ITを提供しています.

NTTデータのシステム開発ではこうした複数の自動化ツールを組み合わせて生産性向上を図っています.

NTTデータにおける自動化の普及の現状

前述したソフトウェア開発の自動化技術は,長い歴史があり,NTTデータ以外でも各社で研究開発が進められています.

しかし,いずれの取り組みも十分に普及したといえる状況ではありません.自動化は生産性向上効果はありますが,開発標準を大きく変えるため,プロジェクト運営に与える影響が大きく,採用を見送るプロジェクトが多い

現行解析の自動化 設計時の自動化 製造の自動化 テストの自動化

プロジェクト管理時の自動化

ライブラリ管理時の自動化

運用時の自動化 システム基盤構築の自動化

レガシーコードからの正確な仕様解析

設計段階での整合性自動検証

複雑・多様なロジックの完全自動生成

試験項目の自動生成と自動実行

管理情報の集計・可視化

ビルドやテスト環境へのリリースの自動化

運転操作説明書の自動化

システム基盤の自動インストール・設定

図 2  NTTデータの考える 8 つの自動化領域

TERASOLUNA DS

開発手順・管理手順

要件定義

既存システムの把握

要件定義 設計

リバース技術者

仕様管理者

レビュー

ライブラリ管理者

テスト環境

ソースコード

テストケース

リリース作業

アプリケーション設計者 従来のプログラマ テスト技術者

TERASOLUNAReengineering

TERASOLUNARACTES for UT

TERASOLUNAIDE

TERASOLUNAViSC

TERASOLUNA RACTESfor IT

画面設計 処理設計 単体テスト 機能結合テスト システムテスト

設計 製造 結合テスト システムテスト

自動生成自動生成

自動整合性検証

図 3  TERASOLUNA Suiteの全体像

Page 3: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.1016

ソフトウェア生産技術革新

ことも事実です.プロジェクトを預かるプロジェクトマネージャはどうしてもリスクを避ける傾向があります.こうしたリスク感を軽減するようなノウハウの蓄積が重要であるといえます.

自動化成功のポイント

自動化ツールを使ったとしても,実際に効果を上げなければ意味がありません.NTTデータでは,主に次の 2つが生産性向上に寄与していると考えています.

(1) 手作業をコンピュータで代替生産性を上げるために重要なこと

は,従来人間が行っていた作業を,コンピュータパワーを使って自動化するということです.そのためには,まず,自動化の対象となる人間の作業を特定することが重要です.

例えば,図 4 の 2 つの作業フローを見てみましょう.図 4(a)は,手作業で行う場合の作業フローで,図 4(b)は自動化ツールが代替可能な作業領域を示したものです.

現状の作業を整理して,自動化できる作業を特定すると,自動化ツールの導入で不要となる作業が分かります.このように,自動化ツールにより作業が削減されると生産性は向上します.

自動化ツールによって,自動化対象の作業は異なるため,プロジェクトマネージャやリーダは,不要となる作業を正しく理解する必要があります.

(2) 自動化により検証作業が不要一般的に,システム開発のプロセス

は,人間が実施した作業とそれを検証する作業がセットとなって構成されています.これは,人間が何らかの作業を行う場合,一定の割合で誤るという

経験則に基づいています.人間が実施した作業の品質を管理す

るために,誤り率の上限値,下限値を管理指標値として設定し範囲内かをチェックする方法が利用されています.

しかし,自動化技術を利用する場合,作業はコンピュータで実施します.コンピュータの処理結果に基本的に誤りはないため,上記のような人間が誤ることを前提とした検証作業は不要です.自動化による検証作業不要の例を図 5 に示します.

NTTデータでは製造工程の自動化を進めています.この場合,製造工程の前の工程(詳細設計工程)の成果物からソースコードが自動的に生成されます.手作業で製造工程を行う場合,単体試験で製造工程の誤りを検出していましたが,製造工程が自動化されたので,この誤り確認の作業は不要となります.

プロセスの検証

NTTデ ー タ は,「TERASOLUNA開発手順」と呼ばれる開発プロセスの社内標準を定義しています(図 6 ).しかし,現状では自動化ツールを前提としていないため,自動化ツールを使った場合に不要な作業が数多く残っています.前述のように,手作業を削減し,不要な検証作業を削除するという開発プロセス標準の変更が必要になります.

開発プロセスを変更するということは,作業を実施する人のみならず,品質管理や進捗管理の方法も変わるため,プロジェクトにかかわるすべての人にとって大きな影響を与えます.よって,事前に検証が必要です.検証

はプロジェクトや組織の規模によって多少異なりますが,多くの場合, 1 ~2 つの機能の開発を変更したプロセスで少人数で実施すれば十分です.

プロセスの検証を通じて,開発プロセスの標準を変更する影響や生産性の効果の把握が可能となり,今後のプロジェクトの見通しを良くすることができます.

結果の評価

生産性を客観的に評価することは,自動化技術による生産性向上効果を知り,ノウハウを横展開するためにも重要です.

開発の自動化を組織的に進めるためには,自動化の効果を客観的に振り返り,成功と失敗をはっきりさせることが重要です.成功した場合はノウハウを横展開し,失敗した場合は原因を分析し,改善の方策を検討することが重要です.そうすることで,自動化による生産性向上効果をさらに高めていくことができます.

自動化普及展開を阻害する要因とNTTデータの取り組み

■自動化普及を阻害する要因自動化の普及を阻むものは次の 2 つ

であると考えています.(1)  効果を定量的に示すことが難

しく動機付けできていない自動化に限らず,ソフトウェア開発

を定量的に示すことは難しい課題です.同時に同じプロジェクトを比較できないことから,自動化を使った場合とそうでない場合の生産性の違いを示すことは難しいといえます.効果を定量的に示せなければ,導入の判断をす

Page 4: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.10 17

特集

(a) 自動化ツール導入前

画面生成

画面生成ツール②

内部インタフェース設計

画面設計

設計C

設計D

概要設計

管理

概要設計作業要領作成

規約設計詳細設計 製造作業要領作成

検証

詳細設計

画面設計

(b) 自動化ツール導入後

画面生成

画面生成ツール②

内部インタフェース設計

画面設計

設計C

設計D

概要設計

管理

概要設計作業要領作成

規約設計詳細設計 製造作業要領作成

検証

詳細設計

画面設計

設計A自動化メッセージ設計

画面生成ツール①

設計① 外部①設計

ロジック生成ツール① ロジック生成ツール② ロジック生成ツール③

ロジック生成ツール④ 設計 ロジック生成ツール⑤

設計B

設計 製造・試験A

製造A

画面生成ツール

画面テスト

画面テスト

自動テストツールテスト

自動テスト実行

自動テスト実行

画面テスト設計

画面テスト実装

画面テスト計画画面生成ツール

インタフェース作成

画面製造

構築

プログラムコード作成

テスト①設計

テスト①実装

テスト①実行

テスト②設計

テスト②実装

テスト②実行

画面作成

ロジック生成ツール実行

画面テスト計画

設計A自動化メッセージ設計

画面生成ツール①

設計① 外部①設計

ロジック生成ツール① ロジック生成ツール② ロジック生成ツール③

ロジック生成ツール④ 設計 ロジック生成ツール⑤

設計B

設計 製造・試験A

製造A

画面生成ツール

画面テスト

画面テスト

自動テストツールテスト

自動テスト実行

自動テスト実行

画面テスト設計

画面テスト実装

画面テスト計画画面生成ツール

インタフェース作成

画面製造

構築

プログラムコード作成

テスト①設計

テスト①実装

テスト①実行

テスト②設計

テスト②実装

テスト②実行

画面作成

ロジック生成ツール実行

画面テスト計画

画面生成

画面生成ツール②

内部インタフェース設計

画面設計画面設計

画面生成ツール

画面テスト

画面テスト

自動テストツールテスト

自動テスト実行

自動テスト実行

画面テスト設計

画面テスト実装

画面テスト計画画面生成ツール

インタフェース作成

画面製造画面作成

画面テスト計画

設計D

概要設計作業要領作成

規約設計詳細設計 製造作業要領作成

構築

プログラムコード作成

テスト①設計

テスト①実装

テスト①実行

テスト②設計

テスト②実装

テスト②実行

オプショナルタスク

オプショナルタスク

図 4  自動化対象作業の特定

Page 5: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.1018

ソフトウェア生産技術革新

基本構想立案プロセス(BP)

システム要件定義プロセス(RD)

外部環境の概要調査

事業構造の概要調査

システム要件整理

処理設計

データモデル設計

アプリケーション基盤概要設計

システム基盤設計プロセス(PFD)

システム基盤詳細設計

システム基盤パラメータ設計

移行設計

システム運用作業支援ツール開発

移行支援ツール等開発

移行テスト 移行リハーサル

システム移行準備プロセス(MGP)

サービス提供準備プロセス(SMP)

サービス提供設計

教育・訓練

ITサービス管理支援ツール開発

サービス提供テスト

サービス提供準備の最終確認

システム基盤テスト

環境構築

システム基盤構築プロセス(PFC)

アプリケーション基盤詳細設計

アプリケーション基盤構築

コンポーネント設計

コンポーネント作成

コンポーネントテスト

処理結合テスト

機能結合テスト

業務結合テスト

システムテスト 受入テスト

移行非機能要件検討

システムアーキテクチャ概要設計

移行要件定義

サービス提供

要件定義

現行システム課題分析

経営・業務課題分析

業務改革の方針策定

業務改革の全体計画策定

業務改革の施策立案

IT活用基本構想策定

アプリケーション外部設計プロセス(ED)

アプリケーション内部設計プロセス(ID)

アプリケーション製造プロセス(M/UT)

アプリケーション結合テストプロセス(IT)

システム受入支援・移行プロセス(UAT/MG)

システムテストプロセス(ST)

業務フロー定義

データモデル定義

アプリケーション基盤要件定義

機能定義

システム基盤制御機能開発

図 6  TERASOUNA開発プロセス全体像

システム要件定義プロセス(RD)

処理設計

システム要件整理

業務フロー定義

機能定義

データモデル定義

データモデル定義

コンポーネント設計

コンポーネントテスト

処理結合テスト

機能結合テスト

業務結合テスト

コンポーネント作成非機能要件

検討

アプリケーション基盤概要設計

アプリケーション基盤詳細設計

アプリケーション基盤構築

アプリケーション外部設計プロセス(ED)

アプリケーション内部設計プロセス(ID)

アプリケーション製造プロセス(M/UT)

アプリケーション結合テストプロセス(IT)

コンポーネント設計

コンポーネントテスト

結合テスト

コンポーネント作成

製造自動化ツールの効果

図 5  自動化による検証作業不要の例

Page 6: 10 02 特集 - NTTNTT技術ジャーナル 2014.10 15 特 集 動化ソリューションです. TERASOLUNA Suiteの全体像を図 ₃に示します. 要件定義工程では,現行解析の自動

NTT技術ジャーナル 2014.10 19

特集

るプロジェクトマネージャを動機付けることができません.

これに対しNTTデータでは,自動化ツール導入プロジェクトの生産性測定を組織的に行って,効果を公表する取り組みを進めています.また,年に1 回,自動化による生産性向上の成功事例を共有する社内セミナを開催しています.

(2)  開発標準を変更することが難しい

開発標準とは,開発プロセスや管理手順,その他システム開発作業全般のタスクおよび作業フローを定義したものです.システム開発は一般的に開発標準を最初に定めます.TERASOLUNA開発標準は自動化ツールを前提としていないので,自動化ツールを使う場合は,標準を変更するところから始めなければなりません.標準の変更は時間がかかるうえに難しい作業です.

これに対しNTTデータでは,自動化ツールを導入した場合の開発標準を提供しています.自動化ツールを前提とした開発標準では,自動化ツールで代替可能な作業や不要となる検証作業をあらかじめ明示してあります.さらに,自動化ツールを使った場合の作業手順を詳細に規定する実施要領を提供し,プロジェクトの負荷を軽減しています.

自動化普及の現状と目標

NTTデータでは,自動化普及の目標値を設定する取り組みを2012年度から始めています.目標値を設定して以降,自動化ツールの普及が加速化しました.

ある自動化ツールの過去 4 年間の普

及の推移を図 7 に示します.図 7 は2010年度の普及数を基準に各年度を比較したものです.2010年度に自動化の取り組みを開始,目標値を設定した2012年に急激に増え,2013年度には2010年度比で15倍の普及数となっています.このように,会社全体で自動化普及を重視し,取り組んできた効果が徐々にみられるようになってきました.今後もさらに普及を進めていく計画です.

我妻 智之

本稿では,ソフトウェア開発の自動化とは何か,利用する場合に注意することは何か,について説明しました.特に自動化を利用する立場で注意しなければならないことを詳しく書きました.自動化を利用する際の参考になれば幸いです.

◆問い合わせ先NTTデータ 技術開発本部 ソフトウェア工学推進センタE-mail case-nttgjournal kits.nttdata.co.jp

0

5

10

15

2010(基準) 2011 2012 2013 (年度)

約15倍

普及率

図 7  自動化の普及状況