Karinoya 學習室

證照 · IT Passport 合格實驗室

開發技術

可以用繁體中文閱讀題目與解說。講義(解說文章)僅有日文版。

查看日文版(含講義) →

第1題 | 需求定義

在系統開發中,需求定義階段所進行的工作是下列何者?

  1. 決定程式內部的模組結構與處理程序
  2. 修正正式上線後發生的故障,並改善功能
  3. 調查使用者的業務,明確系統所需的功能與效能
  4. 1支1支地確認撰寫完成的程式是否照設計書運作
正確答案C. 調查使用者的業務,明確系統所需的功能與效能

需求定義是開發最初的階段,整理使用者的要求,明確系統應具備的功能與效能。決定模組結構與處理程序屬於內部設計,逐支確認程式屬於單元測試,修正上線後的故障屬於維護,皆位於需求定義之後的階段。

第2題 | 外部設計

外部設計(基本設計)所決定的內容,下列何者最適當?

  1. 整合測試所使用測試資料的製作程序
  2. 依照程式碼撰寫規範統一變數與函式的命名方式
  3. 各模組內部的處理程序與演算法
  4. 使用者操作的畫面與輸出報表的版面配置
正確答案D. 使用者操作的畫面與輸出報表的版面配置

外部設計是決定使用者看得見的部分(畫面、報表、資料交換)的階段,因此「畫面與報表的版面配置」正確。內部的處理程序與演算法屬於內部設計,命名規範屬於程式撰寫,測試資料屬於測試階段的工作,皆非外部設計所決定的內容。

第3題 | 設計的關係

說明外部設計與內部設計關係的敘述,下列何者適當?

  1. 把外部設計所決定的使用者可見規格,在內部設計中落實為程式的結構
  2. 先完成內部設計,再根據其結果進行外部設計
  3. 外部設計與內部設計都是決定應與使用者取得共識的畫面、報表版面規格的階段
  4. 外部設計以程式設計師為中心、內部設計以使用者為中心進行
正確答案A. 把外部設計所決定的使用者可見規格,在內部設計中落實為程式的結構

開發是由外部設計進到內部設計,把外部可見的規格具體化為內部的模組結構與處理程序。「先內部再外部」順序顛倒;內部設計並非決定給使用者確認的規格的階段;「程式設計師與使用者」的分工也正好相反,因此其餘皆誤。

第4題 | 階段的順序

實施系統開發各階段的順序,下列何者適當?

  1. 需求定義 → 測試 → 系統設計 → 程式撰寫
  2. 系統設計 → 需求定義 → 測試 → 程式撰寫
  3. 需求定義 → 程式撰寫 → 系統設計 → 測試
  4. 需求定義 → 系統設計 → 程式撰寫 → 測試
正確答案D. 需求定義 → 系統設計 → 程式撰寫 → 測試

開發的順序是:在需求定義決定要做什麼,在系統設計決定實現方法,在程式撰寫階段實際製作,最後以測試確認。其餘三個選項都把設計或測試放在比原本更前面的位置,例如還沒做出來就先檢查,是無法成立的順序。

第5題 | 模組分割

把程式分割成多個模組來設計,其主要目的為何?

  1. 提高各元件的獨立性,使修改、測試與再利用更容易
  2. 減少正式環境所用伺服器的臺數以降低費用
  3. 減少使用者輸入的項目數,讓操作更簡單
  4. 使程式整體的原始碼行數必定能減少
正確答案A. 提高各元件的獨立性,使修改、測試與再利用更容易

模組分割的目的是依功能元件化以提高獨立性,縮小修改的影響範圍,使測試與再利用更容易。即使分割,總行數也不一定會減少,因此第一個選項錯誤;減少輸入項目是畫面設計的話題,減少伺服器臺數是基礎架構的話題,目的都不同。

第6題 | 易用性

提高易用性(usability)的畫面設計例子,下列何者最適當?

  1. 當場提示輸入錯誤,並具體顯示錯誤內容與修正方法
  2. 大量使用專業術語,做成只有熟悉的使用者才會用的畫面
  3. 操作方法不顯示在畫面上,只用另一本手冊說明
  4. 把所有輸入欄位塞進1個畫面,完全不顯示標題與補充說明
正確答案A. 當場提示輸入錯誤,並具體顯示錯誤內容與修正方法

易用性是指使用者能不迷惑、有效率地達成目的的好用程度,當場清楚提示錯誤的做法能提高易用性。其餘三個做法都會增加使用者理解與操作上的負擔,反而降低好用程度。

第7題 | 驗收

關於軟體驗收的說明,下列何者適當?

  1. 正式上線開始後,配合業務變化與使用者的要求改良軟體
  2. 開發者把自己撰寫的程式,以模組或1支程式為單位分別進行測試
  3. 訂購方以營運測試等方式確認交付的軟體,若滿足要求即予以接收
  4. 開發者依照設計書,組建程式的內部結構與處理程序
正確答案C. 訂購方以營運測試等方式確認交付的軟體,若滿足要求即予以接收

軟體驗收是由訂購方以營運測試等確認是否滿足要求後,接收交付物的階段,日文也稱「検収」。第一個選項是單元測試,第三個是程式撰寫,第四個是維護,皆是與驗收不同的階段。

第8題 | 單元測試

關於單元測試的說明,下列何者適當?

  1. 由使用者依實際業務程序使用,確認是否滿足要求
  2. 以模組或1支程式為單位,確認內部處理是否正確運作
  3. 在接近正式的環境中,含效能與負載承受度在內確認整個系統
  4. 組合多個模組,確認彼此之間的資料交換是否正確
正確答案B. 以模組或1支程式為單位,確認內部處理是否正確運作

單元測試是以模組為單位進行的測試,是測試的最初階段。其餘依序是整合測試、系統測試、營運測試(驗收測試)的說明,都在單元測試之後的階段實施。

第9題 | 整合測試

整合測試主要確認的內容是下列何者?

  1. 組合後的模組之間,資料的交換與銜接是否正確
  2. 使用者在實際業務流程中能否順利使用
  3. 1個模組之中的指令與分支是否全部被執行
  4. 開發費用是否控制在當初的預算內
正確答案A. 組合後的模組之間,資料的交換與銜接是否正確

整合測試是把完成單元測試的模組連接起來,確認介面(資料交換)是否正確的階段。「指令與分支全部執行」是單元測試中進行的白箱測試,「實際業務流程」是營運測試的目的,「預算」則是專案成本管理的話題而非測試。

第10題 | 系統測試

系統測試(總合測試)所進行的內容,下列何者最適當?

  1. 在接近正式的環境中以整個系統為對象,除功能外也確認效能與負載承受度
  2. 用自動排版工具整理原始碼的縮排與格式的紊亂
  3. 交付後把使用者提出的要求作為新功能陸續追加
  4. 由負責人彼此把製作中的模組1支1支在桌面上對讀,確認敘述的錯誤
正確答案A. 在接近正式的環境中以整個系統為對象,除功能外也確認效能與負載承受度

系統測試是開發方進行的最後階段測試,從功能、效能、負載等面向確認整個系統是否照要求運作。逐支對讀是審查或單元測試的作業,整理格式是程式撰寫的作業,追加功能是維護中的作業,皆不符合。

第11題 | 營運測試

關於營運測試(驗收測試)的說明,下列何者適當?

  1. 開發者在桌面上對讀程式,互相指出錯誤
  2. 開發者著眼於程式的內部結構,涵蓋指令與分支進行確認
  3. 開發者確認整合後模組之間的銜接
  4. 使用者依照實際業務流程使用,確認是否滿足要求
正確答案D. 使用者依照實際業務流程使用,確認是否滿足要求

營運測試由使用者(訂購方)主導,是確認能否照實際業務程序使用的最終測試。前三個依序是白箱測試、整合測試、程式碼審查,都是開發方進行的作業,主體與目的皆不同。

第12題 | V字模型

在V字模型中,與外部設計(基本設計)相對應的測試階段是下列何者?

  1. 單元測試
  2. 整合測試
  3. 系統測試
  4. 營運測試
正確答案C. 系統測試

V字模型中,需求定義對應營運測試、外部設計對應系統測試、內部設計對應整合測試、程式撰寫對應單元測試。因此與外部設計對應的是系統測試;單元測試對應的是程式撰寫,整合測試對應內部設計,營運測試對應需求定義。

第13題 | 白箱測試

關於白箱測試的說明,下列何者適當?

  1. 灌入與正式相同數量的資料,量測處理時間是否在基準之內
  2. 不考慮程式的內部結構,只著眼於規格書所示輸入與輸出的關係進行測試
  3. 著眼於程式的內部結構,涵蓋指令與分支被執行的路徑進行測試
  4. 請使用者操作試作品,聽取要求並反映到需求中
正確答案C. 著眼於程式的內部結構,涵蓋指令與分支被執行的路徑進行測試

白箱測試是檢視程式的內部(控制結構),設計出涵蓋指令與分支的測試案例的方法,主要用於單元測試。其餘依序是黑箱測試、雛型法(prototyping)、效能測試的說明。

第14題 | 黑箱測試

黑箱測試中測試案例的設計方式,下列何者適當?

  1. 機械式地按原始碼行數的比例分配並準備測試案例
  2. 選擇路徑,使所有分支至少被執行1次
  3. 逐行確認開發者所寫註解的敘述是否正確
  4. 把規格書的輸入條件依意義的群組劃分,選取其代表值與交界的值
正確答案D. 把規格書的輸入條件依意義的群組劃分,選取其代表值與交界的值

黑箱測試不看內部結構、依規格進行,以等價分割與邊界值分析選出輸入的代表值與邊界值。涵蓋分支是著眼於內部結構的白箱測試;行數不能作為測試案例數量的依據;確認註解是程式碼審查的作業。

第15題 | 回歸測試

進行回歸測試(regression test)的目的是下列何者?

  1. 確認因修改程式,修改前原本正常運作的地方是否產生了缺陷
  2. 確認受過研習的使用者已正確學會變更後的新操作方式
  3. 確認具有足以承受正式使用的處理效能
  4. 只以新增功能是否照規格書運作為對象,僅就追加的部分進行確認
正確答案A. 確認因修改程式,修改前原本正常運作的地方是否產生了缺陷

回歸測試是確認修改或功能追加的影響,是否使既有原本正常的功能損壞的測試。只測追加部分是針對新增功能本身的測試,效能的確認是效能測試,操作的學習屬於教育訓練的確認,皆非回歸測試的目的。

第16題 | 審查技法

軟體的審查技法中,關於檢視(inspection)的說明,下列何者適當?

  1. 由主持人(moderator)主辦,事先訂定參加者的角色與程序,正式地檢出成果物的缺陷
  2. 實際執行程式,確認輸入所對應的輸出是否符合規格
  3. 2人1組使用1台終端機,輪流交替撰寫程式
  4. 以作成者為中心向相關人員依序說明成果物的內容,當場非正式地互相指出錯誤與疑點
正確答案A. 由主持人(moderator)主辦,事先訂定參加者的角色與程序,正式地檢出成果物的缺陷

檢視(inspection)由主持人主導進行,訂定角色與程序並留下紀錄,是正式的審查。第二個選項是非正式進行的走查(walkthrough),第三個是實際執行的測試,第四個是XP的結對程式設計,皆與檢視不同。

第17題 | 瀑布模型

瀑布模型的特徵,下列何者適當?

  1. 製作試作品並取得使用者的評價,逐步確定需求
  2. 依序推進各階段,原則上不返回前一階段地進行開發
  3. 反覆進行短週期的迭代,每次迭代都提供可運作的軟體
  4. 開發人員與營運人員一體協作,藉自動化頻繁地發布
正確答案B. 依序推進各階段,原則上不返回前一階段地進行開發

瀑布模型由上游往下游依序推進各階段,以不返回前一階段為前提,一邊核可成果物一邊開發。其餘依序是敏捷開發、雛型法模型、DevOps的說明,都是不同的思維。

第18題 | 雛型法

採用雛型法(prototyping)模型的主要優點是下列何者?

  1. 試作品可以代替設計書,因此完全不需要文件化的作業
  2. 在早期階段就請使用者確認試作品,可減少因需求偏差或認知不一致造成的返工
  3. 因為使用者已確認過試作品,可保證上線開始後不會發生規格變更
  4. 藉由製作試作品,開發的總工時必定減少,費用變成一半
正確答案B. 在早期階段就請使用者確認試作品,可減少因需求偏差或認知不一致造成的返工

雛型法是讓使用者及早評估試作品,防止因需求誤解造成大幅返工的手法。即使製作試作品,設計書仍然必要;也沒有工時必定減半的保證,更不能保證不發生變更,因此其餘選項皆誤。

第19題 | 螺旋模型

關於螺旋模型的說明,下列何者適當?

  1. 以由上游到下游的1次流程完成全部功能,完全不返回前一階段、也不中途重新檢視
  2. 省略需求定義階段,先做出可動的東西之後再把規格文件化
  3. 把開發的全部階段委託給外部,進度只以每月的報告管理
  4. 把系統分成數個部分,反覆進行設計、開發、評估這一連串作業,螺旋式地提高完成度
正確答案D. 把系統分成數個部分,反覆進行設計、開發、評估這一連串作業,螺旋式地提高完成度

螺旋模型是把系統分成部分,反覆進行從設計到評估的循環,一邊降低風險一邊提高完成度的開發模型。第一個選項是瀑布模型的思維,其餘兩個與螺旋模型的定義無關。

第20題 | 敏捷開發

敏捷開發的思維,下列何者最適當?

  1. 使用者只在需求定義與驗收時參與,開發期間不介入
  2. 一開始就確定所有規格,之後的變更原則上不予承認
  3. 以短的迭代做出可運作的軟體,一邊採納使用者的意見一邊因應變化
  4. 把完美整備詳細的設計文件,看得比儘早展示可運作的軟體更優先
正確答案C. 以短的迭代做出可運作的軟體,一邊採納使用者的意見一邊因應變化

敏捷開發反覆進行短的迭代,重視可運作的軟體與對變化的因應,與使用者協調合作地推進。其餘三者都是瀑布式作法的特徵,與敏捷的思維正好相反。

第21題 | 模型的選擇

需求尚未確定、想一邊觀察使用者的反應一邊以短週期追加功能的系統,其開發方針以下列何者最適當?

  1. 測試留到最後一次實施,在那之前不做動作確認
  2. 需求定義書核可之前不著手開發,核可之後一概不接受變更
  3. 每個短迭代發布可運作的功能,把使用者的評價反映到下一個迭代
  4. 確定全部功能的規格後一次開發,完成時才第一次給使用者看
正確答案C. 每個短迭代發布可運作的功能,把使用者的評價反映到下一個迭代

需求容易改變的案件,適合每次迭代交出可動的成果並反映評價的敏捷式作法。「一次開發」與「核可後不接受變更」是瀑布式,不耐變更;把測試全部留到最後則缺陷發現得晚、返工變大,都不適合這種情況。

第22題 | RAD

關於RAD(Rapid Application Development)的說明,下列何者適當?

  1. 開發人員與營運人員密切合作,藉由自動化謀求持續改善的思維
  2. 活用少人數的團隊與開發支援工具,在短期間內開發系統的手法
  3. 組合多個公開的服務來做出新服務的手法
  4. 解析既有的程式,導出其規格與設計資訊的手法
正確答案B. 活用少人數的團隊與開發支援工具,在短期間內開發系統的手法

RAD是活用少人數的團隊與開發支援工具來縮短開發期間的手法。其餘依序是逆向工程、DevOps、混搭(mashup)的說明,皆是不同的用語。

第23題 | 結對程式設計

關於結對程式設計(pair programming)的說明,下列何者適當?

  1. 2個團隊各自分別開發相同的功能,完成後採用做得較好的一方
  2. 2人1組使用1台終端機,一人撰寫程式碼,另一人邊確認、建議邊開發
  3. 請2位使用者操作相同的畫面,比較好用的程度
  4. 同時實施2種測試以更早發現缺陷
正確答案B. 2人1組使用1台終端機,一人撰寫程式碼,另一人邊確認、建議邊開發

結對程式設計是XP的代表性實踐,2人共同撰寫1份程式碼,當場審查以提高品質。其餘依序是競爭式的開發方式、測試的實施方式、易用性的評估,皆不符合。

第24題 | TDD

測試驅動開發(TDD)的進行方式,下列何者適當?

  1. 先撰寫測試碼,再實作程式使其能夠通過
  2. 所有實作完成之後,才第一次擬定測試的計畫
  3. 測試只交給外部的專門業者,開發者不進行測試
  4. 正式上線之後接到使用者的故障報告,才第一次撰寫測試
正確答案A. 先撰寫測試碼,再實作程式使其能夠通過

測試驅動開發是先撰寫測試,進行能通過測試的最小限度實作,並反覆改善的手法。其餘三者的測試都落在實作或上線之後,違反「由測試引導開發」這一TDD的思維。

第25題 | 重構

關於重構(refactoring)的說明,下列何者適當?

  1. 不改變由外部所見的動作,把程式的內部結構整理得更容易理解
  2. 把營運中的系統遷移到別的資料中心
  3. 因應使用者提出的要求,為既有的程式追加新功能
  4. 為了提升處理速度而增加伺服器的臺數或記憶體
正確答案A. 不改變由外部所見的動作,把程式的內部結構整理得更容易理解

重構是在保持外部可見行為不變的情況下整理程式碼的內部結構,使日後的修改更容易的作業。其餘依序是功能追加、硬體的擴充、設施的遷移,皆非內部結構的改善。

第26題 | 產品負責人

Scrum中產品負責人(Product Owner)的職責是下列何者?

  1. 對產品待辦清單的內容與優先順序負責,使成果物的價值最大化
  2. 對團隊成員進行人事考核,並逐一分派各人負責的作業
  3. 記錄每日的進度,向經營層報告預算的超支
  4. 支援Scrum的規則被正確遵守,排除妨礙開發的問題
正確答案A. 對產品待辦清單的內容與優先順序負責,使成果物的價值最大化

產品負責人是對「要做什麼」的優先順序負責的角色。支援規則遵守與排除障礙是Scrum Master的職責;人事考核在Scrum中沒有定義,作業分擔由開發團隊自行決定;每日記錄與預算報告也不是被定義的職責。

第27題 | Scrum Master

Scrum中Scrum Master的職責,下列何者適當?

  1. 支援Scrum被正確地實踐,排除妨礙團隊的問題
  2. 與顧客進行價格交涉,決定合約條件
  3. 對開發團隊的每一個人下達作業指示,斥責並管理進度落後的成員
  4. 決定需求的優先順序,確定要發布的功能
正確答案A. 支援Scrum被正確地實踐,排除妨礙團隊的問題

Scrum Master是支援團隊實踐Scrum、排除障礙的角色。不進行第一個選項那樣的指揮命令;價格交涉是業務或管理部門的工作;決定優先順序是產品負責人的職責,皆非Scrum Master的職務。

第28題 | Scrum用語

Scrum中關於每日站會(Daily Scrum)的說明,下列何者適當?

  1. 開發團隊每天短時間集合,共享進度與問題點,確認當天的作業
  2. 在衝刺(Sprint)結束時,把該次完成的成果展示給相關人員,取得評價與意見
  3. 把想實現的需求排出優先順序,整理成一覽清單
  4. 回顧團隊的工作方式,決定接下來的改善方案
正確答案A. 開發團隊每天短時間集合,共享進度與問題點,確認當天的作業

每日站會是每天約15分鐘進行的短會議,目的是共享進度與及早發現障礙。其餘依序是衝刺檢視會議(Sprint Review)、產品待辦清單(Product Backlog)、衝刺回顧會議(Sprint Retrospective)的說明,實施的時期與目的都不同。

第29題 | CI/CD

關於CI/CD(持續整合/持續交付)的說明,下列何者適當?

  1. 營運人員以手工把檔案複製到正式環境,逐一反映變更
  2. 在發布前夕把所有變更一次整批整合,到那時才第一次整批只實施1次測試
  3. 中斷新的開發,只推進既有系統規格書的整備
  4. 頻繁整合變更後的原始碼並自動執行建置與測試,到發布為止的流程也自動化
正確答案D. 頻繁整合變更後的原始碼並自動執行建置與測試,到發布為止的流程也自動化

CI/CD是頻繁整合小的變更,把建置、測試、發布自動化,以提高品質與交付速度的機制。整批一次整合是傳統作法,問題發現得晚;手工複製沒有自動化;停止開發則開發活動本身無法推進,皆為錯誤。

第30題 | 逆向工程

屬於逆向工程(reverse engineering)的是下列何者?

  1. 利用只需在畫面上配置元件即可做出應用程式的開發環境
  2. 根據設計書撰寫程式
  3. 組合多個公開的服務來做出新的服務
  4. 解析既有的程式,導出其規格與設計資訊
正確答案D. 解析既有的程式,導出其規格與設計資訊

逆向工程是指解析既有的軟體,取出其規格與設計資訊。第一個是由設計往實作推進的一般(正向)開發,第二個是混搭(mashup),第四個是無程式碼/低程式碼開發的說明。

練習:作答本頁的題目

這是隨機出題的練習工具(在啟用 JavaScript 時運作)。即使不使用此工具,也能閱讀上方的所有題目與解說。

※ 解說是供學習用的資訊。考試的出題範圍與制度每年可能變動,請務必確認主辦機構的官方公告。

本頁面譯自日文原文。若譯文與原文內容不一致,以日文版為準。 查看日文原文