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;
}