コア・コンピタンス

オブジェクト指向開発

弊社のコア・コンピタンスは『オブジェクト指向設計開発能力』です。

オブジェクト指向を用いて分析・設計を行い、JavaやC++などのオブジェクト指向言語で実装することにより、品質の高いシステムを提供していきます。

オブジェクト指向開発では、分析・設計段階でUMLを作成し、それに基づきオブジェクト指向言語で実装していきます。設計段階では、デザインパターン(MVCなど)、フレームワークを利用することで高い品質を実現します。

オブジェクト指向

ソフトウェアの設計や開発において、操作手順よりも操作対象に重点を置く考え方です。 関連するデータの集合と、それに対する手続き(メソッド)を「オブジェクト」と呼ばれる一つのまとまりとして管理し、その組み合わせによってソフトウェアを構築していきます。すでに存在するオブジェクトについては、利用に際してその内部構造や動作原理の詳細を知る必要はなく、外部からメッセージを送れば機能するため、特に大規模なソフトウェア開発において有効な考え方であるとされています。

データやその集合を現実世界の「モノ」になぞらえた考え方であることから、「オブジェクト」指向と呼ばれています。なおオブジェクトという用語は時に「もの」という直訳語で認識される場合がありますが、英語objectには「目的語」、または「目的となる対象物」という意味があります。従ってオブジェクト指向は本来「述語(機能)よりもその対象を中心に据える」というニュアンスになります。

オブジェクト指向分析が提唱される以前には、システム分析のレベルにおいては、データ構造を中心としたシステムの分析技法である構造化技法が存在しました。また、プログラミングのレベルでは、プログラムの実行の流れを決められた制御構造の組み合わせとして書き下す構造化プログラミングや、カプセル化を促すモジュールプログラミング、多態に対応するデータ指向プログラミングという技法が存在していました。これらに対し、オブジェクト指向手法はそれらを一般化しさらに推し進めたものであります。

オブジェクト指向では上流工程(要件定義、分析、設計)段階でUMLのユースケース図、クラス図、シーケンス図、などを作成し、それに基づき下流工程でオブジェクト指向言語を用いてシステムを実現していきます。設計段階では、デザインパターン(MVCなど)の利用、フレームワークの利用などにより高い品質の設計ができます。

「ソフトウェア開発における品質はどこで決定されるのか?」そのほとんど全ての要因が開発の上流工程、すなわち基本設計から実装前の詳細設計で決定付けられるものと考えられます。上流工程をオブジェクト指向で分析・設計することにより、設計段階での問題点を最小限に抑えることができます。

それ以外にも、オブジェクト指向開発には以下のような利点があります。

  • クラスの再利用性の高さ
  • システムの拡張性、保守性の高さ

これらにより、生産性が向上すると同時に品質の高いシステムが作成できます。

ページのトップへ

UML(Unified Modeling Language)

UML(Unified Modeling Language:統一モデリング言語)はオブジェクト指向によるモデリング言語です。従来、オブジェクトモデリングの表記法はBooch法、OMT法をはじめ、50以上の規格が乱立していました。複数の規格が存在することにより、異なる規格の表記法を使用している技術者同士では情報の交換が困難でした。

そこで、1997年11月にOMG(Object Management Group)により、Grady Booch氏、James Rumbaugh氏、Ivar Jacobson氏の三人によって策定されたUMLが標準として認定されました。(この三人はスリーアミーゴスと呼ばれています。「踊る大捜査線」の神田署長、秋山副署長、袴田課長の三人もスリーアミーゴスと呼ばれますがなんら関係ありません。)そして現在では、オブジェクトモデリングの表記法として最も普及し、世界中で利用されています。

オブジェクト指向のシステム開発では、上流工程から下流工程まで、すべてにオブジェクトが登場し、それらをさまざまな観点からとらえるためにモデルも多数作られます。UMLはそうしたモデルのほとんどに対応可能です。つまり、UMLはオブジェクト指向を使ったシステム開発において、分析から設計、実装まで終始一貫して使われる技術なのです。

UMLでは7種類(分類によっては9種類)の図(ダイアグラム)を必要に応じて書き分けます。よく使われるダイアグラムとしては、クラス図やユースケース図などがあげられます。

  • ユースケース図:アクターとユースケースの関係をあらわす。
  • 静的構造図:クラスの静的な構造をあらわす。(クラス図)
    オブジェクトの静的な構造をあらわす。(オブジェクト図)
  • シーケンス図:オブジェクト間のメッセージのやり取りをタイムシーケンスであらわす。
  • コラボレーション図:オブジェクト間のメッセージのやり取りをオブジェクト間の関係であらわす。
  • 状態遷移図:オブジェクトの状態遷移をあらわす。
  • アクティビティー図:状態遷移図にアルゴリズムを付加したもの。
  • インプリメンテーション図:ソフトウエアコンポーネントをあらわす。(コンポーネント図)
    実行時の構成をあらわす。(デプロイメント図)

ページのトップへ

MVC(Model-View-Controller)

MVCはソフトウェア設計の一技法であり、デザインパターンではMVCパターンと呼称されます。MVCとはModel-View-Controllerの略称であり、データベースや他のシステム、メモリ上に存在する情報を抽象的に表現したものであるデータモデルに対して、一つないし複数の表現View(ユーザーインターフェースなど)が対応し、それらを制御するController(View→Modelの変更同期や、Modelから集約を構成してViewに渡すなど)が存在するという考え方です。

各モジュールが層構造となるため、コードの抽象化が容易で、実際にプログラミングする量を減らすことができます。Model、View、Controllerそれぞれのコンポーネントの結合が疎になるため、保守性に優れ、また、分散しての開発が可能になります。たとえば、Viewを開発する技術者は、関連するModel、Controllerに関する知識が無くても開発することができます。

最近ではStrutsなどのwebアプリケーション用フレームワークが、MVCパターンをベースとしたアーキテクチャを採用しています。(Webアプリケーションで採用されているのはMVCのモデル2:JSPパターンです。)

ページのトップへ