開発の自動化

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

普及展開

CASE

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

ソフトウェア開発自動化の歴史① 汎用性の限界：汎用的なモデル

あ づ まともゆき

我妻 智之
NTTデータせて使うのが一般的です．

■自動化の定義

で業務を表現することの難しさ

ソフトウェア開発の歴史を振り返っ② 抽象度を上げることの難しさ：

NTTデータでは，コンピュータパてみると，自動化として想起される技

汎用性を保ったまま，抽象度を高ワーを活用できる領域であれば，すべ術として，アセンブラとコンパイラ技めることの難しさて自動化するという方針のもと，自動術があります．アセンブラ技術は，アセンブラ言語から機械語に翻訳する技術であり，コンパイラ技術は高級言語製造の自動化の分類とNTTデータの取り組み化をより広義に定義しています．

■ ８ つの自動化領域
NTTデータではソフトウェア開発からアセンブラを生成する技術です．

前述のように，ソフトウェア開発の歴史的にはアセンブラが最初に登場自動化には，汎用性の限界があります．

し，さらに高級言語としてCOBOLや現在の自動化は，業務に特化して自動製造の自動化は ８ つの分野の １ つとC言語が登場しました．

化率を向上させる取り組みと，自動化して位置付けられます．NTTデータ

ソフトウェア開発の自動化の歴史率は高くありませんが汎用化する取りにおいては，製造の自動化に加えて，は，抽象化の歴史です．現在は言語の組みに分けることできます（図 １ ）．

現行解析の自動化，設計の自動化，テ

抽象度はオブジェクト指向言語Java

NTTデータでは，業務特化型の自ス ト の 自 動 化 を「TERASOLUNAの登場でさらに進化しています．
また，動化と汎用的な自動化を組み合わせたSuite」ソリューションとして提供し４GL（第 ４ 世代言語）などの技術が登取り組みを行っています．ています．

における自動化を ８ つの分野に分類しています（図 ２ ）．

■TERASOLUNA Suite

場し，設計レベルの特殊言語からコー

また，NTTデータでは単一の自動ドを自動生成する技術も利用されるよ化技術を適用するのではなく，後述すTERASOLUNA Suiteは要件定義うになっています．

る ８ つの自動化ツールを複数組み合わから結合テストまでを対象とした自また，最近のソフトウェア開発自動化技術としてCASE（Computer Aided
Software Engineering tools）やMDA業務開発に特化した自動化汎用化を前提とした自動化（Model Driven Architecture）という対象業務の範囲を限定することにより高い自動化率を実現する標準のアプリケーションフレームワークを前提とし，設定ファイルやプログラムの雛形を自動生成分野があります．いずれも技術開発は進みましたが，大きな成功を収めたとは言い難いものでした．これらの技術分野に共通する課題は次の ２つでした．

14

NTT技術ジャーナル 2014.10

概要

対象システムの業務・性能に特化したツー 基本的に雛形の生成にとどまり，生産性向上
生産性は限定的となる（自動化効果） ルを利用でき，生産性向上率は高い
専用ツールの開発・カスタマイズ，専用言 標準フレームワーク・言語をベースにするため，汎用性（導入しやすさ）語の習得といった作業・教育が必要となる 導入壁が低い

図1

自動化の分類

特 集

動 化 ソ リ ュ ー シ ョ ン で す．

を提供しています．TERASOLUNAはテストコードやテスト項目を自動生

TERASOLUNA Suiteの全体像を図

DSはこのほかに全文検索機能，影響成するTERASOLUNA RACTES for

₃ に示します．

分析機能を提供しています．

UTとTERASOLUNA RACTES for

要件定義工程では，現行解析の自動製造工程では設計書からソースコード化ツールTERASOLUNA Reengineering

を自動生成するツールTERASOLUNA

NTTデータのシステム開発ではこを提供しています．

IDEとTERASOLUNA ViSCを 提 供うした複数の自動化ツールを組み合わしています．

せて生産性向上を図っています．

設計工程では設計書の整合性自動ITを提供しています．

単体試験工程および結合試験工程でチェックツールTERASOLUNA DS

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

現行解析の自動化

設計時の自動化

製造の自動化

テストの自動化

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

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

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

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

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

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

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

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

管理情報の集計・可視化

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

運転操作説明書の自動化

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

しかし，いずれの取り組みも十分に普及したといえる状況ではありません．自動化は生産性向上効果はありま
すが，開発標準を大きく変えるため，

図2

プロジェクト運営に与える影響が大き

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

く，採用を見送るプロジェクトが多い

要件定義

設計

製造

システムテスト

結合テスト

開発手順・管理手順

リバース技術者

アプリケーション設計者

従来のプログラマ

テスト技術者

既存システムの把握

画面設計

処理設計

単体テスト

機能結合テストTERASOLUNA
Reengineering

TERASOLUNAIDETERASOLUNAViSCTERASOLUNARACTES for UTTERASOLUNA RACTES
for IT

要件定義

設計
ソース
コード

テスト
ケース

自動生成
自動整合性検証

自動生成

システム
テスト

テスト環境
レビュー
TERASOLUNA DS
仕様管理者

図3

リリース作業
ライブラリ管理者

TERASOLUNA Suiteの全体像NTT技術ジャーナル 2014.10

15

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

ことも事実です．プロジェクトを預か経験則に基づいています．

はプロジェクトや組織の規模によってるプロジェクトマネージャはどうして人間が実施した作業の品質を管理す

多少異なりますが，多くの場合， １ ～もリスクを避ける傾向があります．こるために，誤り率の上限値，下限値を２ つの機能の開発を変更したプロセス

うしたリスク感を軽減するようなノウ

管理指標値として設定し範囲内かをで少人数で実施すれば十分です．

ハウの蓄積が重要であるといえます．

チェックする方法が利用されています．

プロセスの検証を通じて，開発プロ

しかし，自動化技術を利用する場合，セスの標準を変更する影響や生産性の作業はコンピュータで実施します．コ

効果の把握が可能となり，今後のプロ自動化ツールを使ったとしても，実ンピュータの処理結果に基本的に誤りジェクトの見通しを良くすることがで際に効果を上げなければ意味がありまはないため，上記のような人間が誤るきます．

せん．NTTデータでは，主に次の ２ことを前提とした検証作業は不要でつが生産性向上に寄与していると考えす．自動化による検証作業不要の例をています．

図 ５ に示します．

自動化成功のポイント

結果の評価
生産性を客観的に評価することは，（1） 手作業をコンピュータで代替

NTTデータでは製造工程の自動化

自動化技術による生産性向上効果を知

生産性を上げるために重要なことを進めています．この場合，製造工程り，ノウハウを横展開するためにも重は，従来人間が行っていた作業を，コの前の工程（詳細設計工程）の成果物要です．

ンピュータパワーを使って自動化するからソースコードが自動的に生成され開発の自動化を組織的に進めるためということです．そのためには，まず，ます．手作業で製造工程を行う場合，には，自動化の効果を客観的に振り返

自動化の対象となる人間の作業を特定

単体試験で製造工程の誤りを検出してり，成功と失敗をはっきりさせることすることが重要です．

いましたが，製造工程が自動化されたが重要です．成功した場合はノウハウので，この誤り確認の作業は不要となを横展開し，失敗した場合は原因を分ります．

析し，改善の方策を検討することが重例えば，図 ４ の ２ つの作業フローを見てみましょう．図 4（a）は，手作業で行う場合の作業フローで，図 4（b）
は自動化ツールが代替可能な作業領域を示したものです．

プロセスの検証
NTTデ ー タ は，「TERASOLUNA要です．そうすることで，自動化による生産性向上効果をさらに高めていくことができます．

現状の作業を整理して，自動化でき開発手順」と呼ばれる開発プロセスのる作業を特定すると，自動化ツールの社内標準を定義しています（図 ６ ）．

導入で不要となる作業が分かります．

しかし，現状では自動化ツールを前提

このように，自動化ツールにより作業としていないため，自動化ツールをが削減されると生産性は向上します．

使った場合に不要な作業が数多く残っ自動化ツールによって，自動化対象ています．前述のように，手作業を削であると考えています．の作業は異なるため，プロジェクトマ減し，不要な検証作業を削除するとい（1） 効果を定量的に示すことが難ネージャやリーダは，不要となる作業

う開発プロセス標準の変更が必要になを正しく理解する必要があります．

ります．

自動化普及展開を阻害する要因とNTTデータの取り組み■自動化普及を阻害する要因
自動化の普及を阻むものは次の ２ つしく動機付けできていない自動化に限らず，ソフトウェア開発（2） 自動化により検証作業が不要

開発プロセスを変更するということを定量的に示すことは難しい課題で一般的に，システム開発のプロセスは，作業を実施する人のみならず，品す．同時に同じプロジェクトを比較では，人間が実施した作業とそれを検証質管理や進捗管理の方法も変わるた

きないことから，自動化を使った場合する作業がセットとなって構成されてめ，プロジェクトにかかわるすべてのとそうでない場合の生産性の違いを示います．これは，人間が何らかの作業人にとって大きな影響を与えます．

すことは難しいといえます．効果を定を行う場合，一定の割合で誤るというよって，事前に検証が必要です．検証量的に示せなければ，導入の判断をす

16

NTT技術ジャーナル 2014.10

特 集（a） 自動化ツール導入前
設計

製造・試験A

設計A

設計B

自動化メッセージ設計
画面生成ツール①
設計①

ロジック生成ツール①

ロジック生成ツール②

ロジック生成ツール③

ロジック生成ツール④

設計

ロジック生成ツール⑤

製造A
ロジック生成ツール実行

外部①設計
画面テスト

画面生成
画面テスト計画

画面生成ツール②画面生成ツール

内部インタフェース設計

画面生成ツール

画面設計
画面設計
設計C

画面製造

概要設計

詳細設計

管理

検証

自動テスト実行
画面テスト

画面テスト計画

インタフェース作成

自動テストツールテスト

画面作成

画面テスト設計
画面テスト実装
自動テスト実行

構築

概要設計

詳細設計

規約設計

テスト①実行

プログラムコード作成

設計D
作業要領作成製造作業要領作成

テスト②設計
テスト①設計テスト②実装テスト②実行

テスト①実装（b） 自動化ツール導入後
設計

製造・試験A

設計A

設計B

自動化メッセージ設計
画面生成ツール①
設計①

ロジック生成ツール①

ロジック生成ツール②

ロジック生成ツール③

ロジック生成ツール④

設計

ロジック生成ツール⑤

製造A
ロジック生成ツール実行

外部①設計
画面テスト

画面生成
画面生成ツール

内部インタフェース設計

インタフェース作成
オプショナルタス
ク

画面設計
設計C

画面製造

概要設計

詳細設計

管理

検証

画面作成

画面テスト計画

画面設計

画面生成ツール

画面テスト計画

画面生成ツール②

自動テストツールテスト
自動テスト実行
画面テスト
画面テスト設計
画面テスト実装
自動テスト実行

構築
プログラムコード作成

設計D
概要設計

作業要領作成
規約設計

詳細設計

オプショナルタスク
製造作業要領作成

テスト②設計
テスト①設計テスト①実装図4

テスト①実行テスト②実装テスト②実行

自動化対象作業の特定NTT技術ジャーナル 2014.1017

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

システム要件定義
プロセス
（RD）
システム
要件整理

アプリケーション アプリケーション アプリケーション製造
外部設計
内部設計
プロセス
（M/UT）
プロセス
プロセス
（ED）
（ID）

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

製造自動化ツールの効果

業務フロー
定義

業務
結合テスト
機能
結合テスト

機能定義

処理
結合テスト

処理設計
データモデル定義

データモデル
定義

コンポーネン
ト設計

コンポーネン
ト作成

非機能要件
検討
アプリケーション
基盤概要設計図5

基本構想立案プロセス（BP）
外部環境の 事業構造の概要調査
概要調査

経営・業務 現行システム
課題分析
課題分析

システム要件定義
プロセス
（RD）
システム
要件整理

業務改革の施策立案
IT活用基本構想策定

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

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

アプリケーション アプリケーション
内部設計
外部設計
プロセス
プロセス
（ID）
（ED）

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

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

移行
要件定義

サービス
提供
要件定義コンポーネント設計

データモデル
設計

受入テスト

コンポーネン
トテスト
移行コンポーネン
ト作成
アプリケーション
基盤概要設計アプリケーション
基盤詳細設計システム基盤設計
プロセス（PFD）
システム基盤詳細設計

システム基盤テスト

移行設計

サービス提供準備プロセス
（SMP）
サービス
提供設計

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

システム基盤構築プロセス（PFC）

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

システム移行準備プロセス
（MGP）

図6

NTT技術ジャーナル 2014.10

システム
テスト

処理
結合テスト

非機能要件
検討
アプリケーション
基盤要件定義システム受入支援・移行プロセス（UAT/MG）

機能
結合テスト
処理設計

データモデル
定義

システム
テストプロ
セス
（ST）

業務
結合テスト

機能定義

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

18

アプリケーション
基盤詳細設計業務フロー
定義

業務改革の方針策定
業務改革の全体計画
策定

コンポーネン
トテスト

環境構築
システム基盤
制御機能
開発

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

移行テスト

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

教育・訓練
ITサービス
管理支援
ツール開発

TERASOUNA開発プロセス全体像

移行リハーサル

サービス
提供テスト

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

約15倍

15

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

5います．
（2） 開発標準を変更することが難しい

0

開発標準とは，開発プロセスや管理

2010（基準）2011

図72013 （年度）2012

自動化の普及状況

手順，その他システム開発作業全般のタスクおよび作業フローを定義したものです．システム開発は一般的に開発及の推移を図 ７ に示します．図 ７ は標準を最初に定めます．
TERASOLUNA

2010年度の普及数を基準に各年度を開発標準は自動化ツールを前提として比較したものです．2010年度に自動いないので，自動化ツールを使う場合化の取り組みを開始，目標値を設定しは，標準を変更するところから始めなた2012年に急激に増え，2013年度にければなりません．標準の変更は時間は2010年度比で15倍の普及数となっがかかるうえに難しい作業です．ています．このように，会社全体で自これに対しNTTデータでは，自動動化普及を重視し，取り組んできた効化ツールを導入した場合の開発標準を果が徐々にみられるようになってきま提供しています．自動化ツールを前提した．今後もさらに普及を進めていくとした開発標準では，自動化ツールで計画です．

代替可能な作業や不要となる検証作業をあらかじめ明示してあります．さらに，自動化ツールを使った場合の作業手順を詳細に規定する実施要領を提供し，プロジェクトの負荷を軽減しています．

自動化普及の現状と目標
NTTデータでは，自動化普及の目標値を設定する取り組みを2012年度から始めています．目標値を設定して以降，自動化ツールの普及が加速化しました．
ある自動化ツールの過去 ４ 年間の普我妻 智之
本稿では，ソフトウェア開発の自動化とは何か，利用する場合に注意することは何か，について説明しました．特に自動化を利用する立場で注意しなければならないことを詳しく書きました．自動化を利用する際の参考になれば幸いです．

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

NTT技術ジャーナル 2014.10

19