概要
はじめまして、エンジニアのkeigoです!
本記事では、「応用情報技術者試験」合格のための学習のアウトプットを兼ねて、
分かりやすく整理して書いていこうと思います。
今回のテーマは「情報システム開発について」です!
情報システム開発の手法や、種類、具体的な開発の流れなどをまとめました!
では、一緒に頑張りましょう!
開発モデルについて
はじめに、開発のモデルについて説明します。
情報システム開発モデルの中でも代表的な2つを説明します。
- ウォーターフォールモデル
- アジャイル開発モデル
私は業務システム開発を仕事で行なっていますが、これまで経験した業務システムは全てウォータフォールでの開発でした。
ウォーターフォールモデル
ウォーターフォール開発は、上流工程と言われる「要件定義」や「設計」など、お客様がどんなものを求めているのか、それをどのように実現していくのか、を決めていくフェーズと、下流工程と言われる「コーディング」や「テスト」のように、上流工程で決められたことを実際に作っていくフェーズに分かれています。
1. 要件定義
要件定義はエンドユーザーの希望を聞き出していき、どのようなシステムを開発していくのかすり合わせていくフェーズです。
①機能要件
エンドユーザーから求められる、搭載しなければいけない機能のこと。
エンドユーザーがないと困る機能のことです。
②非機能要件
機能要件以外の要件が非機能要件に当たります。
「質」を向上させるために重要となる要件です。
例えば、稼働時間や、レスポンスまでにかかる時間などがそれに当たります。
上記の機能要件と非機能要件を、コストや納期を踏まえて取捨選択していきます。
③ステークホルダーの選別
各工程で必要になる人などを洗い出し、システム開発における利害関係者が誰なのかを把握する必要があります。エンドユーザーはもちろんのことプロジェクトに関わる利害関係者全てが当てはまります。
2. システム方式設計
要件定義に含まれることもありますが、要件定義と外部設計の間にあるフェーズです。
ここでは、1で説明した非機能要件を定義します。
3. 外部設計
画面や帳票など、レイアウト、操作方法などの、エンドユーザー向けの設計を行います。
4. 内部設計
開発者からみた設計を行います。主に、システム内部の動作や機能、データベースのテーブル設計など、ユーザーに見えにくい部分の設計のこと。
5. 詳細設計
プログラマから見た設計を行います。ロジックやデータ処理、具体的なアルゴリズムなどを定義して、プログラマが実際にコーディングできるように設計していきます。
アジャイル開発
「計画・実行・評価」を短期間で繰り返すことによって機能を段階的にリリースしていく開発モデルです。
■アジャイルソフトウェア開発宣言
有名なプログラマの人たちが集まって宣言したもので、ここがアジャイル開発の始まりです。
プロセスやツールよりも個人との対話を
包括的なドキュメントよりも動くソフトウェアを
契約交渉よりも顧客との対話を
計画よりも顧客との対話を
ウォーターフォールでは、工程が進めば進むほど要件の変更による手戻りは大きくなり、納期、コストなどへの影響も大きくなります。しかし、アジャイルでは短い期間でサイクルを繰り返しながら開発を進めていき、変化に柔軟に対応することで、開発後期の要件の変更も歓迎することが書かれています。
■XP(エクストリームプログラミング)
アジャイル開発におけるアプローチ方法の一つになります。
下記に、関連する重要なワードを並べたいと思います。
- イテレーション:XPにおける開発を繰り返す単位
- ペアプログラミング:「書く人」「検証する人」の2人1組でプログラミングを行う。
- リファクタリング:外部からみた動作は変えずに、内部のプログラムのみを改善すること。
- テスト駆動開発:テストを先に作成し、そのテストをパスするようにプログラムを作成していく方法
- YAGNI:You Aren't Going to Need It(今必要なことだけをする)
■スクラム
こちらもアジャイル開発におけるアプローチ方法の一つになります。
XPと相容れないものではなく、共存することができます。
下記に関連する重要なワードを並べます。
- スプリント:スクラムにおける開発を繰り返す単位
- プロダクトオーナー:完成した製品に責任を持つ人
- プロダクトバックログ:プロダクトの機能をユーザーストーリー形式で記述したリスト。プロダクトオーナーが管理。
- スクラムマスター:プロジェクトの推進に責任を持つ人。プロジェクトリーダー的な存在。
組み込みソフトウェア開発
組込みソフトウェアの開発の手法を紹介します。
■プラットフォーム開発
複数の異なる機器について共通して利用できるプラットフォームを最初に設計・開発しておいて、その土台から機器ごとの異なる機能を開発していく手法です。
MDA:モデル駆動アーキテクチャ。プラットフォームに依存する部分と依存しない部分に分けてモデル化する技法。
■コンカレントエンジニアリング
翻訳:
コンカレント(concurrent)= 同時
複数の工程を順番に進めるのではなく、同時進行できるところは並行して進めることで開発期間短縮を図る方法です。
リバースエンジニアリングとフォワードエンジニアリング
既存のソフトウェアを利用して、新しいソフトウェアを作成することをリエンジニアリングといいます。
- リバースエンジニアリング:既存ソフトウェアから仕様を解析すること。
- フォワードエンジニアリング:解析した仕様から新しいソフトウェアを作成すること。
おわりに
ひとまずざっくりですが情報システム開発分野についてまとめました。
長くなり読みにくい文章でしたが、少しでも理解の助けになれば嬉しいです。
また明らかな誤りがありましたら、ご連絡いただけたらありがたいです。
では、応用情報技術者試験の学習、引き続き頑張りましょう!
参考:
令和6年秋版:参考書の著者直伝!【応用情報技術者試験 午前版】講座 合格に必要な知識の徹底解説+過去問題解説 石田宏実
https://www.udemy.com/course/ouyou_joho/
応用情報技術者合格教本 大滝みや子 + 岡嶋裕史