全体セミナー201108011

7,104 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
7,104
On SlideShare
0
From Embeds
0
Number of Embeds
4,816
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

全体セミナー201108011

  1. 1. 開発プロジェクトの進め方<br />Preferred Infrastructure<br />西鳥羽二郎<br />
  2. 2. 自己紹介<br />西鳥羽二郎 (Twitter ID: jnishi)<br />Professional and Support Service部<br />検索エンジンSedueの導入支援<br />製品サポート<br />Sedueを用いた開発案件のプロジェクト支援<br />プロジェクトマネジメント<br />カスタマイズ開発<br />
  3. 3. 今日のお話<br />開発プロジェクトの進み方<br />案件の始まりから終わりまで<br />プロジェクトを進める際に気をつけていること<br />提案内容の精査<br />開発時の順番<br />
  4. 4. 案件の流れ(ウォーターフォール)<br />見込み客の確保<br />ヒアリング<br />要件<br />必要な機能<br />制限<br />予算<br />スケジュール<br />開発<br />テスト<br />納品<br />検収<br />要件定義<br />製造<br />納品/検収<br />営業<br />設計<br />
  5. 5. 営業<br />見込み客(リード)を集める<br />イベントによる宣伝<br />ホームページからの問い合わせ<br />商品の説明<br />etc…<br />特に興味を持ったお客様には直接訪問<br />詳しい商品説明<br />現状の課題のヒアリング<br />例「社内にドキュメントがあるはずなのにみんなそれを活用してないんだよね」<br />
  6. 6. 要件定義<br />顧客の要望をシステムで実現できる形にブレークダウンする<br />ソフトウェアが実現できなければならない機能の洗い出し<br />「データベースからデータを取得し、全文検索を行えるようにしなければならない」<br />「検索窓を用意し、ユーザーが検索窓に任意の文字列を入力し、Enterキーを押した時、検索結果表示画面に遷移し、入力文字列を本文に含む文書の中から10件表示する」<br />「複数台構成にし、フェイルオーバー機能を有する」<br />下記のトレードオフ<br />顧客にとって必要な機能<br />自分たちで実現できること<br />コスト<br />スケジュール<br />
  7. 7. 設計<br />要件定義で挙げられた機能を実現する方法を考えること<br />「それ、Sedueでできるよ」<br />「GETのq=のパラメータで検索文字列を受け取って、Sedueのクエリに変換して問い合わせて結果を取得してhtmlに変換して返せばできる」<br />「検索サーバーを2台構成にしておけば冗長性は確保されるね」<br />「キーワードでクラス作ってIDも持たせておこう」<br />
  8. 8. 開発<br />要求 / 設計を元に実際に動くものを作る<br />他の導入作業も含める<br />環境構築<br />製品/ 開発物の導入<br />追加要望 / 修正などの対応も含まれます<br />
  9. 9. 納品 / 検収<br />納品: 開発した成果物を顧客に渡す(DVDの形が多い)<br />ソースコード<br />ドキュメント<br />納品書<br />検収: 納品物の確認が顧客の方で終了したら開発は終了し、対価が支払われる<br />※ 開発でトラブルが起こると納品 / 検収が遅れて対価の請求が遅れる<br />
  10. 10. 案件の流れ<br />提案!!<br />見込み客の確保<br />ヒアリング<br />要件<br />必要な機能<br />制限<br />予算<br />スケジュール<br />開発<br />テスト<br />納品<br />検収<br />要件定義<br />製造<br />納品/検収<br />営業<br />設計<br />契約(=拘束力)の発生<br />契約なし<br />
  11. 11. 提案<br />要件定義を行なったあたりで提案を行う<br />ここで重要な3要素が決まる<br />作るもの<br />スケジュール<br />金額<br />デスマーチを回避するために開発者は以下のことに行う<br />実現可能性<br />コストの見積り<br />成果物の意識合わせ<br />
  12. 12. 不確実性と修正コストの戦い<br />次の二つのせめぎあい<br />不確実性=リスクは工程が進むほど<br />減っていく<br />修正のコストは工程が進むほど掛かる<br />http://www.pearsoned.co.uk/bookshop/article.asp?item=1370<br />http://www.atmarkit.co.jp/farc/rensai/bottleneck01/bottleneck01.html<br />
  13. 13. プロジェクトマネジメントの肝<br />工程を進める方が不確実性は小さくなっていく<br />なるべく早く工程を進めたほうがリスクの洗い出しが早くできる<br />修正のコストが小さい上流工程のうちに修正をする<br />要件定義や設計に時間をかけて修正や懸案事項の洗い出しを行うほうが良い<br />如何に上記のバランスをとるかが肝になってくる<br />
  14. 14. 実際の進め方<br />提案!!<br />要件定義<br />製造<br />納品/検収<br />営業<br />設計<br />機能1<br />機能2<br />機能3<br />リリースを細かく分けて、一気に<br />設計->製造->リリースを行わずに<br />機能毎に設計->製造->リリースを<br />行う<br />提案前に設計も行う<br />
  15. 15. 提案時<br />提案内容作成の材料<br />開発項目の列挙<br />開発工数<br />スケジュール<br />デスマーチを回避できるかどうかは提案内容が肝(大事なこry<br />顧客と開発側で想定していたものが違っていた<br />作り始めてみたら後から後から必要なものが出てくる<br />提案終了->契約後に変更するのは大変な労力がかかる<br />
  16. 16. 見積り<br />「優れた見積りは信頼性の高い設計と要求が揃って初めて得られる」(アートオブプロジェクトマネジメント)<br />見積もり時には必ず担当する開発者を巻き込む<br />可能な限り設計を行う<br />設計が変わりうる不明な点が出てきたら要求を確認する<br />前提条件として記載<br />顧客に問い合わせる<br />要求が実現できるかも精査<br />項目を細分化する<br />詳細まで踏み込んだほうが精度が上がる<br />作るものへの理解が進むほどよい見積りができる<br />
  17. 17. 製造<br />機能毎に開発<br />リスクが大きいところから設計、実装<br />変更があった時に他への影響がでかい<br />実装コストがかかる<br />目に見えにくい / 想像しにくい -> 漏れや勘違いが多い<br />逆に実物を見なくても想像しやすく変更が起こりそうなところは後回し<br />実装前のほうが対処しやすい<br />機能毎にリリース<br />検証環境を用意し、順次リリースしてなるべく早く顧客に見せる<br />
  18. 18. 仕様変更<br />仕様変更は避けられない<br />時間と共に状況が変わる<br />細部まで考えが行き届くまで時間がかかる<br />作ってみて初めて分かることもある<br />
  19. 19. 仕様変更<br />変更や検討漏れがあった際<br />下記の要素を鑑みて対処法を検討<br />必要な機能かどうか<br />実現する為のコスト(規模, 設計時 < 実装時 < 検証時)<br />顧客と交渉<br />取り決めた仕様のままにする<br />修正して対応する<br />顧客/ユーザー/開発へのインパクトの理解が深いほど交渉が容易<br />(インパクトがでかいものは要件定義/設計で無くしていることが前提)<br />
  20. 20. プロジェクト終了後<br />振り返り -> 次の提案時に反映<br />工数が大きかった変更<br />要件定義の段階で潰せなかったか<br />変更が多かった箇所<br />顧客の方で検討してもらうことで時間がかかる /変更が多かったもの-> 検討だけは先にやってもらい、着手を後回し<br />作ってみなければ分からない -> 作りなおすこと前提で工数をつむ、優先して開発を行う<br />
  21. 21. 失敗例集<br />見積もりが大雑把すぎた<br />「うーん、全部で3ヶ月くらいあればできるんじゃない?」<br />作業量の見積りは悪くなかったが、時間を確保できなかった<br />「これは2週間あればできますね」-> 背後に締切の近いものを幾つか抱えていて時間がかけられなかった<br />無駄に要件を厳しくしていた<br />参照系 / 更新系に分けた構成で更新系まで冗長化を要件に入れてしまった-> 本当はそこまでの耐障害性は必要なかったはず<br />
  22. 22. まとめ<br />プロジェクトの進め方<br />営業->要件定義->設計->開発->納品->検収<br />提案内容が命<br />関係者をちゃんと巻き込みましょう<br />時間をかけて要件を詰める<br />後工程に進むほど不確実性が無くなる<br />要件定義/設計の段階で不明瞭なところを潰す<br />開発時はリスクの大きいところから着手する<br />開発規模は小さいほうがリスクは少なく変化に強いため可能ならアジャイルのほうがおすすめです<br />
  23. 23. ご清聴ありがとうございました<br />参考文献は後日Preferred Research blogに掲載します<br />

×