構造化手法
システムを階層的に分割して整理し、論理的・体系的に設計や開発を行う手法。
処理の流れを明確にし、理解しやすくすることが目的。
DFD(データフロー図)や構造チャートなどを用いる。
例:業務の処理を入力→処理→出力に分けて図に表す。
オブジェクト指向
データとその操作を1つのまとまり(オブジェクト)としてとらえる考え方。
現実世界のものをモデル化しやすく、再利用性や保守性に優れる。
クラス、継承、カプセル化などの概念を活用する。
例:学校の生徒や先生をオブジェクトとして管理するシステム。
ユースケース
利用者がシステムを使って何をしたいのかを記述したもの。
システムの振る舞いや機能を、利用者の視点から整理する。
要件定義やテストケースの設計にも役立つ。
例:生徒がログインして出席状況を確認するという一連の流れを記述する。
UML(Unified Modeling Language)
システム設計に使われる図の書き方を標準化したもの。
クラス図、シーケンス図、ユースケース図などがある。
統一モデリング言語の略。
例:ユーザーの操作とシステムの反応をシーケンス図で表す。
DevOps
開発(Development)と運用(Operations)を連携させる開発手法。
開発と運用の壁をなくし、継続的な改善や迅速なリリースを目指す。
自動化やチームの協力が重要なポイントとなる。
例:コードの更新が即座に本番環境に反映されるように自動化する。
MLOps
機械学習モデルの開発と運用を一体的に管理する手法。
データ収集、学習、評価、運用、再学習までを自動化・効率化する。
AIプロジェクトにおけるDevOpsの考え方を応用したもの。
例:顧客の行動予測モデルを定期的に再学習し、自動で更新する仕組み。
ウォーターフォールモデル
開発工程を「上から下へ」順番に進める方式の開発モデル。
要件定義>設計>実装>テスト>運用という流れで段階的に進む。
一度完了した工程には基本的に戻らない。
例:学校のシステム開発を各工程ごとに順を追って進める。
スパイラルモデル
設計・実装・評価を繰り返しながら段階的に完成度を高めていく開発モデル。
リスクを低減しながら徐々にシステムを作り上げていく。
反復型とウォーターフォール型を組み合わせた特徴を持つ。
例:試作品を何度も作りながら、本番用のシステムを仕上げていく。
プロトタイピングモデル
完成前に試作品(プロトタイプ)を作り、利用者と確認しながら開発を進める手法。
早い段階でイメージを共有でき、手戻りを減らせる。
要件が不明確な場合や、ユーザーとの調整が重要な場合に向く。
例:簡単な操作画面を作って見せ、意見を聞いて改善する。
RAD(Rapid Application Development)
迅速な開発を目的とした手法で、反復的に設計・開発を繰り返す。
ツールや部品の再利用を重視し、開発期間を大幅に短縮する。
利用者との協力やプロトタイピングを重視する点も特徴。
例:部品を組み合わせて、短期間で予約システムを構築する。
リバースエンジニアリング
既存のシステムやソフトウェアを解析し、設計や構造を明らかにすること。
文書化されていないシステムの理解や再構築に用いられる。
保守・移行時やセキュリティ対策の一環としても活用される。
例:動作するけれど設計図のないシステムの仕様を調べて再設計する。
アジャイル開発
短いサイクルで開発とテストを繰り返し、柔軟に変更に対応する開発手法。
利用者と頻繁にコミュニケーションを取りながら開発を進める。
変化の激しい業務や要件が明確でないプロジェクトに適している。
例:2週間ごとに新しい機能をリリースし、利用者からのフィードバックを反映する。
ユーザーストーリー
利用者の視点から書かれた、システムに期待する具体的な機能の記述。
「誰が、何を、なぜするか」という形で簡潔に表現される。
開発の単位として使われ、優先順位付けや見積もりにも活用される。
例:「私は利用者として、過去の予約履歴を確認したい。なぜなら二重予約を避けたいから。」
XP(エクストリームプログラミング)
アジャイル開発の代表的手法のひとつで、品質と柔軟性を重視する。
テスト駆動開発、ペアプログラミング、継続的インテグレーションなどを特徴とする。
変化に強く、チームの協力を重視した開発スタイル。
例:2人1組でプログラミングを行い、常にコードをレビューしながら開発する。
テスト駆動開発
まずテストコードを書き、そのテストを通すように実装を進める開発手法。
テストと開発を一体化させることで、品質の高いコードが得られる。
失敗するテスト→コード実装→成功するテストの流れを繰り返す。
例:ログイン機能の動作確認用テストを先に書いてから、機能のコードを書く。
ペアプログラミング
2人のプログラマが1つのパソコンを使って共同でコーディングを行う手法。
1人が実装を行い、もう1人が内容をチェックしながら進める。
ミスの防止やノウハウの共有に役立つ。
例:1人が画面を見ながらコードを書き、もう1人が改善点を指摘する。
リファクタリング
機能を変えずに、コードの構造や読みやすさを改善する作業。
動作はそのままに、保守性や再利用性を高めることが目的。
継続的な品質維持に不可欠な作業。
例:重複した処理を関数化してコードを整理する。
ふりかえり(レトロスペクティブ)
開発の一区切りごとに、プロセスやチームの活動を振り返ること。
良かった点や改善点を話し合い、次回に活かす。
アジャイル開発では定期的なふりかえりが重要視される。
例:スプリント終了後に、うまくいった点と課題をチームで共有する。
継続的インテグレーション(CI)
コードを頻繁に統合し、自動でビルドやテストを行う手法。
不具合の早期発見や、品質の維持に効果的。
CIツールを使って自動化されることが多い。
例:コードをコミットすると、すぐにテストが実行されて結果が通知される。
スクラム
アジャイル開発の代表的なフレームワークのひとつ。
チームが自己管理的に開発を進め、短い期間(スプリント)で成果を出す。
透明性、検査、適応を重視して反復的に改善していく。
例:2週間ごとに計画→実行→レビュー→ふりかえりを行う。
スクラムチーム(プロダクトオーナー)
プロダクトの価値を最大化する責任を持つ役割。
要件や優先順位を整理し、チームに共有する。
ステークホルダーとの橋渡し役も担う。
例:利用者のニーズを把握し、プロダクトバックログを管理する。
スクラムチーム(開発者)
プロダクトの作成を担当するメンバー。
設計、実装、テストなどを協力して行う。
チームとして自己管理しながら開発を進める。
例:仕様書に沿って機能を実装し、テストも自ら担当する。
スクラムチーム(スクラムマスター)
スクラムの実践を支援し、チームの障害を取り除く役割。
チームが自律的に動けるように調整する。
教育・ファシリテーション・外部との調整も担当する。
例:会議の進行を支援し、開発メンバーの困りごとを解決する。
スプリント
スクラムにおける短期集中の開発サイクル。
通常1~4週間で、計画から実装、テスト、レビューまでを一気に行う。
毎回改善を重ねながら成果物を出していく。
例:2週間のスプリントで、新しい検索機能を開発する。
プロダクトバックログ
システムに必要な機能や作業項目をまとめた一覧。
プロダクトオーナーが優先順位を決めて管理する。
スプリントごとに必要な項目を取り出して使う。
例:ログイン機能、予約管理、帳票出力などの機能一覧。
スプリントバックログ
スプリントで実施する作業をリスト化したもの。
プロダクトバックログから優先項目を抜き出して作成する。
チームで分担しながらスプリント内で完了を目指す。
例:今スプリント中に対応する「ログイン機能」「テストケース作成」など。
フレームワーク
共通の構造や機能をあらかじめ用意したプログラムの土台。
開発の効率を高め、品質のばらつきを減らすことができる。
再利用性が高く、標準的な設計に沿って開発が進められる。
例:Webアプリケーションを作るためのDjangoやLaravel。
SLCP(Software Life Cycle Process)
ソフトウェア開発のライフサイクルを段階的に定めた国際標準。
企画、要件定義、設計、実装、テスト、運用、保守などの各工程が含まれる。
共通の基準として品質確保や改善活動に使われる。
例:開発プロセスの見直しにSLCPの工程区分を活用する。
CMMI(Capability Maturity Model Integration)
ソフトウェア開発やプロセスの成熟度を評価する国際的なモデル。
プロセスを5段階で評価し、改善の方向性を示す。
ソフトウェア開発やプロセスの成熟度を評価する国際的なモデル。
組織の能力や品質を高めるための指標として用いられる。
例:CMMIレベル3の認証を取得して、開発体制の信頼性を示す。