lawpalyer logo

資訊處理 104 年系統專案管理考古題

民國 104 年(2015)資訊處理「系統專案管理」考試題目,共 4 題 | 資料來源:考選部

0 題選擇題 + 4 題申論題

V 模型(The V-Model)為常見的系統開發模型之一,請繪圖並說明其特性,並從系 統分析師的角度來探討其優、缺點。(25 分)
目前國內外通常採用軟體能力成熟度模式整合(Capability Maturity Model Integration, 以下簡稱CMMI)或是ISO 9000 以為企業本身產品(或軟體)開發能力評估與品管 標準。而六個標準差(Six Sigma)則是目前工業界盛行的一種品管檢測方式,請說明 CMMI 與ISO 9000 之異同點。另請探討並繪圖說明CMMI 階段式表述(Staged Representation)與六個標準差之間的關係。(25 分)
在資訊系統開發過程中,專案管理者常會因應客戶端的要求而被迫縮短開發時間 而將軟體提前釋放,而此種狀況為開發人員及專案管理者所經常面臨到的嚴峻 問題與挑戰。根據國內/外研究報告指出資訊系統開發時程的壓縮有其極限性 ,事實上管理者通常無法任意藉由增加開發人員與添購更多的軟、硬體設備來 達到時程壓縮的目的。Putnam 提出了軟體方程式(Software Equation),其定 義為: [ ] ) / 1( /
3 333 .0 t P B LOC E × × = ,其中E 為開發心力(Development Effort,單 位為人月或人年)、t 為專案執行時間、B 為特別技能因子、P 為生產力參數、LOC 為軟體大小(單位為程式碼行數)。請透過軟體方程式來舉例說明開發時程壓縮, 將對開發心力造成何種程度的影響。另從實務面來看,合理且可行的時程壓縮極限 應為多少?請敘述其可能原因為何?(20 分) 四、針對下列八支程式模組: 請完成下列表格並明確指出這些程式各具有何種內聚力(Cohesion)及說明其原 因?在此內聚力型態(Cohesion Types)須從最差(Worst)至最佳(Best)依序 正確排列。另說明欄中若無任何具體說明或解釋逕以零分計算。(18 分) 內聚力型態 所對應之程式模組 (請以P1, P2,…等標示) 說明 …… …… …… 請針對該表格中最差(即Worst)內聚力型態之程式模組提出具體改進方法。(6 分) 假設吾人定義內聚力比率(Cohesion Ratio)公式如下,請據此計算出該批程式模 組之內聚力比率。(6 分) modules program of number Total cohesion functional having modules program of Number Ratio Cohesion = (請接第二頁) 104年公務人員高等考試三級考試試題 全四頁 第二頁 //P1 public class P1 { public void count1(int m, int n, int p) { int counter1, counter2, counter3; counter1 = 1; cusum = 0; while (counter1 <= m) { cusum += counter1; counter1 += 1; } counter2 = 1; product = 1; while (counter2 <= n) { product *= counter2; counter2 += 1; } counter3 = 1; sum = 0; while (counter3 <= p) { sum += counter3; counter3 += 1; } mean = sum / p; } public int getSum() { return sum; } public int getProduct() { return product; } public int getCusum() { return cusum; } public int getMean() { return mean; } private int sum, product, cusum, mean; } //P2 public class P2 { public void count2(int n) { int counter; counter = 1; cusum = 0; product = 1; while (counter <= n) { cusum += counter; product *= counter; counter += 1; } } public int getCusum() { return cusum; } public int getProduct() { return product; } private int cusum, product; } //P3 public class P3 { public void count3(int n) { int counter; counter = 1; cusum = 0; while (counter <= n) { cusum += counter; counter += 1; } mean = cusum / n; } public int getCusum() { return cusum; } public int getMean() { return mean; } private int cusum, mean; } (請接第三頁) 104年公務人員高等考試三級考試試題 全四頁 第三頁 //P4 public class P4 { public void count4(int n) { int counter; counter = 1; cusum = 0; while (counter <= n) { cusum += counter; counter += 1; } } public int getCusum() { return cusum; } private int cusum; } //P5 public class P5 { public void count5(int first,int second) { int intermediate; intermediate = first; result_first = second; result_second = intermediate; } public int getResult_first() { return result_first; } public int getResult_second() { return result_second; } private int result_first, result_second; } //P6 public class P6 { public void count6(int n,int product) { int counter1, counter2, counter3, counter4; counter1 = 1; int a[] = new int[n]; while (counter1 <= n) { a[counter1-1] = counter1; counter1 += 1; } counter2 = 0; cusum = 0; while (counter2 < n) { cusum += a[counter2]; counter2 += 1; } counter3 = 0; prod = 1; while (counter3 < n) { prod = prod* product * a[counter3]; counter3 += 1; } counter4 = 0; sum = 0; while (counter4 < n) { sum += a[counter4]; counter4 += 1; } mean = sum / n; } public int getCusum() { return cusum; } public int getProd() { return prod; } public int getSum() { return sum; } public int getMean() { return mean; } private int cusum, prod, sum, mean; } (請接第四頁) 104年公務人員高等考試三級考試試題 全四頁 第四頁 //P7 public class P7 { public void count7(int[] tmp, int n) { int counter1, counter2, temp; counter1 = 0; a = tmp; System.out.print("\n"); for (counter1 = 1; counter1 < n; counter1++) { for (counter2= 0; counter2 < counter1; counter2++) { if (a[counter1] <a[counter2]) { temp = a[counter1]; a[counter1] = a[counter2]; a[counter2] = temp; } } } } public int[] geta() { return a; } private int[] a; } //P8 public class P8 { public void count8(int m, int n, int p, int flag) { int counter1, counter2, counter3; cusum = 0; product = 1; sum = 0; mean = 0; if (flag == 1) { counter1 = 1; cusum = 0; while (counter1 <= m) { cusum += counter1; counter1 += 1; } } else if (flag == 2) { counter2 = 1; product = 1; while (counter2 <= n) { product *= counter2; counter2 += 1; } } else { counter3 = 1; sum = 0; while (counter3 <= p) { sum += counter3; counter3 += 1; } } mean = sum / p; } public int getCusum() { return cusum; } public int getProduct() { return product; } public int getSum() { return sum; } public int getMean() { return mean; } private int cusum, product, sum, mean; }