SlideShare une entreprise Scribd logo
1  sur  20
システム開発の流れ
株式会社エル
伝えたいこと
1
このスライドを通して、伝えたいことは主に3つ
1. 「プロジェクト」とはなにか?
2. 「システム開発」とはなにか?
3. 各工程でなにをするのか?
プロジェクトとはなにか?
システム開発の多くが「プロジェクト」形式で遂行する。
多くのエンジニアは、なにかしらのプロジェクトに身を置くことになる。
※ IT業界では保守系のプログラマやインフラエンジニア、ヘルプデスクなど幅広い職種が
ある。
そのため、エンジニアにとっては、「技術的なスキル」と同様に、
プロジェクト等についてなどの「マネジメントスキル」も同じくらい重要になる。
2
プロジェクトの定義
プロジェクトの定義は2つしかない。
1. 有期性(Temporary)
→期限が存在すること
2. 独自性(Unique)
→通常業務ではないこと
3
プロジェクトの歴史
プロジェクトマネジメントの歴史は浅い。
近代的なプロジェクトマネジメントの始まりは、
第二次大戦中の1941年アメリカでの「マンハッタン計画(原子爆弾開発プロジェクト)」
だと言われている。
また、1960年のアポロ計画でも大きな前進があった。
ただし、過去の歴史においてもプロジェクトは存在した。
中国の「万里の長城」、エジプトの「ピラミッド」を始めとして、
大規模な建築物の構築には、なんらかのマネジメントが行われていたはずである。
4
プロジェクトマネジメントにおける標準
プロジェクトマネジメントにおける事実的標準は、PMIによる「PMBOK」となっている。
10個の知識エリア、5のプロセス群、47のプロセスなど詳細にプロジェクトについて学ぶ
ことができる。
また、PMPという資格も発行している。
マネジメントについて、興味がある方は是非。
(ただし、マネジメントは座学ではなく、“実践”であることを忘れないように。)
※ PMBOKでは「200~300人で3~5年かけて行う大規模なプロジェクト」を想定している
5
システム開発とはなにか
1.受託開発
お客様から○○のシステムを作ってほしいと依頼を受けたり、
こちらから提案して、お客様の会社にあったシステムを構築します。
既存のパッケージの組み合わせや、フルスクラッチで開発することもあります。
2.自社製品開発
自社で企画・開発した製品やサービスをお客様に提供します。
6
開発手法
1.ウォーターフォール型開発
日本の多くの企業で採用されている開発手法
要件定義~検収まで各工程を一つずつこなしていく。
※ 前工程に戻らないことを前提、もしくは期待されている
2.アジャイル開発(反復開発)
海外では主流となっている開発手法で、日本ではスタートアップや自社サービスを提供
している勢いの会社では採用されている開発手法。
XPや、Scrumなどの方法論に分けられる。
7
ウォーターフォール開発(WF)
8
要件定義
基本設計
詳細設計
製造
単体テスト
結合テスト
システム
テスト
水の流れのように、上から下へ
V字モデル
9
ウォーターフォールの変形で、各工程間の関係を表す
要件定義
基本設計
詳細設計
製造
単体テスト
結合テスト
システム
テスト
アジャイル開発(Agile)
10
設計
プログラミン
グ
テスト
設計
プログラミン
グ
テスト
設計
プログラミン
グ
テスト
設計~実装までのサイクルを、繰り返していく。
要件定義フェーズ
11
目的
要件定義フェーズではシステムで実現したいことを明確にします。
厳密には要件定義以前の工程に要求定義というものがあり、
その工程でエンドユーザの要求を整理します。
要件定義では要求定義に従って、業務要件やシステム化要件を定義します。
成果物
・要件定義書
・業務フロー/新業務フロー
基本設計フェーズ
12
目的
基本設計フェーズでは、個々の業務をシステムに落とし込み、それに応じた画面や帳票を設計したり、
テーブル定義を行います。
また、ハードウェア/ソフトウェアの構造や実装方針を決定したり、個々の画面のビジネスロジックを検
討します。
成果物
・基本設計書
・画面/帳票設計書
・テーブル定義書
・バッチ設計書
・ネットワーク構成図
詳細設計フェーズ
13
目的
詳細設計フェーズでは基本設計で決めたことを、プログラムレベルに落とし込んでいきます。
システム/関数などのインターフェースの設計や、正常/異常系の処理などを具体的なレベルで設計しま
す。
成果物
・詳細設計書
・ER図
製造(プログラミング)フェーズ
14
目的
製造フェーズでは、詳細設計書を元にして、実際にプログラミングを行います。
成果物
・ソースコード
・実行モジュール
単体テストフェーズ
15
目的
単体テストフェーズでは、実装されたクラス・関数レベルの入出力に、バグの摘出を行います。
この工程以前で、単体テストの方針や、実施方法などを決めておく必要があります。
テスト設計では、同値分割法や境界値分析などを利用して行われることが多いです。
成果物
・単体テスト仕様書
結合テストフェーズ
16
目的
結合テストフェーズでは、各画面や帳票などが正しく出力されているか、
データの入出力に誤りかないか、基本設計を満たしていないところはないか、仕様バグやプログラムの
バグを摘出します。
成果物
・結合テスト仕様書
システムテストフェーズ
17
目的
システムテストでは、可能な限り実際の環境で、実際に利用するデータを用いてテストを実施します。
このテストでは、シナリオを作成して、シナリオに沿ってテストを行うこともあります。
このテストが仕上げ段階になるため、仕様を満たしているか、性能を満たしているか厳しくチェックを
行います。
成果物
・システムテスト仕様書
参考文献
• What is Project Management?(PMI)
https://www.pmi.org/about/learn-about-pmi/what-is-project-management
• 非ウォーターフォール型開発の普及要因と適用領域の拡大に関する調査報告書(IPA)
http://www.ipa.go.jp/sec/softwareengineering/reports/20120611.html
• Kent Beck『エクストリームプログラミング 』オーム社
*本ファイルの無断転用・無断コピーは固くお断りします。
19
el

Contenu connexe

Tendances

設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外
Takuya Sato
 

Tendances (20)

アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
 
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
 
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
 
Redmineの基本と適用事例
Redmineの基本と適用事例Redmineの基本と適用事例
Redmineの基本と適用事例
 
はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版) はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版)
 
モデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudyモデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudy
 
設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外設計と実装で 抑えておきたい サービスクラスと例外
設計と実装で 抑えておきたい サービスクラスと例外
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
業務改善ツールとなったRedmine振り返り
業務改善ツールとなったRedmine振り返り業務改善ツールとなったRedmine振り返り
業務改善ツールとなったRedmine振り返り
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 

Plus de Sawada Makoto (7)

ABC 第2回スライド
ABC 第2回スライドABC 第2回スライド
ABC 第2回スライド
 
AlphabetBootCamp 第1回勉強スライド
AlphabetBootCamp 第1回勉強スライドAlphabetBootCamp 第1回勉強スライド
AlphabetBootCamp 第1回勉強スライド
 
QAサイトをつくってみよう
QAサイトをつくってみようQAサイトをつくってみよう
QAサイトをつくってみよう
 
QAサイトをつくってみよう
QAサイトをつくってみようQAサイトをつくってみよう
QAサイトをつくってみよう
 
PHP+DB
PHP+DBPHP+DB
PHP+DB
 
第4回 データベース
第4回 データベース第4回 データベース
第4回 データベース
 
第4回 PHPのおさらい
第4回 PHPのおさらい第4回 PHPのおさらい
第4回 PHPのおさらい
 

システム開発について