プロジェクトマネジメン(プロジェクト計画)

プロジェクト計画(統合マネジメント)

  • 近代的品質管理のコンセプト:DTRTRTFT
    1. Do The Right Thing Right The First Time
    2. 最初から正しく行えばより簡単により低コストでできる
  • ITプロジェクトマネジメントの技術体系
    1. 計画
    2. ラッキングとコントロール
    3. リスク管理
    4. 契約管理
  • ITプロジェクト計画
    1. プロジェクト目標明確化
      1. 対象システムとその目標
      2. コミットメント(約束事項)
  • スコープ(範囲と内容)
  1. ディペンデンシー(他に依存する事項)
  1. 問題の最適化
  2. 見積もりとリスクの定量化
  3. WBSとスケジューリング
  4. 文章化計画
  5. 組織要員計画
  6. 教育計画
  7. 品質管理とテスト計画
  • RAD(Rapid Application Development):
    1. 少数精鋭チームで開発、エンドユーザーが前段階に参画
    2. タイムボックス開発:小部分に分割し、その1つ1つを期間を限定して開発
  1. インクリメンタル(増殖型開発)
  2. イタラティブ(繰り返し型開発)
  3. クリーンルーム
  • スパイラル
  • ラウンドトリップ(オブジェクト指向でのスパイラル)
    1. 大規模開発全体にこれを闇雲適用すると、いつまでも開発が収束せずに失敗するケースが多いので十分な注意が必要
  1. RUP(Rational Unified Process):繰り返し型、ユースケース駆動、コンポーネント指向
  2. アジャイルソフトウェア開発:インクリメンタル、人間重視、XP
  3. 4つのフェーズ:要求計画、ユーザー設計、製作、カットオーバー
  • 強力な自動化ツール
  • プロトタイプの活用
  • 開発方針作成の手順
    1. 開発方法論と工程の定義を行い、開発工程全体を管理可能な適切な局面へと分割する
    2. 各局面に要求される入出力成果物、開始完了基準を定義する。
    3. 開発全体を通してどのように品質を作りこんでいくかを検討し、品質管理計画としてまとめる
  • 開発工程の決め方
    1. 全体の大きな対象(人数>=7)の時は、全体の整合性をとるための「要件定義」局面を、すべての工程の最初におく。
    2. 手作業によるプログラミングが入らない方法を検討し選定する。
    3. 要件定義において、DFD,ERDを作成する
    4. 外部設計以降を非局面できるのは、つぎのいずれかである。
      1. 小規模、要員少、プログラミング極小
  • ソフトウェア開発見積もり手法
    1. ステップ数に基づく方法
    2. Dotyモデル(小規模向け)
    3. COCOMOモデル(中大規模)
      1. 組織モード
      2. 半組み込みモード
  • 組み込みモード
  1. Putnamモデル(大、特大規模)
  2. ファンクションポイント法
    1. FP=A*C(A:調整前ファンクションポイントC:システム特性係数)
    2. システム特性係数(C)=0.65+(0.01*B)
  1. PERT
  2. マスタースケジュールの作成手順
  1. WBS(Work Breakdown Structure):プロジェクトに必要な作業を、計画の進展に応じてブレークダウン
    1. 具体的な作業スケジューリングと進捗管理が可能な単位まで詳細化
    2. WBSは、当初は大まかなタスク定義でよいが、当該作業の着手時点までには、極力5人日以内のタスクにまでブレークダウン
  • WBS作成の目的:
    1. プロジェクトの作業構成、範囲作業責任を明確化
    2. コスト見積もりとコスト分析のための基本データを提供
    3. スケジューリングと実績把握を容易化
  • 組織計画:
    1. 文書化計画
    2. 組織計画:
      1. 組織構造
        1. 機能型組織
        2. プロジェクト組織
        3. マトリックス組織複合型組織:
          1. プロジェクトマネジャーはプロジェクト達成の権限と責任を割り当てられるが、プロジェクトの実行は既存組織形態に依存
          2. 専任のプロジェクトマネージャーと既存機能組織に属したメンバー構成
        4. プロジェクトの組織計画:
          1. プロジェクト組織内における役割、責任、報告関係を識別し、それを文書化して任命するプロセス
        5. 要員計画
        6. 教育計画

プロジェクトマネジメント(概説)

プロジェクトマネジメント:

  • PMI(Project Management Institute):米国ペンシルバニア州アッパーダービーに本部を置くプロジェクトマネジメント技術の研究、情報交換、啓蒙を目的とした団体。
  • PMBOK(Project Management Body of Knowledge):PMIが作成したプロジェクトマネジメント知識体系
  • プロジェクトとは
    1. 独自の成果物やサービスを創出するための有期活動。
    2. 特性:
      1. 有期性:プロジェクトには明確な開始時点と終結時典がある。
      2. 成果物やサービスの独自性:請負では「成果物特性の段階的な具体化」と「プロジェクトスコープの定義」との整合性が肝要
    3. 定常活動との区別:
      1. 定常活動:継続性反復性
    4. 特徴:
      1. 人により遂行される
      2. 使用資源の制約がある
  • 計画され遂行され管理される
  • プロジェクトマネジメントとは
    1. PMBOK GUIDE定義:「プロジェクトの事業主体やほかのステークホルダー(利害関係者)の当該プロジェクトに対する要求事項や期待を充足する、またはそれ以上の成果を上げるために、最適な知識、技術、ツールそして技法を適用すること」
    2. 現代の定義:
      1. プロジェクト:特定の目的遂行のために、定まった期間、資源で実施される仕事。成果物は独自性を持ち、仕事全体反復性がない
      2. プロジェクトマネジメント:関係者のニーズと期待を満たすため、プロジェクト活動に知識、スキル、ツール、技法を適用すること。
  • プロジェクトマネジメントの知識エリア:
    1. 統合マネジメント
    2. スコープマネジメント
    3. タイムマネジメント
    4. コストマネジメント
    5. 品質マネジメント
    6. 人的資源マネジメント
    7. コミュニケーションマネジメント
    8. リスクマネジメント
    9. 調達マネジメント
    10. ステークホルダマネジメント
  • PMの4大要素:
    1. Q:Quality
    2. C:Cost
    3. D:Delivery
    4. R:Risk
  • 主な一般マネジメントのスキル
    1. リーダーシップ
    2. コミュニケーション力
    3. ネゴシエーション力(交渉力)
    4. 問題解決力
    5. 組織に対する影響力

入力数字とその種類を表示する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;
}