実践的オブジェクト指向分析・設計と実装

コース番号:123P
日数:4日間
形態:ハンズオン

研修コースの概要

アプリケーションやシステム開発の主流であるオブジェクト指向の主要な開発方法であるRUP (Rational Unified Porcess) の「ユースケース駆動」に基づいて分析、設計、そして実装という一連のプロセスを演習を通して一貫して学ぶことを目的としたコースです。単に概念的なクラス図の作成だけで終わらず、実装まで行うのがこのコースの最大の特徴です。RUPにより正しく設計した設計図(オブジェクト図、クラス図、ユースケース実現)は、ほぼ機械的にコードに変換できることを体験・理解していただけます。またこの実装を通して得られるフィードバックにより「実装可能で実行時効率・拡張性に優れた設計図の開発」という設計の本質を理解することがきます。

設計演習を行う準備として、プログラムがマシン上でどのようにメモリー内に展開され実行されるのか、あるいは継承、インターフェース、ポリモーフィズムといったオブジェクト指向の重要な機能がどのように実装されそして使われるのかを実際のプログラムを通して理解します。このように分析・設計から実際のコーディングおよび実行時の動作まで一貫して理解することにより、実装の細部にまで責任を持って設計を行えるアーキテクトを養成します。 さらに「ユースケース駆動」と並んでRUPの他の2つの柱である、「アーキテクチャー中心」および「繰り返しによる開発」に関して、その本質および有効性をケーススタディ等を通して簡潔に分かり易く説明します。

開催日程
  • 次回2020年5月開催予定
時間 9:30 - 18:00
料金(税抜)
  • (早割) 218,550円
  • (通常) 235,000円
※価格表示は税抜です
会場 弊社 神保町 セミナールーム »

この研修では次のスキルが習得できます(使用言語はC#)

  • プログラムの実行時のメモリー上(ヒープ、スタック、スタティック領域)での動作の理解
  • UMLのオブジェクト図、クラス図、シーケンス図の意味と書き方
  • RUPに基づいたシステムの詳細な分析・設計法
    • アクターとユースケースを識別する(ユースケースモデルによりシステムの仕様を記述する)
    • ユースケースモデルからオブジェクト図・クラス図とユースケース実現(分析・設計モデル)を導き出す
  • 設計モデルから実際のC#のコードに展開する
    • 実装演習で使うラムダ式やプロパティといったC#の機能
    • クラス図およびユースケース実現からコードへの変換
  • 上記の項目を3つの設計・実装のグループ演習により実際に体験し深く理解する

この研修の対象者

オブジェクト指向の手法を分析・設計から実装まで一貫して体系的に学ぼうと考えていらっしゃるソフトウェア・エンジニア、システム分析・設計者、プログラマの方々に最適です。講義ではすべての説明を基礎からボトムアップで行うため受講には多くの事前の知識は必要ありませんが、すべての例をC#のプログラムで示すためC#、JavaあるいはC++の簡単なプログラムをスムースに解読・理解できるレベルの知識が必要です(ほぼ1年位のそれらの言語によるプログラミングの経験で充分です)。

ただし、経験豊富なプログラマの方であればCの知識だけでも充分に受講可能です。実装演習においても、設計をしっかり行うのとVS.NETの機能が優れているため、プログラミング言語の知識・経験で問題が起こることはありません。

オブジェクト指向分析・設計の事前の知識は必要ありません。

コース内容

概要

  • オブジェクト指向の概念
    • データタイプとインスタンス
    • クラスとオブジェクト
    • フィールドとメソッド
    • オブジェクト指向言語の実行環境(ヒープ、スタック、スタティック領域)
    • リンク、関連と多重度
    • 継承とインターフェース
    • ポリモーフィズムとその応用
  • UMLの表記法
    • クラス図、オブジェクト図
    • ユースケース実現 ― 自然言語による表現、シーケンス図

Rational Unified Process(RUP)

  • ユースケース駆動の概要(ユースケースモデルと分析・設計モデル)

ユースケースモデルによる要求事項の捕捉

  • アクターの識別
  • ユースケースによるシステム仕様の記述

分析・設計モデル

  • ユースケースモデルからオブジェクト図、クラス図、及びユースケース実現への展開
    • バウンダリ、エンティティ、コントロールクラスの識別
    • ユースケースからユースケース実現への展開、それに伴う整合性のあるオブジェクト図・クラス図の作成
    • シーケンス図を使ったユースケース実現からメソッド呼び出しのシーケンスへの展開、メソッドの適切クラスへの割り付け

アーキテクチャ中心

  • アーキテクチャとは
  • Keyユースケースとその実現
  • アーキテクトとその役割

繰り返しによる開発

  • RUPにおけるソフトウェアのライフサイクル
  • 方向付け、推敲、作成、移行フェーズからなる繰り返しワークフロー
  • 繰り返し開発の各フェーズにおけるアーキテクトの役割

C#.NETによる実装

  • ラムダ式
  • プロパティ
  • 設計からプログラムへの展開

3つの設計・実装演習

  • 設計図(オブジェクト図、クラス図およびユースケース実現)の作成
  • 講師による設計図の評価(実装可能・不可能な設計、効率の良い設計・悪い設計の判別)
  • テスト駆動(NUnitとNSubstitute使用)による設計図から実装への展開
  • 演習1:設計演習および一部の実装演習
  • 演習2:設計および全実装演習
  • 演習3:複雑なシステムの設計演習および実装コードのリーディングによる最終設計図の正しさの確認
  • 以上の設計・実装演習により設計の本質および正しい設計図の書き方・作成法を理解する

担当講師のコメント

同じ設計といっても、ソフトウェアの設計とハードウェアの設計は意味が違うようです。ハードの設計者は生産ラインに乗った最終製品の動作について責任を持つのに対して、ソフトの設計者はそうではない場合があるようです。 しかし最新のOOの設計手法(RUP)に沿って行った正しい設計は、ほとんど機械的といって良い簡単さで正しく動作するコードに落ちるものなのです。

先日UML・RUPの産みの親の一人であるJacobsonの講演を聞く機会があったのですが、その中で彼は現在の設計とコーディングではコーディングにかける時間が多すぎ、将来はその比率を8(設計)対2(コーディング)位にするべきだと言っていました。これは設計者が実装まで見据えて、その動作まで責任を持って設計を行うことによって初めて可能になることです。

このコースでは、RUPの方法論を学んだ後、それを使って3つの演習問題の分析・設計を行います。特に2番目の演習では各自の設計を実際にJavaで実装します。この実装を通して得られるフィードバックにより実装可能な設計・不可能な設計の判別、効率の良い設計・悪い設計の判別といった実践的な知識および技術を身につけることができます。

受講者の声

「講師は、圧倒的な技術力をお持ちなのと、受講生のことを考えてアドバイスして下さるのが、とても素晴らしいと思いました。設計からコードに落とすところまでのやり方をこんなに分かりやすく教えて下さる方に出会ったのは初めてです。」

「オブジェクト指向の設計と実装の本質的な意味を理解するのに大いに役立った。UML設計から実装が簡単に行えることが十分理解できた。そのほか、最新の情報や実際の経験に基づく話などの一つ一つの内容が興味深い内容であった。」

「正直な感想としてこんなに機械的にソースに落ちてなおかつデバッグがほとんど必要ないなんて、このコースを受けてびっくりしました。これからはインストラクターの水野さんのおっしゃるとおり例を増やしていきたいと思います。」

「ユースケースからどのようにオブジェクト図、クラス図に落としていくかが座学のみではなく、演習を通じて理解できるのがとても良かったです。ここまで各グループの設計をレビューしてアドバイスしてくださるコースはないと思います。」

「オブジェクト指向の基礎的なことから始まり、演習で実際に実装までを一貫して学べるため、非常に良いコースであった。特に演習があって初めて理解・実感できることも多く、演習の時間が多くとられていたことが良かった。」

「非常に密度が濃い内容でした。日々感じていた、今まで行ってきた(教えられてきた)設計の矛盾点を正確に指摘していて、本来あるべき設計の姿をもう一度考える良いきっかけとなりました。内容も期待していた以上のものでした。」

「基本的な内容が適度に取り込まれていた。演習にうまくトラップが仕込まれていたのが実践的で良かった。」

「オブジェクト指向の考え方が完全に変わった。今まで受講した中で最も良い研修だったと強く感じた。」

「1年目の社員から必須にしてよいくらい、役に立つ。」

「自身が受けた研修の中で最も良かった。同僚にぜひ勧めたい。」