SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

パーソナルソフトウェアプロセス(PSP)入門

パーソナルソフトウェアプロセス(PSP)実践講座
~第1日 自分の生産性・品質を算出する

パーソナルソフトウェアプロセス(PSP)入門 (1)


ダウンロード 記録用チャート (8.9 KB)

7: 平均値と標準偏差の算出例

PSPday1.java
//----------------------------------------------
// Program Assignment: PSPday1
// Name:               Shinobu Minamikawa
// Date:               03/12/2007
// Description:        read two types of values and
//                     calculating means and Standard Deviation:
// To compile:         javac PSP1P1Pa.java
// To run:       java PSP1P1Pa PSP1PIn.txt
//----------------------------------------------
import java.io.*;

class PSP1P1Pa {
  public static void main(String args[]) {
    try {
      //--------------------------------------------
      // FileReader object
      FileReader fr = new FileReader(args[0]);
      // BufferedReader object
      BufferedReader br = new BufferedReader(fr);
      // StreamTokenizer object
      StreamTokenizer st = new StreamTokenizer(br);
      // "comma" as a blank character
      st.whitespaceChars(',', ',');
      //--------------------------------------------
      // Variables

      double size_array[] = new double[100];
      double size_SD_array[] = new double[100];
      double size = 0.0;
      double total_size = 0.0;
      double mean_size = 0.0;
      double total_SD_size = 0.0;
      double SD_size = 0.0;
      double hours_array[] = new double[100];
      double hours_SD_array[] = new double[100];
      double hours = 0.0;
      double total_hours = 0.0;
      double mean_hours = 0.0;
      double total_SD_hours = 0.0;
      double SD_hours = 0.0;

      int n = 0; // the number of the items
      boolean is_size = true;
      //--------------------------------------------
      // Main Process
      //--------------------------------------------
      //--------------------------------------------
      // reading the input table into arrays
      while(st.nextToken() != StreamTokenizer.TT_EOF) {
        switch(st.ttype) {
          case StreamTokenizer.TT_WORD:
            break;
          case StreamTokenizer.TT_NUMBER:
            if (is_size)
              {
                size_array[n] = st.nval;
                is_size = false;
              }
            else
              {
                hours_array[n] = st.nval;
                is_size = true;
                n += 1;
              };
            break;
          default:
             ;
        }
      }
    //-----------------------------------------------
    //calculating_1: mean
     for(int num = 0; num < n; num = num +1)
    {
      total_size = total_size + size_array[num];
      total_hours = total_hours + hours_array[num];
    };
      mean_size = total_size / n;
      mean_hours = total_hours / n;
    //-----------------------------------------------
    //calculating_2: Standard Deviation
    //-----------------------------------------------
     //--------------------------------------------
    for(int num = 0; num < n; num = num +1){
        size_SD_array[num] = size_array[num] - mean_size;
        hours_SD_array[num] = hours_array[num] -mean_hours;
    };
     //--------------------------------------------
    for(int num = 0; num < n; num = num +1){
        size_SD_array[num] = size_SD_array[num] * size_SD_array[num];
        hours_SD_array[num] = hours_SD_array[num] * hours_SD_array[num];
    };
     //--------------------------------------------
     for(int num = 0; num < n; num = num +1) {
        total_SD_size = total_SD_size + size_SD_array[num];
        total_SD_hours = total_SD_hours + hours_SD_array[num];
    };
    SD_size = total_SD_size / (n-1);
    SD_size = Math.sqrt(SD_size);
    SD_hours = total_SD_hours / (n-1);
    SD_hours = Math.sqrt(SD_hours);

    float fnum1 = (float)mean_size;
    float fnum2 = (float)mean_hours;
    float fnum3 = (float)SD_size;
    float fnum4 = (float)SD_hours;
     //--------------------------------------------
      //printing the result
     //--------------------------------------------
    System.out.println("Mean" +  "  " + "Std. Dev");
    System.out.println(fnum1 + " " + fnum3);
    System.out.println(fnum2 + " " + fnum4);
    //-----------------------------------------------
    //close this process
    //-----------------------------------------------
    fr.close();
}
    catch(Exception e)
    {
      System.out.println("Exception:" + e);
    }
  }
}

次のページ
8: よく出てくる質問

修正履歴

この記事は参考になりましたか?

パーソナルソフトウェアプロセス(PSP)入門連載記事一覧
この記事の著者

南川 しのぶ(ミナミカワ シノブ)

IT技術、IT経営のコンサルタント。主にシステム開発コンサルティング活動の他、外部セミナー、顧客先企業の内部セミナーの講師も務める。カーネギーメロン大学のソフトウェア工学研究所(Software Engineering Institute)認定PSPソフトウェア開発者(SEI-Certified P...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3937 2009/11/26 10:22

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー