ICONIXプロセスの理念を理解する(実践編)
こんにちは!オンサイトのリードエンジニア、HK.Reisfeld です。
今回はICONIXプロセスの理念を踏まえ、改良を加えながら実践してみました。
メンバーとマネージャー視点のそれぞれで実践しています。
前回の記事をご覧いただいていない方はICONIXプロセスの基礎知識をまとめていますので、ぜひこちらをご覧ください。
基本の考え
以下を基本の考えとして、実践しました。
■ユースケース図を作成する
・要件を図で見える化し、システム境界を明確にする
■詳細設計の成果物は作成しない(シーケンス図、クラス図など)
・作成しても良いが、残す成果物とはしない
■画面遷移図を作成する
・UMLの状態遷移図で表現する
■ロバストネス図を作成する
・ロバストネス図でユースケースと実装を紐付ける
・ロバストネス図を見れば、おおよその要件、および実装がわかる
・結合テスト項目を抽出できる粒度で書く
・ロバストネス図を設計図としてコーディングする
■しっかり設計を行えば、実装は容易に完了する
・品質が良いコードが書ける
・長期的に見て、大幅なコスト削減になる
・品質が良いので不具合が発生しにくい
・不具合や変更が発生しても対応が容易になる
・新規メンバーが参入した時のコストが少なく済む
メンバーとしてやったこと
時期的なこともあり、メンバーとして参画したプロジェクトはどちらかと言えばウォーターフォール的な進め方が主でした。
取り入れたことによって過分な時間を要してしまうことは許容されません。
そのような環境下でも充分な成果を出すことを目標に掲げ、改良を加えていきました。
タスクの中で要件分析、予備設計、実装・テストを繰り返し、完成させていきました。
■アジャイルを取り入れていない現場でも導入する
・ウォーターフォール開発であっても取り入れられる
・個人レベルで導入が可能
■自身のタスクの中でイテレーションを回す
・要件分析←→予備設計←→実装・テスト
■ユースケース図を作成し、おおよその予備設計(ロバストネス図)ができた時点で実装を開始する
■実装を進めて出てきた点をロバストネス図、ユースケース図にフィードバックする
・これを細かく繰り返す
■ロバストネス図をインプットとして、結合テスト項目を抽出・検証する
・要件と実装が乖離していないことを確認する
プロジェクトマネージャーとしてやったこと
メンバーの時にやっていたことをチームのメンバーにやってもらうため、まず全機能のざっくりとした図を作成して展開しました。
実装をフィードバックさせるロバストネス図の更新はメンバーに依頼し、それ以外の図へのフィードバックはプロジェクトマネージャーである私が行いました。
ロバストネス図を起点として、上流工程と下流工程の成果物を検証していき、実装フェーズで検出した課題を素早く解決させていきました。
図によって実装を見える化していることで、要件の確認も簡単に行うことができました。
■要件定義からユースケース図を作成する
■画面遷移図、ワイヤーフレームを作成する
・サンプリング対象のアプリを参考にした
■ざっくりとしたロバストネス図を作成する
・書き方の粒度を合わせる意図も含む
■ユースケース図、ロバストネス図で顧客と合意を取る
■実装しながらロバストネス図を更新していく旨をメンバーに依頼する
・ロバストネス図の更新はメンバーに任せる
■ロバストネス図をインプットとして、結合テスト項目を抽出・検証する旨をメンバーに依頼する
・要件と実装が乖離していないことを担当者が確認できる
実践したことによる成果
実践によって、以下の成果を実感しました。
いずれも、ソフトウェア開発を成功させるために必要不可欠なことだと思います。
■要件把握
・図を書いて見える化することにより、要件を正しく把握できているかを分析することができた
・書いた図を元に顧客と話しをすることで、認識合わせが容易にできた
■品質向上
・必要な設計を行った上でコードを書くので、コード品質が向上した
・要件からテストまでが乖離せず一貫しているので、要件から外れた実装になることを防ぐことができた
■情報共有
・コーディング知識を持っていなくても図で内容を理解することができるので、情報共有が容易にできた
まとめ
ICONIXプロセスは、ウォーターフォール開発のようにかっちりと工程を進めることに違和感を感じているが、かと言ってアジャイル開発のようにスプリントで区切って進めてもなかなか上手くいかない、と言うケースに向いている手法だと思います。
例えば、新規サービスを一から作り上げていく、不確実性の大きいプロジェクトなど。
個人的主観としては、ウォーターフォール開発とアジャイル開発のハイブリッドであり、いいとこ取りをする印象です。
特に理念については、これが正解だと自信を持って言えると思っています。
実践にあるように個人レベルでの導入も可能なので、ぜひ一度取り入れてみてはいかがでしょうか。
オンサイトでは日々進化していく開発技術に取り残されないよう、様々な手法を積極的に取り入れ、エンジニアの成長環境をつくっています。
現在このような環境で活躍されたいエンジニアを募集中です!
ぜひ下記採用ページからお気軽にご連絡ください!
▼オンサイト採用HP
リードエンジニア
1997年からエンジニアやってます。C言語から始まり、様々な言語を経験してきました。
生涯プログラマーをモットーにしています。
コードは見やすく、わかりやすく、シンプルに。
流行りに取り残されないように、日々精進していきます。