20050809
- 2. システムを構成する要素
開発したプログラム
プログラムが動作する環境を含む
ハードウェア
ソフトウェア
ネットワーク
データ
入力データ
出力データ
利用者
利用する人がいなければシステムを構築する意味は
ない
- 3. システムを開発するとは?
顧客が抱えている問題を解決する方法を提案す
ること
ソフトウェア産業は「サービス」産業である
問題を解決するという「サービス」を提供する
必ずしも全ての問題をプログラムが解決しなく
ともよい
そもそもプログラムが解決できるのは問題の一部分
でしかない
運用する人の動きも含めてシステムを考える
- 4. システムのライフサイクル(生
存期間)とは(1)
開発
要件定義
基本設計
詳細設計
プログラミング
テスト
リリース
開発のサイクルを繰り返す開発方法論もある
開発者のモチベーションをいかに高めるか、が最近
の
開発方法論の着目点
- 5. システムのライフサイクル(生
存期間)とは(2)
運用
保守
改修
開発期間より運用期間が長い
ハードウェアのリースに合わせて 5 年というのが
よくあるパターン
バージョンアップにより、一つのシステムは
そのライフサイクルを終了する
ただし、システムの目的や機能は引き継がれる
- 6. システムの要件は誰が定義する
のか
何が必要かよくわかっているのは顧客
ただし、顧客はコンピュータの専門家ではない
顧客とコンピュータの間を取り持つのが開発者
顧客の問題を解決し、満足させることが重要
顧客の問題をきちんと聞きだす必要がある
顧客の考えを鵜呑みにするのではなく、専門家とし
てのアドバイスも必要
できないことはできないときちんと説明し、対案を
含めて提案する
顧客の使う言葉の意味を確認しながら話をすすめる
- 7. システムを開発するのに必要な
知識とは
プログラミングの知識だけでは満足のいくシステムはで
きない
業務に関する知識が最も重要
業務知識が足りない場合、顧客の持つ知識をいかに引き出せる
かがポイントとなる
動作環境に対する知識も必要
マシン管理(サーバ、クライアント)
データベース
ネットワーク
セキュリティ
Web ( HTTP ): Web アプリケーションの場合
- 8. 実際の開発現場では
最先端の技術を使ったシステム案件は少ない
業務で使うには実績があるという安心感が必要
顧客、開発側ともにリスクは背負いたくない
既存の機械で利用したい、という要望も多い
開発要員の知識に左右される場合も
現時点では Java や VB6 なら開発できる人が多い
会社として人を育てたところなのでその分を回収し
たい
.NET での開発は今伸びてきている
- 9. 開発チーム
規模によっては一人ですべてを行う場合も
チーム編成する場合も現状では役割がきちんと別れていることは少
ない
プロジェクトマネージャ
チームリーダ
プログラマ
テスター
環境構築(サーバ、ネットワーク、 DB )
最近はチームメンバーの意欲(モチベーション)を高めることに重
点をおいた開発方法論も多く語られている
アジャイル
チーム内でうまくコミュニケーションをとることが重要
問題点ほど早く報告して手当てをする必要がある
- 10. チーム内コミュニケーション
のコツ
同じことは何度も繰り返し聞かない
メモをとろう
質問をするときは回答(選択肢)を用意する
自分がどこまで理解できているかをきちんと提示する
選択してもらうだけならすぐ回答が返ってくる
上司、先輩はうまく使おう
上司、先輩の持っている知識をうまくひきだそう
上司を通して交渉してもらうという考え方も必要
問題は早めに報告する
早い時期なら対処にかかる作業も小さくて済む
取り返しのつかないことになるのが最悪
- 11. 技術的な知識を獲得する方法
(1)
技術はどんどん進歩する
全体を見渡せる広く浅い知識が必要
メーリングリストなどで技術的な言葉に慣れるというのは知識を広
げる取掛かりとしてよい
興味のある分野は深く突っ込んで
興味があることの知識が増えるのは「楽しい」
最初は書籍で体系だった知識を身につける
基本が理解できていないと応用は利かない
掲示板やメーリングリストのやりとりのコツ
文字だけのやりとりの怖さを理解する
自分の状況をきちんと説明できるよう心がける
- 12. 技術的な知識を獲得する方法
(2)
定点観測による知識獲得
継続してみることで、今何が話題となっているのかを確認でき
る
Web サイト
ニュースサイト
技術サイト(例)
MSDN (日本、米国)
TheServerSide.NET
DevX.com
CodeProject
掲示板(例)
@IT
GDNJ
Ailight
Blog 、日記、 mixi
メーリングリスト
users.gr.jp
- 13. 技術的な知識を獲得する方法
(3)
ネット上の検索を利用するときの注意
嘘とはいわないまでも一面的な情報だったりする
何が書かれているのか咀嚼してから利用する
サンプルプログラムがあったら、ドキュメントやリファレンスを元に何が行われてい
るのかを自分で納得いくまで確認する
実際に動かしてみて、小さい変更を加えて再実行する、という作業を繰り返すのが理
解するのに一番の早道
仲間をつくろう
仲間のがんばりに触発されてモチベーションが高まる
勉強会、オフラインミーティングに参加することから仲間ができてくる
情報を発信する ( 人に教える)
まとめることが自分の知識の整理になる
新たな視点を教えてもらえることも多い
Web サイト、 Blog 等を活用する
自分で開設する
人の掲示板、 Blog に書き込む
- 14. 開発者に最も必要なこと
人ときちんとコミュニケーションできる能力を身につけ
る
対顧客
対上司、同僚
ネットを介したコミュニケーション
コミュニケーション能力とは
相手が伝えようとしていることを正しく理解できる能力
思い込みを極力排除して人の話を聞く(文章を読む)
すべてコミュニケーションからはじまる
システムというのはある意味、人とコンピュータとのコミュニ
ケーションであり、開発者はその仲立ちをつとめる