ソフトウェアエンジニアリング(ソフトウェア工学)とは

目的とする高品質のソフトウェアを効率的かつ効果的に作成・利用するための方法論・技法、ツールの知識体系 です。

現在では、ソフトウェアが無いと自動車は動かない、電車には乗れない・動かない、新幹線には乗れない・動かない、 飛行機にも乗れない・飛べない、銀行にお金も預けられない・引きさせない、電気は使えない・・・日常生活のインフラも 利用できません。勿論、企業や公共団体の業務もストップしてしまいます。更に、ビックデータ、IoTなどのキーワードの 実現ではソフトウェアの一層の大規模化、複雑化、連携化が進むと考えられます。

このためソフトウェアエンジアリングへの取組みは重要性がますます増大します。しかし、長年、ソフトウェアの生産技術 部門に所属し、ソフトウェアエンジにリングに取り組んできた経験でもその対象知識は広く、かつ、これからも急速に発展するように感じます。

  • ソフトウェアプロダクトに対するものとソフトウェアプロセスに関するもの
  • 中間成果物である各種ドキュメントやモデルを含むもの
  • ソフトウェアプロセスに関してはソフトウェアライフサイクルの概念が導入され、企画・開発から保守・消滅までを対象とする。
  • ソフトウェアプロダクト(ソフトウェア資産)とは何か、多種多様でありどこまでを対象に考えるか
  • 組込みシステムなどでハードウェアとソフトウェアのとの関係とそれぞれのエンジアリング技術との関連を捉えるもの
  • 純粋な学術的、論理的な知識と現場の経験知的なものとの融合

ソフトウェアエンジニアリングの必要性の経緯

下記の様な課題「ソフトウェアの危機」を解消するべく取組みが始まりました。

  • システムの完成は常に納期に遅れ、コストが超過し、しかも当初の要求仕様を満たしていない
  • 作成されたプログラムの品質が悪く、出来上がったプログラムの保守の費用と負荷が増大する
  • ソフトウェアは直接開発した人以外が保守することが困難で、修正、改良することがむずかしい
  • ソフトウェアは、属人性が強く、同じ要求仕様でも設計内容やプログラミングが同様に作られない

ソフトウェアエンジニアリング関する知識のキーワードの例

  • SWEBOK(SoftWare Engineering Body Of Knowledge):IEEE(米国電気電子学会)を母体とする団体、 SWECC(SoftWare Engineering Coordinating Committee)」が策定した,ソフトウエアの開発・保守に関する知識体系
  • ソフトウェア品質知識体系ガイド -SQuBOK
  • SQuBOK(ソフトウエア品質知識体系)
  • ソフトウェアエンジニアリングとしての方法論
    • ソフトウェアライフサイクルプロセス:SLCP( Software LifeCycle Process )
    • IoT時代に対応したコンシューマデバイスの機能安全のための開発方法論
    • ソフトウェア開発方法論(構造化技法、データ中心設計、オブジェクト指向)
    • ウォータフォール/アジャイル・SCRUM/Xプログラミング/プロトタイピング/スパイラルの各種開発
    • チケット駆動開発
    • 自動生成/テンプレート/アプリケーションフレームワーク
    • 部品化(コンポーネント、テンプレート、ビジネス部品、クラス部品等) /再利用/パッケージ適用/ERP適用/OSS・FOSS利用
    • 3階層モデル、MVCモデル
    • SI企業の方法論(日立:HIPCE/HIPLAN、富士通:SDASなど)
    • データドリブン型/イベントドリブン型/状態遷移型
  • 成熟度モデル(CMMI)
  • CASE(Computer Aided Software Engineering)ツール
  • 統合開発環境:IDE (Integrated Development Environment)
  • 静的解析ツール/動的解析ツール/動的テストツール

ソフトウェアエンジニアリング関する関連団体など

  • 情報処理学会ソフトウェア工学研究会
  • 日本技術士会 情報工学部門

参照・盛り込むべき対象プロセス

  • ISO 9001 品質マネジメントシステム
  • JIS X 0160:2007 ソフトウェアライフサイクルプロセス      (ISO/IEC 12207:1995/Amd.1:2002, Amd.2:2004)
  • ソフトウェアライフサイクルプロセス SLCP-JCF2013
  • ISO/IEC 15288:2000 (JIS X 0170:2004)
  • JIS X 0133-1(ISO/IEC 14598-1)
  • SO/IEC 9126-1 ソフトウェア製品の品質-品質モデル (JIS X 0129-1)
  • ISO/IEC 15504 プロセスアセスメント (Process assessment)
  • SW-CMM/CMMI
  • 業種固有プロセス(ISO/TS 16949 自動車産業向け品質マネジメントシステム、自動車用機能安全規格(ISO 26262)など)

上記は個別の取り込むのではなく、組織・企業の特性やプロジェクトの特性に合わせて 取捨選択、カスタマイズ、融合して、つながりのある一貫したプロセスとしてデザインする必要があります。


OSS(Open-source software)の利用について

ソフトウェア開発プロジェクトでは、OSSの利用は、必須となります。

  • 知的所有権対応、ソースの改変利用での制約(GLP、GNUなど)
  • プロジェクトマネジメントとエンジアリングプロセスでどの様に対応するか
  • セキュリティなどのへの対応
  • コーディング規約などへの対応
  • オープンソース管理(Black Duckなど)

ソフトウェアエンジニアリングツール・システム

ソフトウェアエンジニアリング関する知識のキーワードにも一部記載しましたが支援ツールなしでは ソフトウェアエンジニアリングの適用推進はすすみません。 クラウド環境でのPaaSなども含めて学習・研究室で具体的に取り上げていきます。

参考事例