基本情報技術者 企業が行うべきシステム開発の流れ、手法 モジュール結合・分割・強度
システム開発の流れ
①企画→②要件定義(基本計画)→③調達→④開発→⑤テスト→⑥運用と保守の繰り返し
※各工程で必ず、レビューを行う(最後に詳しく記載)
共通フレームがこれらを定義している
![](https://assets.st-note.com/img/1709790712253-SgUzhsYebc.jpg?width=1200)
①企画でやること
経営者に、経営上のニーズを聞く
経営・事業の目的を達成する上で、要求される内容を、定義すること
1,プライバシーバイデザイン
予防的に、システムから個人情報が漏洩するリスクを減らすこと
2,システム化構想の立案プロセス
新たなシステムの構想を立案する
↓
具体的に…
経営上の課題・ニーズを確認したり、仕事をする環境の調査をしたりする
全体最適化(P549)を実現するシステムを開発するために必要
経営戦略を無視すると、部分最適化になる恐れがある
3,システム化計画の立案プロセス
上のシステム化構想を実現するために、計画をする
↓
具体的に…
・ITポートフォリオを用いて、投資配分を考える(ROIも考慮する)
②要件定義(基本計画)でやること
ベンダーに対して発注する前に、システムが持つべき機能や性能を予め決める
1,ユーザー、利害関係者(ステークホルダー)のニーズを知る
2,要件定義に必要な3つの要素を定義する
☑️業務要件
業務について行うべき要件
✅機能要件
ユーザーから聞いてわかった、必要な機能
✅非機能要件
表面にはない裏の要件
試験によく出るのは、「開発基準の技術要件」
☑️組織及び環境要件
③調達
開発を担当するシステムベンダーに対して、発注をかけること
1,発注側が情報提供依頼書(RFI)を書く
RFI→リクエスト for インフォメーション
ベンダーに対して、ベンダーの情報(実績等)を送るように、要求すること
2,発注側が提案依頼書(RFP)を書く
RFP→リクエスト for プロポーサル
ベンダーに対して、システム設計や機器構成の内容、受注条件などを記載した提案書を提出するよう、要求すること
※RFPを作成するメリット
・認識の相違による開発手戻りが減る
・発注先の選定基準が明確になるので、価格が適正になりやすい
3,ベンダーが、提案依頼書に答える形で、提案書を返送する
4,発注側がシステムベンダーを選定する
5,契約
6,調達開始
✅CSR調達
社会的責任(調達先の労働環境など)を果たした調達の仕方を求めること
✅グリーン調達(グリーン購入)
発注側が調達先から製品を購入する時に、環境にやさしい製品を優先して買うこと
調達先は、ISO14001という規格を取得して、環境にやさしい製品を作る
④開発
1,システム要件定義
ベンダー側(調達先)が、現状の業務を分析し、システムが持つべき機能や性能(システム要件)を整理する
2,システム設計
(1)システム方式設計
(2)ソフトウェア要件定義
顧客に意見を求めて、仕様を定義する
業務モデル(DFD データフロー図)を作成して定義
![](https://assets.st-note.com/img/1709799053075-5HNIhL84fA.jpg?width=1200)
(3)ソフトウェア方式設計
ソフトウェア要件定義の後に行う
ソフトウェア品目に対する要件を,最上位レベルの構造を表現する方式であって、かつ,ソフトウェアコンポーネントを識別する方式に変換する。
(4)ソフトウェア詳細設計
ソフトウェア方式設計で、プログラムを、モジュールに分割すること
⭕️データ結合が、最も結合度が弱い
モジュールの分割方法
✅STS分割法
入力処理、変換処理、出力処理に分ける方法
✅トランザクション分割法
一連のトランザクション単位に分ける方法
✅共通機能分割法
共通機能をモジュールとして分割する方法
↓
類似機能を重複して作らなくても良い
3,プログラミング
以下の記事に全て書いてある
システム要件定義〜テストで行う開発の手法(伝統的なもの)
📌ウォーターフォールモデル📌
上記の開発工程を順番に進めること
☑️プロトタイピングモデル
開発初期の段階で、試作品(プロトタイプ)を作り、利用者に確認してもらう
☑️スパイラルモデル
システム設計から後を、細かく分解して、最後に繋げる
システム要件定義〜テストで行う開発の手法(新しいもの)
☑️RAD
とにかく短期間で開発を行うための手法
プロトタイプ(試作品)を作って、それを評価するサイクルを繰り返す。
↓
ただし、期限を設けないと無限になるので
期限(タイムボックス)を作る必要がある。
📌アジャイル📌
スパイラルモデルの派生
より短い反復単位で開発をする手法の総称
↓
XP(エクストリーム プログラミング)
アジャイルの代表的手法
少人数で素早く開発を進める開発手法
以下、XPの開発の具体的手法
✅ペアプログラミング
2人一組でプログラムを組む手法
1人がコードを書いて、もう1人がそのコードの検証役となる
✅リファクタリング
完成した後も内部のコードだけを改善し続けること
✅テスト稼働開発
テストを決めてから、ソフトウェアを作り込む手法
✅継続的インテグレーション
単体テスト後、すぐに結合テストする手法
↓
問題点を修正していく
◯バグを早期発見できる
◯ソフトウェアの品質向上が見込める
☑️ソースコードの共同所有
コードの作成者だけでなく、チーム内全員が修正できること
☑️YAGNI
You Aren’t Going to Need It.の略
あなたはそれを必要とする予定ではない
↓
言い換えると
今必要とされる機能だけの、シンプルな実装に留めること
☑️マッシュアップ
公開されているサービスを組み合わせて、新しいサービスを作る手法
各サービスがAPIを公開しており、これを利用して組み合わせる
スクラム(アジャイルでの管理手法)
スプリントと言う単位でプロジェクト管理すること
◯スプリントの具体的イベント
割愛
◯スクラムで関わる人物
・責任者(プロダクトオーナー)
作業内容に優先順位をつけたプロダクトバックログを作成
↓
・スクラムマスタ
全体の進捗度の管理 & 意思疎通の円滑化
メンバーが自律的に協働できるようにする
↓
・開発者
実際に開発
成果物をインクリメントという
開発工程
✅フォワードエンジニアリング
プログラムの仕様から→新しいソフトウェアを開発
通常の工程
✅リバースエンジニアリング
既存のソフトウェアの解析で、プログラムの仕様・ソースコード(UMLのクラス図やE-R図など)を導く
通常の工程とは逆なのでリバース
☑️リエンジニアリング
フォワード+リバース
※ソフトウェア権利者の許可なく行うと、知的財産権の侵害にあたる可能性
モジュール結合
データ結合が一番弱い
モジュール分割
・STS分割
源泉S、変換T、吸収S、ごとに分割する方法
(DFDの源泉、吸収のこと)
•(TR)トランザクション分割
切り離せない、一連の処理で分割する方法
モジュールの強度
7つある
⑤テスト
単体テスト
各モジュールごとにテストを行うテスト
✅ホワイトボックステスト
モジュールの内部構造が正しく作られているか検証するテスト
以下の網羅性のレベルに基づきテストケースを設計
↓
・命令網羅
⬜︎を一回でも通れば良い
![](https://assets.st-note.com/img/1710333676689-iqLVtVyFIf.jpg?width=1200)
・判定条件網羅
◇で、真と偽の両方を一回は通る必要がある
![](https://assets.st-note.com/img/1710333685277-ngwPef7hUU.jpg?width=1200)
↓
結合テスト
モジュールをつなぎ合わせて検証を行うテスト
✅ブラックボックステスト
同値分割
データ範囲を種類ごとに分けて、その中からテストデータに用いるものを抜き出す
限界値分割
境界値前後の値をテストデータに用いる
✅トップダウンテスト
スタブ
下にある、上位モジュールから呼び出されるもの
![](https://assets.st-note.com/img/1708939472265-I0peiGH3W8.jpg?width=1200)
✅ボトムアップテスト
ドライバ
上にある、引数を渡して下位のモジュールを呼び出す(下位のモジュールからテストをおこなう)もの
![](https://assets.st-note.com/img/1708939523043-hzzdDy5P3R.jpg?width=1200)
↓
システムテスト
システム全体が正常に作動するか確かめるテスト
本番環境とは隔離された環境で行う
全ての要件事項を網羅するように設計する
↓
運用テスト
システムを、本番と同じ環境で作動して、正常に作動するか確かめるテスト
↓
リグレッションテスト(退行テスト)
プログラムを修正したときに、修正したものが逆に悪影響を与えていないか確かめるテスト
バグ管理図
発見されたバグの累計が一定になれば、「これ以上バグが発見されていない」ことがわかる
↓
これを表した図が、バグ管理図。以下のような信頼度成長曲線になることが理想
![](https://assets.st-note.com/img/1708757560959-CPASZ0g5Ml.jpg?width=1200)
※レビュー
各工程で必ず行う、振り返り作業のこと
レビューの種類
✅デザインレビュー
✅コードレビュー
✅パスアラウンド
成果物を複数のレビュアーに回す
↓
コメントさせる
✅ウォークスルー
会議形式
成果物を説明
↓
質問
✅インスペクション (inspection、つまり検査)
モデレータ(責任者)が、作業全体をコーディネート
明確な役割に分けられ、チェックリストに基づく
チェックリストに基づいて検査をすると覚えよう
✅ラウンドロビン
発言者を回していく方式
この記事が気に入ったらサポートをしてみませんか?