ずっと受けたかったソフトウェアエンジニアリングの新人研修[第2版]を読んで

代表的な分析・設計手法

分析と設計

システム開発では、分析と設計のどちらか一方が不足しても、顧客が満足するシステムを作ることはできない。まず分析とは、「システム開発を依頼した顧客がシステムに求める機能や性能を、これから開発するシステムの要件として矛盾なく整理すること」であり、つまりは何を作るかを明らかにする作業を指す。一方、設計とは、「分析により明らかになったシステムの要件を、どのような形でプログラムにしていくか」を決定することであり、すなわち、どのように作るかを明らかにする作業を指す。

代表的な開発手法

ウォーターフォール型

開発は時系列に沿って段階的に進むと考え、まず分析や設計など抽象的な工程を行い、それが完了したら次にプログラミングやテストなど具体的な工程を行う。基本的に後戻りせずに順番に進めていく。したがって、不具合が、最後の行程であるテストまで見つからない場合が多く、根深いバグだと、それに関連するそれまでの作業が無駄になる。またどこかの行程が遅れると、その後の全行程の進行に影響が及ぶ。

スパイラル型

分析、開発と検証、次の計画、次の目標設定のフェーズを設け、それらを繰り返すことによって各工程が正しいかどうかを確認しながら、開発工程を進めていく。この開発プロセスでは、各工程でプロトタイピング(実際に動く見本を作り、その動作イメージを具体化することで潜在的な問題や要求を見つけ出すこと)のタイミングが用意されている。

アジャイル型

ビジネス環境の変化が早い昨今、石灰から開発を行う間に、完成したシステムはもう用をなさないという事態も発生する。そこでアジャイル型は

  1. プロセスやツールより、個人そのものや個人間の交流を重視する。
  2. 後半にわたる大量の文書作成より、きっちり動くソフトウェアの制作に注力する。
  3. 契約に関わる交渉より、顧客と強調することを重要視する。
  4. 無理に計画に従うより、目の前の変化に柔軟に対応する。

という視点から、変化する顧客の要望を取り入れることができ、かつ素早い開発が可能な手段として、普及が進んでいる。

中でも代表的なアジャイル型の開発手法としてXP(Extreme Programming)がある。XPは、まず「イテレーション」と呼ばれる数週間程度の短期間を単位として、プログラミングを進める。そして一定のイテレーションを重ねて、ある程度まとまりのある機能が完成したら、それをリリースし、このリリースを繰り返すことで、システム全体を開発する手法である。

基礎知識

システム開発では、各種の分析や設計の結果を文書に書き残すのが一般的である。また読みやすい文書作成を目指し、文書内の用字、用語は統一すべきであり、最低限下記レベルの用語は統一を図るべきである。

  1. コンピュータ or コンピューター?
  2. イーサネット or イーサーネット?
  3. 「、。」 or 「, .」

また最低限作らなければならない文書として、システム開発においては要件定義書、外部設計書、内部設計書を作るのが基本でる。一方、実務的にはシステム提案書、開発計画書、プロジェクト完了報告書なども合わせて作る。

チャート記法

システム開発において、肯定感の情報の引き継ぎに、文書以外にチャート(図)を多く使用する。

UML(Unified modeling Language)

UML(Unified modeling Language)は、オブジェクト指向に基づいてオブジェクトをモデル化するための記法であり、複数種類のダイアグラム(記法)が含まれている。そのダイアグラムは、大きく「構造図」と「振る舞い図」の2種類に分けられ、前者はシステムの静的な構造を、後者はシステムが動作する様子を表す。

クラス図

オブジェクトの雛形であるクラス同士の静的な関係、すなわちどのようなクラスが存在し、どのような関係を持つかを記述する。

シーケンス図

オブジェクト同士のメッセージのやりとり、すなわちオブジェクト間の動的なやりとりを、時間の流れに沿って表す。

ユースケース図

システムが提供する機能とその利用者との動的な関係を記述する。利用者を「アクター」、システムが提供する機能を「ユースケース」と呼ぶ。

アクティビティ図

処理の流れを表現するための記述法であり、フローチャートに似る。異なる点として、並列の処理を表すことができ、プログラムの処理以外にも業務フローの記述にも利用される。

以下後日追記予定

コメントを残す

メールアドレスが公開されることはありません。