内部設計


■目次
  1. 情報システム開発とPEの役割
  2. 内部設計における分割方法論
  3. ファイルとデータベースの設計
  4. 入出力とヒューマンインタフェースの設計
  5. 通信ネットワークと分散処理の設計
  6. 標準化と部品化
  7. 内部設計上の考慮事項
  8. デザインレビュー

◆情報システム開発とPEの役割

・ウォーターフォールモデル
   * 各フェーズ毎にドキュメントを作成し、レビューを行い、
     このドキュメントを次工程の入力とする。
     一般的な工程名称は以下の通り。
       (1)システム要求定義
       (2)ソフトウェア要求定義
       (3)基本設計 (概要設計)
       (4)詳細設計
       (5)コーディング (製造)
       (6)テスト
       (7)運用・保守
・プロトタイピングモデル
   * 本格的なシステムの構築の前に、いくつかの条件を仮定したシステム
     を作り、そこから得た情報をもとに本番システムの条件を確定したり、
     ユーザの要求を確認したりして、開発を進める手法。
・RADモデル
   * 早く、安く、高品質
   * RAD (Rapid Application Development)
   * 要求分析や設計作業に対するエンドユーザの参画を重視
     JRP (Joint Requirements Planning)
     JAD (Joint Application Design)
   * CASEツールを積極的に活用する
・スパイラルモデル
   * 時間の経過とともに、最適化フェーズ、開発フェーズ、検証フェーズ、
     計画フェーズの工程を、らせん状に繰り返しながらシステムを成長
     させていく手法。
・ラウンドトリップ
   * 分析・設計・プログラミングの各フェーズを行き来しながら
     試行錯誤を繰り返す短期システム開発手法。
   * 分析・設計・実装フェーズの手戻りがしやすいオブジェクト指向
     開発に適している。

・オブジェクト指向モデル (Object Oriented Model)
   * 現実の「もの」のメタファをソフトウェア内部にモデル化する。
     分析、設計、実装とも、この「もの=オブジェクト」に着目して
     いるため、各工程の間の行き来が従来の開発手法に比べて
     容易になっている。
・データ中心アプローチ (Data Oriented Approach)
   * 企業の共有資源としての「データ」に着目し、その一貫性、完全性、
     安定性に着目し、データ側からソフトウェアを規定しようとする手法。
   * 処理よりも、「処理対象となるデータ」の構造を明らかにする
     ところから始める。データが発生してから消滅するまでの間に
     どのような変化をしなければならないのかを規定し、その変化を
     生じさせるようなソフトウェアを開発するという考え方に基づいている。
   * データ中心アプローチの一般的な開発手法
      (1)業務プロセスのモデル化
      (2)データの標準化
      (3)データライフサイクル処理の設計
      (4)データとDLCP(Data Lifecycle Control Program)の結合
         (カプセル化)
      (5)データ更新の一貫性のカプセルへの組み込み
・ジャンクソンシステム開発法 (JSD法)
   * 対象とする世界を多くのプロセスが互いにメッセージを交換しながら
     動作する動的モデルとして捉える。
   * プログラムの構造を「異なる複数のデータ構造」に同時に
     単純には対応できないことを「構造不一致」という。
       - 脈絡不一致 … 入力において関連するデータが入り乱れている
       - 境界不一致 … データ要素間の境界が、入力と出力で異なる
       - 順序不一致 … データ要素の現われる順序が、入力と出力で異なる

・ファンクションポイント法
   * プログラムの外部インタフェースにかかわる部分の難易度を数値化
     し、過去の実績値と比較した上で工数を推定する。
     Alberchtによって提案された。
・COCOMO (Constructive Cost Model)
   * プログラムの大きさや、ソフトウェアコストの要因別に数値化した
     係数をもとにソフトウェアの工数や開発期間を推定する。
     Boehmによって提案された。
目次に戻る

◆内部設計における分割方法論

・分割方法の着目点
   * 源泉/変換/吸収分割
     STS分割法(Source Transform Sink 分割法)
      (1) 問題の外観の記述。3〜10個の機能で記述
      (2) 主たる入出力データの流れを明確にする
      (3) 最大抽象入力点、最大抽象出力点を見つける。
      (4) 源泉部分 (入力データ処理)
          中央変換部分 (入力データから出力データへの変換)
          吸収部分 (出力データ処理)
          を明確にする。
      (5) モジュール間の結合度が弱くなる(データ結合になる)
          ようにインタフェースを定義する。
   * トランザクション分割法
      (6) 入力トランザクションの種別に応じて処理を振り分ける
          ような場合に、個々の処理に別のモジュールを設定する。
          ※中央変換部分で振り分けを行うことが多い。
   * 共通機能分割法
      (7) 共通機能を括り出して別モジュールとして定義する。
  
目次に戻る

◆ファイルとデータベースの設計

・インバーテッドファイル
・障害対策
・入出力の制御構造
・コミット
・ロールバック
・マルチスレッド
・入出力緩衝領域 (バッファ)

・コンプレッション (圧縮)
・デコンプレッション (解凍)

・他ファイルとの互換性
・ファイル容量
・ファイル構成
・ファイルの整合性
・平均アクセス回数

・ネットワークデータベース
・階層型データベース
・リレーショナルデータベース
・オブジェクト指向データベース

・リレーショナルデータベース
・データベース言語
・型
・ファイル構造
・表の結合
・探索条件
・SLELCT文
・副問合せ
・導出表
・WHERE句
・ビュー
・仮想の表

・オブジェクト指向データベース
・複合オブジェクト
・オブジェクト識別子
・カプセル化
・型
・クラス
・継承
目次に戻る

◆入出力とヒューマンインタフェースの設計

・フォームオーバーレイ
・フォント

・GUI
・画面合成
・部分送信

・ニューメリックチェック
    数値のみの入力項目に数字以外の文字が混入していないことを
    チェックすること
・フォーマットチェック
・リミットチェック
・組み合わせチェック
・バランスチェック
    バッチ単位に二種類以上の計算結果が等しくなることが
    予め分かっている時に、計算結果が等しいかをチェックすること。
・チェックディジットチェック
・シーケンスチェック
    入力データが一定の順序に並んでいなければならないことが
    予め分かっている時に、その順序で並んでいることをチェックすること。
・ダブルレコードチェック
    マスタファイル更新時に、トランザクションファイル内に
    同一レコードが複数無いことをチェックすること。

・穴埋め方式
・メニューインプット方式

・ウィンドウ
・メニュー
・ボタン
・ダイアログボックス
・ラジオボックス
・チェックボックス
・ポップアップメニュー
・プルダウンメニュー
・クライアントエリア
目次に戻る

◆通信ネットワークと分散処理の設計

・通信ネットワーク
・広域ネットワーク
・WAN
・構内ネットワーク
・LAN
・集中処理
・分散処理
   * ネットワーク透過性
     - 位置透過性 … アクセスする資源が実際に存在する位置を
         意識しなくても済む
     - 障害透過性
     - 性能透過性
     - 同時実行透過性

・トランザクション処理要件 (ACID属性)
   * 原子性 (Atomicity)
     一つのトランザクションが、その外側から見て、分割できない単一の
     処理単位である、という性質。
   * 一貫性 (Consistency)
     データベースの中のデータは、管理者が定めたある意味制約を満たして
     いる。トランザクション処理の開始と終了の時点で、この意味制約を
     満たしている、という性質。
   * 独立性 (Isolation)
     複数のトランザクションが並行に動作していても、互いに影響を
     受けない、という性質。隔離性ともいう。
   * 耐久性 (Durability)
     正常終了したトランザクションの効果(更新結果)などが、
     システムの障害などで無効にならないこと。

・集中処理
・分散処理
・クライアントサーバシステム
・垂直型分散システム
・水平型分散システム
・複合型分散システム
・ネットワークコンピューティング

・80・20の原則
  * 処理するデータの80%以上が、その分散サイトで使用するデータであれば
    分散化は有効である。

・データベースサーバ
・高速処理サーバ
・グラフィックインタフェースサーバ

・インテグレーテッドモデル
・アクセスサーバモデル

・データの透過性

・マルチプラットフォーム
・マルチベンダ

・インターネット
・イントラネット
目次に戻る

◆標準化と部品化

・標準化
・部品
・再利用
・パターン

・データ部品
・プロセス部品
・オブジェクト部品

・パッケージソフトウェア
・パッケージ化技術
・カスタマイジング
・抽象データ型
  * 「データ」と「そのデータ型に関する操作」を一体化し、
    内部のデータ構造や、操作の実装方法などを隠蔽したもの。
    スタック、キュー、リストなどが代表的。
    オブジェクト指向の基礎となっている。
目次に戻る

◆内部設計上の考慮事項

・プロセス
・タスク
・状態遷移
・割込み

・逐次プロセス
・並行プロセス

・ディスパッチ
・共用モード
・排他制御モード
・排他モード

・セマフォ
・パイプ
・ポート
   * プロセス間通信の際に、個々のプロセスに論理的な結合を策定し、
     その結合を通して情報を交換する基本的な方法。
     ポートとプロセスの対応は、通常オペレーティング・システムに
     よって行われる。
・ソケット
   * ポートの概念をネットワークにまで拡張したもの。抽象化された
     プロセス間通信機能。コネクション型とコネクションレス型がある。

・デッドロック

・事象
・即時処理
・基準時計
・親時計
・契機

・ハードウェア割込み
・ソフトウェア割込み
目次に戻る

◆デザインレビュー

・デザインレビュー
・品質保証
・後戻り工数

・外部品質
・内部品質

・ウォークスルー
  * 作成したシステムを関係者で検討する。
    管理者を含めずに率直な意見交換を行う場。
    もとは演劇の「立ち稽古(通し稽古)」のこと。
・インスペクション
  * システム関係者外の責任者(モデレータ)の管理下で
    レビューを進める。モデレータは一定の訓練を積んだ者が
    行うの原則である。

・プロトタイピング
・ラウンドロビン
・シミュレーション方式

・品質尺度
・正確性
・信頼性
・保守性
・柔軟性
・使い易さ
・効率
・セキュリティ
・接続性
・要求水準

・レビュー管理項目
目次に戻る