アジャイル開発とGeneXus
GeneXusといえばアジャイル開発!
と言わんばかりにGeneXus代理店の各社が公表してますね。
私はアジャイル風な開発方法を10プロジェクトほど経験しました。
アジャイル、スパイラル、イテレーション、インクリメンタルといったように
似たような言葉が世の中にありまして、どのスタイルを言っているのか、
分からなくなることがありますので以下に記載します。
※一緒に仕事をしている方が整理してくれたのですが、
非常に分かりやすかったので、載せさせて頂きました。感謝です。
1)アジャイル
・繰り返し開発だが、開発を完了したものは一定の品質が常に保証される
・期間内で品質を保証した機能を提供する
・「要件定義~設計~開発~テスト~リリース」のフローを繰り返すイメージ
・2巡目には要件定義(1巡目の機能の改修要件&追加機能要件)を行い、
開発(改修又は作り直し&新規開発)を行い、テストしてリリースという形
2)スパイラル
・アジャイルとの違いはプロトタイプを使う事
・期間内で作り上げた機能の品質を次の期間で向上させていく
2―1)インクリメンタル
・繰り返しの中で新しい機能を追加していく
・要件定義~基本設計までを完了し、その後の詳細設計~開発~テストを
機能ごとに繰り返していくイメージ
・木の幹をしっかりと決め、枝葉を順番に作っていく感じか
2―2)イテレーション
・繰り返しの中で機能の品質を高めていく
・要件定義~設計~開発を繰り返しながら品質を高めていき、最後にテスト~リリースを行う
・木を全体の輪郭から作っていき、徐々に中身を濃くしていく感じか
こうして整理すると、私が行ったPJはスパイラルが基本で、1)アジャイルは殆どありませんでした。
ただ、多くの人は分かりやすさ・伝わりやすさ優先で、
・ウォーターフォールじゃなくて繰り返して開発するのは大体「アジャイル」
と言っているような気もします。実は私がそうです。
実際のところ、上記の1)アジャイルは本当にメリットがあるのかどうか疑問です。
開発者であれば、テストを行って品質を保証することの大変さはわかるかと思いますが、
1巡のたびに、単体テスト・結合テスト・システムテスト・受入テストまで行う必要があります。
そして運用を始めた後に、2巡目の改修要件&新規要件を整理する。
更に1巡目で運用・入力されたデータ移行も考えないといけないということですかね。
更に更に、開発はすでに誰かが作った機能があって、それを流用する。
元の機能の中身が分かっていれば良いですが、違う担当者が作ったもので、その作りが煩雑だったら。。。
考えただけで気が滅入ります。
ということで
「1)アジャイル」の場合、期間・費用はウォーターフォールより掛かると思います。
品質はウォーターフォールと同じですね。
メリットとしては、段階リリースが出来る。という点でしょうか。
勿論、大規模開発は無茶で、少人数の小規模が対象なのだと思います。
GeneXusは効率的にシステムを作ることができます。
WWPを主体とした場合は、それこそマウスでポチポチと設定をしていくだけで機能が作れたりもします。
開発者はどんどん作っていけますし、仕様が変わってもストレスなく対応できます。
ユーザーも自分の要求がすぐに動くもので確認ができます。
であれば、プロトタイプを繰り返して業務が回るかを確認して頂き、
問題が無ければテスト工程を行って、リリースをする。という形の
「2―2)イテレーション」が、最もユーザーへのメリットが高く、
GeneXusに向いた開発手法であると考えています。
当然、システム規模・ユーザーの状況・現行システムなどの絡みもありますので、
ユーザーと一緒に目的にマッチしたプロジェクト計画を考えるのがベストです。
例えば
大規模であれば、まずは基盤として代表の数画面だけを構築してUIを固めて、テンプレートにするとか、
業務毎にチームを分けてイテレーションを回していくとか。
マイグレーションをしたいが、現行システムの中身が把握できてないのであれば
まずは現行をASISで構築して、テストは現行とのマッチングテストを実施して品質保証。
内容が把握できたうえで、改善・改修を行っていく。
こんな進め方も「有り」だと思います。
と言わんばかりにGeneXus代理店の各社が公表してますね。
私はアジャイル風な開発方法を10プロジェクトほど経験しました。
アジャイル、スパイラル、イテレーション、インクリメンタルといったように
似たような言葉が世の中にありまして、どのスタイルを言っているのか、
分からなくなることがありますので以下に記載します。
※一緒に仕事をしている方が整理してくれたのですが、
非常に分かりやすかったので、載せさせて頂きました。感謝です。
1)アジャイル
・繰り返し開発だが、開発を完了したものは一定の品質が常に保証される
・期間内で品質を保証した機能を提供する
・「要件定義~設計~開発~テスト~リリース」のフローを繰り返すイメージ
・2巡目には要件定義(1巡目の機能の改修要件&追加機能要件)を行い、
開発(改修又は作り直し&新規開発)を行い、テストしてリリースという形
2)スパイラル
・アジャイルとの違いはプロトタイプを使う事
・期間内で作り上げた機能の品質を次の期間で向上させていく
2―1)インクリメンタル
・繰り返しの中で新しい機能を追加していく
・要件定義~基本設計までを完了し、その後の詳細設計~開発~テストを
機能ごとに繰り返していくイメージ
・木の幹をしっかりと決め、枝葉を順番に作っていく感じか
2―2)イテレーション
・繰り返しの中で機能の品質を高めていく
・要件定義~設計~開発を繰り返しながら品質を高めていき、最後にテスト~リリースを行う
・木を全体の輪郭から作っていき、徐々に中身を濃くしていく感じか
こうして整理すると、私が行ったPJはスパイラルが基本で、1)アジャイルは殆どありませんでした。
ただ、多くの人は分かりやすさ・伝わりやすさ優先で、
・ウォーターフォールじゃなくて繰り返して開発するのは大体「アジャイル」
と言っているような気もします。実は私がそうです。
実際のところ、上記の1)アジャイルは本当にメリットがあるのかどうか疑問です。
開発者であれば、テストを行って品質を保証することの大変さはわかるかと思いますが、
1巡のたびに、単体テスト・結合テスト・システムテスト・受入テストまで行う必要があります。
そして運用を始めた後に、2巡目の改修要件&新規要件を整理する。
更に1巡目で運用・入力されたデータ移行も考えないといけないということですかね。
更に更に、開発はすでに誰かが作った機能があって、それを流用する。
元の機能の中身が分かっていれば良いですが、違う担当者が作ったもので、その作りが煩雑だったら。。。
考えただけで気が滅入ります。
ということで
「1)アジャイル」の場合、期間・費用はウォーターフォールより掛かると思います。
品質はウォーターフォールと同じですね。
メリットとしては、段階リリースが出来る。という点でしょうか。
勿論、大規模開発は無茶で、少人数の小規模が対象なのだと思います。
GeneXusは効率的にシステムを作ることができます。
WWPを主体とした場合は、それこそマウスでポチポチと設定をしていくだけで機能が作れたりもします。
開発者はどんどん作っていけますし、仕様が変わってもストレスなく対応できます。
ユーザーも自分の要求がすぐに動くもので確認ができます。
であれば、プロトタイプを繰り返して業務が回るかを確認して頂き、
問題が無ければテスト工程を行って、リリースをする。という形の
「2―2)イテレーション」が、最もユーザーへのメリットが高く、
GeneXusに向いた開発手法であると考えています。
当然、システム規模・ユーザーの状況・現行システムなどの絡みもありますので、
ユーザーと一緒に目的にマッチしたプロジェクト計画を考えるのがベストです。
例えば
大規模であれば、まずは基盤として代表の数画面だけを構築してUIを固めて、テンプレートにするとか、
業務毎にチームを分けてイテレーションを回していくとか。
マイグレーションをしたいが、現行システムの中身が把握できてないのであれば
まずは現行をASISで構築して、テストは現行とのマッチングテストを実施して品質保証。
内容が把握できたうえで、改善・改修を行っていく。
こんな進め方も「有り」だと思います。
コメント
コメントを投稿