コンピューターを見つめる女性と、後ろにホワイトボードがある他の同僚たちとのチーム会議の様子

SDLCにおけるAI

SDLCにおけるAIの活用法

AIソフトウェア開発ライフサイクル(SDLC)は、人間の開発者を拡張するために、従来のSDLCの各フェーズにAIツールやシステムを統合することを表しています。これは、ソフトウェア開発のすべてのフェーズにわたって、スピード、品質、および意思決定を向上させることを目的としています。

従来のSDLCへの人工知能の統合は、ビジネス・プロセスにおけるAI駆動型手法への現在進行中の移行の一部であり、間違いなくこの移行の最も重要な要素です。AIと機械学習はコーディングという規律の基礎となりつつあり、事実上すべての業界の組織が新しいAI開発ツールやアプローチを試みています。一部のテック・インフルエンサーは、厳格な規律としての従来のコーディングの終わりを熱狂的に宣言し、昔ながらの方法でコードを学ぶことに、もはや「価値がある」のだろうかと疑問を投げかけてさえいます。AIコード生成はもはや目新しいものではなく、コーディングの実践の中心となっています。

エージェント型AIシステムは、現在、コーダーのコパイロットとして機能しています。大規模言語モデル(LLM)を搭載したプラットフォームは、ソフトウェア開発の実践を民主化し、コーディング経験がほとんどない、あるいは全くない実務担当者にも門戸を開き、その退屈な作業の多くを排除しています。これらのツールにより、開発者はコーディングに伴う必要不可欠ではあるものの、型通りのタスクの一部を実行するのではなく、刺激的な新しいシステムの構築により多くの時間を費やすことができるようになります。

しかし、エキスパートはAI搭載型ツールへの過度の依存に対して警告を発しています。AIにはSDLCをより迅速に、より良く、より安価に、そしてより楽しくするという明確なメリットがある一方で、これらのツールにはデメリットもあります。AIのメリットを、経験豊富な人間の開発者の専門知識や推論能力と並行して取り入れるワークフローを設計することは、組織にとって依然として課題となっています。

AIネイティブ開発の台頭

SDLCの目的は、最高品質のソフトウェアを最低のコスト、最短の時間で構築することです。ソフトウェア・エンジニアリングの歴史を通じて、いくつかの手法がその実践を定義してきました。1970年代に始まったウォーターフォール手法は、明確な連続したフェーズを特徴とするプロセスを定義し、そこでは開発者が次のフェーズに進む前に各フェーズを完了する必要がありました。

次の10年間で、厳格なウォーターフォールは反復型の開発に取って代わられ、部分的な実装、ユーザー・フィードバック、および洗練を可能にするフェーズが導入されました。2000年代にはアジャイルが登場し、この規律はコラボレーション、フィードバックの改善、およびより反復的な開発サイクルへと移行しました。次の10年間で、DevOpsのプラクティスが定着しました。この一連の文化的哲学、プラクティス、およびツールは、開発チームと運用チームを統合し、継続的インテグレーションおよび継続的デリバリー(CI/CD)を可能にしました。

これらのイノベーションはSDLCを劇的に向上させましたが、このプロセスには依然として不満な点が存在します。開発者は、新しいシステムを構築したいと考えているときでも、依然としてトラブル対応に時間を費やしています。彼らは依然として、サイロ化され断片化されたワークフローに対処しています。|多くの組織において、長期的なビジョンを持たずに実装された、何十年にもわたる連携のないソリューションやその場しのぎのパッチから蓄積された技術負債に取り組まなければなりません。

AIの分野は、現代LLMを可能にしたモデル・アーキテクチャーであるトランスフォーマーの開発によって大きな飛躍を遂げました。2021年に導入されたOpenAI社のCodexは、同社のGPT-3モデルの派生であり、膨大な量のパブリック・コードでトレーニングされていました。多くの人が、このリリースがAIコーディング時代の幕開けを象徴していると考えています。GitHubはその年の後半に、Codexを搭載したコーディング・アシスタントであるCopilotをリリースしました。この時点で、AIコーディング支援は学術研究におけるニッチな関心事にとどまらず、企業のワークフロー全体に急速に導入される主流の製品となっていました。

翌年、OpenAI社のChatGPTは、AI搭載型のチャット・ボットと対話するという概念を主流へと一気に押し上げました。しかし、AIと対話する機能も重要ですが、最適な推奨事項を提供するためには、AIがコードのより広いコンテキストを理解できる必要もあります。その後のCode Llamaなどの開発により、より大きなコンテキスト・ウィンドウと、より優れた文脈理解が可能になりました。

エージェント型システムは、次の主要なイノベーションを意味します。推論して行動できるエージェント(ReActフレームワークなど)により、LLMは思考して話すだけでなく、開発環境内でアクションを実行できるようになりました。現在、エージェントはツール呼び出しを実行し、半自律的にコードベースに関与できるようになっています。

AIエージェントは、今なおソフトウェア開発に変革をもたらしています。人間の開発者を置き換えるのではなく、エージェントは生産性を高め、認知負荷を軽減し、意思決定を向上させるインテリジェントなレイヤーとして機能します。計画、分析、コーディング、テスト、デプロイ、および保守にわたって、AIはSDLCをさらに適応性があり、効率的で、反復的なプロセスへと変革します。

変革は続いており、エージェント支援型のコーディングは、ウォーターフォール、アジャイル、あるいはDevOpsと同様に、開発プロセスに対してはるかに大きな影響を与える移行となる可能性を秘めています。

AI Academy

AIの専門家になる

ビジネスの成長を促進するAIへの投資を優先できるように知識を習得します。今すぐ無料のAI Academyを試して、貴社のAIの未来をリードしましょう。

AIの各SDLCフェーズへのマッピング

AIソリューションはSDLC全体で使用でき、計画から保守までエンド・ツー・エンドのサポートを提供します。

計画

プロジェクト計画フェーズでは、ソフトウェア開発プロジェクトの目標とスコープを確立します。AIは、チームが目標を明確にし、アイデアを構造化された計画に落とし込むのを支援することで、アイデア出しやスコープ設定の初期段階を拡張します。自然言語処理(NLP)ツールは、ステークホルダーへのインタビューを要約し、それらをプロジェクト・ロードマップに変換できます。AIプロジェクト管理ツールは、タイムラインの構築やリソースの配分を支援できます。

分析

分析フェーズでは、開発チームはプロジェクトの要件に関する情報を収集および分析します。AIは、電子メール、チャットボット・ダイアログ、およびサポート・チケットなどの非構造化のインプットを要件定義書に変換できます。AIは、専門のAIモデルが要件を特定して検証する、品質保証ツールとしても機能できます。モデルは、特定のテック・スタック内での実現可能性を分析してパフォーマンスのボトルネックや互換性の問題を予測し、インフラストラクチャー・ベンダー間での推奨事項を提示できます。

デザイン

デザイン・フェーズでは、プロジェクトのアーキテクチャーを定義します。主要なステップには、ソフトウェアのナビゲーション、ユーザー・インターフェース、およびデータベース・デザインの概要設定が含まれます。AIは構造的な推奨事項を提供し、人間のデザイナーがさまざまなアーキテクチャーのアプローチ、ソフトウェア・フレームワーク、データベース・スキーマ、およびその他の要素を選択するのを支援できます。同様に、ユーザー・インターフェースを迅速に生成してテストすることができます。生成AI(genAI)ツールは、インタラクティブなプロトタイプを構築することもできます。

コーディング 

コーディング・フェーズ(または開発フェーズ)は、先行するフェーズで作成されたガイドラインに基づいて、チームがコードを記述し、ソフトウェアを構築する段階です。ここで、AIはその最も目に見える即座の影響を及ぼします。

AIエージェントは、IBM Bobのようなシステムで管理され、統合開発環境(IDE)で人間の開発者と並行して作業することができ、エージェント型のコーディングの力によってソフトウェア構築を大幅に迅速化できるよう支援します。Bobはリアルタイムでコードをスキャンし、複雑さの問題やコードのリファクタリングの機会を捉え、開発者が技術負債を回避できるよう支援します。

こうしたツールは、自然言語プロンプトや部分的な実装に基づいて、高品質なコード・スニペットやモジュール全体さえも生成できます。人間の監視は依然として不可欠ですが、AIはコンセプトからコード化までの時間を加速できます。

コード・ドキュメンテーションもまた時間を要するタスクですが、このフェーズにおいてAI機能で容易に処理できます。

テスト

テスト・フェーズは、開発チームが機能するソフトウェアを作成した後に始まります。このフェーズでは、チームはバグを排除し、最終製品を強化する機会を模索します。AIは、コードベースを分析して潜在的な障害ポイントや複雑なエッジ・ケースを特定することにより、テスト・ケースを自動的に作成できます。これは、アプリケーション動作の異常を検出し、ビジュアル・リグレッション・テストを実行できます。

導入

デプロイ・フェーズでは、微調整されたソフトウェアが、ユーザーがアクセスできる本番環境にデプロイされます。AIは、ボトルネックを予測し、定型タスクの自動化を促進することにより、継続的インテグレーションおよびデプロイメント・パイプラインを合理化および最適化できます。AIモニタリング・システムは、ログ、メトリクス、およびシステム動作をリアルタイムで分析し、潜在的な障害がエスカレートする前に検出して、コストのかかるダウンタイムを最小限に抑えます。

保守

保守フェーズには、ソフトウェアの継続的な運用を確実にするためにソフトウェア・チームが行うデプロイ後の作業(アップデートや最適化の適用、予期しない変更への対応、パッチのテスト、新しいユースケースへの対処、ユーザーが見つけたバグの退治など)が伴います。AIコーディング・ソフトウェアは、バグ・レポートの分類や優先順位付け、インシデントの要約、根本原因の提案を自動的に行うだけでなく、デバッグによる修正案を提示することもできます。連動するシステムの継続的なモニタリングを実行することで、保守へのよりプロアクティブなアプローチを可能にし、これらのシステムが人間の見落とす可能性のある非効率性を発見できるようにします。

SDLCにおけるAIの課題

AIツールは複雑なアルゴリズムによって駆動する確率的なシステムであり、人間のエンジニアと同じようには推論しません。それらのアウトプットは、真の理解ではなく、トレーニング・データ・セット内のパターンに基づいています。AIが生成したコードは正しく見えるかもしれませんが、微妙な問題が含まれている可能性があります。それは、特定の現実世界のコンテキストで何が機能するかではなく統計的に見て何が機能するはずであるかを予測します。AIは、システム間の依存関係、API統合、または組織の設計標準の重要性を見落としたり軽視したりする可能性があります。これらはハルシネーションであるため、実際には存在しない関数を呼び出す可能性があります。チェックされていないAIコードは、セキュリティーの脆弱性やリソースの非効率性を招く可能性があります。

大企業や企業は現在、AI支援型のコーディング・ツールを試行しており、従業員に「バイブ・コーディング」に少し触れてみることを奨励することさえあります。現代の企業にとっての課題は、人間のインプットとAIの支援の適切なバランスを見つけることです。本格的なコーディング・プロジェクトには、通常、ヒューマン・イン・ザ・ループ(HITL)アプローチが推奨されます。

コードを記述することはそれほどボトルネックではありませんが、AIによって記述されたコードを評価することがボトルネックとなります。評価もAIによって部分的に実行できるものですが、組織はAIが生成したコードをどのように評価するかというテーマをめぐり、レビュー・プロセス、ベスト・プラクティス、さらには文化をアップグレードする必要があります。開発チームの根本的な構成や開発プラクティスでさえ、これらのテクノロジーを考慮して再構築する必要があります。例えば、シニア・エンジニアは実装よりもアーキテクチャーやレビューにより多くの時間を費やす必要があります。開発者は、キュレーターや問題解決者として行動することが多くなります。AIツールを活用するためにSDLCを再構築できる組織は、より迅速にデリバリーし、イノベーションを起こすことができる立場に立つことになります。

執筆者

Cole Stryker

Staff Editor, AI Models

IBM Think

関連ソリューション
IBM Bob

安全で趣旨に添った開発を支援するAIパートナーのBobを活用して、ソフトウェア・デリバリーを加速させましょう。

IBM Bobはこちら
AIコーディング・ソリューション

信頼性の高いAI駆動型ツールを活用することで、コード作成、デバッグ、リファクタリング、コード補完に費やす時間を最小限に抑え、イノベーションに集中できる余地を広げます。

AIコーディング・ソリューションはこちら
AIコンサルティングとサービス

AIの導入によって重要なワークフローと業務を再構築し、エクスペリエンスとビジネス価値の最大化とリアルタイムの意思決定の最適化を達成します。

AIコンサルティング・サービスはこちら
次のステップ

生成AIと高度な自動化を活用して、企業向けのコードをより迅速に作成Bobモデルは開発者のスキルセットを強化し、開発とモダナイゼーションの取り組みを簡素化、自動化します。

  1. IBM Bobの詳細
  2. AIコーディング・ソリューションはこちら