開発技術 - 12.システム開発技術 - 4.ソフトウェア方式設計・ソフトウェア詳細設計 - 10.ソフトウェア設計手法

Last Update : January 02 2021 16:00:31

     

a. プロセス中心設計(POA : Process Oriented Approach)

業務プロセスとその機能を中心とし、ソフトウェアを構築する手法。この方法は、システムの機能はデータを変化させるものとしてとらえる。
機能と機能の間にデータの流れがあり、データは機能を通るごとに別のデータに変化していく。
業務プロセスに関連した設計を行えるので、わかりやすい。ただし、この方法では業務プロセスの変更が必要となった場合にシステムの大幅な見直しが必要になる。

プロセス中心アプローチの手順

  1. 業務やシステムでの各機能の関係を整理
  2. 機能を分割、詳細化していく
  3. 各機能の仕様を定義する
  4. 仕様に沿ってコード化


b. データ中心設計(DOA : Data Oriented Approach)

データを中心にして、ソフトウェアを開発する手法。データとデータとの関連に着目して業務をモデル化する。
システムで扱うデータを重複しないように設計する。この方法を一事実一箇所という。
機能とデータはシステムを構成する要素であるが、機能は変更が多くて不安定であるのに対し、データは比較的安定している。そのため、業務の内容が変化して、機能が変わってもデータの定義は変わりにくいので、システムを改変するときに容易になる。その安定しているデータを基にシステムを検討していく。

データ中心アプローチの手順

  1. データ分析
  2. データ定義・データベース設計
  3. 処理の分析
  4. 処理の設計
  5. コード化

ERモデル 】(entity-relationship model )
データモデリング手法の1つで、モデル化対象(実世界)を“実体”とその“関連”からなるものとして定義、構造化して、静的な概念データモデルを記述する。一般にデータベース設計に用いられる。
ERモデルでは、一般に次の3つの構成要素によって世界(管理対象)を表現する。

  • 実体(エンティティ:entity)
    管理の対象として“存在する”と定義したもの(例:「顧客」「商品」などの物理的な存在、「会社」「支店」などの法的、論理的存在、「契約」「納品」などの事象など)。
  • 属性(アトリビュート:attribute)
    実体の特性として定義したもの。実体が持つデータ項目。(例:従業員エンティティの「従業員氏名」「従業員住所」「従業員電話番号」など。
  • 関連(リレーションシップ:relationship)
    実体と実体の関係を示したもの。実体に対する操作。(例:部門エンティティに従業員エンティティが「配属」されているなど)。

モデルと同時に表記法としてERダイアグラム(ERD)が提案されたが、これがデータベース設計やデータ中心アプローチ(DOA)におけるシステム開発において実用的であったため、現在では、主にデーターベース設計の標準技法として広く普及している。


c. 構造化設計

(a)機能分割と構造化
構造化設計とは、標準的な制御構造のみ(順次、選択、繰返し)を使い、プログラム全体を段階的に細かな単位に分割して処理を記述していく手法。(段階的詳細化)
システムの全体像を把握し、それをサブシステムに分割していく、そのサブシステムをコンポーネントやモジュールに分割していく。

ソフトウェアの機能を洗い出し、各機能をグループ化し階層的に構造化していく。最終階層は、ソフトウェアユニットになる。

(b)構造化設計の手法

  • 分析やモデリングのためのツールとして、
    DFD、流れ図、構造化チャート(NSチャート, HIPO)、状態遷移図などが用いられる。
  • 構造化設計でのモジュール分割のためのツールとして
    ジャクソン法、ワーニエ法がある。

(c)プログラムの構造化設計
プログラムを作成する場合には、分割されたコンポーネントをさらにモジュール・ユニット単位に分割しプログラムの構造化を行う。
モジュールに分割したときには、モジュールの独立性を高め、再利用可能なモジュールにしておくと、ソフトウェアの品質特性の保守性が向上する。


d. オブジェクト指向設計

データを中心とするでもなく、プロセスを中心とするでもない、「プロセス(メソッド)」と「データ(属性)」を一体化した「オブジェクト」を対象として分析・設計を行う方法です。

メソッド
データを操作する手続きのこと。

カプセル化
データとメソッドを一体化すること。これによりデータは隠蔽されデータを取り扱うインタフェイスのみが公開されます。

クラスとインスタンス
クラスは、オブジェクトがもつデータやメソッドを記述したものでオブジェクトの型です。
クラスは、クラスを構成するデータを格納する変数(インスタンス変数)と、それを操作するプログラム(メソッド)を定義したもの。
インスタンスは、クラスから生成されたオブジェクトの実体で、コンピュータで実行する対象です。

情報の隠蔽
内部で行っている処理を他のオブジェクトに見せない。他のオブジェクトから直接操作されることを防ぐ。個々のオブジェクトは独立性を高められる。

メッセージとポリモーフィズム
オブジェクトは他のオブジェクトにメッセージを送ることでそのオブジェクトを動かす。
オブジェクトから1つのメッセージを送ることで、受け取ったオブジェクトは自分独自の処理を行う。そのことで相手オブジェクトに応じた処理が行われる。同じメソッドを呼び出しても相手オブジェクトによって異なる処理を実行すること。この仕組みを多態性(ポリモーフィズム)という。

継承
他のクラスの機能を受け継いで新しいクラスを作成することができる。これを継承(インヘリタンス)という。
上位のクラスをスーパークラス(基底クラス)といい、引き継いで新しく作成したクラスをサブクラス(派生クラス)という。
サブクラスでは、スーパークラスの属性やメソッドを利用でき、新たに追加の機能を付加することもできる。

汎化-特化関係
汎化は、クラスが階層構造をとることが出来るため複数の下位クラスに共通するデータやメソッドを上位クラスで定義することです。この時、上位クラスを「スーパクラス」、下位クラスを「サブクラス」と言い、スーパークラスの機能がサブクラスへ引き継がれることを「継承(インヘリタンス)」と言います。
特化は抽象的なクラスから、具体的なサブクラスを生成すること。汎化は具体的なサブクラスから抽象的なスーパクラスを生成することです。
もう少し詳しく説明すると、 オブジェクト指向で抽象化を行うことを「汎化」と言います。
これは、「is-a 関係」とも言います。
例えば、「洗濯機」や「掃除機」を汎化すると「家電製品」になります。
「洗濯機 is a 家電製品」
「掃除機 is a 家電製品」と言う関係です。
スーパクラスとサブクラスをis-a 関係で見れば、「サブクラス is a スーパクラス」
サブクラスからスーパクラスを生成することを「汎化」
スーパクラスをサブクラスに分解することを「特化」
と言います。




依存
あるクラスが他のクラスに何らかの形で影響を与える関係
たとえば、あるクラスが他のクラスの操作を呼び出している場合など。

関連
クラスとクラスが何らかの形でつながりがある関係
オブジェクト同士に何かしらのやり取りが存在する場合、関連があるという。

多態性・多想性
同じインタフェイスで呼び出されても、オブジェクトによって固有の処理を行うこと。
「ポリモフィズム」

オーバーライド
スーパクラスから継承されたサブクラスにおいて、メンバ関数を独自の機能で上書きすること。 オーバーライドは、オブジェクト指向における多態性(多様性、ポリモーフィズム)の例である。

集約-分解関係
オブジェクトにおける全体と部品の関係。




  [ 例題 ] 
  1. 平成30年度春期 問46  オブジェクト指向
  2. 平成29年度春期 問48  オブジェクト指向
  3. 平成29年度秋期 問07  オブジェクト指向プログラミング
  4. 平成29年度秋期 問47  オブジェクト指向
  5. 平成28年度秋期 問47  オブジェクト指向 カプセル化
  6. 平成27年度春期 問48  オブジェクト指向 クラス
  7. 平成26年度春期 問47  オブジェクト指向
  8. 平成25年度秋期 問48  オブジェクト指向
  9. 平成24年度春期 問46  オブジェクト指向プログラミング
  10. 平成24年度秋期 問47  オブジェクト指向 カプセル化


     

www.it-shikaku.jp