システムの開発・運用 入門学習
ライフサイクルと設計・テスト・アジャイルとDevOps・設計手法とOSS・AI駆動開発・アルゴリズムを学ぶ
ライフサイクルプロセスと要件定義
システムの企画から廃棄までの作業を体系化したものがシステムライフサイクルプロセス・ソフトウェアライフサイクルプロセス(SLCP)で、プロジェクトの特性に合わせて調整することをプロセス修整(テーラリング)といいます。システム要件としては機能要件のほか、性能・セキュリティ・移行・運用などの要件を定義し、機能とデータの生成・参照・更新・削除の関係を整理するCRUDマトリクスを使います。レビューには、作成者が説明するウォークスルー、役割を決めて公式に行うインスペクション、ピアレビューなどがあります。
設計・テスト・導入・保守
モジュール設計では、モジュールの強度(凝集度)は高く、結合度は低くするのが望ましいとされます。ソフトウェアの品質は品質特性モデルと利用時品質モデルで捉えます。テストには、内部構造に着目するホワイトボックステスト(判定条件網羅・複数条件網羅など)と、仕様に着目するブラックボックステストがあります。統合テストでは、上位から結合するトップダウンテストで下位の代わりにスタブを、下位から結合するボトムアップテストで上位の代わりにドライバを使います。
導入では、一部の利用者だけに新版を公開して様子を見るカナリアリリース、新旧2つの環境を切り替えるブルーグリーンデプロイメント、教育効果を反応・学習・行動・結果の4段階で評価するカークパトリックモデルが範囲です。運用ではAIOps、保守では是正・改良・予防・適応・完全化の各保守、信頼性の解析技法FTA・FMEA・STAMP/STPAを押さえましょう。
アジャイルとDevOps
アジャイルソフトウェア開発宣言と12の原則を土台に、スクラムやエクストリームプログラミング(XP)などの手法があります。よいユーザーストーリーの条件INVEST、見積りのプランニングポーカー、タイムボックス、バーンダウンチャート、チームの作業量を表すベロシティ、振り返りのKPTが範囲です。
DevOpsでは、テストやセキュリティ対策を工程の早い段階に移すシフトレフト、CI/CD、運用にソフトウェア工学を適用するSRE、許容できる障害の量を定めるエラーバジェット、意図的に障害を起こして耐性を確かめるカオスエンジニアリング、オブザーバビリティを学びます。開発の成果を測るDORAメトリクスは、デプロイの頻度・変更のリードタイム・変更障害率・平均修復時間(MTTR)の4つです。
設計手法・アーキテクチャ・OSS
アーキテクチャパターンとしてMVC・MVVM・MVP、マイクロサービスアーキテクチャ、デザインパターンとしてGoF(生成・構造・振る舞いに関するパターン)、オブジェクト指向設計のSOLID原則が範囲です。ドメイン駆動設計(DDD)では、関係者が共通で使うユビキタス言語、モデルが通用する範囲を区切る境界づけられたコンテキスト、同一性で区別するエンティティと値で区別する値オブジェクトを押さえます。数学的に仕様を記述する形式手法もあります。
OSSのライセンスでは、改変したものを配布する際にも同じライセンスでの公開を求めるコピーレフト型のGPLと、制約の少ないMITライセンス・BSDライセンス・Apacheライセンスを区別しましょう。MPLやデュアルライセンスも範囲です。
AI駆動開発とAIプロジェクト
シラバスではAI駆動開発として、自然言語で指示しながらAIにコードを書かせるバイブコーディング、AIエージェントが自律的に実装やテストを進めるエージェンティックコーディング、仕様書を起点にAIに開発させる仕様駆動開発(SDD)、MarkdownファイルやMermaid記法が挙げられています。AIが実在しないパッケージ名を提示するパッケージハルシネーションは、攻撃者が同じ名前で悪意あるパッケージを公開するリスクにつながるため注意が必要です。
AI開発プロジェクトではMLOps・LLMOps、AIの構成要素の一覧AIBOM、AI事業者ガイドラインのAI開発者に関する事項が範囲です。分析・機械学習のプロセスモデルCRISP-DMは、ビジネス理解・データ理解・データ準備・モデリング・評価・展開/共有の6段階です。
OS・ハードウェアとアルゴリズム
中分類21には基盤技術も含まれます。OSでは仮想記憶・デマンドページング・ページ置換のLRU、タスク管理のプリエンプティブ方式・ラウンドロビン、ハードウェアではA/D変換・フィードバック制御・FPGA・ASIC・SoC・論理回路、施設ではデータセンターのエネルギー効率指標PUE(全体の消費電力 ÷ IT機器の消費電力で、1に近いほど効率的)が範囲です。
中分類22では、浮動小数点数のIEEE 754、論理演算、線形代数とコサイン類似度、待ち行列理論、オーダ記法による計算量を学びます。データ構造では後入れ先出しのスタック、先入れ先出しのキュー、B木・AVL木などの木構造、アルゴリズムでは2分探索法(計算量O(log n))、ハッシュ表探索法、動的計画法、貪欲法、最短経路を求めるダイクストラ法を押さえましょう。
- モジュールは強度(凝集度)を高く、結合度を低く
- トップダウンテスト=スタブ、ボトムアップテスト=ドライバ
- カナリアリリース=一部の利用者に先行公開、ブルーグリーン=2環境の切替
- DORAメトリクス:デプロイ頻度・変更のリードタイム・変更障害率・MTTR
- GPL=コピーレフト型、MIT・BSD・Apache=制約の少ないライセンス
- パッケージハルシネーションは悪意あるパッケージ混入のリスクにつながる
- スタック=後入れ先出し、キュー=先入れ先出し、2分探索=O(log n)