Salesforceでのアジャイル開発へ冒険ーーエクストリームプログラミング(XP)のプラクティスを応用したシステム開発

auカブコム証券のシステム開発部の王です。
今年のお花も癒されるほど美しいでしたね。
前回、キャッチアップするための努力、および、
システム開発定着するための展開の話をさせていただきました。
今回は、日々の働き姿をご共有したいと思います。

システム開発について、
システムエンジニア(SE)の皆さんご存知だ通りで、
ウォーターフロー開発がとても強力な開発手法で、とにかく素晴らしく使いこなしています。
近年、迅速的に展開し、変化に対応できるようなシステム開発(アジャイル開発)でも求められています。
そもそも、ウォーターフロー開発により、アジャイル開発が省エネルギーに繋がりやすいことで
システムの規模などによるが、中小規模なら大体望まれるかもしれません。

アジャイル開発でも、いろんなメリットがありながら、より良い効果を得るには、
いろんなシーンに応じて、活用法(プラクティス)の柔軟な選別・運用が重要だと思います。
私たちがSalesforce対応で、アジャイル開発の最も有名な手法である
エクストリームプログラミング(XP)のプラクティス(一部)を活用して進めています。

まず、システム開発の進行作業、および、システム開発ための環境をお伝えさせていただきます。

■システム開発の進行作業

f:id:kc_wang:20210611161354j:plain
これらの作業について
・特に順番がなく、展開可能なタイミング次第にスタートする。
・開発者が最初から最後までを担当する。
 スキル次第に、複数名が共同で担当することもあります。
・品質は自己担保で、必要に応じて、フォローも行う。
・テストについて、テスト観点の選定を踏まえて、
 テスト内容を決め、展開可能なタイミング次第にスタートする。
・リリースはリリース手順を元に、展開しています。
 リリース手順の作成・検証が、テスト作業の間に行う。

■ システム開発ための環境
種類 概要
本番組織 ユーザー部署(利用者)が利用して、業務を展開する組織
開発組織
(Sandbox)
DEV組織 開発ための組織
QA組織 テストための組織
UAT組織 ユーザテストための組織
RELEASE組織 本番リリースための組織
BackUp組織 本番組織のバックアップ組織

エクストリームプログラミング(XP)のプラクティスの適用について、

■チームメンバーとしての顧客

ユーザ部署(利用者)の参加状況について、

作業 概要
調査 業務要件の整理、システム機能の検討
設計 システム機能の実現について、デモを利用して、繰り返した設計・デモンストレーション
開発 特になし
テスト テスト後半で、システム機能を検証してもらう。リリース後で本番で展開する場合が多い
リリース リリース後の確認などに、ユーザ部署に協力してもらう作業を必要に応じて実施
■ユーザーストーリー

ユーザ部署(利用者)からの要望を随時に受け付けております。
これらの要望に応じる調査と設計を、優先順位次第に展開しています。
ほとんどの場合、システム対応の仕様(設計作業)がほとんど確定できたら、
システム対応タスクを立ち上げるような運用しています。
なお、優先順位の決めが、業務に影響するかどうか、業務効率性UPかどうかなどの観点で行う。

■短期間のリリースサイクル

・システム対応タスクの内容次第に、一つ以上のタスクを纏めたイテレーション(設計~テストの作業)を決めます。
・イテレーションのリリース時期について、進行状況に応じて、リリース予定を決めます。
 テストの作業で、リリース可能な時期を見えてきて、リリース調整を行うことがほとんどです。
 内容次第に、見込みを含んだリリース日を事前に決めることもあります。
・イテレーションのリリースが最短1週間を実現で、平均が2、3週間ぐらいです
 開発規模次第に、イテレーションが2、3月を渡って継続する場合もあります。
・リリース可能な時期次第に、複数イテレーションを纏めてリリースを行うことが多いです。
 なお、リリースと伴う作業負担が発生するため、できるだけ、纏めてリリースを行っています。

■受け入れテスト

受け入れテストための自動化テストスクリプトを対応していません。
ユーザ部署(利用者)がリリース後、本番組織を利用し、問題をフードバックするのがほとんどです。
システム開発の内容次第に、開発組織(Sandbox)を利用し、リリース前(設計、あるいは、テスト)で
ユーザ部署と一緒にシステム機能を触ることもあります。
なお、ある程度な稼働確認(小範囲)自動化テストが毎日回されていますが、効果が特にないんです。

■ペアプログラミング

担当者のスキル次第に、イテレーションが複数名が共同で担当することもあります。
ナビゲーターとドライバーの形に一緒に作業を展開します。
なお、作業内容次第に、各自でぞれぞれ分担で行うこもあります。

■テストファースト開発

開発作業では、Salesforce上の設定(カスタマイズソースコード含め)に応じたシステム機能の確認
を随時に行うことほとんどです。ようは、開発ながらの展開可能なテストも行っています。

■共同所有権

現状は請負を運用してなく、イテレーションの担当者にの制限が特にないです。

■継続的なインテグレーション(統合)

基本的に、作業(開発、テスト、リリース)を行う前に、本番組織から開発組織への同期を行ってます。

■持続可能なベース

イテレーションの進行状況に応じるリリース調整を行うことで、一定のベースを保つことができます。

■オープンワークスペース

テレワークで作業することで、必要に応じて、随時のTeams会議を運用しています。

■アジャイル設計

次回でご共有したいと思います