プロジェクトマネジメン(プロジェクト計画)
プロジェクト計画(統合マネジメント)
- 近代的品質管理のコンセプト:DTRTRTFT
- Do The Right Thing Right The First Time
- 最初から正しく行えばより簡単により低コストでできる
- ITプロジェクトマネジメントの技術体系
- ITプロジェクト計画
- プロジェクト目標明確化
- 対象システムとその目標
- コミットメント(約束事項)
- プロジェクト目標明確化
- スコープ(範囲と内容)
- ディペンデンシー(他に依存する事項)
- 問題の最適化
- 見積もりとリスクの定量化
- WBSとスケジューリング
- 文章化計画
- 組織要員計画
- 教育計画
- 品質管理とテスト計画
- 開発工程を決める
- 開発工程の主な種類
- ウォーターフォール
- プロトタイピング
- 開発工程の主な種類
- RAD(Rapid Application Development):
- 少数精鋭チームで開発、エンドユーザーが前段階に参画
- タイムボックス開発:小部分に分割し、その1つ1つを期間を限定して開発
- インクリメンタル(増殖型開発)
- イタラティブ(繰り返し型開発)
- クリーンルーム
- スパイラル
- ラウンドトリップ(オブジェクト指向でのスパイラル)
- 大規模開発全体にこれを闇雲適用すると、いつまでも開発が収束せずに失敗するケースが多いので十分な注意が必要
- RUP(Rational Unified Process):繰り返し型、ユースケース駆動、コンポーネント指向
- アジャイルソフトウェア開発:インクリメンタル、人間重視、XP
- 4つのフェーズ:要求計画、ユーザー設計、製作、カットオーバー
- 強力な自動化ツール
- プロトタイプの活用
- 開発方針作成の手順
- 開発方法論と工程の定義を行い、開発工程全体を管理可能な適切な局面へと分割する
- 各局面に要求される入出力成果物、開始完了基準を定義する。
- 開発全体を通してどのように品質を作りこんでいくかを検討し、品質管理計画としてまとめる
- 開発工程の決め方
- 全体の大きな対象(人数>=7)の時は、全体の整合性をとるための「要件定義」局面を、すべての工程の最初におく。
- 手作業によるプログラミングが入らない方法を検討し選定する。
- 要件定義において、DFD,ERDを作成する
- 外部設計以降を非局面できるのは、つぎのいずれかである。
- 小規模、要員少、プログラミング極小
- ソフトウェア開発見積もり手法
- ステップ数に基づく方法
- Dotyモデル(小規模向け)
- COCOMOモデル(中大規模)
- 組織モード
- 半組み込みモード
- 組み込みモード
- Putnamモデル(大、特大規模)
- ファンクションポイント法
- FP=A*C(A:調整前ファンクションポイントC:システム特性係数)
- システム特性係数(C)=0.65+(0.01*B)
- マイルストーンチャート
- PERT
- マスタースケジュールの作成手順
- WBS(Work Breakdown Structure):プロジェクトに必要な作業を、計画の進展に応じてブレークダウン
プロジェクトマネジメント(概説)
プロジェクトマネジメント:
- PMI(Project Management Institute):米国ペンシルバニア州アッパーダービーに本部を置くプロジェクトマネジメント技術の研究、情報交換、啓蒙を目的とした団体。
- PMBOK(Project Management Body of Knowledge):PMIが作成したプロジェクトマネジメント知識体系
- プロジェクトとは
- 独自の成果物やサービスを創出するための有期活動。
- 特性:
- 有期性:プロジェクトには明確な開始時点と終結時典がある。
- 成果物やサービスの独自性:請負では「成果物特性の段階的な具体化」と「プロジェクトスコープの定義」との整合性が肝要
- 定常活動との区別:
- 定常活動:継続性反復性
- 特徴:
- 人により遂行される
- 使用資源の制約がある
- 計画され遂行され管理される
- プロジェクトマネジメントとは
入力数字とその種類を表示するJAVA,C++
1から10までの乱数を10回発生させ、その結果を表示し、そのあとに、そこで出力された文字の種類を表示するプログラム
JAVA:
import java.util.*; public class Main { public static void main(String[] args) { Set<Integer> numSet=new HashSet<>(); ArrayList<Integer> numList=new ArrayList<>(); for(int i=0;i<10;i++){ Random ran=new Random(); int n=ran.nextInt(10); numSet.add(n); numList.add(n); } Iterator<Integer> litr=numList.iterator(); while(litr.hasNext()){ System.out.print(litr.next()); } System.out.println(); Iterator<Integer> itr=numSet.iterator(); while(itr.hasNext()){ System.out.print(itr.next()); } } }
C++:
#include "stdafx.h" #include<iostream> #include<set> #include<list> #include<random> using namespace std; int main() { set<int> numset; list<int> numlist; for (int i = 0; i < 10; i++) { std::random_device rnd; std::mt19937 mt(rnd());//mt19937型オブジェクトをデフォルト構築した場合、10000番目に生成される擬似乱数の値は4123659995であること。 uniform_int_distribution<int> dice(0,10);//一様分布生成器 uniform distribution //std::uniform_real_distribution<double> score(0.0,10.0);->0.5,5.3..... int n = dice(mt); numset.insert(n); numlist.push_back(n); } for (list<int>::iterator itr = numlist.begin(); itr != numlist.end(); itr++) { cout << *itr ; } cout << endl; for (set<int>::iterator itr = numset.begin(); itr != numset.end(); itr++) { cout << *itr; } cout << endl; return 0; }