第一章
Q&A
1.何謂軟體?
包含A.電腦程式以及B.相關文件、C.設計雛型和D.使用者操作手冊
為了特定使用者或是一般市場所開發的電腦產品
軟體可分為A.一般性與B.客製化性
一般性:發展並販賣給大眾使用者之軟體,例如Office
客製化性:為了單一的特定使用者,根據他們提出的詳細計畫書而開發的軟體
2.何謂軟體工程?
軟體工程是訓練與生產軟體方面有關的一門工程學
3.軟體工程與電腦科學的差異?
電腦科學理論與基礎有關;軟體工程包含發展實用性與現實可用的軟體
電腦科學理論仍然不足以充當一個完整的軟體工程基礎
4.軟體工程與系統工程的差異?
系統工程包含基本電腦系統方面和發展包括軟體、硬體與步驟工程
軟體工程包含電腦處理部分,包括發展軟體的基礎建設、控制、運用與系統資料庫
5.何謂軟體流程?
軟體開發或演進的一系列活動。包括↓
A.規格制定:系統是用來做什麼的與它的發展限制
B.開發:軟體系統的製作
C.確認:核對系統是否為顧客所想要的
D.演進:針對需求改變更改軟體
6.何謂軟體流程模型?
軟體流程簡化的表示式,以特定觀點來表示。
各流程觀點的舉例↓
工作流程觀點:一連串工作項目
資料流程觀點:資訊流
角色/行動觀點:誰做什麼
代表性流程模型:A.瀑布式、B.反覆式開發以及C.元件為基礎的軟體工程
7.軟體工程的成本?
60%開發成本,40%測試成本及演進成本,成本的分布差異是因為開發模型而有所不同
8.什麼是軟體工程方法?
以結構化方法來開發軟體,包含↓
模型描述:大量圖形化描述
規則:系統模型實用的限制條件
建議:好的設計實例建議
流程指引:活動結果產生
9.什麼是電腦輔助軟體工程?
軟體系統提供自動化來支援軟體流程程序
CASE系統常被當作支援的方法
上層CASE:支援前半段流程需求與設計
下層CASE:支援後續程式的debug與測試
10.什麼是好的軟體特性?
軟體必須具有使用者要求的功能和效能。且具有可維護性、可靠性及可接受性。
可維護性:軟體可以根據需要的改變而發展
可靠性:軟體必須是可靠的
效益(能):當軟體在使用時不會浪費系統資源
可用性:軟體是可以使用的
11.什麼是軟體工程所面臨的挑戰?
A.異質性B.交貨C.信賴
異質性:要能夠建置在不同平台與執行環境上
交貨:如何更快速的交貨
信賴:證明軟體是客戶所想要的
第二章
1.何謂社會科技系統?
不只包含科技系統,也包括了操作流程、而且系統與系統使用者之間是有互動的
2.社會科技系統的特色
A.突顯性質B.非決定性C.與組織目標的複雜關係
突顯性質:一個系統整體表現時的特色。
非決定性:相同的輸入不會總是生產出相同的輸出,因為系統的行為部分取決於操作人員。
與組織目標的複雜關係:系統支援組織目標無法只依靠系統本身
3.系統工程流程
A.需求定義→B.系統設計→C.子系統開發→D.系統整合→
E.系統安裝→F.系統演進→G.系統報廢
E.系統安裝→F.系統演進→G.系統報廢
4.系統的模型製作
是符合建築法的模型,並描述出抽象的子系統組合成一個系統
也許包含子系統之間的主要資訊流,時常用方塊圖呈現
辨識或確認模型中不同型態的功能
5.已有的舊系統
複雜的系統,或是有較長的生命週期
較過時或舊有技術開發的系統,在企業可能還有其地位,例:社會科技系統
舊系統經常是企業裡的關鍵系統。例:銀行帳戶系統、飛機維修系統
第三章
1.系統可靠性
系統可靠性包括A.可用性(Availability) B.可靠性(Reliability) C.安全性(Safety) D.保全性(Security)
可用性(Availability):當有需求時,系統有能力提供功能
可靠性(Reliability):系統有提供特定服務的能力
安全性(Safety):系統操作不會造成重大損失及人體傷害
保全性(Security):系統能自我防護免於受到網路攻擊
胰島素系統是個人的,沒和外在網路有相連接。(例外的舉例)
第四章
1.軟體程序
包含四個基本活動的需求:
A.規格制定 B.設計與實作(開發) C.確認程序 D.演進(符合新需求)
2.一般軟體程序模型(三種方法的做法、優缺點及適用時機)
A.瀑布式模型:各流程是分割且獨立的
B.演進式模型:各流程活動交互使用
C.以元件為基礎的軟體工程:重新整合已存在的元件
3.瀑布式模型的階段與進行
需求分析與定義→系統和軟體設計→實作與單元測試→遞增式整合和系統測試→運作及維護
瀑布式模型主要的返回是因為在完成進行中的流程之後,需求變更了,並且,要移動下一個階段之前必須完成目前的階段
4.瀑布式模型優缺點、適用時機
《優點》:各個階段都有產生文件,因此換成其他工程程序模型也適合
《缺點》:程序被切割的非常獨立,所以當顧客需求改變的時候,
不易對顧客的需求作反應
《適用時機》:適用當需求是非常清楚而且需求在開發期間不會經常更動,
大型的系統比較適合使用瀑布式開發
5.演進式開發
分為A.探索式開發B.丟棄式雛型法
探索式開發:與顧客一起工作開發,明確知道需求,從需求最清楚的部份著手進行
丟棄式雛形法:瞭解顧客的需求並定義出最佳需求定義,
雛形的重點是放在還不是很清楚的需求上面(從最不明確的地方開始進行)
6.演進式開發優缺點、適用時機
《優點》:以遞增的方式開發,隨著使用者逐漸瞭解自己的需求,
而反映在軟體系統上,比瀑布式更有效率
《缺點》:流程不明確、系統缺乏結構
《適用時機》:中小型互動系統、大系統內較小的部份
(Ex:使用者介面)或是生命週期較短的系統
7.以元件為基礎的軟體工程
將既有、已存在的元件做適當的整合
以元件為基礎的軟體工程流程階段:A.元件分析B.需求修改C.再利用元件作系統設計D.開發與整合
8.以元件為基礎的軟體工程的優點與缺點
《優點》:減少軟體開發數量、減少成本花費及風險、能夠快速完成並交貨給顧客
《缺點》:與需求妥協是不可避免的
9.反覆式流程
針對需求時常改變而使用
有兩個相關方法:A.遞增式交貨開發B.螺旋式開發(唯一有風險分析的)
10.遞增式交貨開發
將軟體流程分解成一系列的模組,然後輪流開發這些模組,
並且從優先順序高的部份先開發
11.遞增式交貨優點
顧客不需要等到整個系統完成後才可以使用,因為第一個模組是針對顧客最重要的需求,所以當第一個完成後,顧客就能馬上使用顧客可把最早的遞增模組當成雛型,從此雛形中獲得一些開發後續的經驗,
因為最高優先的系統需求部份因為測試最多次,所以會降低失敗率
12.遞增式交貨缺點
要將顧客的需求對應到正確大小的模組是有困難的
13.螺旋式開發
將整個開發階段以螺旋狀方式呈現,每一圈表示一個階段,並且每個階段都會做風險分析
14.螺旋式模型包含↓
A.目標設定:定義每個步驟目標
B.風險評估和降低:評估風險及如何降低風險
C.開發和確認:風險評估後,就可為此系統選擇適當的開發模型
D.規劃:專案審查和決定是否進行下一階段的規劃
15.設計流程活動包含↓
A.架構設計B.摘要式的規格制定C.介面設計
D.元件設計E.資料結構設計F.演算法設計
16.RUP(Rational Unified Process)方法
由UML和相關的統一軟體開發程序所衍生而來,一般從A.dynamic B.static C.practice三個觀點來描述
17.軟體確認包含↓
A.元件(單元)測試:測試個別元件,確保都能夠正確的運作
B.系統測試:測試整體系統,測試外顯特性是重要的
C.驗收測試:也稱為Alpha測試
Alpha測試:測試程序會持續進行,直到系統開發人員和客戶都同意此系統符合需求為止
Beta測試:定位在公開的軟體產品。將此系統分送給一些同意試用此系統的客戶,由客戶協助測試並向系統開發人員回報使用上的問題
Verification驗證 do product(thing) right. 將產品建造正確
Validation確認 do right
product(thing). 建造正確的產品
┌→ ii
│───────│ i =
Verification。
└───┬───┘ ii =
Validation。
↓
i
18.CASE方法
CASE是軟體去支援軟體開發與演進流程的一個方法
CASE整合↓
A.工具:支援個人程序工作
B.工作平台:支援程序階段
C.環境:支援全部或是至少是軟體流程的大體上的部份
第六章
1.需求型態
A.使用者需求:用很自然語+圖形描述系統有哪些服務及操作限制條件。 (寫給顧客看的)
B.系統需求:結構化文件設定輸出,更詳細的描述系統功能、服務及操作限制條件。
2.功能性需求與非功能性需求
功能性需求:描述功能或是系統的服務
功能性使用者需求應該要高層次的說明系統是做什麼的,而功能係系統需求應該要更詳細的描述系統的服務
非功能性需求:描述系統提供的功能或是服務的限制,例如時間限制、開發流程限制、標準
範圍需求:需求是來自系統的可用範圍
沒有留言:
張貼留言