プログラム上達したいな blog

プログラム書けるようになりたいアウトプット用

効果的プログラム開発技法2

 

効果的プログラム開発技法

効果的プログラム開発技法

 

 

この本の第2章

情報システム開発工程

綺麗にまとめるのやめて

雑に書きます

 

 

情報システムの開発を

効果的に行う

開発のために

必要な作業を理解する

 

 

標準化された開発工程

 

  1. ウォータフォールモデル
  2. スパイラルモデル
  3. プロトタイプモデル
  4. アジャイルモデル

 

 

1. ウォータフォールモデル

ãã¦ã©ã¼ã¿ãã©ã¼ã«ã¢ãã«ãã®ç»åæ¤ç´¢çµæ

開発工程を6つに分類整理

 

システム要件定義

 

製品を使用するユーザのニーズを把握し、それを満足させるための製品仕様を決定する

 

業務モデルの作成

 

 どんな機能、処理をしているかを明確にしていく。分析結果を文書化し、開発関係者の業務に対する共通の理解を得るために使用する

 

これが、報告書というやつか

 

業務モデルをわかりやすく表現するためには、データフローダイアグラム(Data Flow Diagram)が有効

 

ããã¼ã¿ãã­ã¼ãã¤ã¢ã°ã©ã ãã®ç»åæ¤ç´¢çµæ

 

DFDはシステムの静的な分析に向いている。しかし、近年のWEBアプリケーションでは動的な側面を考えなければならない。そこで、システムの動的な分析のためにオブジェクト指向開発、Unified Modeling Languageが必要である。

 

システムの静的な分析

  • DFD

 

システムの動的な分析

 

 

データモデルの作成

 

データ間にはどんな関係性があるのかわかりやすく表現したもの。データモデルをわかりやすく表現するために、エンティティリレーションシップダイアグラム(Entity Relationship Diagram)が有効

 

エンティティリレーションシップダイアグラム

 

ãã¨ã³ãã£ãã£ãªã¬ã¼ã·ã§ã³ã·ãããã¤ã¢ã°ã©ã ãã®ç»åæ¤ç´¢çµæ

 

データモデルを

ER図で表現することで

業務で扱うデータを容易に

理解できるように

なったそうです

 

 

非機能要件の定義

 

システムに対する要求には、機能やデータ以外に明確にしておかなければならないものがある。その一つに性能に対する要求がある。

 

ATMが早く遅延なしに

動いてもらわないと

腹が立ちます

 

腹が立つから

ATMが早く遅延なしに

動いてほしいという要求が

性能に対する要求?

 

データのセキュリティが要求される場合は、安全保護対象になるデータ、安全保護対策などもシステム仕様に必ず含める必要がある。このような性能やセキュリティに対する要件を、非機能要件と呼ぶ場合もある。

 

 

システムスコープの明確化

 

業務モデルやデータモデルの内容が、全て情報システムとして、コンピュータ化されるとは限らない。人手で行った方が効率的なものも含まれる。コンピュータ化しない機能も明確にすることも重要である。

 

 

f:id:gjjjjcdssvgg:20180703062350p:plain

 

 

外部設計

 

ãå¤é¨è¨­è¨ãã®ç»åæ¤ç´¢çµæ

 

目的:システムとユーザとの間のインターフェースを設計すること 

 

システムの使い方を設計

 

外部設計での主な作業

  • 機能設計
  • 入出力設計
  • データベース

 

 

機能設計

 

業務モデルを詳細化。詳細化した機能に対し、関連する入出力データや処理形態を明確にする。処理形態では、一括処理かリアルタイム処理かなどを定義しておく

 

とりあえず詳細化

 

 

入出力設計

 

機能設計のところで明確化された入出力データを設計、データ項目レベルまで定義する。 

 

ここは、

画面設計が特に大事だそう

画面はユーザに見えるから

 

 

データベース設計

 

データベース

論理設計 + 物理設計

 

論理設計

業務の視点から見た

データベース設計

 

物理設計

コンピュータの視点から見た

データベース設計

 

外部設計は、論理データベース設計(要件定義段階で作成されたデータモデルと入出力設計の結果)を行う。

 

データベースは流動的に変化し、それに対しての変更を最小限にするようにデータベースの設計を考える必要がある。

 

そのためには

データ正規化が重要らしい

 

 

内部設計

 

ãåé¨è¨­è¨ãã®ç»åæ¤ç´¢çµæ

 

目的:システムの内部構造の設計

 

内部構造を設計するときはコンピュータからみた視点が必要。外部設計で行った機能設計、入出力設計、論理データベース設計の結果を、コンピュータでどのように稼働させるか。 

 

外部設計

論理データベース設計

 

内部設計

物理データベース設計

 

画面のボタン操作にそって実行するプログラムは、イベントドリブンプログラム(Event Driven Program)という。 

 

 

プログラム実装

 

目的:コンピュータで稼働するプログラムの作成 

 

内部設計で作成したプログラム仕様書をもとに、プログラムの論理設計、コーディング、テストを行う。 

 

ここがjavaとかかな

 

 

システムテスト

 

目的:開発したシステムが要件定義で作成されたシステム仕様書通りに稼働するかどうかを確認すること 

 

みんな、この時に

ビクビクしてるんやろなー

 

 

導入

 

目的:システムユーザに対しシステムを導入すること 

 

 

ここで、

ウォータフォールモデルの特徴

 

最初に何を行うかを

システム仕様で決定

システム設計

設計結果

プログラム実装

テスト

稼働するか確認

⬇️

情報システムとなる

 

メリット:大規模システムを開発する時に適している

デメリット:時間がかかりすぎる